qt 连续读写plc寄存器 程序Stack Overflow 问题 ,求大神给点思路

feixiangmenghuan 2020-12-17 06:52:07
void CModbusTcpClientWorker::onWriteHoldingRegisters(int iStartAddr, quint16 uValue, int iServerId)
{
QModbusDataUnit writeUnit(QModbusDataUnit::HoldingRegisters, iStartAddr, 1);
writeUnit.setValue(0, uValue);

bool bWriteResult = false;
QEventLoop loop;
QModbusReply* pReply = m_pModbusDevice->sendWriteRequest(writeUnit, iServerId);

if(NULL != pReply)
{
QMetaObject::Connection con = connect(pReply, &QModbusReply::finished, this, [&] {
if (pReply->error() == QModbusDevice::NoError)
{
bWriteResult = true;
}
else if (pReply->error() == QModbusDevice::ProtocolError)
{
//QString strErrorMsg = QString("Write HoldingRegisters response error: %1 (Modbus exception: 0x%2)").
// arg(pReply->errorString()).
// arg(pReply->rawResult().exceptionCode(), -1, 16);
//m_Savelog.writeLog(m_Savelog.path, strErrorMsg);
}
else
{
//QString strErrorMsg = QString("Write HoldingRegisters response error: %1 (code: 0x%2)").
// arg(pReply->errorString()).
// arg(pReply->error(), -1, 16);
}
loop.quit();

}

);

connect(pReply, &QModbusReply::finished, pReply, &QModbusReply::deleteLater);
QTimer timer;
timer.setSingleShot(true);
connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit()));
timer.start(RW_TIMEOUT_MS);

loop.exec();

QObject::disconnect(con);
//pReply->deleteLater();
}

emit writeHoldingRegistersResult(bWriteResult, iStartAddr, uValue);
}


此函数是写数值进去寄存器,我连续不断的往里面写值时,内存会慢慢增加,最后程序奔溃 Stack Overflow
emit writeCoils(M5031, 1);
Sleep(10);
emit writeHoldingRegisters(D5010, strDataResult.toInt());
Sleep(10);
emit writeHoldingRegisters(D5014, strDataX.toDouble() * 1000);
Sleep(10);
emit writeHoldingRegisters(D5015, strDataY.toDouble() * 1000);

求大神给点思路怎么解决。。。。。
...全文
1874 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_45995690 2022-10-29
  • 打赏
  • 举报
回复
解决了吗?我用Qmodbus,多线程定时读取10来个从站的话也是相同的,内存会缓慢增加。
feixiangmenghuan 2020-12-18
  • 打赏
  • 举报
回复
超过1MB就Stack Overflow
xqhrs232 2020-12-17
  • 打赏
  • 举报
回复
内存会慢慢增加,最后程序奔溃 Stack Overflow----好像逻辑不通!!!

16,215

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧