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

文档序号:6372990阅读:769来源:国知局
专利名称:一种在linux环境下实现串行通信接口的装置及方法
技术领域
本发明属于计算机领域,尤其涉及一种在Iinux环境下实现串行通信接口的装置及方法。
背景技术
串行通信接口简称串口,是计算机上最常用的一种接口,具有成本低廉,使用简单,只需要一对传输线就可以实现双向通信等优点。由于这些优点,有很多设备使用串口与计算机进行通信,包括蓝牙设备,GPS设备,GPRS设备等等。目前,由于通用串行总线的易用性与支持热插拔和即插即用等优点,这些设备逐渐地使用通用串行总线虚拟出串口与计算机进行通信。目前各个Iinux发行版中一般自带使用异步传输协议与串口的软件,比如支持xmodem协议的minicom,等。但是这些软件仅仅具有简单的输入输出功能,不能满足设备开发时的调试与使用需求。

发明内容
鉴于现有技术的缺陷,本发明提供一种在Iinux环境下实现串行通信接口的装置,该装置基于glib库,并使用d-bus作为进程间通信软件,包括串口设备模块,通过串口与微处理器进行通信;glib模块,使用glib库设置串口缓冲与读取机制;d-bus API模块,使用d-bus API实现glib模块与上层应用模块之间的通信;上层应用模块,使用各种支持d-bus技术的语言编写相应的应用代码以实现所需要的串口功能。进一步,根据本发明的装置,在操作系统的用户层通过read函数获得串口设备描述符,设置串口参数,与串口建立通信关系,并保存相关参数。进一步,本发明装置中所述glib模块进一步包括,第一模块,用于使用glib库的GkeyFile技术将串口参数保存成可读写配置文件;以及第二模块,用于使用glib库的GIO技术对串口设备进行缓存,并实现串口设备和本装置之间的数据交互。进一步,本发明装置中所述d-bus API模块,进一步用于在glib模块和上层应用模块之间,使用glib-d-bus技术,以d-bus API实现各功能模块;所述各功能模块包括串口参数保存模块、GPS协议解析功能模块、用户自定义协议栈测试模块、蓝牙测试功能模块、文件传输功能模块、定时发送与接收功能模块、输入输出同步、异步显示模块、Modem功能模块。进一步,本发明装置中所述上层应用模块,进一步用于针对所述各功能模块的d-bus API,使用各种图形框架实现相应功能模块的图形界面和python脚本。此外,本发明还提供了一种在I inux环境下实现串行通信接口的方法,该方法基于glib库并使用d-bus作为进程间通信软件,该方法包括步骤(I)在操作系统的用户层通过read函数获得串口设备描述符,设置串口参数,与串口建立通信关系,并保存相关参数;步骤(2)用于使用glib库的GkeyFile技术将串口参数保存成可读写配置文件;步骤
(3)用于使用glib库的GIO技术对串口设备进行缓存,并实现串口设备和本装置之间的数据交互;步骤(4)用于在glib模块和上层应用模块之间,使用glib-d-bus技术,以d_busAPI实现各功能模块;步骤(5)用于针对所述各功能模块的d-bus API,使用各种图形框架实现相应功能模块的图形界面和python脚本。进一步,本发明所述方法中的步骤(4)中所述各功能模块包括串口参数保存模块、GPS协议解析功能模块、用户自定义协议栈测试模块、蓝牙测试功能模块、文件传输功能模块、定时发送与接收功能模块、输入输出同步、异步显示模块、Modem功能模块。本发明通过glib实现对通用串行总线虚拟的串口、实际串口、其他虚拟串口实 现可移植的调试软件核心逻辑、建立在核心逻辑上的D-Bus API以及通过D-Bus的各种banding技术在各个banding下面实现的调试或者应用。由于所有功能模块都使用d_busAPI实现,所以通过支持d-bus的语言,本发明设计的串口模块使得用户可以实现自己需要的用户界面Π与相应的功能,便于设备开发时的调试与使用。


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