久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: (求助)51單片機串口接收字符串的問題 [打印本頁]

作者: autumn888    時間: 2014-7-7 22:22
標題: (求助)51單片機串口接收字符串的問題
當通過串口向單片機發送不確定長度的字符串時,如何校驗開始位和結束位,并且最終判斷所接收到的字符串的長度?
比如: 開始位用2位”AE“來表示,結束位用2位”BF“來表示, 當向單片機發送如”AE...BF"類型的字符串時, 單片機如何將這一字符串保存到一個預設的數組中,并且正確判斷這個字符串的長度?

哪位大蝦能否幫忙貼段代碼以參考?謝謝先

作者: a110    時間: 2014-7-17 16:49
開始位何結束位這些都是由芯片的自動完成校驗的,
作者: WKK001    時間: 2014-7-17 19:32
/***************串口中斷程序***************/       
void  com()  interrupt 4    using 2
     {
                 uchar a=0,c=0;
                 uint  b=65535;
                 ES=0;
                 while(b--)
       {
                  while(!RI);
                  RI=0;
                  c=SBUF;
                  if(c==0x10||c==0x02||c==0x03)
                  {
                                   if(a!=0)
                                {
                                  if(com_bus[a-1]==0x10) {com_bus[a-1]=c;}                    //若接收到的數據前面接收到了0X10 則過濾掉
                                  else{com_bus[a]=c; a++; if(c==0x03){bz=1;}}                        //若接收的數據前面沒有0x10則送入緩沖區 若接收到0x03 則置接收完成標志
                                    
                                  }
                                 else   {com_bus[a]=c; a++; if(c!=0x02) {b=0;} }            //若接收數據幀頭不對,則跳出接收                                    
                    }
                   else
                    {
                          com_bus[a]=c;         a++;                                                                                //若接收數據幀頭不對,則跳出接收
                          if(com_bus[0]!=0x02)         {b=0;}
                          }

                   if(com_bus[0]==0x02&&c==0x03&&bz==1)                 
                    {
                           b=0;
                           bz=0;
                         }
                  
             }
               ES=1;   
          }          
作者: WKK001    時間: 2014-7-17 19:35
這個是我原來琢磨的,當時跟你的想法一樣。這個接收長度可以不確定 ,接收幀頭判斷不對則退出,收到結尾也退出,數據送到緩沖區,希望對你有幫助

作者: 3263065307    時間: 2016-5-5 19:18
可是會出現數據的傳送缺失的情況怎么弄呀比如123456可能變為12356少一些數據呀,這個怎么辦呀
作者: ankun11    時間: 2016-5-5 22:31
數據幀頭--數據長度--數據區--數據和
作者: siked    時間: 2016-5-6 11:11
有種方法! 首先發個校驗,在發個字符長度,
然后 接受端就 循環取那個長度的個數!至于后面的問題可以 返回去學學 C語言的一些基礎!




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 精品伊人久久 | 欧美成人a | 国产一区二区在线91 | 国产精品一区视频 | 欧美一级黄 | 91xxx在线观看| 日韩视频在线免费观看 | 国产精品一区二区不卡 | www97影院| 免费看片国产 | 国产精品一区久久久 | 久久久久久亚洲 | www.国产一区 | a久久久久久 | 国产性网 | 日韩aⅴ片 | 亚洲精品一区二区三区中文字幕 | 久久综合色综合 | 国产激情在线观看视频 | 亚洲精品久久久久久久久久久久久 | 91黄色片免费看 | 九九热在线视频 | 亚洲一二三区免费 | 粉嫩av在线 | 亚洲成人精品 | 国产在线一区二区三区 | 91视频一区二区 | 日本欧美国产在线 | 精品国产精品三级精品av网址 | 91精品欧美久久久久久久 | 91精品国产91久久综合桃花 | 黄色片在线 | 91性高湖久久久久久久久_久久99 | 免费看黄色小视频 | 中文字幕在线观看第一页 | 中文字幕一区二区三区日韩精品 | 一区二区三区欧美 | 久久午夜精品福利一区二区 | 激情一区二区三区 | 五月天婷婷激情 | 国产精品色一区二区三区 |