|
Tài trợ cho PIC Vietnam |
MiWi, Zigbee, Ethernet ZigBee có khả năng kết nối tới 65000 node, MiWi dành riêng cho Microchip chỉ kết nối được 1000 node, nhưng điều gì đang diễn ra...? |
|
Ðiều Chỉnh | Xếp Bài |
22-01-2010, 11:02 PM | #1 |
Đệ tử 1 túi
Tham gia ngày: Feb 2009
Bài gửi: 12
: |
BSD_socket- Các bác dành chút thời gian giúp em nhé!
em đang viết đoạn chương trình cho client trên PIC32 để yêu cầu connect tới server trên PC.Em đã giao tiếp tốt giữa 2 PC cũng với chươnng trình cho PC đó.Nhưng trên PIC32 em ko thể nào connect được.Project của em dùng thư viện pic32mx_mchp_tcp_ip_v1_0_00.Đây là đoạn chương trình chính của em.Các bác xem còn sai gì nhé.em test phần cứng và khẳng định ok:
#pragma config FPLLMUL = MUL_18, FPLLIDIV = DIV_2, FPLLODIV = DIV_1, FWDTEN = OFF, WDTPS = PS512 #pragma config POSCMOD = HS, FNOSC = PRIPLL, FPBDIV = DIV_2, DEBUG = OFF, IESO = OFF, FCKSM = CSDCMD, FSOSCEN = OFF #define PC_SERVER_IP_ADDR "10.10.33.79" #define CLIENT_IP_ADDR "10.10.33.201" static unsigned int i,j,k; static BYTE bfr[100]; REG b; BYTE a; //------------------------------------------------------------------- void SetupDefault_IP_MAC() { // Initialize default IP and MAC address IP_StrToDWord( DEFAULT_IP_ADDR, &SysIPAddr.Val ); IP_StrToDWord( DEFAULT_IP_MASK, &SysIPMask.Val ); IP_StrToDWord( DEFAULT_IP_GATEWAY, &SysIPGateway.Val ); MAC_StrToBin ( DEFAULT_MAC_ADDR, SysMACAddr.v ); } //-------------------------------------------------------------------- int main() { SOCKET sclient; struct sockaddr_in addr; int addrlen = sizeof(struct sockaddr_in); BOOL ClientConnected = FALSE; DWORD TestServerIP, clientIP; int len=100; SYSTEMConfigWaitStatesAndPB(72000000); TRISC=0x00; TRISE=0x00; _LATE9=1; _LATC1=1; _LATE9=0; _LATC2=1; _LATE9=1; OpenXLCD(0x3F); WriteCmdXLCD(0x01); INTEnableSystemMultiVectoredInt(); SetupDefault_IP_MAC(); MSTimerInit(36000000); InitStackMgr(); TickInit(); IP_StrToDWord( PC_SERVER_IP_ADDR, &TestServerIP ); IP_StrToDWord( CLIENT_IP_ADDR, &clientIP ); //create tcp client socket if( (sclient = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP )) == SOCKET_ERROR ) return -1; //bind to a unique local port addr.sin_port = 7000; // Let the stack pick a unique port for us addr.sin_addr.S_un.S_addr = clientIP;//IP_ADDR_ANY; if( bind(sclient ,(struct sockaddr*)&addr, addrlen ) == SOCKET_ERROR ) return -1; ClientConnected = FALSE; addr.sin_port = 7000;//SERVER_PORT; addr.sin_addr.S_un.S_addr = clientIP;//TestServerIP;//SERVER_IP; addrlen = sizeof(struct sockaddr); setsockopt( sclient, SOL_SOCKET, SO_SNDBUF, (char*)&len, sizeof(int) ); addrlen = sizeof(struct sockaddr); WriteCmdXLCD(0x01); LATA=0; WriteDataXLCD(6%10+0x30); while(1) { StackMgrProcess(); len = 10; if( !ClientConnected ) { if(k++==2) { if( connect( sclient, (struct sockaddr*)&addr, addrlen ) == 0 ) { ClientConnected = TRUE; WriteCmdXLCD(0x01); PutsXLCD("Connected!"); while(1); } WriteCmdXLCD(0x02); WriteDataXLCD(LATA%10+0x30); i++; //j=0; k=0; } } for (j=0;j<200000;j++); } } |
|
|