`
qimo601
  • 浏览: 3449124 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Qt 串口通信 高速发送出错的解决方法总结

    博客分类:
  • Qt
阅读更多


使用网上的qextserialport-1.2类,自行开发多线程串口通信。开发的过程中,出现两个问题:


问题1:我用信号槽跨线程调用串口类MyCom 发送和接收数据,中间运行的时候,会内存错误,Qt error LNK2001: unresolved external symbol,导致程序崩溃。


解决方法:原因是我自己写了个串口类MyCom,继承了qextserialport,可能写的不是太好,信号槽传递参数,出问题了。后来直接把Win_qextserialport  *seriPort 设成MyCom的成员变量,直接调用,就没问题了。


问题2:更让我头疼的是这个问题,每次我设置定时器为50millsecond的时候,串口通信的数据就会出现不完成的情况。本来是以为信号槽的问题。实际Qt信号槽是可以支持1millsecond的频率的。


解决方法:哈哈哈,原来是这样的,我界面上使用的是QTimer类定时器,直接信号槽高频率10ms发一次命令,导致堵塞,所以会出现数据丢失。我改成QBasicTimer 和QEventTimer用事件进行中断控制发送命令,就可以让我的通讯频度达到2ms了,只不过貌似1ms还有数据丢失的问题。可能和系统平台有关系了。哈哈实际10ms就可以达到我项目的性能需求了。



 

0
0
分享到:
评论

相关推荐

    QT串口通信案例+串口调试工具

    QT串口通信是QT框架中实现设备间通过串行接口进行数据传输的一种技术。QT是一个跨平台的应用程序开发框架,广泛应用于桌面、移动以及嵌入式系统。在本案例中,"QT串口通信案例+串口调试工具"提供了一个实际的串口...

    基于Qt串口通讯程序--已测试

    在计算机通信领域,串口通讯是一种常用的数据传输方式,它通过串行接口进行数据的发送和接收。本项目是基于Qt框架实现的串口通讯程序,适用于学习Qt编程以及理解串口通讯的基本原理和操作。 **Qt框架** Qt是一个跨...

    【基于QT5.9.8开发的串口调试助手】serial.zip

    2. **串口通信**:串口调试助手的核心功能之一是实现与硬件设备的串行通信。在计算机科学中,串口通信是一种通过串行数据链路传输数据的方法。在QT中,这通常通过QSerialPort模块来实现,该模块提供了打开、关闭串口...

    串口操控_QT模仿串口界面而写.zip

    串口通信,也称为串行通信,是通过串行数据线依次发送和接收数据的方式。通常包括RS-232、RS-485和USB串口等。在QT中,我们主要关注的是通过QtSerialPort模块来操作这些串口。 QtSerialPort模块提供了一系列的类和...

    Qt 上位机串口通信简单Demo

    在本文中,我们将深入探讨如何使用Qt框架进行上位机串口通信的简单实现,以创建一个基础的串口通信Demo。Qt是一个跨平台的应用程序开发框架,支持多种操作系统,如Windows、Linux和macOS等。它提供了丰富的库和工具...

    Qt5.11.1+VS2017 X64 C++动态编译 串口通讯源代码 重新上传

    Qt5.11.1+VS2017 X64 C++动态编译 串口通讯源代码,之前上传一份但忘记清理调试过程产生的缓存导致文件解压后有一个G,现在重新传一份.最近无聊就上论坛找教程写了一个串口通讯的程序.本人是新手所以可能写得一般般....

    基于QT5.9的串口助手

    【QT5.9串口助手】是一个利用QT框架开发的实用工具,主要功能是实现与硬件设备间的串行通信。QT是一个跨平台的C++图形用户界面应用程序开发框架,广泛应用于桌面、移动以及嵌入式系统。在QT5.9版本中,开发者可以...

    串口调试助手打开异常_解决办法.zip

    串口调试助手是一款广泛应用于电子工程、自动化控制等领域,用于测试和调试串行通信设备的软件工具。在标题中提到的“串口调试助手打开异常”,通常指的是在尝试运行该软件时遇到了问题,可能是由于系统组件缺失或者...

    QT modbus通信协议封装代码

    在QT中,你可以使用QSerialPort库来处理串行通信,对于TCP/IP通信,可以利用QT的网络编程模块如QTcpSocket。封装Modbus协议通常涉及以下几个步骤: 1. **CRC校验**:Modbus协议中,为了确保数据传输的正确性,通常...

    基于PLC的跨平台通信软件的设计与实现.pdf

    本项目研究了在没有规范通信协议的情况下,用户可自定义通信规则,以及利用串行通信来实现跨平台通信的方法。 首先,PLC是一种利用数字技术进行控制的电子系统,它可以编程来控制各种机械或生产过程。PLC以其编程...

    DemoMBSerial.zip

    在本文中,我们将深入探讨如何使用Qt5框架与QModBus库进行串口通信,以实现数据的读写。"DemoMBSerial.zip"文件提供了一个简单的示例工程,旨在帮助开发者理解并应用QModBus库在实际项目中的操作。QModBus是Qt平台上...

    嵌入式编程注意事项总结

    以上是嵌入式编程中常见的注意事项,通过深入理解和实践这些要点,可以有效提升开发效率,降低出错率,确保嵌入式系统的稳定和高效运行。在实际工作中,不断学习和总结经验,对每个项目进行细致的规划和实施,将有助...

    BMS_TestTool.zip

    此外,C#与.NET框架的紧密集成,提供了诸如.NET Framework中的System.IO.Ports类库,方便进行串口通信,与BMS硬件进行数据交互。 在"BMS_TestTool"中,我们可以推测其包含以下几个核心部分: 1. 数据采集模块:...

    嵌入式Linux应用程序开发详解

    2.3.3 设定服务命令常用方法 56 2.4 实验内容 57 2.4.1 在Linux下解压常见软件 57 2.4.2 定制Linux系统服务 58 本章小结 60 思考与练习 60 第3章 Linux下的C编程基础 61 3.1 Linux下C语言编程...

    嵌入式Linux应用程序开发标准教程(第2版全)

    7.3.3 守护进程的出错处理 7.4 实验内容 7.4.1 编写多进程程序 7.4.2 编写守护进程 7.5 本章小结 7.6 思考与练习 第8章 进程间通信 8.1 Linux下进程间通信概述 8.2 管道 8.2.1 管道概述 8.2.2 管道系统调用 8.2.3 ...

    M3354_A8.rar

    这份PCB封装设计可以直接用于开发,大大节省了设计时间和成本,同时也降低了出错的可能性。 在基于M3354的开发中,理解其工作原理和周边接口的使用方法至关重要。Cortex-A8架构支持多种接口标准,如UART、SPI、I2C...

    MC68HC908QY2CDW的技术参数

    - **串行通信**:虽然描述中未提及具体的串行通信接口,但通常此类微控制器会包含至少一个UART(通用异步接收发送器)或其他串行通信协议如SPI或I2C,用于与其他设备通信。 ### 模数转换(A/D转换) - **A/D转换器*...

    LINUX系统开发技术详解---基于ARM

    9 2.1.2 ARM处理器体系结构........................................................................................ 10 2.1.3 Linux 与ARM处理器...............................................................

Global site tag (gtag.js) - Google Analytics