天天看點

wince與android USB通信,WinCE下USB序列槽功能實作

By Toradex 秦海

1).簡介

本文着重介紹嵌入式裝置基于WinCE作業系統下通過USB模拟序列槽功能和PC主機實作點對點通信功能,在很多場景下,這個可以很友善的實作主機和嵌入式裝置的通信。

本文所示範的系統為Toradex Colibri iMX6 ARM計算機子產品(基于NXP iMX6 SoC)配合Colibri Eva Board,主機為配置标準Windows 7 32bit 系統計算機。

2).具體配置步驟示例

a). Colibri iMX6嵌入式裝置端

./ 子產品安裝Toradex官方釋出WEC7 V1.1b2 image

./ 在CE系統控制台-> PC Connection 選項裡面,取消勾選“自動連接配接”,然後儲存系統資料庫。

./ Toradex image裡面已經包含了USB 序列槽的驅動,預設是用來進行Active Sync連接配接使用,在這裡可以檢視USB 序列槽驅動對應的系統資料庫鍵值

[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Serial_Class],從”Index”鍵值可以确定在裝置CE端對應的COM端口,這裡預設為”COM9:”

./ 為了後面和PC進行互聯測試,裝置端序列槽應用使用Toradex 開發者中心網站提供的UART測試Demo,隻是将對應端口号修改為”COM9:” 。

------------------------------------

wince與android USB通信,WinCE下USB序列槽功能實作

------------------------------------

b). Windows 7 32bit主機端

./ 因為我們稍後将使用WinUSB與裝置進行連接配接,是以首先需要将下面兩個Windows Mobile Center相關服務禁止,避免序列槽被其占用。

wince與android USB通信,WinCE下USB序列槽功能實作

./ 使用Microsoft WinUSB進行通訊,對于Toradex Colibri iMX6,其WinCE系統預設USB Serial Client驅動使用為Microsoft 官方測試USB VID/PID,基于測試使用,本文無需自定義WinUSB驅動,将裝置連接配接到主機後,可以在裝置管理器檢視自動識别為Microsoft USB Sync裝置。

wince與android USB通信,WinCE下USB序列槽功能實作

而在實際産品開發中,客戶應該需要配置自己的USB VID/PID(如需免費獲得VID/PID資源請參考這裡),這樣就需要修改WinUSB驅動以适配,可以直接參考Microsoft MSDN說明進行修改部署,也可以借助第三方工具Zadig去定制化WinUSB驅動。

./ 主機端測試程式我們同樣使用Toradex基于Microsoft 官方WinUSB例程修改的測試程式,請從下面下載下傳:

項目裡面同樣也已經包含基于Windows Driver Kit Version 7.1.0的相關libs 和 headers。

./ 為了達到更好的測試效果,這裡對原例程進行如下修改,将收到的字元串處理後通過Debug輸出。

------------------------------------

wince與android USB通信,WinCE下USB序列槽功能實作

------------------------------------

c).通信測試示例

./ 首先将裝置端應用部署運作UART 程式,如下

wince與android USB通信,WinCE下USB序列槽功能實作

./ 然後在将主機端WinUSB例程編譯并啟動調試

wince與android USB通信,WinCE下USB序列槽功能實作

./ 在裝置端首先輸入選項2進行發送資料操作,這時候可以看到主機調試端列印出收到對應的字元串

wince與android USB通信,WinCE下USB序列槽功能實作

./ 然後再裝置端輸入選項1進行讀取資料操作,同樣可以接收到來自主機發送的字元串

wince與android USB通信,WinCE下USB序列槽功能實作

參考資料: