2019-07-21 01:51发布
mack13013 发表于 2017-12-17 17:10 哎,装逼失败了。。。。
mack13013 发表于 2017-12-17 18:07 上位机的connect返回值是0? 这是没错误发生啊 MSDN中关于connect的返回说明
游刃有余 发表于 2017-12-18 14:46 谢谢这位大哥这么认真的回答,经多次测试,发现5500到交换机芯片的信号线接地了,哈哈,把那段线割断问题 ...
最多设置5个标签!
检测网关服务器时,返回值一直是0,收不到服务器端的SYN/ACK数据包,不知道是不是服务器端就压根没收到客户端发送的连接请求。
32单片机C程序在线调试,初始化W5500端口0为TCP客户端,PC机为TCP服务端,然后5500向PC机发送连接请求
*名 称:W5500_DetectGateway()
*功 能:检查网关服务器
*出口参数:1(0xFF)=成功 0(0x00)=失败
*说 明:无
*********************************************/
u8 W5500_DetectGateway(void)
{
u8 ip_adde[4]; //==========192.168.1.129
ip_adde[0]=W5500Info.LocalIP[0];
ip_adde[1]=W5500Info.LocalIP[1];
ip_adde[2]=W5500Info.LocalIP[2];
ip_adde[3]=W5500Info.LocalIP[3]+41;
//检查网关及获取网关的物理地址
W5500_WriteSocketReg4Byte(0,Sn_DIPR,ip_adde);//向目的地址寄存器写入与本机IP不同的IP值
W5500_WriteSocketReg2Byte(0, Sn_DPORTR,8080); //设置端口0-目的/远程端口
W5500_WriteSocketReg1Byte(0,Sn_MR,MR_TCP);//设置socket为TCP模式
W5500_WriteSocketReg1Byte(0,Sn_CR,OPEN);//打开Socket
delay_ms(5);//延时5ms
if(W5500_ReadSocketReg1Byte(0,Sn_SR) != SOCK_INIT)
{//如果socket打开失败
W5500_WriteSocketReg1Byte(0,Sn_CR,CLOSE);//打开不成功,关闭Socket
return 0;//返回0(0x00)
}
W5500_WriteSocketReg1Byte(0,Sn_CR,CONNECT);//设置Socket为Connect模式
do
{
u8 j=0;
j=W5500_ReadSocketReg1Byte(0,Sn_IR); //读取Socket0中断标志寄存器
if(j!=0)
{
W5500_WriteSocketReg1Byte(0,Sn_IR,j);
}
delay_ms(5); //延时5ms
if((j&IR_TIMEOUT) == IR_TIMEOUT)
{
return 0;
}
else if(W5500_ReadSocketReg1Byte(0,Sn_DHAR) != 0xff)
{
W5500_WriteSocketReg1Byte(0,Sn_CR,CLOSE); //关闭Socket
return 1;
}
}while(1);
}
你好,support@wisioe.com我们有提供技术支持 ,W5500代理商 炜世科技
一周热门 更多>