阅读:1058回复:0
用VxD做过串口程序的大侠快来帮帮忙....
最近在用VxD编写串口程序时碰到了一个问题没有办法解决,各位大侠请帮帮忙.
我使用重叠IO的方法在读线程中对读入的数据进行处理,流程如下: 1.用DeviceIoControl通知VxD锁定内存页并准备接收数据,然后在 GetOverlappedResult上等待. 2.在接收到的数据量达到触发极限的时候VxD就用 OverLap->O_InternalHigh=RValue; WIN32_DIOCCompletionRoutine(OverLap->O_Internal); 通知应用程序. 3.应用程序在收到通知后处理数据.然后再回到第一步,循环执行. (在这个过程中我设置了触发极限是128个字符) 这样的流程在接收大数据量的时候出现了问题.那就是在第三步的时候由于通讯速率比较快(115.2K),会在还没 有处理完的时候就又收到数据,此时就会使整个程序陷入无法接收数据的状态.我发现Windows自带的串口程 序\"超级终端\"就没有这个问题,说明是有办法解决的,有谁知道怎么解决吗? |
|