各们老师请帮我看一下,我在做串口接收,再转发实验。把从上位机接收到的七个字符到数组里。然后再把这个数组里面的数据发送回去给上位机。?
现在能过上位机如果发送长度正好是七个字符,是没问题的。如果发送的长度不到七个字符,那么返回到上位的数据,就会被打乱。如何做出判断,只接收长度够七的字符串呢?(比如,我发送 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;
- }
- }
复制代码
|