有弄过rl TCPNET的吗?求助
最近在弄以太网通信,花不少时间在LPC2468上弄TCPNET的以太网程序硬是地址不能解析,ping不到我板子IP地址。求救啊!!,先谢谢了主函数部分代码
Ethernet_Init(); //初始化以太网
Ethernet_ReadCFG(); //从EEPROM中读port 等
DELAY_SYS(6000*60); //delay 60ms
DELAY_SYS(6000*60); //delay 60ms
DELAY_SYS(6000*60); //delay 60ms
init_TcpNet();
socket_udp = udp_get_socket(0,0, udp_callback);
if(socket_udp!=0)
{
udp_open(socket_udp,uw16_UDPLocalPort);//uw16_UDPLocalPort
}
/*socket_udp_2 = udp_get_socket(0,0, udp_callback);
if(socket_udp_2!=0)
{
udp_open(socket_udp_2,2399);
// flag=1;
}*/
socket_tcp = tcp_get_socket ((TCP_TYPE_SERVER|TCP_TYPE_KEEP_ALIVE), 0, 10, tcp_callback);
VICVectCntl21 = 2;
if (socket_tcp != 0)
{
tcp_listen (socket_tcp, PORT_NUM);
}
//IVCH_ReportVer(); // 报告软件版本
//PC_RD_MCU();// 报告MCU号和BOOTLOAD版本 //???
//Ethernet_ARPBuilt();
while ( 1 ) // 主循环
{
main_TcpNet ();
// 网络通道处理
// CheckIfResetSystem(); //12.08.2009 add
// if (!(SocketStatus & SOCK_ACTIVE)) TCPPassiveOpen(); // listen for incoming TCP-connection
timer_poll ();
/* network receive process */
//DoNetworkRxStuff();
/* network send process */
DoNetworkTxStuff();
// if(flag)
SystemLED();
/* network pack */
//Pro CmdParse // Cmd::CmdParse();
//MitsProWork();
IP_CmdParse();
/* Cmd data parse */
IVCH_CmdClassify();
}
就是这个函数arp_cache_ip不能返回true
void DoNetworkTxStuff(void)
{
if(uc_IPFlags == IP_ADDR_NOTRESOLVED)
{
if (arp_cache_ip (uc_remotemIpAdr, ARP_FIXED_IP) == __TRUE)
{
// Wait, 'rem_IP' address resolved yet. //
uc_IPFlags = IP_ADDR_RESOLVED4UDP;
flag=1;
}
}
}
这里my_state返回的是2为监听状态,就是不能进入TCP_STATE_CONNECT
void IP_CmdParse(void)
{
//组装网络包
//unsigned short nDataCount;
//unsigned charbExistDataInBufferFlag;
uint16 k=0;
uint8 my_state = 0;
my_state = tcp_get_state(socket_tcp);
if((my_state != TCP_STATE_CONNECT)|(ENET_BufLen == 0)) // check if somebody has connected to our TCP
{
if(uc_udpENET_BufLen == 0)
return;
//flag=1;
} // check if remote TCP sent data
else
{
flag=1;
}
for(k=6; k<=uc_udpENET_BufLen; k++)
{
uc_IVCH_CmdBuf = uc_udpENET_BUF;
}
uc_IVCH_CmdBufFlg = 1;
uw16_IVCH_CmdBuf_Index = uc_udpENET_BufLen-6;
uc_udpENET_BufLen = 0;
uc_udpENET_BufEnd = 0;
}
//初始化以太网
void Ethernet_Init(void)
{
/*初始化网络控制器,如果每个项目各不相同, 请按项目分类*/
init_ethernet();
uw32_IPTimer = 0;
uw16_TxFrameSize = 0;
uc_IPFlags = IP_ADDR_NOTRESOLVED;
uw16_IPTimerCounter = 1000;
uw32_nIPSnapshotTimeValue = 0;
TCPFlags = 0;
TCPStateMachine = CLOSED;
SocketStatus = 0;
*(unsigned char *)uw16_RemoteIP = 196; //EEP_RemoteIP; // uncomment those lines to get the远程计算机IP
*((unsigned char *)uw16_RemoteIP + 1) = 168; //EEP_RemoteIP; // quote of the day from a real
*((unsigned char *)uw16_RemoteIP + 2) = 1;//EEP_RemoteIP; // internet server! (gateway must be
*((unsigned char *)uw16_RemoteIP + 3) = 100; //EEP_RemoteIP;//208 203; // // set to your LAN-router)
//
*(unsigned char *)uw16_MyIP= 196; // EEP_RemoteIP;//192; // "MYIP1.MYIP2.MYIP3.MYIP4" 本机IP
*((unsigned char *)uw16_MyIP + 1)= 168; //EEP_RemoteIP;//168;
*((unsigned char *)uw16_MyIP + 2)= 1; //EEP_RemoteIP;// 1;
*((unsigned char *)uw16_MyIP + 3)= uc_dsp_id;
//
*((unsigned char *)uc_MyMAC+ 5)= uc_dsp_id;
TCPLocalPort = 5678;//2025;本地端口号
TCPRemotePort = 9030;//TCP_PORT_QOTD;远程端口号
uw16_UDPLocalPort = 2040;//2025;本地端口号
uw16_UDPRemotePort = 9030;//UDP_PORT_QOTD;远程端口号
m_CommLastStamp = uw32_TimeStamp; // 用于复位网络 // 20111018YY
m_CmdLastStamp = uw32_TimeStamp; // 用于复位硬件 // 20111018YY
}
void Ethernet_ReadCFG(void)
{
// 读取以太网配置信息(远程本地端口IP)
IVCH_ReadDriveIP();
IVCH_ReadMCULocalPort();/*读取并设置本地端口号*/
uw16_UDPRemotePort = 9030;/*UDP_PORT_QOTD;远程端口号*/
}
页:
[1]