W5500不能热插拔

匿名 (未验证) 提交于 2019-12-03 00:34:01

一种比较笨的方法是在上位机和下位机之间同来设置一个心跳,多长时间后没有心跳了,w5500重启

第二种和第一种差不多,但是简单,只需在w5500寄存器里面改个参数就行,具体参照https://blog.csdn.net/wiznet2012/article/details/38340375

如需以上图片内容做参考,请点击https://download.csdn.net/download/fei_yang_yf/10481429

本人用的笨方法解决的热插拔

下位机(STM32)程序

上位机(qt5)程序:

 //定时器做心跳     myTime = new QTimer();     myTime->setInterval(1000);//1s定时     connect(myTime,SIGNAL(timeout()),this,SLOT(AutoSend()));


void MainWindow::AutoSend()//定时器自动发送 {      QString str0 = "aa 03 03 ff 05 06 07 bb";//发送心跳     QByteArray sendBuf0 = " ";     sendBuf0 = QByteArray::fromHex (str0.toLatin1().data());     tcpSocket->write(sendBuf0);  } 

具体定时器什么时候开启,关闭要酌情添加

注意的是如果单开一个窗口或对话框,用exec即模态的,会造成不发送心跳,一直重启,解决方法是多线程,或者如果条件允许可以用show即非模态的

头文件里面声明定时器槽函数,源文件上面加个#include<QTimer>

文章来源: W5500不能热插拔
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!