Arduino与LabVIEW互动应用
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数据更新位置位
}
}