{
QModbusDataUnit writeUnit (QModbusDataUnit: : HoldingRegisters iStartAddr, 1);
WriteUnit. SetValue (0, uValue);
Bool bWriteResult=false;
The QEventLoop loop;
QModbusReply * pReply=m_pModbusDevice - & gt; SendWriteRequest (writeUnit iServerId);
If (NULL!=pReply)
{
QMetaObject: : Connection con=connect (pReply, & amp; QModbusReply: : finished, this, [& amp;] {
If (pReply - & gt; Error ()==QModbusDevice: : NoError)
{
BWriteResult=true;
}
Else if (pReply - & gt; Error ()==QModbusDevice: : ProtocolError)
{
//a QString strErrorMsg=QString (" Write HoldingRegisters response error: % 1 (Modbus exception: 0 x % 2) ").
//arg (pReply - & gt; ErrorString ()).
//arg (pReply - & gt; RawResult (.) exceptionCode (), 1, 16);
//m_Savelog writeLog (m_Savelog path, strErrorMsg);
}
The else
{
//a QString strErrorMsg=QString (" Write HoldingRegisters response error: % 1 (code: 0 x % 2) ").
//arg (pReply - & gt; ErrorString ()).
//arg (pReply - & gt; Error (), 1, 16);
}
Loop. The quit ();
}
);
The connect (pReply, & amp; QModbusReply: : finished, pReply, & amp; QModbusReply: : deleteLater);
QTimer timer;
The timer. SetSingleShot (true);
The connect (& amp; The timer, SIGNAL (timeout ()), & amp; Loop, SLOT (the quit ()));
The timer. Start (RW_TIMEOUT_MS);
Loop. The exec ();
QObject: : disconnect (con);
//pReply - & gt; DeleteLater ();
}
Emit writeHoldingRegistersResult (bWriteResult iStartAddr, uValue);
}
This function is to write values in registers, I continuously to write value, the memory will gradually increase, the last program crash 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);
great god give some ideas how to solve,,,,,,,
CodePudding user response:
Memory will gradually increase, the last program crash Stack Overflow -- seems illogical!!!!!!