Chinaunix

标题: 为何出错?? [打印本页]

作者: jueyu    时间: 2003-08-11 08:32
标题: 为何出错??
我用VC++写的一个串口接受程序中,把串口过来的字节转换存储在str(CString)中,但加上如下语句后出现问题,程序可以运行,但是运行程序后偶尔就会报错:
  CString nums=str.Mid(0,3);
  CString state=str.Mid(3,1);
  str.Delete(0,3);
说是strex.cpp等三个文件中有问题.不知为何,望各位高手指教
作者: flag    时间: 2003-08-11 09:38
标题: 为何出错??
是否能肯定str的长度一定大于3?
作者: jueyu    时间: 2003-08-11 10:44
标题: 为何出错??
是的,,因为程序一般正常,但偶尔有问题,比如:我要接受的字符串是ABCD,但是因为串口接受有时是有杂波和干扰的,当接受到的字符串如果是ABCDF0(估计是由于中断的高低电平变化引起而多了F0)时,我的程序就出错,怎么排除这个错误呢?谢谢?
作者: flag    时间: 2003-08-11 13:21
标题: 为何出错??
出错就校验啦。
作者: jueyu    时间: 2003-08-11 18:12
标题: 为何出错??
校验不出的啊,程序是能通过的,但某些情况下就是由于这几行程序引起程序死掉,但一般能够正常运行而不出现错误.
作者: flag    时间: 2003-08-11 18:21
标题: 为何出错??
为什么校验不出呢?CRC校验不行吗?设计一个协议,头上包含长度和校验值,然后对数据进行校验,一次接收指定的长度,多的丢弃。这还不够吗?
作者: jueyu    时间: 2003-08-11 20:37
标题: 为何出错??
校验是正确的,这个办法我也想用,但还不是蛮清楚到底怎么搞好?我做的是一个监控软件,协议定的信息不只一个字节,而且是视情况而不同.本来我的程序没有什么的问题的,但有了那几个语句后就偶尔出问题,我不知道是怎么回事,这到底是什么原因啊?谢谢
作者: jueyu    时间: 2003-08-11 20:40
标题: 为何出错??
因为我的监控信息是用无线接受的,随时都不停的有干扰信号.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2