主题:错误

  共有15641人关注过本帖    
李凯
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   [只看该作者]

这样看程序,我也发现不了问题,最好是你完整的测试代码,可以编译运行的,我们也可以在我们这运行测试,这样就可很快发现问题。代码可以直接发到我的邮箱,以保护你的商业秘密。

  单帖管理 | 引用 | 回复 回到顶部

返回首页

错误

用户名:
            验证码: 验证码,看不清楚?请点击刷新验证码
内容: