使用LinuxQT实现串口通信,轻松打开物联网之门 (linuxqt串口)

随着物联网技术的发展,各种物联设备逐渐走进人们的日常生活中。而要实现设备之间的互联和数据交换,串口通信技术就显得尤为重要。在Linux系统下,QT作为一种跨平台应用程序框架,可以方便地实现串口通信功能,从而轻松打开物联网之门。

一、Linux系统下的串口通信

Linux系统内核中提供了许多与串口通信相关的驱动程序,可以通过在应用程序中使用系统调用函数来实现串口通信。如图1所示,Linux系统下,串口驱动程序主要由以下几部分组成:

1.串口芯片驱动程序:Linux系统内核支持多种串口芯片,如16550A、16650、16750、16850等。不同的芯片驱动程序实现方式不同,但是它们都提供了相应的接口函数用于访问串口寄存器。

2.串口设备驱动程序:Linux系统将串口设备看作一种特殊的字符设备,因此串口设备驱动程序实质上也是一种字符设备驱动程序。它提供了打开、关闭、读、写、控制等基本接口函数,并且通过ioctl()系统调用函数提供了设置串口参数的接口。

3.串口控制台驱动程序:除了可以通过应用程序进行串口通信外,Linux系统还提供了一种特殊的串口路由,即串口控制台。用户可以将其视为一种远程终端,通过串口连接到电脑上,实现远程登录的功能,以便于在远程主机上进行操作。

图1 Linux系统下的串口通信结构

二、QT实现串口通信

QT是一种基于C++语言的跨平台应用程序框架,其中包括了许多用于GUI开发的组件,同时还提供了一些底层接口函数,可以方便地实现串口通信功能。

1.串口基本设置

在QT应用程序中使用串口通信功能之前,首先需要对串口进行初始化设置。QT提供了一个QSerialPort类,该类封装了串口通信的底层操作,实现了如下几个重要的功能:

1.打开、关闭串口

2.设置串口各项参数,如波特率、数据位、停止位等

3.读、写数据

在使用QSerialPort类之前,需要先引入头文件,即#include

在进行串口初始化时,需要以如下方式定义QSerialPort类的实例:

QSerialPort serial;

然后利用该实例中提供的函数进行串口设置,如下所示:

serial.setPortName(“/dev/ttyUSB0”); //串口设备文件名

serial.setBaudRate(QSerialPort::Baud115200); //波特率

serial.setDataBits(QSerialPort::Data8); //数据位数

serial.setParity(QSerialPort::NoParity); //校验位

serial.setStopBits(QSerialPort::OneStop); //停止位数

serial.setFlowControl(QSerialPort::NoFlowControl); //流控制

在进行完上述设置之后,调用以下函数将串口打开即可:

if(serial.open(QIODevice::ReadWrite)){//串口打开成功 }else{//串口打开失败 }

如果想关闭串口,可以使用如下代码:

serial.close();//关闭串口

2.读取串口数据

在串口成功打开之后,就可以使用QIODevice类中提供的read()函数进行数据的读取了。该函数的原型如下所示:

qint64 read(char *data, qint64 maxSize);

其中,data表示数据缓冲区,maxSize表示最多读取的字节数。函数的返回值为实际读取到的字节数。下面是一个调用read()函数进行串口数据读取的示例:

char data[100]; //定义一个100字节大小的缓冲区

serial.wtForReadyRead(100); //等待100ms,确保有数据可读

qint64 ret = serial.read(data, 100); //读取数据

if(ret != -1){//读取成功,处理数据 }

3.发送串口数据

在串口成功打开之后,还需要使用QIODevice类中提供的write()函数进行数据发送。该函数的原型如下所示:

qint64 write(const char *data, qint64 maxSize);

其中,data表示待发送的数据,maxSize表示待发送的数据长度。函数的返回值为实际发送的字节数。下面是一个调用write()函数进行串口数据发送的示例:

char data[100] = “Hello, World!”;

qint64 ret = serial.write(data, strlen(data));//发送数据

if(ret != -1){//发送成功 }

三、实现物联网应用

在掌握了QT中串口通信的基本操作之后,就可以开始开发物联网应用了。比如,利用树莓派和QT实现一个远程控制小车的应用。

需要在树莓派上连接一个蓝牙模块和一个串口控制器。然后,使用QT中提供的串口通信功能,通过蓝牙模块与小车进行数据交互,实现小车的远程控制。具体实现过程如下:

1.在QT应用程序中初始化串口,将其连接到蓝牙模块上。

2.通过使用QT中提供的GUI组件,实现小车的远程控制界面,包括按键、滑条等。

3.定义一个线程或者定时器,在固定的时间间隔内读取远程控制界面上的数据,并将控制命令通过蓝牙模块发送给小车。

4.小车收到控制命令之后,解析命令并执行相应的动作。

通过上述方法,就可以方便地实现一个基于串口通信技术的物联网应用,实现对物理设备的远程控制和数据交换。

相关问题拓展阅读:

怎样用Qt编写arm与linuxTCP通信程序,arm做服务器,linux做客户端,获取arm上AD转换器的值?

大佬 还有这方面的例子吗?

1、可采用Linux下的socket编程技术,跟QT或ARM的关联性不大。

2、ARM开猜缓发板上运行多线坦昌程的服务器端程序,主线程Listen,子线程采集AD转换器的值。

3、LinuxPC上运行tcp的让兆扒客户端程序,connect到ARM开发板上的服务器进行数据获取和展现。

去下载一个现成的串口通信的QT或VC工程,源咐这种东西很多;然后把数据读写相关部分抽出来,雹吵纯换成你的代码

另:这种通信一般都用udp,用tcp,握手和重传碰档不好写……

串口助手可以连qt连不了

1.检查网络是否晌隐稳祥谨握定

2.查看服务器是否正在维护

3.使用杀毒工具清理缓存谨庆

4.更新软件版本

串口助手使用方法:

在这里一定要注意一下,这个虚拟串口软件不要使用最新版本的9.0,会报错,一般使用7.2或者6.9版本即可。

9.0使用几天后,

中文版本报错如下闷岁:

无法配对端口。 有关详细信息,请参见日志。 要忽略错误并仍然创建捆绑包,请在选项中启用相应的设置。

英文版本报错如下:

Cannot pair ports. See log for details. To ignore errors and create bundles anyway, please, enable the corresponding setting in options.

换个版本即可解决。

使用目的

我们使用虚拟串口到底是干蚂链睁什么?如果有经验就知道。如果手头有一个实际的单片机,那么使用一个类似U盘的USB转TTL的东西,便可以将单片机发送的串口内容在串口助手中显示出来,但是如果没有单片机,也没有USB转TTL,那么可以在Proteus中,仿真一个单片机,发出串口内容,同时在Proteus中为单片机连接COMPIM(虚拟串口),同时在电脑上安装Virtual Serial Port Driver这个软件,那么,在Proteus中,单片机发出的串口内容便可以在同一个电脑中的串口助手中接收。这就是我们要完成的功能。

再概括一下就是,这个COMPIM模块能够将proteus中单片机的串口绑定到电脑上的一个串口,比如是com1,而这个虚拟串口就可以将com1和com2绑定,那么便可以利用上位机或者串口助手应用程序等从com2接收来自于com1中单片机的串口信息。

实现步骤如下:

(1)Proteus中单片机可以正常收发串口内容

(2)Proteus中单片机的引脚连接COMPIM,TXD连接TXD

(3)电脑中安装Virtual Serial Port Driver软件

(4)电脑中拥有串口助手

(5)Virtual Serial Port Driver软件中配对COM口,COMPIM设置相应COM口

9.0安装步骤:

双击安装vspdpro.exe

打开文件安装位置,将vspdproCHS.EXE复制过去

vspdpro-jie.exe可以不用复制过去

以后唤族使用,直接双击vspdCHS.EXE

7.2安装步骤:

点击vspd.exe安装

打开文件所在位置,将vspdctl.dll覆盖复制到这个路径中

每次卸载完毕后,直接delete all,不要一直占用串口。

、新建工程

文件->新建文件或项目->项目选择Application(Qt Widget Application)->点击choose…->填写名称,路径等->点击下一步->点击下一步->(左边Details)Base class选侍胡择QDialog,整体都变成dialog相关的文件了,其他默认->点击下一步->点击下一步老备拦->(左边Kit)选中MinGW 32bit->滚备点击下一步->点击完成。

Copyright ©, CSDN.NET, All Rights Reserved

串口通信

打开APP

龙腾飞宇

关注

如何使用键丛QT编写自己的串口调试助手及QT串口使用注意事项 原创

:34:50

1点赞

龙腾飞宇

码龄4年

关注

QT 如何使用QT编写自己的串口调试助手,QT串口使用注意事项

QT 串口调试助手

1 环境与工具

2 设计过程

2.1 新建项目与界面布局

2.2 程序设计

3 注意事项和说明

最近在学习qt,边学边写,写了个串口调试助手,记录过程的同时分享出来御亮改正在学习的伙伴。

QT 串口调试助手

** 主要功能:串口数据收发、显示,定时发送,接收数据保存、文件发送,不同编码、进制转换等。**

1 环境与工具

PC Windows10

QT 5.12.0

2 设计过程

QT实现串口通信主要是利用QT自带的串口类和函数,在.pro文件中添加”QT += serialport”,然后在项目文件中包含头文件(#include ),我们就可以在项目中使用QSerialPort来读取和发送串口数据了。主要过程:实例化串口——>搜索可用串口——>打开串口——>设置串口参数——>读取数据或发送数据。

2.1 新建项目与界面布局

​ 新建串口调试助手的项目,由于QT还没玩熟,这里就直接使用QT Designer进行ui界面的绘制和布局。布局过程镇判不再赘述,根据自己的需要放置适当的控件即可,更好对控件对象也重命名一下,完成布局后

linuxqt串口的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linuxqt串口,使用LinuxQT实现串口通信,轻松打开物联网之门,怎样用Qt编写arm与linuxTCP通信程序,arm做服务器,linux做客户端,获取arm上AD转换器的值?,串口助手可以连qt连不了的信息别忘了在本站进行查找喔。


数据运维技术 » 使用LinuxQT实现串口通信,轻松打开物联网之门 (linuxqt串口)