WinCE系統 USB Serial實現

2021-05-12 18:10:51 字數 3844 閱讀 6530

回國2周了,時差已經倒回來了,可以繼續我的部落格了。這裡介紹一下usb serial。

usb serial

就是指基於

usb的虛擬串列埠,實際上是將

usb作為乙個串列埠裝置來進行操作。

對於應用程式來說,通訊起來比較簡單,就是開啟串列埠,然後接收傳送資料就可以了。下面介紹一下具體步驟:

1.選擇

usb client serial元件

在定製wince

的時候,在

catalog items view

中選擇」device drivers」->」usb function」->」usb function clients」->」rndis clients」

,如圖:

2.更改

usb client的登錄檔配置

選擇預設驅動為

serial_class

類,如下:

[hkey_local_machine/drivers/usb/functiondrivers]

"defaultclientdriver"="serial_class"

[hkey_local_machine/drivers/usb/functiondrivers/serial_class]

"dll"="serialusbfn.dll"

"devicename"="usbfns1:"

"prefix"="com"

"iclass"=""

"idvendor"=dword:0547

"manufacturer"=」honeywell」

"idproduct"=dword:2720

"product"=」honeywell product」

"bcddevice"=dword:0

"devicetype"=dword:0

具體這些配置不多說了,以前已經介紹過

mass storage

和rndis

,這個應該很好理解。

3.重新編譯

wince

完成了上面的配置以後,重新編譯

wince

4. pc

usb serial驅動更新

如果想讓

pc識別出目標板的

usb裝置,這裡必須安裝相應的驅動。驅動包含在微軟提供的

activesync

pc端進行安裝。安裝好後,進入安裝目錄找到

」drivers」

目錄,在該目錄下有個檔案叫

」 wceusbsh.inf」

,開啟這個檔案,新增相應的驅動資訊,

vid和

pid要和前面的登錄檔配置保持一致。具體改動如下:

(1)

找到第乙個並新增如下資訊:

%honeywell% = honeywell

(2)

搜尋到第二個並新增如下資訊:

[honeywell]

%usb/vid_0547&pid_2720.devicedesc% = host_inst, usb/vid_0547&pid_2720

(3)

搜尋到第三個並新增如下資訊:

honeywell = "honeywell"

usb/vid_0547&pid_2720.devicedesc = "honeywell usb serial"

5.安裝

usb serial驅動具有

usb serial

功能的wince

在目標板上執行之後,將

usb插到

pc上面,這時會彈出安裝驅動的對話方塊,根據嚮導將驅動程式的位置指向

」microsoft activesync/drivers」

目錄,然後就可以成功安裝了。

6.基於

usb serial的串列埠通訊對於

wince

目標板來說,直接開啟串列埠就可以,在我的系統裡面支援多個串列埠,

usb serial

是」com5:」

,通過createfile

開啟就可以,然後通過

writefile

和readfile

函式來傳送和接收資料,和一般的串列埠通訊是一樣的。

對於pc

來說,需要開啟

」 wceusbsh001」

裝置,同樣用

createfile

,這一點和普通的串列埠通訊略有區別,傳送和接收資料同樣用

writefile

和readfile

,這裡還是給個例子吧,搞清楚例子是

pc端的串列埠通訊,如下:

#define write_com1

#define usbserial_name".//wceusbsh001"

int _tmain(int argc, _tchar* argv)

portdcb.dcblength = sizeof(dcb);

getcommstate(hserial, &portdcb);

portdcb.baudrate = 115200;

portdcb.bytesize = 8;

portdcb.parity = noparity;

portdcb.stopbits = onestopbit;

if (! setcommstate(hserial, &portdcb))

getcommtimeouts(hserial, &commtimeouts);

commtimeouts.readintervaltimeout = maxdword;

commtimeouts.readtotaltimeoutmultiplier = 10;

commtimeouts.readtotaltimeoutconstant = 10;

commtimeouts.writetotaltimeoutmultiplier = 50;

commtimeouts.writetotaltimeoutconstant = 100;

if (!setcommtimeouts(hserial, &commtimeouts))

#if write_com

for (i = 0; i < 10; i ++)

else

sleep(1000);

}#else

while(1)

else

printf("/r/n");}}

else

sleep(1000);

}#endif

closehandle(hserial);

return 0;}

WinCE系統USB Mass Storage實現

在談wince的usb mass storage實現之前,首先要具備以下條件 1.開發板支援usbclient裝置。2.開發板上至少有一種儲存裝置可以被用來對映為u盤。現在的處理器一般都帶有usb client或者是usb otg控制器,並且bsp中都有相應的驅動。對於儲存裝置來說,nandflas...

WIN CE系統架構

win ce 系統架構分為素部分 硬體層 oem 層 作業系統層 應用層 硬體層 由cpu 儲存器 i ok 口等組成嵌入式的硬體系統 oem 層 是嵌入式硬體與win ce 作業系統的結合層 主要模組 oal oem 適配層,處理ein ce 核心與目標硬體裝置之間的通訊,如cpu 初始化 處理中...

wince系統心得

1 系統啟動過程 如果電腦有硬碟和cf卡,可以在硬碟安裝2000系統,在cf卡安裝ce系統,裝置啟動時先啟動硬碟,然後cf卡,最後啟動板載的flash。flash上也可以安裝乙個系統。2 系統一種安裝方法 可以在pb中裁減乙個wince系統,然後building,把生成的nk.bin檔案拷貝到cf卡...