【发布时间】:2018-05-25 23:11:22
【问题描述】:
打开串口时如何读写十六进制数据?
if (serial->isOpen()) {
qDebug() << "seccus: " ;
static const char buff[] = {0xA1, 0xFF, 0xFF, 0x00,97};
serial->write(buff,sizeof(buff));
}
if (serial->bytesAvailable()) { // If there are bytes available
QByteArray f_data; // data container
f_data.clear();
if (serial->open(QIODevice::ReadWrite)) { // Try to open the port
while(serial->bytesAvailable()) { // Reading loop
f_data.append(serial->readAll());
}
serial->flush();
}
qDebug()<< "the result" << f_data; // Check the result
}
if(!serial->isOpen())
qDebug() << "carte disconnect"<<serial->errorString();
【问题讨论】:
-
当我运行我的代码时,我的终端中没有出现任何内容。我应该将我的buff转换为字节吗????我想知道我在这里错过了什么??
-
我不使用 Qt,但不应该先调用
serial->open(QIODevice::ReadWrite)再调用serial->write(buff,sizeof(buff));? -
是的,你有理由,但还是不行。看来我没有任何可用的字节来读取。我需要从十六进制转换为字节吗?
-
由于您没有收到任何回复,可能是您发送了错误的数据。客户期望什么?另外,请注意您在数组的最后一个元素上缺少
0x。这是故意的吗? -
我删除它。我不知道为什么串行没有收到任何东西????我不明白“发送错误的数据”是什么意思??
标签: c++ qt serial-port