前面我们分别实现了定时控制LED灯的亮灭和串口的收发信息,下面我们就把这两个进行合并,就是利用串口控制LED灯,涉及的内容不多,主要就是整体的逻辑,直接把代码贴出来吧。
#include
#include
#include
#include
#include
#include
#include
#include
#include//这个是控制LED的头文件
int set_opt(int,int,int,char,int); //这个控制串口的控制函数前面有,这里就不写了。
int main()
{
int fd,fdleds;
const char* uart3="/dev/ttySAC3";//打开串口
const char* leds="/dev/leds";//打开LED
char buffer[1024];
if((fd=open(uart3,O_RDWR|O_NOCTTY|O_NDELAY))<0)
{
printf("open uart 3 fail");
}
else
if((fdleds=open(leds,O_RDWR|O_NOCTTY|O_NDELAY))<0)
{
printf("open leds 3 fail");
}
else
{
set_opt(fd,115200,8,'N',1);//
write(fd,"Please input some words",strlen("Please input some
words"));
int num;
while(1)
{
memset(buffer,0,1024);
num=read(fd,buffer,1024);
if(num!=0)
{
switch (buffer[0])
{
case 'o'://就是获取buffer的第一个字母,如果是o,那么就关闭,如果是c那么就打开。
ioctl(fdleds,0,0);
ioctl(fdleds,0,1);
break;
case 'c':
ioctl(fdleds,1,0);
ioctl(fdleds,1,1);
break;
default:
break;
}
}
}
}
return 0;
}
下面就是得到的结果
[ 96.073089] debug: leds_ioctl cmd is 1
[ 96.075393] debug: leds_ioctl cmd is 1
[ 102.880034] debug: leds_ioctl cmd is 0
[ 102.882306] debug: leds_ioctl cmd is 0
[ 105.856585] debug: leds_ioctl cmd is 0
[ 105.858862] debug: leds_ioctl cmd is 0
[ 106.424738] debug: leds_ioctl cmd is 0
[ 106.427020] debug: leds_ioctl cmd is 0
[ 107.080641] debug: leds_ioctl cmd is 0
[ 107.082915] debug: leds_ioctl cmd is 0
[ 111.120611] debug: leds_ioctl cmd is 1
[ 111.122883] debug: leds_ioctl cmd is 1