S
shengwq
Unregistered / Unconfirmed
GUEST, unregistred user!
通信方式:
1 三线制通信。
2 PC机从串口发出请求包,单片机收到后发回应答包。
3 PC机收到回包后开始下一循环,即回到2。一次完整的通信需时200-300MS
4 每次开机可以正常通信几秒至几分钟不等。之后即不断发生超时。再也无
法从串口中读到数据。除非机器重起(WIN98)或程序将串口关闭后打开
CLOSEPORT + OPENPORT(WINNT)。
5 我是调用API的,
if ReadFilehComm,PkBuffTemp0], nByteToRead, nByteRead, 0) <> TRUE then
Begin
ReportMessage( WM_ERRORENCOUNTED, ERR_READPORT, ord(SendBuff[5]));
ReceiveChar := FALSE;
Exit;
End;
---> if nByteToRead <> nByteRead then
Begin
PurgeComm(hComm,PURGE_RXABORT or PURGE_RXCLEAR);
ClearCommError(hComm,stat,@CS);
.......
出错出在箭头处,每次READFILE返回是TRUE,但是nByteRead的值一直
是0。从现象上看似乎是接收一段时间后串口接收部分被堵塞,导致一个字符都收不到。WINDOWS认为没有数据进来,但将信号连到其他串口就接收得到。
问题:
A 为何会出现‘堵塞’?如何避免?(看过别人的文章,似乎没遇到过这事)
B 如果一定会出现,如何在98下能立刻清除该状态并恢复?
请诸位高手把脉、指点、救我!急死了!
请遇到过类似情况的朋友联系我!谢了!
1 三线制通信。
2 PC机从串口发出请求包,单片机收到后发回应答包。
3 PC机收到回包后开始下一循环,即回到2。一次完整的通信需时200-300MS
4 每次开机可以正常通信几秒至几分钟不等。之后即不断发生超时。再也无
法从串口中读到数据。除非机器重起(WIN98)或程序将串口关闭后打开
CLOSEPORT + OPENPORT(WINNT)。
5 我是调用API的,
if ReadFilehComm,PkBuffTemp0], nByteToRead, nByteRead, 0) <> TRUE then
Begin
ReportMessage( WM_ERRORENCOUNTED, ERR_READPORT, ord(SendBuff[5]));
ReceiveChar := FALSE;
Exit;
End;
---> if nByteToRead <> nByteRead then
Begin
PurgeComm(hComm,PURGE_RXABORT or PURGE_RXCLEAR);
ClearCommError(hComm,stat,@CS);
.......
出错出在箭头处,每次READFILE返回是TRUE,但是nByteRead的值一直
是0。从现象上看似乎是接收一段时间后串口接收部分被堵塞,导致一个字符都收不到。WINDOWS认为没有数据进来,但将信号连到其他串口就接收得到。
问题:
A 为何会出现‘堵塞’?如何避免?(看过别人的文章,似乎没遇到过这事)
B 如果一定会出现,如何在98下能立刻清除该状态并恢复?
请诸位高手把脉、指点、救我!急死了!
请遇到过类似情况的朋友联系我!谢了!