回國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卡...