2019-07-21 01:51发布
mack13013 发表于 2017-12-17 18:07 上位机的connect返回值是0? 这是没错误发生啊 MSDN中关于connect的返回说明
最多设置5个标签!
*名 称: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);
}
一周热门 更多>