WINCE 5.0 虑拟串口

IT铁哥 2010-08-25 10:55:16
我现在想把硬件串口COM1虚拟成多个串口,方便多个应用同时读取串口数据。

不知哪位大侠有做好的驱动,传我一份,或者提供下载路径。谢谢!

732393619@qq.com.

谢谢!
...全文
231 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
IT铁哥 2010-08-30
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 gooogleman 的回复:]
呵呵,虚拟串口我改进了效率。
还不错,不会影响系统的。
[/Quote]

我这个是网上下的,不知是不是GM大侠写的。
如果用WaitCommEvent( pSerial->m_hCOM, &dwCommModemStatus, NULL );会不会可以改善性能。
IT铁哥 2010-08-30
  • 打赏
  • 举报
回复
中国龙
正确的732393618@QQ.COM,能不能帮我再发一次,我用你的试试看看。

IT铁哥 2010-08-30
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 chinesedragon2010 的回复:]
楼主,我用732393619@qq.com给你发送驱动,但被退回来了,你由其他邮箱吗?或者你加我的QQ吧:597038165,我通过QQ发给你
[/Quote]

是我把邮箱搞错了,这两天没有上CSDN,谢谢你。
gooogleman 2010-08-28
  • 打赏
  • 举报
回复
呵呵,虚拟串口我改进了效率。
还不错,不会影响系统的。
chinesedragon2010 2010-08-28
  • 打赏
  • 举报
回复
楼主,我用732393619@qq.com给你发送驱动,但被退回来了,你由其他邮箱吗?或者你加我的QQ吧:597038165,我通过QQ发给你
chinesedragon2010 2010-08-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 macrozhang001 的回复:]
我现在想把硬件串口COM1虚拟成多个串口,方便多个应用同时读取串口数据。

不知哪位大侠有做好的驱动,传我一份,或者提供下载路径。谢谢!

732393619@qq.com.

谢谢!
[/Quote]
楼主,你好,我们的系统也有这方面的应用,我们的GPS使用实际的COM1,通过vspd.dll可以把COM1虚拟成为多个串口使用,需要的添加的内容如下:

1.在platform.bib中加入:
vspd.dll $(_FLATRELEASEDIR)\vspd.dll NK SH

2.在platform.reg下面加入把COM1虚拟成为多个的串口的内容:
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\VSPD0]
"Priority"=dword:00000000
"DeviceArrayIndex"=dword:00000000
"PortIsRO"=dword:00000000
"SplitPort"=dword:00000001 ;这个就是实际使用的COM1
"Index"=dword:00000005 ;这个是虚拟出来的COM5
"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\VSPD1]
"Priority"=dword:00000000
"DeviceArrayIndex"=dword:00000001
"PortIsRO"=dword:00000000
"SplitPort"=dword:00000001
"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

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\VSPD2]
"Priority"=dword:00000000
"DeviceArrayIndex"=dword:00000002
"PortIsRO"=dword:00000000
"SplitPort"=dword:00000004
"Index"=dword:00000007
"Prefix"="COM"
"Dll"="vspd.dll"
"DeviceType"=dword:00000000
"Tsp"="Unimodem.dll"
"FriendlyName"="Virtual port COM7"
"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
上面的信息就是把COM1虚拟成为COM5,COM6和COM7这三个虚拟串口,这样总共就有4个串口可以使用了(访问GPS,这是对我的应用来说的)

vspd.dll我已发到你的邮箱中,如果收到,麻烦楼主告知!
IT铁哥 2010-08-28
  • 打赏
  • 举报
回复
加了虑拟串口驱动,感觉慢了一些,
虑拟串口用这个线程来读出串口数据,这样会影响系统性能吗?
有什么其它好办法?


void CallReadThread()
{
DWORD dwBytes;
DWORD len;
BYTE *ThrBuffer = (BYTE *)LocalAlloc(LPTR, COM_MAX_LEN);

ThreadRunFlag = TRUE;
finishedThreadFlag = FALSE;

while(ThreadRunFlag)
{
if ((SerialItem) && (ThrBuffer))
{
ReadFile(SerialItem->hComm, ThrBuffer, COM_MAX_LEN, &dwBytes, NULL);

EnterCriticalSection((LPCRITICAL_SECTION)&g_csVirtalReadLock);
if (dwBytes > 0)
memcpy(&SerialItem->buffer[SerialItem->pos],ThrBuffer,dwBytes);

len = SerialItem->pos + dwBytes;
SerialItem->pos = len % BUFFER_LEN;
if (len > BUFFER_LEN)
memcpy(SerialItem->buffer,&SerialItem->buffer[BUFFER_LEN],SerialItem->pos);
LeaveCriticalSection( (LPCRITICAL_SECTION)&g_csVirtalReadLock);
}
Sleep(50);
}
LocalFree(ThrBuffer);
finishedThreadFlag = TRUE;
}

躺着享受 2010-08-25
  • 打赏
  • 举报
回复
http://blog.csdn.net/gooogleman/archive/2010/02/08/5298093.aspx
这里面又开发流程的
自己写一个吧
wjcapple 2010-08-25
  • 打赏
  • 举报
回复
顶起,我是为分而来
IT铁哥 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sunrain_hjb 的回复:]
http://www.cnblogs.com/we-hjb/archive/2008/12/14/1354871.html
看看这里吧,希望有点帮助.
[/Quote]

我个地方的莲接已经不在了。你有不有传一个这样的工具我试一试也行。
sunrain_hjb 2010-08-25
  • 打赏
  • 举报
回复
博说医械研发 2010-08-25
  • 打赏
  • 举报
回复
gooogleman和hjb的博客里都有吧,去找找看
IT铁哥 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fankyo 的回复:]
http://blog.csdn.net/gooogleman/archive/2010/02/08/5298093.aspx
这里面又开发流程的
自己写一个吧
[/Quote]

这个我发邮件跟他聊过了。他的需要地图软件。
FLandY1982 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 macrozhang001 的回复:]
引用 5 楼 fankyo 的回复:
http://blog.csdn.net/gooogleman/archive/2010/02/08/5298093.aspx
这里面又开发流程的
自己写一个吧


这个我发邮件跟他聊过了。他的需要地图软件。
[/Quote]
我觉得驱动更应用软件应该没关系吧。

你自己写个吧,说下简单的思路:
1.首先需要写多个虚拟串口的流接口驱动
2.如果是实现多个流驱动分时复用读取一个串口,做好互斥处理,就可以了。
3.如果是实现“多个应用同时读取串口数据”,那就要开辟一段共享内存区域,将串口发送的数据直接放到这个区域内,你写的虚拟串口直接在共享内存内取数据。
IT铁哥 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fankyo 的回复:]
http://blog.csdn.net/gooogleman/archive/2010/02/08/5298093.aspx
这里面又开发流程的
自己写一个吧
[/Quote]

这个我发邮件跟他聊过了。他的需要地图软件。
wade008 2010-08-25
  • 打赏
  • 举报
回复
关注下

19,524

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧