写和读hexadecimale trame qt串口

时间:2018-05-25 12:48:57

标签: c++ qt serial-port

打开串口时如何写入和读取十六进制数据?

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();

1 个答案:

答案 0 :(得分:1)

要调试您的问题,我首先要简化您要尝试的操作。尝试编写一些测试代码来开始,以确保事情按预期工作:

  1. 测试序列已打开 - 不应该
  2. 打开序列号
  3. 测试序列已打开 - 应
  4. 测试字节是否可用 - 不应该是
  5. 将数据写入串行。齐平。
  6. 测试字节是否可用 - 应该是
  7. 阅读并打印到屏幕上(即正确测试您的阅读)
  8. 关闭串口 - 测试未打开
  9. 如果其中一个步骤不能按预期工作,您至少可以关注特定部分无效的原因。

    祝你好运。