Ich möchte über die serielle Schnittstelle mit einem Hardwaregerät kommunizieren. Entsprechend der Dokumentation sieht eine Nachricht so aus: Senden von Daten über die serielle Schnittstelle mit QSerialPort
Ich möchte QSerialPort
für die Kommunikation verwenden. Hier ist, was ich versuche:
QByteArray bytes;
bytes.append((char) 0x6E);
bytes.append((char) 0x00);
bytes.append((char) 0x00);
bytes.append((char) 0x0B);
bytes.append((char) 0x00);
bytes.append((char) 0x00);
bytes.append((char) 0x2F);
bytes.append((char) 0x4A);
bytes.append((char) 0x00);
bytes.append((char) 0x00);
bytes.append((char) 0x00);
int transmitted = qSerialPort->write(bytes); //returns no error, transmitted = 11
QSerialPort
ist konfiguriert wie folgt aus:
qSerialPort = new QSerialPort(path);
qSerialPort->setBaudRate(QSerialPort::Baud9600);
qSerialPort->setDataBits(QSerialPort::Data8);
qSerialPort->setParity(QSerialPort::NoParity);
qSerialPort->setStopBits(QSerialPort::OneStop);
qSerialPort->setFlowControl(QSerialPort::NoFlowControl);
qSerialPort->open(QIODevice::ReadWrite);
Ich habe keine richtige Antwort aus der HW-Gerät. Gibt es etwas, das ich übersehen habe, um Hex-Werte über QSerialPort
an eine serielle Schnittstelle zu senden? Vielen Dank.
Ja. Sie haben übersehen, einen vollständigen Testfall zu veröffentlichen. Es gibt nämlich nichts in Ihrer Frage, das uns sagt, dass Sie die Daten vom Gerät richtig gelesen haben. –
Randnotiz: Sie können das Paket als String schreiben: 'const char data [] =" \ x6E \ x00 \ x00 ... \ x00 "; gesendet = qSerialPort-> schreiben (Daten, Größe von (Daten) -1); ' –
Der Inhalt Ihres Pakets ist wahrscheinlich falsch. Sie haben "\ x00" als Datenabschnitt eingegeben, aber Sie haben nicht den richtigen CRC für diesen Abschnitt berechnet. Sehen Sie in der Protokolldokumentation nach, welche CRC Sie verwenden sollen, und berechnen Sie dann den CRC, bevor Sie das Paket senden. –