主要是qt 在modbus通讯中为了防止数据丢失,将qserial的缓冲区设置成无限制了,只要在初始化时将qserial的readsuffer设置下大小就好了,代码如下
这是串口
QList<QSerialPort *> list = modbusdevice->findChildren<QSerialPort *>();
for(int i=0;i<list.size();i++)
{
list.at(i)->setReadBufferSize(3000);
qDebug()<< list.at(i)->readBufferSize();
}
这是tcp的
modbusdevice->disconnect(SIGNAL(timeoutChanged(int)),0,0);//防止内存泄漏
要在请求响应后增加这行