基于Qt的多接口设备模拟软件设计与实现

(整期优先)网络出版时间:2023-08-22
/ 2

基于Qt的多接口设备模拟软件设计与实现

张昆,张倩

北方自动控制技术研究所 山西太原 030006

摘要:

针对具备多路CAN口、多路串口,具有高并发、高响应等特征,但存在价格昂贵且体积较大等缺点的系统,基于Qt的用户界面开发框架,提出了通过软件模拟系统相关接口和功能的方法。该软件在模拟系统接口数据的同时,实现对各种不同类型数据的灵活设置,可模拟系统的各种输出数据。经过测试,模拟软件运行稳定,响应及时,能够完成对系统基本接口及功能的模拟,方便开发人员进行数据通信,轻松完成场景搭建。

关键词:CAN口、串口、模拟软件


1引言

在某型设备进行通信测试过程中,需要通过具备多个CAN口、多个串口的系统与其进行数据交互。该设备对实时性要求高,需要系统具备毫秒级响应能力;同时,该设备同时进行多个CAN口、多个串口的数据通信,要求系统具备并行处理能力。目前在用的系统,存在价格昂贵、体积较大等缺点,从经济方面考虑,其性价比较低,从易用方面考虑,其体格笨重不便使用。针对如此现实情况,结合设备测试的需求及系统的特点,采用软件模拟系统的相关功能,搭配CAN接口盒和串口扩展设备,实现对某型设备的通信测试,从而达到经济、易用的目的。

Qt是基于C++语言的图形用户界面开发框架,具有跨平台特性,且拥有面向对象开发、丰富的API及易用且开源的开发环境等特点。同时,Qt提供了丰富的类,采用QSerialPort和QSerialPortInfo类,可方便地完成对串口的操作;采用Qthread类进行多任务处理,从而实现多个功能模块的同时运行。

USBCAN-II是高性能的工业级CAN接口卡,兼容USB2.0全速规范,带有2路CAN接口。采用该接口卡,PC机可通过USB总线,方便地连接至CAN网络,构成CAN网络领域的数据采集及数据处理。

2模拟软件设计

2.1模拟软件体系

模拟软件主要包括设备管理和功能模拟两个部分。设备管理主要完成对接口设备的设置、接口数据的拆包和组包以及接口数据的保存;功能模拟主要完成不同功能模块的设置、不同数据的设置及接口数据的解析和处理。

2.2模拟软件功能

1)CAN接口设备的管理

CAN接口设备接入PC机后,需通过软件对其进行特定的管理和设置,方能够正常使用。CAN接口设备具有两路CAN接口,可分别进行设置。针对CAN接口设备,模拟软件可实现设备的打开和关闭、波特率、滤波特性、发送方式、发送帧类型、发送帧格式及发送帧ID的设置。

2)串口的管理

串口是一种应用较为普遍的通信接口,其具有简单易用的特点。PC机部具备串口硬件接口时,可方便地通过USB扩展串口。针对串口的管理主要包括操作系统串口的探测、串口的打开及关闭、串口的波特率及数据位等控制字的设置以及发送和接收数据类型的设置。

3)功能模拟

模拟软件通过界面选择不同的功能模块从而进入相应的界面;在进行数据模拟发送时,软件界面通过输入或选择的方式构造不同的数据,软件后台根据界面的输入生成各种类型的报文数据,执行相应操作完成发送;在进行数据模拟接收时,根据相应模块中的解析规则完成接收到数据的解析并在界面显示。

2.3模拟软件工作流程

用户根据通信需求选择相应的功能模块;根据通信需求选择相应的通信接口;根据通信数据要求,进行相关数据的设置;在数据接收区域进行数据查看,在数据发送区域完成数据发送。

3接口调用及多任务处理

3.1CAN接口函数

CAN接口卡通过动态链接库的形式提供接口卡操作的接口函数,包括设备打开及关闭、设备初始化、设备状态获取、数据读取及数据发送等。

Qt继承开发环境支持外部动态链接库的导入。在Qt工程中导入CAN接口卡动态链接库并添加相应头文件,可实现Qt应用程序对CAN接口卡的操作。

3.2串口接口库函数

Qt中QSerialPortInfo类提供串口相关信息的查询接口。调用相关的函数,可以获取到串口相应的端口名称、硬件描述及制造商等信息。

Qt中QSerialPort类提供的相应函数可实现对串口的具体操作。需要说明的是,QSerialPort类中的readyRead()方法可作为新数据到达的信号,在使用中通过connect()槽函数将readyRead()方法与设计的读取数据函数连接,当有新的数据到达时自动发信号给读取数据函数,从而使其得到执行。

3.3多任务处理

模拟软件需要同时处理不同的任务,因此需要具备多任务处理能力。Qt中的Qthread类是一个线程类,通过这个类可以创建子线程,通过不同的子线程完成程序所需的逻辑运算。另外,通过重写父类的run()方法,也可以实现多任务处理,在run()方法内部实现子线程要处理的具体的业务流程。

4模拟软件的实现

4.1用户界面

模拟软件在进行用户界面设计时,从易用性、实用性及可扩展性方面进行考虑,对各种功能进行最基本的划分,在菜单栏上分别列出相关的功能大类,进入各个菜单项之后可选择相应基本的功能;在选择相应的功能后,弹出新窗口进行相应功能的操作及显示。弹出新窗口的方式,可方便地进行多个功能的同时并行操作,提高了模拟软件的易用性及实用性。

4.2数据发送

针对特定的接口,实现相应的接口类。在类中实现设备打开、初始化、发送、接收、关闭等操作函数。按照接口打开及初始化的操作顺序,依次调用相关函数并判断返回结果。保证接口初始化正常的前提下,调用发送函数完成数据发送。

4.3数据接收

数据接收对接口的基础状态与数据发送类似,即接口应打开并初始化正常。数据接收不同于数据发送的地方在于,数据接收是不定期的,因此需建立独立的线程用于数据的接收,从而保证数据接收的完整性及界面操作的流畅性。

4.4数据生成及协议解析

协议通常由信息头、信息长度、信息内容及信息校验等部分组成。当进入不同的功能模块时,模拟软件根据预先设计的协议规则进行发送报文的生成以及接收报文的解析。在接收报文时,对信息头、信息长度及信息校验进行判断,只有都符合规则才对信息内容进行解析。

4.5资源释放

在关闭相应接口时,针对申请的计算机资源,依次进行释放处理,从而保证软件的稳定性及接口的可用性。

5模拟软件测试

模拟软件运行稳定,在与特定设备在不同条件下进行数据通信过程中,数据收发正常、报文生产及解析正常,同时运行多个功能模块时,软件也能够良好运行,未出现卡死、崩溃等现象。

6结语

针对某型设备的测试需求,设计开发的模拟软件具备相应的接口及相关的功能,测试过程中软件运行良好稳定,方便开发人员使用。另外,在软件设计过程中,注重软件的通用性,也可作为通用的CAN口和串口调试工具使用。

参考文献

[1]任红斌,刘会颖,颜明会.多串口多协议多线程仿真系统的设计与实现[J].电脑编程技巧与维护,2022,(02):26-27,41.

[2]成郑,王平.基于CAN总线的船舶导航通信系统设计[J].现代工业经济与信息化,2022,(02):74-75,78.

[2]佘立,李志强.基于Qt的多串口多协议数据接收解析软件的设计与实现[J].信息科技,2011,(1):34-36.

[3]广州致远电子. CAN-bus 通用测试软件及接口函数库使用手册[M].2013.