應用背景
我們的產品是gps產品,gps模組是通過tx與rx來和cpu串列埠控制器的uart2連線的,對應於com3(這個可以根據自己的專案的需要來定),platform.reg中登錄檔資訊如下:
;**********gps***** uart2===com3***************
[hkey_local_machine/drivers/builtin/serial2]
"devicearrayindex"=dword:2
"irq"=dword:f
"membase"=dword:50008000
"memlen"=dword:30 ;; 2c
"interruptbitsshift"=dword:6 ; uart 2 interrupt sub register shift bit.
;"isttimeouts"=dword:200 ; every 512 ticks checking modem status.
"prefix"="com"
"index"=dword:3
"dll"="serial_smdk2443.dll"
"order"=dword:0
"priority"=dword:0
"port"="com3:"
"devicetype"=dword:0 ; irda modem, 0 -> null modem
"friendlyname"="gps com3"
"iclass"=""
"devconfig"=hex: 10,00, 00,00, 05,00,00,00, 10,01,00,00, 00,4b,00,00, 00,00, 08, 00, 00, 00,00,00,00
應用程式通過com2可以接受到gps傳送的資料並進行解析,把解析出來的資料在shell上顯示,給用於直觀的gps資料。應用端往往需要多個com口來接受gps傳送的資料,那麼如何解決這個問題了,可以通過基於com3來虛擬多個串列埠出來,這樣可以開啟多個com口來接受gp傳送過來的資料,如何實現呢?只需要做一下動作就可以實現了。
1. 使用vspd.dll來實現虛擬多個串列埠功能,這個驅動在網上應該很容易找到的。
2. 如果是wince5.0那麼就在platform.bib中加入:
vspd.dll $(_flatreleasedir)/vspd.dll nk sh
如果是wince6.0系統,那麼就在platform.bib中加入:
vspd.dll $(_flatreleasedir)/vspd.dll nk shk
對於wince5.0和wince6.0系統,這個vspd.dll驅動是通用的。
3.在platform.reg中加入
[hkey_local_machine/drivers/builtin/vspd0]
"priority"=dword:00000000
"devicearrayindex"=dword:00000000
"portisro"=dword:00000000
"splitport"=dword:00000003
"index"=dword:00000001
"prefix"="com"
"dll"="vspd.dll"
"devicetype"=dword:00000000
"tsp"="unimodem.dll"
"friendlyname"="virtual port com1"
"devconfig"=hex:10,00,00,00,05,00,00,00,10,01,00,00,00,4b,00,00,00,00,08,00,00,00,00,00,00
[hkey_local_machine/drivers/builtin/vspd1]
"priority"=dword:00000000
"devicearrayindex"=dword:00000001
"portisro"=dword:00000000
"splitport"=dword:00000003
"index"=dword:00000005
"prefix"="com"
"dll"="vspd.dll"
"devicetype"=dword:00000000
"tsp"="unimodem.dll"
"friendlyname"="virtual port com5"
"devconfig"=hex:10,00,00,00,05,00,00,00,10,01,00,00,00,4b,00,00,00,00,08,00,00,00,00,00,00
[hkey_local_machine/drivers/builtin/vspd2]
"priority"=dword:00000000
"devicearrayindex"=dword:00000002
"portisro"=dword:00000000
"splitport"=dword:00000003
"index"=dword:00000006
"prefix"="com"
"dll"="vspd.dll"
"devicetype"=dword:00000000
"tsp"="unimodem.dll"
"friendlyname"="virtual port com6"
"devconfig"=hex:10,00,00,00,05,00,00,00,10,01,00,00,00,4b,00,00,00,00,08,00,00,00,00,00,00
上面的登錄檔就是基於com3,虛擬出com1、com5和com6,這樣這4個com口都可以用於和gps通訊了,在這裡強調一點,就是登錄檔項"splitport"=dword:00000003的值一定要和實際的com口一致(在此是com3)。
WINCE下如何虛擬多個串列埠
應用背景 我們的產品是gps 產品,gps 模組是通過tx與 rx來和 cpu串列埠控制器的 uart2 連線的,對應於 com3 這個可以根據自己的專案的需要來定 platform.reg 中登錄檔資訊如下 gps uart2 com 3 hkey local machine drivers bu...
WinCE虛擬串列埠驅動 二
不過該驅動 是作者量身定做的,像iocontrol就簡單地實現了幾個,其餘的因為在實際使用中本人沒用到,所以都沒實現,只是簡單地返回了false。如果有朋友對此有興趣,並且實際中也使用到,可以自行呼叫原生函式實現。最後,是能讓驅動正常掛載的登錄檔設定 hkey local machine drive...
WinCE虛擬串列埠驅動 二
不過該驅動 是作者量身定做的,像iocontrol就簡單地實現了幾個,其餘的因為在實際使用中本人沒用到,所以都沒實現,只是簡單地返回了false。如果有朋友對此有興趣,並且實際中也使用到,可以自行呼叫原生函式實現。最後,是能讓驅動正常掛載的登錄檔設定 hkey local machine drive...