精华内容
下载资源
问答
  • QT串口数据解析

    2021-02-26 10:50:47
    数据解析 /******************************************************************* * 函数功能:接收遥控器传来的数据并进行解析 * 调用:放在定时器中断服务函数中定时接收 * 时间:2020.12.5 *****************...

    数据解析

    /*******************************************************************
     * 函数功能:接收遥控器传来的数据并进行解析
     * 调用:放在定时器中断服务函数中定时接收
     * 时间:2020.12.5
    ********************************************************************/
    void MainWindow::rec_buffer()//接收操纵杆
    {
        buffer = serial->readAll();
        buffer = buffer.toHex();
    
        QString rDate;
        QByteArray fPLatLeverPercent,fPFanLeverPercent,fPMainLeverPercent,fPLonLeverPercent,
                   fPoil1LeverPercent,fPoil2LeverPercent,byteFlyingMode;
        rDate = QString(buffer);
        if(buffer != NULL)
        {
            if(rDate[0] == '0'&&rDate[1] == 'f'&&rDate.length() >= 70)
            {
                //qDebug("%s",qPrintable(rDate));
                rDate.remove(0, 2);
                fPLatLeverPercent = rDate.left(4).toLocal8Bit();
                rDate.remove(0, 4);
                fPFanLeverPercent = rDate.left(4).toLocal8Bit();
                rDate.remove(0, 4);
                fPMainLeverPercent = rDate.left(4).toLocal8Bit();
                rDate.remove(0, 4);
                fPLonLeverPercent = rDate.left(4).toLocal8Bit();
                rDate.remove(0, 4);
                byteFlyingMode = rDate.left(4).toLocal8Bit();
                rDate.remove(0, 4);
                fPoil1LeverPercent = rDate.left(4).toLocal8Bit();
                rDate.remove(0, 4);
                fPoil2LeverPercent = rDate.left(4).toLocal8Bit();
                rDate.remove(0, 4);
    
                gl_intPLatLeverPercent = (int16_t)fPLatLeverPercent.toInt(nullptr, 16);
                gl_intPFanLeverPercent = (int16_t)fPFanLeverPercent.toInt(nullptr, 16);
                gl_intPMainLeverPercent = (uint16_t)fPMainLeverPercent.toInt(nullptr, 16);
                gl_intPLonLeverPercent = (int16_t)fPLonLeverPercent.toInt(nullptr, 16);
                gl_intPOil1LeverPercent = (uint16_t)fPoil1LeverPercent.toInt(nullptr, 16);
                gl_intPOil2LeverPercent = (uint16_t)fPoil2LeverPercent.toInt(nullptr, 16);
    
            }
        }
        buffer.clear();
    }
    
    展开全文
  • 1. 相关文章汇总(1)QT解决串口数据接收不完整问题 (貌似贴出的代码可以存下串口接受的全部数据)(2)<QT障碍之路>qt中使用串口类接收数据不完整 (3)Qt5.7串口接收数据不完整因为串口本来就不是一次接收...

    55dbe8d96297b2e01d19a3079fad17d9.png

    1. 相关文章汇总

    (1)QT解决串口数据接收不完整问题 (貌似贴出的代码可以存下串口接受的全部数据)

    (2)<QT障碍之路>qt中使用串口类接收数据不完整

    (3)Qt5.7串口接收数据不完整

    因为串口本来就不是一次接收完数据,接受数据时需要判断!

    (4)qt5信息提示框QMessageBox用法

    (5)《用QT做点什么》-3-QT串口开发入门(上) (B站视频教程)

    (6)QByteArray使用方法举例

    (7)Qt 字符串截取分割

    (8)QT中foreach的使用

    (9)c++: c++ 字符串解析

    (10)【STM32】使用keil提供的JSON库——Jansson

    (11)STM32F103C8T6+cJSON 妈妈再也不用担心我的串口协议了

    (12)QByteArray详解

    (13)Qt串口通信接收数据不完整的解决方法

    (14)王超:Qt小项目之串口助手控制LED

    (15)郭凤贺:Qt 多线程串口调试助手

    尤其是下面这篇文章,建议精读!

    Qt串口通信接收数据不完整的解决方法 (灿哥哥的博文,208万+的访问量)

    2. 最终解决

    在此先要感谢CSDN上认识的湖南大学计算机院的大佬!

    分析:单片机在发送完每条完整的数据后,都会发送一个 "rn",那么"n"可以看作结束标志

    d39388a640d358b879e84bda6991745d.png
    单片机在每条数据的最后发送的&quot;rn&quot;

    单片机上传数据的视频

    83df81d55432e617512f04692c95f728.png
    单片机每条完整的数据包含5个数https://www.zhihu.com/video/1188488474184073216

    思路:将"n"作为结束标志,以判断是否接收到一个完整的数据。

    f9487649d8df033e2eefa394209a2d03.png

    由上述思路——>具体实现代码:

    //缓冲区
    QByteArray buffer;
    
    void parse(QByteArray package) {
        //解析数据
    }
    
    //槽函数
    void readData() {
        data = serial.readAll();
        foreach (char b in data) {
            if b != 'n') {
                buffer.append(b);
            } else {
                parse(buffer);
                buffer.clear();
            }
        }
    }
    

    将上面的代码融合到培培哥串口上位机的程序中,得到了全新一代的串口上位机

    884334d8a018ca3cdd4af86b09c4cf7f.png
    接收到完整的5个数据https://www.zhihu.com/video/1188504947413704704

    未完待续~

    ——20191212

    展开全文
  • 运用第三方串口类进行接收数据后 将数据存在temp中 ,然后再对temp进行解析判断进行不同的操作,但在编译时候会报错,如何解决?![图片说明](https://img-ask.csdn.net/upload/201605/06/1462503565_381713.png)
  • Qt实现串口通信(利用windows API实现串口枚举,多线程、生产者消费者模型实现数据解析); 自定义事件,向UI界面提供数据交互接口; 自定义队列,支持线程安全。
  • QT实时绘制串口数据

    2018-07-20 22:22:04
    采用多线程方法,主线程解析数据和绘图,子线程接收数据,QWT绘图,有历史回顾功能
  • 若接收的长度无误,最后解析数据不正确,记得查看串口是否需要做网络字节序转换(大小端问题),一般针对2个字节(如unsigned short)类型,或者4个字节(如int类型,unsigned int 类型)。 2

    个人版本:5.4及以上。

    【个人总结,接受正确意见,好的建议】

    1.问题:接收数据不正确。

    a).在串口接收数据接口处打印接收到的数据,若出现每次收到的数据长度与发送的数据长度不一致,则说明串口接收的数据不完整,解决方法可自定义数据缓存池专门接收串口收到的数据,然后进行统一处理。

    b).若接收的长度无误,最后解析的数据不正确,记得查看串口是否需要做网络字节序转换(大小端问题),一般针对2个字节(如unsigned short)类型,或者4个字节(如int类型,unsigned int 类型)。

    2.若使用缓存池

        如果使用缓存池,则需要去遍历缓存池,以匹配我们需要的数据,一般来说,我们在定义协议时都会定义协议头,头部至少包括头部标识位(标识数据开始),buffer长度(接收数据总长度或者有效数据长度,自己定),校验位(校验接收到的数据是否为发送的数据),有些协议还会有协议尾。因为涉及到一直去遍历,我们可以将这部分代码放入单独的子线程专门去解析数据。关于多线程的使用,网上一搜一大把,如果不会,就从简单的例子开始看效果。我们可以使用qDebug() << QThread::currentThread(); 打印当前线程ID,来查看当前所在线程ID。

        在使用缓存池时涉及到对缓存池的存放与取出,这里自行取舍是否需要加读写锁或者互斥锁。

    展开全文
  • HLW8032 QT 串口接收

    2019-03-21 22:49:40
    使用QT5开发,界面使用QT ui设计器,参考网上通用代码例程,自己做了修改,可以正常读取HLW8032功率计量芯片的的数据,并在上位机中解析计算,代码中都有注释希望对初入坑的同学有所帮助
  • QT串口模拟-基本界面

    千次阅读 2016-05-08 18:28:58
    u/cos-ii 模拟的是单片机端的串口解析,上位机串口调试是用Qt写的,由于windows下c语言开发串口不是很方便,所以我选择数据传输方式采用tcp方式,用socket来进行数据传输, 基本的模型就是,qt做tcp的server端,...

    最近在重新学习u/cos-ii,学习嘛,以一个小东西练手是最好的学习方式,所以有了串口解析模块,算是填充我的代码库吧,
    u/cos-ii 模拟的是单片机端的串口解析,上位机串口调试是用Qt写的,由于windows下c语言开发串口不是很方便,所以我选择数据传输方式采用tcp方式,用socket来进行数据传输,
    基本的模型就是,qt做tcp的server端,可以同时连接多个下位机,同时发送,同时接受,点对点,点对多的发送数据,
    u/cos-ii 写的windows端的tcp client端口,连接qt的服务器,进行数据的交互,
    下面简绍qt端口的界面,

    完成之后的界面。
    qt界面
    上面一块是接受区,表示接受的到的数据,还有接收的一些操作或者格式,
    下面是发送区,包括一些发送的格式还有操作按钮,

    这个界面是一个早期版本,我后来再连接按钮上面加了一个combox表示tcp的端口号。
    发送的两个模式选择按钮是radiobutton,这种按钮在qt里面,只需要两个或者多个放在一个group框架,也就是发送区那个框框,就可以实现单选了,
    清空保存按钮,是一个普通的push button,内部调用了一些函数,实现保存清空,
    显示框是text edit,放大之后就很好用了,,
    下面的东西都差不多。

    展开全文
  • QT实现串口工具

    2017-10-30 14:31:12
    QT实现了串口工具,能通过串口传输数据,并经过数据解析
  • QT串口工具First_pro.7z

    2019-12-18 00:47:46
    学习C++时,使用QT编写了一个串口工具,工具参考的其他串口工具,目前已经实现大部分基础功能,还剩下想要增加的功能:文件发送,接收数据文件存储,发送CRC计算,指定接收的第几个字节换成整数,及modbus解析,二级...
  • 这个项目的开始目标是为linux用户创建一个简单的串行助手,因为qt是跨平台的,因此应该在qt支持的所有平台上使用。 并且在解码系统的支持下,它应该能够更轻松地可视化来自串行和网络套接字的数据。 应该有许多...
  • Qt qextserial进行串口数据采集,qcustomplot进行绘图,曲线实时显示横纵坐标辅助线 目的、要求: A.读取RS422接口接收到的全部数据; 1.通过接口读取板卡采集的数据,采用多线程,读取数据和解析数据在主线程,...
  • 一、函数功能C 库函数 char *strtok...二、函数解析1.函数原型char *strtok(char *str, const char *delim)2.参数char *str 要被分割的目标字符串char *delim 要分割目标字符串的分隔符,必须被包含于目标字符串中3....
  • Qt串口上位机开发 之前的文章我们简单介绍了热成像传感器德国海曼的HTPA 32x32d的EEPROM数据读取和解析,以及PCB原理图设计等,本文主要进一步介绍传感器数据读取,最终通过五大步计算和校准得到我们想要的32x32...
  • 最近在做测试心电的项目,我用QT开发了一个简单的界面,实时显示底层采集到的心电数据波形图,由于完全靠自己开发,所以很苦恼,在网上也查了不少资料,也问了一些老师,最后基本完成了,由于网上查资料看到类似案例...
  • 如果从串口或者网络收到传送过来的中文数据解析发生乱码,解决办法如下: 1、发送时把中英文混合字符串转换成16进制用:.QByteArray tsd=tstr.toLocal8bit(); 2、收到数据时,使用如下方法处理: 2.1.QByteArray...
  • 一款使用与windows(qt开发)的串口软件,具有接受发送数据,波形显示,crc16-MODBUS数据解析,保存文件,导入文件并绘制波形的功能。
  • 解决51,stm32 Qt qt serial串口接收问题

    千次阅读 2018-09-19 15:42:08
    2、解决串口数据长度不固定,且没有规律,没有包头,没有包尾等。 3、发送两帧数据的间隔必须超过设置的超时时间。我一般用5ms的超时时间,所以只要两帧数据发送间隔超过5ms,都能被解析出来。 4、主要是交流学习...
  • 在项目中需要用Qt5.9采集仪表中的数据,仪表是以200Hz的频率主动向外连续发送数据,发送频率很高,而且主动发送,不需要软件发送一次,再读取一次,而是软件直接读取。这种直接连续读取,有两个关键点:1)如何从...
  • QT编写的串口设备调试工具终极版

    千次下载 热门讨论 2013-12-20 13:39:19
    技术实现:通过第三方串口通信类,解析协议并作出处理 基本功能: 1:支持16进制数据发送与接收。 2:支持windows下COM9以上的串口通信。 3:自动加载对应操作系统串口号。 4:实时显示收发数据字节大小以及串口状态...
  • 每一个包都加一个包头,里面包括数据类型(图片/温湿度),节点号(哪一个模块的数据),数据包的序号,数据包有效长度等信息,辅助解析串口数据。每一个包分两两部分读取,包头+有效数据。从包头获取有效数据长度,...
  • 1.QT5.5的串口通信,运用的是QSerialPort类,并利用的是write()函数实现,QT的上位机软件向STM32的下位机发送数组数组。 2. 将要发送的结构体,利用memcpy函数将结构体中的数据,赋值到发送的字节数组QByteArray中。...
  • 最近由于工作需要使用QT试着编写了基于串口的上位机,由于本人才接触QT没多久,好多知识不太理解。 碰到了下面的问题: ...需要判断祯头祯尾 来吧里面的数据解析出来。 单片机发送了了一组十六进...
  • 我用Qt5写的串口调试程序,现在需要把数据转换成实时动态图,听说需要定义数据格式和进行数据解析,我不太懂,希望大神给一些建议,准备用QCustomPlot来画的。
  • 当协议一样,要将串口数据解析转为网络端口监听,之前可用tcp通信处理。 还可以:各种数据接收后排队存入一个全局变量,再单独开辟一个线程从这个全局变量读取第一个数据,处理完则移除第一个数据。Qt中的链表直接...
  • 之前几篇总结了文件、网络和串口操作等,这些功能或多或少都与IO操作有关,你可能已经发现他们涉及的一些类都是由QIODevice派生而来,这意味着涉及到数据传输,本篇将介绍两类常见的数据格式——JSON和XML,并总结Qt...
  • 一个线程处理数据当协议一样,要将串口数据解析转为网络端口监听,之前可用tcp通信处理。还可以:各种数据接收后排队存入一个全局变量,再单独开辟一个线程从这个全局变量读取第一个数据,处...
  • QT串口通讯协议 近期由于需要,加入了电子指北针,因此通过串口协议获取回传数据,以下是个人在探索过程中解析协议一点心得: MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::...
  • qt 程序中读取 DXL360 倾角仪的数据

    千次阅读 2017-10-28 21:12:56
    最近需要测量水平倾角,就从网上找了个 DXL360 倾角仪。...因此读取数据就是从串口中获取数据之后解析一下。没什么难度,代码放这里做个备忘,希望对大家也能有用。DXL360 通过串口传来的数据格式为 X+

空空如也

空空如也

1 2 3 4
收藏数 69
精华内容 27
关键字:

qt串口数据解析