C++与QT串口通信-接收数据16进制与字符串转化

一、需求:


1、建立一个UI界面,可以与串口设备互相通信,能够发送16进制与字符串数据。
2、能够接收16进制与字符串数据。

二、本文解决问题:

串口接收数据存储在QBytArray中,当发送过来的数据为16进制字符串的时候,如何匹配,并在UI界面输出。

思路:QByteArray存储为数据类型为2进制,本身没有类型,而是根据我们发射的数据类型来做相应的切换。

代码如下:

QByteArray message;
    message.append(m_serialport->readAll());//   读取串口数据
    QString strData;
    //string输出
    if (change_16_to_string)
    {
        strData = QString(message);
        strData.remove(QRegExp("\\s+"));//删除字符串中所有空格
    }
    //hex16输出
    else
    {
        QByteArray array= message.toHex();//转化为16进制数据
        strData = QString(array);//转化为字符串,方便显示
        strData.remove(QRegExp("\\s+"));//删除字符串中所有空格  
    }

2.1、显示接收数据-增加空格

程序中,转换为字符串后,都删除了字符串中所有的空格,然后再根据自己的显示需求添加空格,如,没两个字符之间增加一个空格:

    //每条命令增加换行
    for (int j = 29; j < strData.size(); j += 30)
    {
        strData.remove(j,1);
        strData.insert(j, '\n');
    }

2、分解命令,换行输出,如果原始数据中,每个数据长度为10字节,则换行显示方法:

    //每条命令增加换行
    for (int j = 29; j < strData.size(); j += 30)
    {
        strData.remove(j,1);
        strData.insert(j, '\n');
    }

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值