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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值