一个Arduino发送数据是0x55,0x54,0x00,0x65,0x00,0xff
下面是另一个Arduino的接收程序
int rec_flag=0;
byte serial_data;
byte hexdata[3];
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[i]=serial_data;//暂存数据
i++;
}}
else if(rec_flag == 4)
{ if (hexdata[1]==0x65)
{digitalWrite(13, HIGH);
delay(3000); //
digitalWrite(13, LOW); //
delay(3000);
rec_flag = 0;}
}
}} |