主題:錯誤 共有20696人關注過本帖 |
---|
李凱 |
1樓 |
錯誤 Post By:2007-5-8 10:55:00 [只看該作者]
X10:
  ETR232使用中,使用COM1收一字符串,如"+CODE:111111111111 OK"   300ms發(fā)給ETR232一次!在主程序中一直讀取COM1!不出現(xiàn)錯誤!但是如果停留10一會兒再讀的時候(串口還是在接收)!出現(xiàn)錯誤:  INT6@2B64:2312... 請問是什么問題! |
|
單帖管理 | 引用 | 回復 |
x10 |
2樓 |
Post By:2007-5-8 13:14:00 [只看該作者]
最好把你的這段代碼發(fā)給我看看,謝謝!
|
|
單帖管理 | 引用 | 回復 |
李凱 |
3樓 |
Post By:2007-5-8 15:35:00 [只看該作者]
試驗的時候我用串口調試發(fā)送
"+CODE:FF01FFFF0110  OK" 這個字符串,是另外一個模塊通過232接口發(fā)來的模擬PT2272解碼的12位碼!平時在主程序中調用這個函數(shù)判斷是否有報警以及編碼,試驗的時候不出錯,進入菜單后這段函數(shù)不執(zhí)行,進入菜單一段時間后返回由于COM1接收區(qū)已經收到很多上面的字符串!于是出現(xiàn)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 [只看該作者]
這樣看程序,我也發(fā)現(xiàn)不了問題,最好是你完整的測試代碼,可以編譯運行的,我們也可以在我們這運行測試,這樣就可很快發(fā)現(xiàn)問題。代碼可以直接發(fā)到我的郵箱,以保護你的商業(yè)秘密。
|
|
單帖管理 | 引用 | 回復 |