w00d
驱动牛犊
驱动牛犊
  • 注册日期2001-09-25
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1368回复:3

用VxD编过串口程序的大侠请看过来...

楼主#
更多 发布于:2002-01-10 12:06
最近在用VxD编写串口程序时碰到了一个问题没有办法解决,各位大侠请帮帮忙.
我使用重叠IO的方法在读线程中对读入的数据进行处理,流程如下:
1.用DeviceIoControl通知VxD锁定内存页并准备接收数据,然后在
   GetOverlappedResult上等待.
2.在接收到的数据量达到触发极限的时候VxD就用
 OverLap->O_InternalHigh=RValue;
 WIN32_DIOCCompletionRoutine(OverLap->O_Internal);
 通知应用程序.
3.应用程序在收到通知后处理数据.然后再回到第一步,循环执行.
(在这个过程中我设置了触发极限是128个字符)
这样的流程在接收大数据量的时候出现了问题.那就是在第三步的时候由于通讯速率比较快(115.2K),会在还没有处理完的时候就又收到数据,此时就会使整个程序陷入无法接收数据的状态.我发现Windows自带的串口程序\"超级终端\"就没有这个问题,说明是有办法解决的,有谁知道怎么解决吗?
w00d
驱动牛犊
驱动牛犊
  • 注册日期2001-09-25
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-01-10 16:07
难道真的没有人知道!!!!
eleph
驱动牛犊
驱动牛犊
  • 注册日期2001-12-03
  • 最后登录2001-12-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-01-14 16:42
会不会和线程优先级有关?
本人是刚刚毕业的学生,硬件设计的新手,请大家指教
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-01-15 09:14
\"超级终端“是ring3的方法。
我想你应该在vxd里面自己再开若干个buffer,用来准备接受没有ring3请求时的数据。当有ring3请求的时候,就copy过去。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
游客

返回顶部