zoukankan      html  css  js  c++  java
  • Qt串口通信

    受不了xxxx恶心人的行为,遂搬迁至博客园。
    始发:2018-03-02 15:42:00
    

    一、简介

    随着物联网、智能化的浪潮,加上嵌入式设备硬件资源的限制,越来越多的通信模块开始倾向于串口,比如WiFi模块、BT模块、ZigBee模块等等。 串口的特点:
    1、通用。由于串口的悠久历史,就连8位机51都必含串口。
    2、易用易调试。硬件上来说,Rx/Tx/GND搞定;软件上,读写串口同样相当简易。而且,由于串口的普及,我们可以极其方便的结合PC上的串口工具辅助调试。
    3、稳定。

    基于以上原因,在开发中经常需要调试串口通信,所以写了个小的串口通信demo。由于串口之上的协议各不相同,所以只提供基本的读写数据功能。

    二、编译

    如果使用qt-opensource-windows-x86-mingw491_opengl-5.4.0.exe,那么直接clone代码即可编译运行,UI如下:

    三、Qt串口编程注意事项

    在接收串口数据时:

    void PortSettingDialog::onDataRecv()
    {
        const qint64 bytesAvailable = mUartCom->bytesAvailable();
        if (bytesAvailable == 0)
            return;
     
        QByteArray readData = mUartCom->readAll();
        const char *rxBuffer = readData.data();
     
        updateRecvUI(rxBuffer, bytesAvailable);
    }
    

    bytesAvailable()方法的返回值bytesAvailable可能比readData.size()小,所以如果使用bytesAvailable进行数据处理的话(如上面代码段),无疑会遗漏数据,自然这是错误的。所以我们不能使用bytesAvailable()丈量数据长度,正确的串口数据接收方式:

    void PortSettingDialog::onDataRecv()
    {
        QByteArray readData = mUartCom->readAll();
        if (readData.size() == 0)
            return;
     
        const char *rxBuffer = readData.data();
        updateRecvUI(rxBuffer, readData.size());
    }
    

    GitHub地址

  • 相关阅读:
    windows tensorflow gpu pip 安装
    记笔记本windows锁定cpu频率的问题
    关于arcgis闪退或停止运行的解决办法
    机器学习听课 | 线性回归 | 06
    剑指offer | 二叉树中和为某一值的路径 | 30
    剑指offer | 二叉搜索树的后序遍历序列 | 29
    剑指offer | 从上往下打印二叉树 | 28
    机器学习经典案例 | 目录 | 00
    剑指offer | 二叉树的镜像 | 27
    剑指offer | 树的子结构 | 26
  • 原文地址:https://www.cnblogs.com/rockyching2009/p/13139597.html
Copyright © 2011-2022 走看看