WINCE下如何虚拟多个串口
應(yīng)用背景
我們的產(chǎn)品是GPS產(chǎn)品,GPS模塊是通過(guò)TX與RX來(lái)和CPU串口控制器的UART2連接的,對(duì)應(yīng)于COM3(這個(gè)可以根據(jù)自己的項(xiàng)目的需要來(lái)定),platform.reg中注冊(cè)表信息如下:
;==========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
應(yīng)用程序通過(guò)COM2可以接受到GPS發(fā)送的數(shù)據(jù)并進(jìn)行解析,把解析出來(lái)的數(shù)據(jù)在shell上顯示,給用于直觀的GPS數(shù)據(jù)。應(yīng)用端往往需要多個(gè)COM口來(lái)接受GPS發(fā)送的數(shù)據(jù),那么如何解決這個(gè)問(wèn)題了,可以通過(guò)基于COM3來(lái)虛擬多個(gè)串口出來(lái),這樣可以打開(kāi)多個(gè)COM口來(lái)接受GP發(fā)送過(guò)來(lái)的數(shù)據(jù),如何實(shí)現(xiàn)呢?只需要做一下動(dòng)作就可以實(shí)現(xiàn)了。
?
1. 使用vspd.dll來(lái)實(shí)現(xiàn)虛擬多個(gè)串口功能,這個(gè)驅(qū)動(dòng)在網(wǎng)上應(yīng)該很容易找到的。
2. 如果是WINCE5.0那么就在platform.bib中加入:
vspd.dll???????? $(_FLATRELEASEDIR)/vspd.dll NK? SH
如果是WINCE6.0系統(tǒng),那么就在platform.bib中加入:
vspd.dll???????? $(_FLATRELEASEDIR)/vspd.dll NK? SHK??
對(duì)于WINCE5.0和WINCE6.0系統(tǒng),這個(gè)vspd.dll驅(qū)動(dòng)是通用的。
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
?
上面的注冊(cè)表就是基于COM3,虛擬出COM1、COM5和COM6,這樣這4個(gè)COM口都可以用于和GPS通信了,在這里強(qiáng)調(diào)一點(diǎn),就是注冊(cè)表項(xiàng)"SplitPort"=dword:00000003的值一定要和實(shí)際的COM口一致(在此是COM3)。
?
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/chinesedragon2010/archive/2010/09/09/5872435.aspx
總結(jié)
以上是生活随笔為你收集整理的WINCE下如何虚拟多个串口的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: WINCE6.0+S3C2443自动重启
- 下一篇: WINCE下实现USB转RS232