各們老師請幫我看一下,我在做串口接收,再轉發實驗。把從上位機接收到的七個字符到數組里。然后再把這個數組里面的數據發送回去給上位機。?
現在能過上位機如果發送長度正好是七個字符,是沒問題的。如果發送的長度不到七個字符,那么返回到上位的數據,就會被打亂。如何做出判斷,只接收長度夠七的字符串呢?(比如,我發送 10 20 30 40 50 60 70 那么可以正解的返回給上位機,但是如果我只發送10 20 30 40 那么返回給上位的就是10 20 30 40 10 20 30 。如何讓單片機只返回正解的字符串)謝謝。
單片機源程序如下:
- #include <reg51.h>
- #include <intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar flag,a,i,j;
- uchar buf[7];
- void init()
- {
- SCON=0X50;
- TMOD =0X20;
- TH1=0XFD;
- TL1=0XFD;
- TR1=1;
- EA=1;
- ES=1;
- }
- void main()
- {
- init();
- while(1)
- {
- if(flag==1)
- {
- j=0;
- ES=0;
- for(i=0;i<7;i++)
- {
- SBUF=buf[i];
- while(!TI);
- TI=0;
- }
- ES=1;
- flag=0;
-
- }
- }
-
- }
- void ser() interrupt 4
- {
- uchar temp;
- RI=0;
- temp=SBUF;
- buf[j++]=temp;
- if(j==7)
- {
- flag=1;
- ES=0;
- }
- else
- {
- flag=0;
- }
- }
復制代碼
|