我在使用你的串口控件写一个用于单片机ISP的程序。其中一段程序如下:
//Comm->PurgeRead(false);
charswrit=Comm->Write(progpack,progpacklen);
if (charswrit != progpacklen)
die ("didn't write all packet in progprogm");
if (Comm->Read(&response,1) < 1)
die ("couldn't read response in progprogm");
下载程序时通讯协议是单片机在接收到一帧正确的数据以后返回一个0x06回来,否则回应0x07,但是实际使用时我从单片机收到的却是“D”。我用示波器看了波形,单片机传过来的的确是0x06。我现在的怀疑这个用read(&buf,1)返回的是以前接收队列的里的一个值。因为在这之前曾经收到单片机发送过来的辨识自己的信息“ADU 841 v217”。我尝试在read之前用purgeread(false),但是这样就收不到任何字符read就退出了。单片机返回应答的相应时间是很快的,会不会是因为这个造成了数据的丢失。
--------------------next---------------------
阅读(1258) | 评论(0) | 转发(0) |