QSerialPort를 사용하여 직렬 장치에 쓸 수있는 도구를 작성했습니다. 내가 다음과 같은 오류 메시지가 표시 될 때까지 일정 시간 동안 실행 :Qt5 - ASSERT : "bytesTransferred == writeChunkBuffer.size()"
ASSERT "bytesTransferred == writeChunkBuffer.size()"파일 qserialport_win.cpp, 라인 (511)
내 보내는 기능에 다음과 같습니다
/**
* @brief Send text to device
* @param text
* @return Success/Fail
*/
bool Serial::send(QString text)
{
if (connectionStatus && qsp.isWritable()) {
QByteArray buffer = text.toLatin1();
if (buffer.size() != qsp.write(buffer))
qDebug() << "Send does not work";
qsp.flush();
msleep(15);
return true;
} else {
return false;
}
}
내가 알고있는 경우
이 제대로 나는 장치에 플러시 (약 20 문자 임) 텍스트를 작성, 15ms의 기다렸다가 나중에 그것을 반복합니다. 내가 왜이 메시지를 받는지 이해가 안되니?// 편집 :
얼마 후 문제가 무엇인지 알아 냈습니다. 나는 15ms를 기다리는 이유를 언급하는 것을 잊었다. 그것은 문서의 일부로서 데이터를 보낸 후 기다리는 것입니다. 데이터 전송과 관련된 가장 큰 문제점은 QSerialPort를 별도의 스레드에서 실행한다는 것입니다. 그것을 사용함으로써 나는 곤경에 빠진다. 나는 그것을 MainThread로 옮기고 Qt에 의한 신호 슬롯 디자인을 사용한다.