PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   MiWi, Zigbee, Ethernet (http://www.picvietnam.com/forum/forumdisplay.php?f=60)
-   -   BSD_socket- Các bác dành chút thời gian giúp em nhé! (http://www.picvietnam.com/forum/showthread.php?t=5783)

vhg 22-01-2010 11:02 PM

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++);
}
}

bien_van_khat 23-01-2010 08:38 PM

Sơ đồ mạch???

vhg 29-01-2010 10:22 PM

em đã làm cho nó chạy dc rồi.Thanks bác nhé!


Múi giờ GMT. Hiện tại là 10:14 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam