WINCE下如何虚拟多个串口
发布日期:2021-06-30 21:54:48 浏览次数:2 分类:技术文章

本文共 2475 字,大约阅读时间需要 8 分钟。

应用背景

我们的产品是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博客,转载请标明出处:

转载地址:https://loongembedded.blog.csdn.net/article/details/5942327 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:WINCE下实现USB转RS232
下一篇:WINCE6.0+S3C2443自动重启的实现

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月13日 01时59分36秒