阅读:1368回复:3
用VxD编过串口程序的大侠请看过来...
最近在用VxD编写串口程序时碰到了一个问题没有办法解决,各位大侠请帮帮忙.
我使用重叠IO的方法在读线程中对读入的数据进行处理,流程如下: 1.用DeviceIoControl通知VxD锁定内存页并准备接收数据,然后在 GetOverlappedResult上等待. 2.在接收到的数据量达到触发极限的时候VxD就用 OverLap->O_InternalHigh=RValue; WIN32_DIOCCompletionRoutine(OverLap->O_Internal); 通知应用程序. 3.应用程序在收到通知后处理数据.然后再回到第一步,循环执行. (在这个过程中我设置了触发极限是128个字符) 这样的流程在接收大数据量的时候出现了问题.那就是在第三步的时候由于通讯速率比较快(115.2K),会在还没有处理完的时候就又收到数据,此时就会使整个程序陷入无法接收数据的状态.我发现Windows自带的串口程序\"超级终端\"就没有这个问题,说明是有办法解决的,有谁知道怎么解决吗? |
|
沙发#
发布于:2002-01-10 16:07
难道真的没有人知道!!!!
|
|
板凳#
发布于:2002-01-14 16:42
会不会和线程优先级有关?
|
|
|
地板#
发布于:2002-01-15 09:14
\"超级终端“是ring3的方法。
我想你应该在vxd里面自己再开若干个buffer,用来准备接受没有ring3请求时的数据。当有ring3请求的时候,就copy过去。 |
|
|