CN102819430B - 一种在linux环境下实现串行通信接口的装置及方法 - Google Patents

一种在linux环境下实现串行通信接口的装置及方法 Download PDF

Info

Publication number
CN102819430B
CN102819430B CN201210234336.5A CN201210234336A CN102819430B CN 102819430 B CN102819430 B CN 102819430B CN 201210234336 A CN201210234336 A CN 201210234336A CN 102819430 B CN102819430 B CN 102819430B
Authority
CN
China
Prior art keywords
module
glib
serial
serial ports
busapi
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201210234336.5A
Other languages
English (en)
Other versions
CN102819430A (zh
Inventor
余美强
左飞
高默
张澎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NFS-CHINA SOFTWARE Co Ltd
Original Assignee
NFS-CHINA SOFTWARE Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NFS-CHINA SOFTWARE Co Ltd filed Critical NFS-CHINA SOFTWARE Co Ltd
Priority to CN201210234336.5A priority Critical patent/CN102819430B/zh
Publication of CN102819430A publication Critical patent/CN102819430A/zh
Application granted granted Critical
Publication of CN102819430B publication Critical patent/CN102819430B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Information Transfer Systems (AREA)

Abstract

本发明涉及在linux环境下实现串行通信接口的装置,该装置基于glib库并使用d-bus作为进程间通信软件,包括:通过串口与微处理器进行通信的串口设备模块;glib模块,使用glib库设置串口缓冲与读取机制;d-bus?API模块,使用d-bus?API实现glib模块与上层应用模块之间的通信;上层应用模块,使用各种支持d-bus技术的语言编写相应的应用代码以实现所需要的串口功能。本发明使得用户可以实现自己需要的UI与相应的功能,便于设备开发时的调试与使用。

Description

一种在linux环境下实现串行通信接口的装置及方法
技术领域
本发明属于计算机领域,尤其涉及一种在linux环境下实现串行通信接口的装置及方法。
背景技术
串行通信接口简称串口,是计算机上最常用的一种接口,具有成本低廉,使用简单,只需要一对传输线就可以实现双向通信等优点。由于这些优点,有很多设备使用串口与计算机进行通信,包括蓝牙设备,GPS设备,GPRS设备等等。目前,由于通用串行总线的易用性与支持热插拔和即插即用等优点,这些设备逐渐地使用通用串行总线虚拟出串口与计算机进行通信。目前各个linux发行版中一般自带使用异步传输协议与串口的软件,比如支持xmodem协议的minicom,等。但是这些软件仅仅具有简单的输入输出功能,不能满足设备开发时的调试与使用需求。
发明内容
鉴于现有技术的缺陷,本发明提供一种在linux环境下实现串行通信接口的装置,该装置基于glib库,并使用d-bus作为进程间通信软件,包括:
串口设备模块,通过串口与微处理器进行通信;
glib模块,使用glib库设置串口缓冲与读取机制;
d-busAPI模块,使用d-busAPI实现glib模块与上层应用模块之间的通信;
上层应用模块,使用各种支持d-bus技术的语言编写相应的应用代码以实现所需要的串口功能。
进一步,根据本发明的装置,在操作系统的用户层通过read函数获得串口设备描述符,设置串口参数,与串口建立通信关系,并保存相关参数。
进一步,本发明装置中所述glib模块进一步包括,
第一模块,用于使用glib库的GkeyFile技术将串口参数保存成可读写配置文件;以及
第二模块,用于使用glib库的GIO技术对串口设备进行缓存,并实现串口设备和本装置之间的数据交互。
进一步,本发明装置中所述d-busAPI模块,进一步用于在glib模块和上层应用模块之间,使用glib-d-bus技术,以d-busAPI实现各功能模块;所述各功能模块包括:串口参数保存模块、GPS协议解析功能模块、用户自定义协议栈测试模块、蓝牙测试功能模块、文件传输功能模块、定时发送与接收功能模块、输入输出同步、异步显示模块、Modem功能模块。
进一步,本发明装置中所述上层应用模块,进一步用于针对所述各功能模块的d-busAPI,使用各种图形框架实现相应功能模块的图形界面和python脚本。
此外,本发明还提供了一种在linux环境下实现串行通信接口的方法,该方法基于glib库并使用d-bus作为进程间通信软件,该方法包括:步骤(1)在操作系统的用户层通过read函数获得串口设备描述符,设置串口参数,与串口建立通信关系,并保存相关参数;步骤(2)用于使用glib库的GkeyFile技术将串口参数保存成可读写配置文件;步骤(3)用于使用glib库的GIO技术对串口设备进行缓存,并实现串口设备和本装置之间的数据交互;步骤(4)用于在glib模块和上层应用模块之间,使用glib-d-bus技术,以d-busAPI实现各功能模块;步骤(5)用于针对所述各功能模块的d-busAPI,使用各种图形框架实现相应功能模块的图形界面和python脚本。
进一步,本发明所述方法中的步骤(4)中所述各功能模块包括:串口参数保存模块、GPS协议解析功能模块、用户自定义协议栈测试模块、蓝牙测试功能模块、文件传输功能模块、定时发送与接收功能模块、输入输出同步、异步显示模块、Modem功能模块。
本发明通过glib实现对通用串行总线虚拟的串口、实际串口、其他虚拟串口实现可移植的调试软件核心逻辑、建立在核心逻辑上的D-BusAPI以及通过D-Bus的各种banding技术在各个banding下面实现的调试或者应用。由于所有功能模块都使用d-busAPI实现,所以通过支持d-bus的语言,本发明设计的串口模块使得用户可以实现自己需要的用户界面UI与相应的功能,便于设备开发时的调试与使用。
附图说明
图1是根据本发明的实现串行通信接口的装置的结构示意图;
图2是根据本发明的装置实现所需的各功能的示意图;
图3是本发明所述方法的流程图;
图4是本发明方法实现的串行通信接口的结构示意图。
具体实施方式
为了更详细说明本发明的实施或者表示本发明的技术细节,下面对本发明中所使用的技术进行详细说明。
Glib库是GTK+和GNOME工程的基础底层核心程序库,是一个综合用途的实用的轻量级的C程序库,它提供C语言的常用的数据结构的定义、相关的处理函数,有趣而实用的宏,可移植的封装和一些运行时机能,如事件循环、线程、动态调用、对象系统等的API(应用程序编程接口)。它能够在类UNIX的操作系统平台(如LINUX,HP-UNIX等),WINDOWS,OS2和BeOS等操作系统上运行。
D-Bus是freedesktop下开源的LinuxIPC通信机制,使用GPL许可证发行。本身Linux的IPC通信机制包括,管道(fifo),共享内存,信号量,消息队列,Socket等。D-Bus最主要的用途是在Linux桌面环境为进程提供通信,同时能将Linux桌面环境和Linux内核事件作为消息传递到进程。D-Bus是一个消息总线系统,其功能已涵盖进程间通信的所有需求,并具备一些特殊的用途。D-Bus是3层架构的进程间通信系统,包括:
1、接口层。接口层由函数库libdbus提供,进程可通过该库使用D-Bus的能力。函数库libdbus用于两个应用程序呼叫联系和交互消息。
2、总线层。总线层由D-Bus总线守护进程(Messagebusdaemon)提供,总线守护进程可同时与多个应用程序相连,并能把来自一个应用程序的消息路由到0或者多个其他程序。
3、包装层。包括一系列基于特定应用程序框架的Wrapper库,比如libdbus-glib,libdbus-python。
目前支持d-bus的图形界面框架包括,QT,java,GTK+等等。
本发明目的是实现一种在linux环境下实现串行通信接口的方法,其使用glib技术完成串口通信逻辑,以d-bus作为进程间通信基础,实现基于d-bus的API。本发明通过glib实现对通用串行总线虚拟的串口、实际串口、其他虚拟串口实现可移植的调试软件核心逻辑、建立在核心逻辑上的D-BusAPI以及通过D-Bus的各种banding技术在各个banding下面实现的调试或者应用。
图1是根据本发明的实现串行通信接口的装置的结构示意图。
该图示意一种从下向上,从底层到上层的串口调试工具层次结构图。在底层,串口设备通过串口与微处理器进行通信。在中间层,使用glib库设置串口缓冲与读取机制。而在上层应用层和中间层之间,使用先进的d-bus技术作为通信的桥梁。最后在上层应用层,可以使用各种支持d-bus技术的语言编写相应的应用代码以实现所需要的功能。
图2是根据本发明的装置实现所需的各功能的示意图。
以下从串口参数保存模块开始,按顺时针的顺序对图2所示各模块进行说明。
1、串口参数保存模块:一般的,普通软件只能保存串口的波特率,校验位等简单参数。本发明先获得串行通信设备ID,并将串口参数和设备ID通过glib的GkeyFile结构体,以配置文件的方式存放到指定文件夹下,默认配置文件名为serial-[设备ID名]。这样下次启动时,可以根据不同的设备ID号读取不同的串口参数对串口进行自动初始化。本发明的串口参数设置,串口缓冲区设置以及参数保存函数都实现了d-busAPI。
2、GPS协议解析功能模块:通用的GPS串行通信设备一般支持NMEA协议,本发明为了方便产品设计与开发,将NMEA协议解析功能作为一个模块集成到本发明中。通过分析NMEA协议,通过本发明可以得到当前GPS可查找的卫星数目,地理位置信息,日历等参数。作为一个选项,本发明将这些参数以d-busAPI的形式实现。通过调用不同的API,可以获取相应的参数。
3、用户自定义协议栈测试模块:目前,相当一部分的串行通信设备是由客户自己开发的,客户为与这些设备进行通信,需定义自己的通信协议。为满足这样的需求,本发明定义了一套d-busAPI来定义协议栈,本发明的软件可以通过得到的协议与串行通信设备进行通信。
4、蓝牙测试功能模块:目前,大部分的蓝牙设备也使用串行总线进行通信,并且使用Bluez软件作为蓝牙协议栈。本发明为了方便用户进行蓝牙测试,实现了蓝牙配对,音乐播放,文件传输等常用蓝牙功能,其中以d-busAPI实现这些功能。
5、文件传输功能模块:部分串行通信设备是作为数据传输用的,所以本发明通过glib的Garray结构实现了一个d-busAPI来支持文件的传输。
6、定时发送与接收功能模块:在某些情况下,比如压力测试时,需要使用到定时发送与接收的功能。为满足这种需要,本发明通过glib的timer工具实现了一种定时发送接收的d-busAPI。
7、输入输出同步、异步显示模块:本发明将串行总线输出数据进行行缓存,可以实现将对应输入行进行输出,也可以直接获得全部输出。同样的这种功能也以d-busAPI的形式实现。
此外还包括Modem功能模块:目前,Modem设备大多以串行总线实现控制接口,本发明根据标准的3GPP协议集成了短信发送功能。这样,用户可以通过短信的收发测试Modem设备。并且,本发明也集成了一般常用的Modem命令,通过d-busAPI可以获得Modem的信号强度,Modem时间,短信查看,短信发送,来电查看,电话拨打,Modem使能以及Modem休眠等功能。
最后,对串口的各功能模块进行d-busAPI封装,针对上述实现的API,使用各图形框架设计图形界面。通过d-busAPI可实现java图形界面、QT图形界面、GTK+图形界面、python脚本。
由于上述所有功能都实现了d-busAPI,所以通过支持d-bus的语言,本发明设计的串口模块使得用户可以实现自己需要的用户界面UI与相应的功能。
图3是本发明所述方法的流程图。其基于glib库,并使用d-bus作为进程间通信软件。以下也按照由下至上的方式对图3进行说明。最下方是串口设备。首先,在操作系统的用户层通过read函数获得串口设备描述符;然后,通过人工设置串口参数与串口建立通信关系,并保存相关参数;使用glib库的GkeyFile技术将串口参数保存成可读写配置文件;使用glib库的GIO技术对串口设备进行缓存,并实现串口设备和本发明装置之间的数据交互;在中间层的glib库和上层应用之间,使用glib-dbus技术实现本发明各功能模块的d-busAPI;最后,在最上方,利用d-busAPI实现各种图形框架下的软件与python调试工具等。因此,用户可以通过本发明实现的d-busAPI实现自己的UI与相应功能。
图4是本发明方法实现的串行通信接口的结构示意图。图4最下方表示本发明方法支持的各种Linux版本,例如,Android、Meego、Moblin、Maemo、支持d-bus的操作系统,等等。中间的三个方框表示本发明的方法中各功能是依据glib和d-bus技术实现,其支持串口设备、glib核心逻辑、d-busAPI。最上方表示本发明的方法可以支持通过java,QT,GTK+,python等软件编写的UI程序。
本发明基于glib技术和使用d-bus实现相关结构的API。包括实现了文件传输、GPS、modem等功能。其使用了glib来进行主要逻辑编写,使用d-bus实现进程间通信与API接口。最后对应不同的图形框架实现相应的程序。这样保证了本发明在linux及其衍伸版本下的通用性。使用glib实现串行通信逻辑,并给出D-BusAPI,其显著特点是使程序员能够通过调用API来实现复杂的串口操作,并且具有D-BusAPI的软件可以在linux的多个发行版及其衍伸版(比如android、maemo、moblin、meego等等)中实现其图形界面。
以上是对本发明的优选实施例进行的详细描述,但本领域的普通技术人员应该意识到,在本发明的范围内和精神指导下,各种改进、添加和替换都是可能的,例如调整接口调用顺序、改变消息格式和内容、使用不同的编程语言(如C、C++、Java等)实现等。这些都在本发明的权利要求所限定的保护范围内。

Claims (4)

1.一种在linux环境下实现串行通信接口的装置,该装置基于glib库并使用d-bus作为进程间通信软件,其特征在于,包括:
串口设备模块,通过串口与微处理器进行通信;
glib模块,使用glib库设置串口缓冲与读取机制;
d-busAPI模块,使用d-busAPI实现glib模块与上层应用模块之间的通信;
上层应用模块,使用各种支持d-bus技术的语言编写相应的应用代码以实现所需要的串口功能;
所述glib模块进一步包括第一模块,用于使用glib库的GkeyFile技术将串口参数保存成可读写配置文件;以及
第二模块,用于使用glib库的GIO技术对串口设备进行缓存,并实现串口设备和本装置之间的数据交互;
所述d-busAPI模块,进一步用于在glib模块和上层应用模块之间,使用glib-d-bus技术,以d-busAPI实现各功能模块;所述各功能模块包括:
串口参数保存模块、GPS协议解析功能模块、用户自定义协议栈测试模块、蓝牙测试功能模块、文件传输功能模块、定时发送与接收功能模块、输入输出同步、异步显示模块、Modem功能模块;
所述串口参数保存模块先获得串行通信设备ID,将串口参数和设备ID通过glib的GkeyFile结构体,以配置文件的方式存放到指定文件夹下,串口参数设置、串口缓冲区设置以及参数保存函数以d-busAPI实现;
所述GPS协议解析功能模块得到当前GPS可查找的卫星数目、地理位置信息和日历参数,将所述卫星数目、地理位置信息和日历参数以d-busAPI的形式实现,通过调用不同的API,可以获取相应的参数;
所述用户自定义协议栈测试模块定义一套d-busAPI来定义协议栈;
所述蓝牙测试功能模块以d-busAPI实现蓝牙配对、音乐播放、文件传输功能;
所述文件传输功能模块通过glib的Garray结构以d-busAPI支持文件传输。
2.根据权利要求1所述的装置,其特征在于:
在操作系统的用户层通过read函数获得串口设备描述符,设置串口参数,与串口建立通信关系,并保存相关参数。
3.根据权利要求1所述的装置,其特征在于:所述上层应用模块,进一步用于针对所述各功能模块的d-busAPI,使用图形框架实现相应功能模块的图形界面和python脚本。
4.一种在linux环境下实现串行通信接口的方法,该方法基于glib库并使用d-bus作为进程间通信软件,其特征在于,包括:
步骤(1)在操作系统的用户层通过read函数获得串口设备描述符,设置串口参数,与串口建立通信关系,并保存相关参数;
步骤(2)使用glib库的GkeyFile技术将串口参数保存成可读写配置文件;
步骤(3)使用glib库的GIO技术对串口设备进行缓存,并实现串口设备和本装置之间的数据交互;
步骤(4)在glib模块和上层应用模块之间,使用glib-d-bus技术,以d-busAPI实现各功能模块;
步骤(5)针对所述各功能模块的d-busAPI,使用图形框架实现相应功能模块的图形界面和python脚本;
步骤(4)中所述各功能模块包括:串口参数保存模块、GPS协议解析功能模块、用户自定义协议栈测试模块、蓝牙测试功能模块、文件传输功能模块、定时发送与接收功能模块、输入输出同步、异步显示模块、Modem功能模块;
所述串口参数保存模块先获得串行通信设备ID,将串口参数和设备ID通过glib的GkeyFile结构体,以配置文件的方式存放到指定文件夹下,串口参数设置、串口缓冲区设置以及参数保存函数以d-busAPI实现;
所述GPS协议解析功能模块得到当前GPS可查找的卫星数目、地理位置信息和日历参数,将所述卫星数目、地理位置信息和日历参数以d-busAPI的形式实现,通过调用不同的API,可以获取相应的参数;
所述用户自定义协议栈测试模块定义一套d-busAPI来定义协议栈;
所述蓝牙测试功能模块以d-busAPI实现蓝牙配对、音乐播放、文件传输功能;
所述文件传输功能模块通过glib的Garray结构以d-busAPI支持文件传输。
CN201210234336.5A 2012-07-06 2012-07-06 一种在linux环境下实现串行通信接口的装置及方法 Expired - Fee Related CN102819430B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210234336.5A CN102819430B (zh) 2012-07-06 2012-07-06 一种在linux环境下实现串行通信接口的装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210234336.5A CN102819430B (zh) 2012-07-06 2012-07-06 一种在linux环境下实现串行通信接口的装置及方法

Publications (2)

Publication Number Publication Date
CN102819430A CN102819430A (zh) 2012-12-12
CN102819430B true CN102819430B (zh) 2016-05-04

Family

ID=47303555

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210234336.5A Expired - Fee Related CN102819430B (zh) 2012-07-06 2012-07-06 一种在linux环境下实现串行通信接口的装置及方法

Country Status (1)

Country Link
CN (1) CN102819430B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103970545B (zh) * 2014-05-26 2017-03-29 天津七一二通信广播股份有限公司 采用JNI调用方式在Android系统中使用LTE Modem的方法
CN104484184A (zh) * 2014-12-26 2015-04-01 上海斐讯数据通信技术有限公司 一种嵌入式系统的shell设计方法
CN106254335B (zh) * 2016-07-29 2019-03-29 北京赛佰特科技有限公司 基于物联网的跨平台应用程序接口调用方法
CN107577578B (zh) * 2017-09-15 2022-02-18 郑州云海信息技术有限公司 统计nfs操作字时延的方法、装置、设备以及存储介质
CN111124984A (zh) * 2019-12-24 2020-05-08 广州小鹏汽车科技有限公司 多车载微控制单元间的通信方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101763269A (zh) * 2010-01-27 2010-06-30 中兴通讯股份有限公司 一种软件安装包的制作方法
CN102541587A (zh) * 2011-11-23 2012-07-04 中标软件有限公司 龙芯平台下安装linux操作系统的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101763269A (zh) * 2010-01-27 2010-06-30 中兴通讯股份有限公司 一种软件安装包的制作方法
CN102541587A (zh) * 2011-11-23 2012-07-04 中标软件有限公司 龙芯平台下安装linux操作系统的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于Linux架构的手机总线通信机制的研究及应用;郭维科;《中国优秀硕士论文全文数据库》;20110715;正文第2.3节,正文第3.3-3.4节 *
基于Linux的开源智能终端软件栈研究;罗喧等;《电信科学》;20100331;第7-15页 *

Also Published As

Publication number Publication date
CN102819430A (zh) 2012-12-12

Similar Documents

Publication Publication Date Title
CN102819430B (zh) 一种在linux环境下实现串行通信接口的装置及方法
US9619304B2 (en) Automatic connections between application components
US20200057658A1 (en) Method and system for loading resources
CN108572818A (zh) 一种用户界面渲染方法及装置
TWI453603B (zh) 平台無關之資訊處理系統,其通訊方法,及其電腦程式產品
CN107133174A (zh) 测试用例代码自动生成装置与方法
CN103353839A (zh) 一种基于Android系统的通用串行设备通信模块
JP2004532456A (ja) 開発およびテストシステム並びに方法
CN106790599A (zh) 一种基于多核无锁环形缓冲区的共生虚拟机通信方法
RU2315367C2 (ru) Способ и устройство, предназначенные для эмулирования подвижного устройства
TW200404225A (en) Dynamic wizard interface system and method
KR101691063B1 (ko) 콜백을 이용하는 isa 브리징
CN107623738A (zh) 一种面向安卓应用的WebView桥接口污点映射及分析方法
CN113553257B (zh) 测试方法、装置、存储介质及电子设备
CN106648569A (zh) 目标序列化实现方法和装置
CN109918338B (zh) 安全芯片操作系统测试装置
CN107391272A (zh) 多进程数据交互的方法和终端
CN103279382B (zh) 原生方式访问资源的方法、Java端、原生端及系统
US20170017483A1 (en) Automatic import of third party analytics
US7886304B1 (en) Method and system implementing efficient remote procedure call and emulation system therefor
CN115840590A (zh) 基于安卓和ios跨端混合的方法、系统、设备及存储介质
Florian et al. An open-source hardware/software architecture for remote control of SoC-FPGA based systems
CN112988604B (zh) 对象测试方法、测试系统、电子设备及可读存储介质
CN110018909A (zh) 用于使用内核代理的硬件控制的系统和方法
Hu et al. Enabling ZigBee communications in android devices

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160504

Termination date: 20180706