欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1750|回復: 0
打印 上一主題 下一主題
收起左側

2051單片機+485通訊+PELCO-D協議 數據傳輸殘缺

[復制鏈接]
跳轉到指定樓層
樓主
ID:735148 發表于 2020-5-9 14:34 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. /************************************
  2.                         UART串口中斷
  3. ************************************/
  4. void UART_Interrupt (void) interrupt  4
  5. {
  6.         if(RI)  //接收字節
  7.         {
  8.                 RI = 0;
  9.                 if(datebuf_i<sizeof(DateBuf))  //DateBuf是用來存儲接收到的信息的數組。長度可隨協議手動更改
  10.                 {
  11.                         DateBuf[ datebuf_i++ ] =SBUF; //將接收緩沖區的信息按位寫入到數組中
  12.                 }
  13.                

  14.                 DelayXs(2);
  15.         }
  16.         if(TI)
  17.         {

  18.                 TI = 0;
  19.         }

  20. }
復制代碼
這是中斷接收部分的代碼。已經確定和排除的是波特率沒有問題。硬件系統沒有問題。
  1. unsigned char  Date_TF(unsigned char * buf)
  2. {
  3.         int a;
  4.         u8 a1;
  5.         u8 b;
  6.         u8 i=0 ;
  7.         u8 date_tf;
  8.         if(buf[0] ==0xff)
  9.         {
  10.                 if(buf[1] == 0x01)
  11.                 {
  12.                         if(buf[2] == 0x00)
  13.                         {
  14.                                 
  15.                                 if(buf[3] == 0x00)
  16.                                 {
  17.                                         if(buf[4] == 0x00)
  18.                                         {
  19.                                                 if(buf[5] == 0x00)
  20.                                                 {
  21.                                                         if(buf[6] == 0x00)
  22.                                                         {
  23.                                                                 relay_zheng();
  24.                                                         }                                                        
  25.                                                 }                                       
  26.                                         }
  27.                                 }
  28.                         }
  29.                         
  30. //                        b = buf[6];
  31. //                        
  32. //                        for( i=1;i<5;i++ )
  33. //                        {
  34. //                                a1=buf[i];
  35. //                                a +=a1;
  36. //                        }               
  37. //                        if(a == b)
  38. //                        {        
  39. //                                tf = 1;
  40. //                                relay_stop();//測試
  41. //                        }
  42.                 }
  43.         }
  44.         return date_tf;
  45. }
復制代碼
這是發現問題后一步步檢測出來的接收到的信息。只有前兩個是正確的。后面的都是錯誤的。
另外,再中斷接收函數中,必須放延時函數,要不然就什么都接收不到?

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表