Arduino的源代码如下所示:
#define LED_ON_COMMAND 0x10
//打开LED命令字
#define LED_OFF_COMMAND 0x20
//关闭LED命令字
unsigned int comdata[3];
//定义数组数据,存放串口命令数据
int
led = 13;
//定义LED连接的管脚
int
ON_mark=0;
//定义ON 的标志位
int
OFF_mark=0;
//定义OFF的标志位
void
receive_data(void);
//接受串口数据
void
test_data(void);
//测试串口数据是否正确,并更新数据
void
do_command(void);
//执行更新的数据
void
setup()
{
Serial.begin(9600);
pinMode(led,
OUTPUT);
}
void
loop()
{
while (Serial.available()
> 0) //不断检测串口是否有数据
{
receive_data();
//接受串口数据
test_data();
//测试数据是否正确并更新数据
do_command();
//执行更新的数据
}
}
void
receive_data(void)
{
int i
;
for(i=0;i<3;i++)
{
comdata[i] =(unsigned
char)(Serial.read());
//延时一会,让串口缓存准备好下一个字节,不延时可能会导致数据丢失,
delay(2);
}
}
void
test_data(void) //验证命令的正确性
{
if(comdata[0] == 0x55)
//0x55和0xAA均为判断是否为有效命令
{
if(comdata[1] == 0xAA)
{
switch(comdata[2])
{
case
LED_ON_COMMAND:
{
ON_mark=1;
//ON数据更新位置位
}
case
LED_OFF_COMMAND:
{
OFF_mark=1;
//OFF数据更新位置位
}
}
}
}
}
void
do_command(void) //执行命令
{
if(OFF_mark==1)
{
OFF_mark=0;
//复位OFF更新位
digitalWrite(led, LOW);
//关闭LED灯
}
if(ON_mark==1)
{
ON_mark=0;
//复位ON 更新位
digitalWrite(led, HIGH);
//打开LED灯
}
}