WINCE下如何虛擬多個串列埠

2021-06-05 21:26:26 字數 2894 閱讀 7472

應用背景

我們的產品是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...