cyqq 发表于 2017-7-4 09:53:58

这串口接收数据这样写怎么跑步起来

一个Arduino发送数据是0x55,0x54,0x00,0x65,0x00,0xff

下面是另一个Arduino的接收程序

int rec_flag=0;
byteserial_data;

byte hexdata;
void setup() {

Serial.begin(9600);
pinMode(13, OUTPUT);
}

void loop() {


static int i;
   if (Serial.available() > 0) //判断串口缓冲器是否有数据装入
    {
      serial_data = Serial.read();//读取串口
      
      if(rec_flag==0)
       {
            if(serial_data==0x55)//第一次获取到0xff(即包头)
             {
                rec_flag = 1;
                i=0;
                // delay(10);
                  
            }
      }
      
      else if((rec_flag==1)&&(serial_data==0x54))
      {
          rec_flag = 2;
          }
      else if(rec_flag==2)
      {
          rec_flag = 3;
          i = 0;
          }
      else if(rec_flag == 3)
      {
            if(serial_data==0xff)//第二次获取到0xff(即包尾)
            {
                rec_flag = 4;
            
                i = 0;
            }
            else
            {
               hexdata=serial_data;//暂存数据
                i++;
               
            }}
         else if(rec_flag == 4)
         {   if (hexdata==0x65)
             {digitalWrite(13, HIGH);
             delay(3000);            //
             digitalWrite(13, LOW);    //
             delay(3000);
            rec_flag = 0;}      
      }
   
}}

cyqq 发表于 2017-7-4 09:55:22

我这样写的程序,结果小灯没亮,求各路大神指点迷津

zjz5717 发表于 2017-7-4 18:42:34

cyqq 发表于 2017-7-4 09:55
我这样写的程序,结果小灯没亮,求各路大神指点迷津

整那么多i=0干什么。。。。你也不怕数据覆盖

cyqq 发表于 2017-7-4 22:34:04

zjz5717 发表于 2017-7-4 18:42
整那么多i=0干什么。。。。你也不怕数据覆盖

确实,已经改过来了
页: [1]
查看完整版本: 这串口接收数据这样写怎么跑步起来