QString hex = "0234301c4c49541d4741546f77617220a5a91e42411e43311e44332c30301e45332c30301e47737a74756b613742413303";
QByteArray test = QByteArray::fromHex(hex.toLatin1());
現在,我想通過的SerialPort發送:
serial = new QSerialPort(this);
serial->setPortName("ttyACM0");
serial->setBaudRate(QSerialPort::Baud9600);
serial->setDataBits(QSerialPort::Data8);
serial->setParity(QSerialPort::NoParity);
serial->setStopBits(QSerialPort::OneStop);
serial->setFlowControl(QSerialPort::NoFlowControl);
if(serial->open(QIODevice::ReadWrite))
{
qDebug()<<"Port is open!";
if(serial->isWritable())
{
qDebug()<<"Yes, i can write to port!";
}
serial->waitForBytesWritten(-1);
serial->write(test.data());
serial->flush(); // Port Error 12 (timed out???)
serial->close()
}
我成了沒有結果(也字符/字節值小於127似乎是發送,但不是那些他們超過這個值)
我的問題 - >如何轉換此QByteArray發送所有字節corectly? (我試圖找到在谷歌的答案,但沒有成功/我是新手)
你使用'signed char'或'unsigned char'或'uint8_t'嗎? –
我應該在哪裏使用unsigned char? (在我的程序中,我應該發送數據值從0到255) – blackmoon
爲什麼你要'serial-> write(test.data());'? 'QSerialPort :: write()'有一個直接使用'QByteArray'的重載,所以它應該足夠執行'serial-> write(test);'...它是否以這種方式工作? 此外(與你的問題無關):爲什麼你要在串口寫數據之前做'serial-> waitForBytesWritten(-1);'我認爲,如果你在將數據寫入串口之後這樣做會更有意義(如果你真的需要的話),不是嗎? –