一種在linux環境下實現串行通信接口的裝置及方法
2024-02-16 16:10:15 1
專利名稱:一種在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日
發明者餘美強, 左飛, 高默, 張澎 申請人:中科方德軟體有限公司