用扩展例程中带操作系统的TCP Client程序,上位机用网络助手开启Server侦听。正常通信没问题,但是停止网络侦听后,有时可从BSR寄存器中读到网络断开,即执行下面的代码后跳出内while循环,重新建立连接。
cursta = ( ETH_ReadPHYRegister( LAN8720_PHY_ADDRESS, PHY_BSR ) & 4 );
if( cursta != 4 ) //连接已断开
{
tcp_client_flag &= ~LWIP_SEND_DATA;
break;
}
但有时服务器断开后,从寄存器读出的信息是网络连接正常,但后面数据发送是失败的,即下面出错。
err = netconn_write( tcp_clientconn , &TCPTxBuff[tx_mux], TX_FRAME_LEN, NETCONN_COPY ); //发送tcp_server_sentbuf中的数据
我的问题是:
服务器主动断开后,BSR寄存器能否反应网络已断开呢?如果能,为什么有时BSR寄存器却正常呢?谢谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
求助求助,帮自己顶,,,
一周热门 更多>