WINCE下如何虚拟多个串口
應用背景
我們的產品是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"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"
?? "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)。
?
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/chinesedragon2010/archive/2010/09/09/5872435.aspx
總結
以上是生活随笔為你收集整理的WINCE下如何虚拟多个串口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WINCE6.0+S3C2443自动重启
- 下一篇: WINCE下实现USB转RS232