Qt 스-QModBus 읽에 의해 손상된 프로그램입니다..BusyIndicator/애니메이션-포함되어 있습

0

질문

나는 하나의 스레드 QQuick 응용 프로그램으로 한 메인 창고 하나의 클래스로 처리하는 Modbus 읽기/쓰기 기능이 있다. 모든 것이 잘 작동하는 지금까지 그 때를 넣어 BusyIndicator 내 프로그램입니다..창을 표시하는 버스가 바쁜 나 CRC 불일치와 응답 시간 제한,예를 들어:

  • "폐기 응답으로 잘못된 CRC 을 받았:64580,계산 CRC:55067"
  • "읽 응답 오류:응답한다. (코드:0x5)"-qt.modbus:(RTU 클라이언트)수치의 응답으로 오픈 요청을 무시하고,

이 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();
}

이 없는 경우 애니메이션에서 실행 창 데이터를 받지 않고 오류가 있습니다.

  • 할 수 있습이 될 수정을 사용하여 별도의 스레드를 실행하는 modbus 읽기/쓰기 방법과 내가 어떻게 구현하는가? 또는 나만이 증가 오판을 넣어서 직렬 기능에서 별도의 Thread?

제가 이해하기로는 지금까지 그것 때문에는 사실 내 응용 프로그램입니다 그래서 멀리에서 실행되는 하나의 스레드의 지속적인 업데이트 GUI 는 어떻게든 방해하는 리셉션의 직렬 데이터입니다.

내가 사용하는 리눅스 명령행 도구를"스트레스"를 보면 나는 데이터가 손실에서 높은 cpu 부하뿐만 아니라 하지만 그렇지 않습니다.

종류 감사

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

최고의 응답

1

내가 찾는 문제점:

으로 생각스 렌더링 엔진의,현장 그래프 또는 당신이 그것을 호출,발레의 modbus 포함됩니다. 나는 어떻게든 실을 꿰고 있었지만,나는 할 수 없이 그것을 해결함으로써 modbusInterface 에서 실행되는 별도의 스레드가 있습니다.

결국 솔루션을 사용하려면 스레드 렌더링을 반복의 현장 그래프로 여기에 명시된: https://doc.qt.io/qt-5/qtquick-visualcanvas-scenegraph.html#threaded-render-loop-threaded

I.e. 에 의해 퍼팅

qputenv("QSG_RENDER_LOOP","threaded");

내 main().

2021-10-28 12:49:29

다른 언어로

이 페이지는 다른 언어로되어 있습니다

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