?

Android透明串口傳輸模塊的設計與應用

2014-10-21 20:07何塽納陳國金
中國機械 2014年23期
關鍵詞:無線局域網串口安卓

何塽納 陳國金

摘 要: Android設備可用作工業控制上位機。設計了一種Android透明串口傳輸模塊,模塊集成了藍牙轉串口、WiFi轉串口與USB轉串口三種通信方式,用戶可任意選取一種; 模塊自動建立通信連接,提供與下位機串口通信的透明輸入輸出接口。討論了Android透明串口傳輸模塊的軟件功能、硬件連接與軟件實現,并將其應用于自動縫紉設備。

關鍵詞: 安卓;工業控制;藍牙;串口;無線局域網;通用串行總線

引言

智能移動設備近幾年來發展迅速,在日常生活與工業中的應用日益廣泛。對傳統的工業控制領域,通常采用PC機、操作面板控制設備[1]。PC機成本較高,體積較大,攜帶性不好;操作面板界面不直觀,操作復雜。智能移動設備如智能手機、平板電腦體積較小,在工業現場便于攜帶,其觸摸屏用戶體驗較好,相比傳統的PC機、操作面板更具優勢。Android是一款基于Linux的開源移動設備操作系統,具有完全開放性,適合取代工業控制上位機PC與操作面板[2]。工業控制下位機通信接口通常為串口,Android設備可作為上位機通過藍牙轉串口、WiFi轉串口或USB轉串口模塊與下位機串口通信。Android設備雖然支持這三種通信方式,但直接使用Android API開發應用程序較為麻煩,且對于USB轉串口通信,目前沒有可用API,這使得開發存在一定復雜性。本文旨在提出一種Android透明串口傳輸模塊,簡化Android工業控制上位機應用程序的開發。

1.功能說明

本模塊集成藍牙轉串口、WiFi轉串口與USB轉串口三種通信方式,可直接與下位機串口通信。用戶選擇三種方式中的一種,模塊建立對應通信連接,這一過程由模塊自動處理與維護,對用戶透明。模塊提供一組統一的read(),write()方法作為對外數據通信接口,用戶通過此接口與下位機串口通信。

3.Android透明串口傳輸模塊的軟件設計

Android透明串口傳輸軟件模塊分為三個部分:通信方式選擇功能設計、自動建立通信功能設計以及數據通信功能設計。

3.1 通信方式選擇功能設計

通信方式選擇功能用于選擇模塊通信方式,配置通用通信地址。通信方式m_ComMode可為藍牙轉串口、WiFi轉串口和USB轉串口通信中的一種,通用通信地址m_ComAddr為與通信方式對應的藍牙Mac地址、WiFi IP地址與端口號以及串口設備名稱與波特率。

3.2 自動建立通信功能設計

自動建立通信功能根據用戶置入的通信方式與通用通信地址,自動建立通信。

3.2.1 Android藍牙轉串口、WiFi轉串口、USB轉串口通信建立方法

Android從2.2版本開始支持藍牙功能,并且為開發者提供開發藍牙應用程序的API[3]。開發藍牙應用程序首先需要在Manifest中添加權限。

利用Android API建立藍牙轉串口通信的主要步驟如下:根據藍牙Mac地址返回藍牙設備對象、建立藍牙套接字、得到輸入輸出流。

利用Android API建立WiFi轉串口通信的主要步驟如下[4]:建立套接字、得到輸入輸出流。

對于USB轉串口通信應用程序開發, Android SDK未提供API,本文在開源項目android-serialport-api基礎上進行開發修改[5]。

首先在工程中導入開源項目android-serialport-api的源代碼,然后修改代碼。建立串口通信代碼如下:

// 調用android-serialport-api自帶的open方法,根據選擇的波特率與設備名稱打開串口

FileDescriptor m_FileDescriptor = open ( device_name , baudrate, flags);

// 得到輸入輸出流

InputStream m_com_InStream = new FileInputStream ( m_FileDescriptor );

OutputStream m_com_OutStream = new FileOutputStream ( m_FileDescriptor );

3.2.2 通信的自動建立

Android的藍牙轉串口、WiFi轉串口和USB轉串口雖然在建立通信過程中的實現細節不同,但其過程皆可以概括為利用所需參數(藍牙Mac地址、WiFi IP地址與端口號、串口波特率與設備名稱)經過多步配置建立連接,最終得到輸入輸出流??梢岳闷溥^程中的相似性編寫統一的建立通信方法,方法根據通信方式m_ComMode 調用對應的通信建立程序,通過通用通信地址m_ComAddr經多步配置建立連接,得到輸入輸出流。

3.3 數據通信功能設計

數據通信功能是Android透明串口傳輸模塊面向用戶的接口,提供一組輸入輸出方法read()、write(),用戶通過此方法經藍牙轉串口、WiFi轉串口或USB轉串口模塊與下位機串口通信。

InputStream/OutputStream類與DataInputStream/DataOutputStream類存在繼承關系,它們的read()、write()方法具有相同的名稱與參數形式,無論建立何種通信方式,都可以用同樣的方法對它們進行讀寫。輸入輸出流讀寫主要方法的如下:根據通信方式選擇對應的輸入流讀取數據、根據通信方式選擇對應的輸出流寫入數據。

對于設備流數據讀寫,一般為阻塞方式, 為適應阻塞操作,本模塊創建一個用于數據讀寫的讀寫線程[6]。讀寫方法read()、write()將讀寫輸入輸出流所需參數m_receive_byte_Offset(接收數據起始位)、m_receive_byteCount(接收數據位數)、m_send_byte_Offset(發送數據起始位)、m_send_byteCount(發送數據位數)傳遞給讀寫線程,讀寫線程調用read_stream()、write_stream()方法實現數據通信。read()、write()方法會休眠一定時間等待讀寫線程完成任務,超出時限后不再等待,判定任務失敗,以避免調用程序的阻塞。

4.應用實例

自動縫紉設備在服裝廠中應用普遍,這些設備通常通過操作面板控制設備運行、修改參數。操作面板界面不直觀,操作復雜。本文以Android平板代替操作面板,遠程控制設備[7]。使用Android透明串口傳輸模塊,通過藍牙轉串口模塊與自動縫紉設備單片機串口通信。用戶操作Android觸摸屏向設備發送控制、修改參數指令,通過透明串口傳輸模塊發送至設備單片機串口,單片機執行指令。單片機定時讀取設備當前狀態參數,通過藍牙轉串口模塊發送至Android設備,在觸摸屏顯示。

5.結束語

本文提出的Android透明串口傳輸模塊,將藍牙轉串口、WiFi轉串口和USB轉串口這三種通信方式封裝在一起,用戶可以任意選擇一種通信方式與下位機串口進行通信,而不必關心每種方式的不同實現細節,簡化了Android工業控制應用程序開發,提高了開發效率。

參考文獻:

[1]鄭彪,汪秉文.串口通信在工業控制中的應用[J].自動化儀表,2002,23(4):58-59.

[2]黃慧萍,肖世德,孟祥印.基于Android平臺的步進電機遠程控制系統[J].制造業自動化,2014,36(2):44-47,61.

[3]李黎國,張輝,程號.基于Android健康服務終端藍牙傳輸軟件的設計[J].電子科技,2012,25(5):115-118.

[4]向誠,謝峰粹.基于WiFi和Android的智能探測車設計[J].電子技術應用,2013,39(12):82-85.

[5]趙春亭,左小五.基于Android系統的USB轉串口的研究[J].工業控制計算機,2014,27(1):83-84.

[6]朱冬梅,王錚,鄧先燦.微機與多臺單片機通信的多線程實現[J].計算機應用,2000,20(10):79-80.

[7]李培培,朱維杰.基于Android車載虛擬儀表人機界面設計[J].電子科技,2013,26(2):74-75,78.

作者簡介:

何塽納(1989-),男(漢族),浙江省奉化人,杭州電子科技大學碩士生,主要研究方向為軟件開發。

猜你喜歡
無線局域網串口安卓
讓iPhone變安卓,這是真的野
文物表情包
MCS—51單片機中的多串口通訊技術的應用
WIFI頻段波束可切換開關天線的設計與實現
無線網絡高校圖書館無線局域網安全性研究
針對無線局域網攻擊技術的研究
論校園無線局域網的攻擊與防御
學習安卓應用開發
安卓機器人
全國計算機等級考試機房準備工作探討
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合