zoukankan      html  css  js  c++  java
  • 【转】QT 串口QSerialPort + 解决接收数据不完整问题

    类:QSerialPort

    例程:ExamplesQt-5.9.1serialport erminal,该例子完美展示了qt串口收发过程,直接在这上面修改就可以得到自己的串口软件。核心方法

    //读串口
    QByteArray QSerialPort::readAll()
    //写串口
    qint64 QSerialPort::write(const QByteArray &data)
    1
    2
    3
    4
    注意事项:qt默认最大支持115200波特率,可以通过修改Qt5.9.15.9.1msvc2013_64includeQtSerialPortqserialport.h

    enum BaudRate {
    Baud1200 = 1200,
    Baud2400 = 2400,
    Baud4800 = 4800,
    Baud9600 = 9600,
    Baud19200 = 19200,
    Baud38400 = 38400,
    Baud57600 = 57600,
    Baud115200 = 115200,
    Baud256000 = 256000, //添加256000波特率
    UnknownBaud = -1
    };
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    qt底层是调用windows sdk api,其支持256000波特率

    调试相关:使用虚拟串口软件vspd辅助调试

    解决接收数据不完整问题

    转:贴吧 http://tieba.baidu.com/p/3699753033?pn=2 45楼

    1、不完整的原因:分开多次接收,这个你很难控制得了
    2、解决办法:首先严格定义头部和尾部;然后把处理逻辑写完整,一个都不能漏
    3、下面定义头部为”{“,尾部为”}”,变量类型全部为QByteArray

    BufferData = MySerialPort->readAll();
    //异常类:无头且变量为空,已丢失头部,数据不可靠,直接返回
    if ((!BufferData.contains("{"))&(PasteData.isNull()))
    {
    return;
    }
    //第一种:有头无尾,先清空原有内容,再附加
    if ((BufferData.contains("{"))&(!BufferData.contains("}")))
    {
    PasteData.clear();
    PasteData.append(BufferData);
    }
    //第二种:无头无尾且变量已有内容,数据中段部分,继续附加即可
    if ((!BufferData.contains("{"))&(!BufferData.contains("}"))&(!PasteData.isNull()))
    {
    PasteData.append(BufferData);
    }
    //第三种:无头有尾且变量已有内容,已完整读取,附加后输出数据,并清空变量
    if ((!BufferData.contains("{"))&(BufferData.contains("}"))&(!PasteData.isNull()))
    {
    PasteData.append(BufferData);
    ReadData = PasteData;
    PasteData.clear();
    }
    //第四种:有头有尾(一段完整的内容),先清空原有内容,再附加,然后输出,最后清空变量
    if ((BufferData.contains("{"))&(BufferData.contains("}")))
    {
    PasteData.clear();
    PasteData.append(BufferData);
    ReadData = PasteData;
    PasteData.clear();
    }
    ui.textEdit->setText(ReadData);
    ---------------------
    作者:Kelvin_Ngan
    来源:CSDN
    原文:https://blog.csdn.net/kelvin_yan/article/details/78975147
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    成功,离你只有一步之遥
    多灾多难!危机下给企业家们的十大贴心忠告
    《赢道:成功创业者的28条戒律》 简介:
    面对大面积失业潮,普通人有无必要创业?
    赢在行动《越狱》给创业者的启示
    如何优选创业项目、产品和服务
    你是高执行力人才吗?
    创业新闻] 2009年创业者必读的十一本书(转)
    赢在2009 创业者需练好六脉神剑(转)
    相当受用!10个从实质上迅速提升经理人生活的方法
  • 原文地址:https://www.cnblogs.com/h2zZhou/p/10168183.html
Copyright © 2011-2022 走看看