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);'我认为,如果你在将数据写入串口之后这样做会更有意义(如果你真的需要的话),不是吗? –