脱最大似然-QModBus读损坏通过最大似然BusyIndicator/画-SingleThread

0

的问题

我有一个单一的线QQuick应用程序的一个主窗口和一个类处理储备读写功能。 一切工作的现迄今为止,但是当我把一个BusyIndicator在我最大似然的窗口,以显示,总是忙我CRC不匹配和应急超时,例如:

  • "丢弃的反应是错误的儿童权利委员会,收到:64580,计算CRC:55067"
  • "读响应错误:应超时。 (code:0x5)"噪声。储备:(不客户)无法匹配的反应与开放的请求,忽略了

该ReadRequest是通过发送

void ModbusDevice::readData(int serveraddress, int startaddress, int cnt) {
QModbusDataUnit RxData;

if(startaddress>=HOLDING_BASE) RxData.setRegisterType(QModbusDataUnit::HoldingRegisters);
else RxData.setRegisterType(QModbusDataUnit::InputRegisters);

RxData.setStartAddress(startaddress);
RxData.setValueCount(cnt);

if (auto *reply = m_ModbusClient->sendReadRequest(RxData, serveraddress)) {
    connect(reply, &QModbusReply::finished, this, &CellDevice::InterruptHandler);
else qDebug() << m_ModbusClient->errorString();
}

如果没有动画运行在我的窗口,数据收到的没有错误。

  • 这可以通过固定使用一个单独的线运行储备读写方法和如何,我会实现? 或者我只增加误读通过把串职能,在一个单独的线?

我的理解是迄今为止,由于这样的事实,我的应用程序是迄今为止的运行在一个单一的线,不断更新的GUI是以某种方式妨碍接收的序列数据。

我用linux命令行工具"压力"来看,如果我丢失数据,在高中央处理器装载很好,但那不是这种情况。

亲切的问候

c++ modbus multithreading qml
2021-10-27 11:45:23
1

最好的答案

1

我发现的问题:

因为我认为最大似然呈现的引擎,场景图,或无论你怎么称呼它,造成错过了框架的储备的接收。 我想以某种方式线可能会有帮助的,但我是不是能够解决它通过具有modbusInterface运行一个单独的螺纹。

在最后的溶液使用螺纹渲染循环的场景图像说这里: https://doc.qt.io/qt-5/qtquick-visualcanvas-scenegraph.html#threaded-render-loop-threaded

I.e。 通过把

qputenv("QSG_RENDER_LOOP","threaded");

在我的主要().

2021-10-28 12:49:29

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................