我用串口2自收发,串口先发送54个字符,然后在接收,并且会比较发送是否与接收的字符相同。用PING 命令不停地发送40960大小的包,打开5个以上的命令行,执行ping命令,同时从网上下载文件,或者renew一下重新获取IP地址(IP为动态分配)串口会出现丢失字符现象,丢失的字符在1-4个字符。我用GetLassError()获取错误号为2,是在发送中的。但是WriteFile发送返回的是54。试了119200、9600、115200和4800的波特率,都会存在不同程度的丢失,还请各位大侠指教。
可能是以太网中断太多, 导致串口工作不正常...
1. 通过修改驱动减少中断响应时间.
2. 修改IST优先级及中断优先级.
3. 如果依然不能解决,就只有增加容错机制了.
昨天看到一个wince5.0 串口BUG的帖子,不知道对你有没有帮助
http://bbs.driverdevelop.com/read.php?tid-109193.html
在CreateThread创建IST线程后, 调用CeSetThreadPriority修改就可以了
类似:
hThd = CreateThread(..., MyISTRoutine, hEvent, ...)
CeSetThreadPriority(hThd, 152);
谢谢了,我在PUBLIC\COMMON\OAK\DRIVERS\SERIAL\MMD_2\把mmd.c里,修改了SerialDispatchThread的优先级为105,目前还没有存在丢失现象。我想知道如何在驱动中中断响应时间?还望各位高手指教。
是呀,我改了后来又重新用Build and Sysgen 编译了一下内核,还是会丢数据。网上用人说修改OAL\INC\hw16550.h文件,改变FIFO触发值,试了后时好时坏。现在不知道到底怎么办。