主题:错误 共有18847人关注过本帖 |
---|
李凯 |
1楼 |
错误 Post By:2007-5-8 10:55:00 [只看该作者]
X10:
  ETR232使用中,使用COM1收一字符串,如"+CODE:111111111111 OK"   300ms发给ETR232一次!在主程序中一直读取COM1!不出现错误!但是如果停留10一会儿再读的时候(串口还是在接收)!出现错误:  INT6@2B64:2312... 请问是什么问题! |
|
单帖管理 | 引用 | 回复 |
x10 |
2楼 |
Post By:2007-5-8 13:14:00 [只看该作者]
最好把你的这段代码发给我看看,谢谢!
|
|
单帖管理 | 引用 | 回复 |
李凯 |
3楼 |
Post By:2007-5-8 15:35:00 [只看该作者]
试验的时候我用串口调试发送
"+CODE:FF01FFFF0110  OK" 这个字符串,是另外一个模块通过232接口发来的模拟PT2272解码的12位码!平时在主程序中调用这个函数判断是否有报警以及编码,试验的时候不出错,进入菜单后这段函数不执行,进入菜单一段时间后返回由于COM1接收区已经收到很多上面的字符串!于是出现int6@1b64...刷屏! int   Check_Wireless(char *data) {   int i1;   unsigned int m=0;   char ub1;   char buffer[50];   char *str; wire_1:   i1=GetInputData(COM1);   if(i1==-1)   return -1;   ub1=(char)i1;   if(ub1==<|>+<|>)   {     SetTimeoutCnt(40); buffer[0]=<|>+<|>; m=1; wire_2:     if(IsTimeout())  //如果超时       return -1; i1=GetInputData(COM1); if(i1==-1) goto wire_2; ub1=(char)i1; buffer[m]=ub1; m++;     if(m>18) { if((buffer[m-1]==<|>K<|>)&&(buffer[m-2]==<|>O<|>)) {   buffer[m]=<|>\0<|>;   i1=strlen(buffer);   if(i1!=22)   return -1;    str=strstr(buffer,"+CODE:");    if(str==NULL)    return -1;    str+=6;    str[12]=<|>\0<|>;    sprintf(data,"%s",str);    printf("%s\r\n",data); //调试信息    for(i1=0;i1<12;i1++)      {        if((data[i1]==<|>0<|>)||(data[i1]==<|>1<|>)||(data[i1]==<|>F<|>))      continue;        else  return -1;      }    return 1; } } goto wire_2;   }  goto wire_1; } |
|
单帖管理 | 引用 | 回复 |
x10 |
4楼 |
Post By:2007-5-8 17:42:00 [只看该作者]
这样看程序,我也发现不了问题,最好是你完整的测试代码,可以编译运行的,我们也可以在我们这运行测试,这样就可很快发现问题。代码可以直接发到我的邮箱,以保护你的商业秘密。
|
|
单帖管理 | 引用 | 回复 |