问题是:LED+LCD:
初始化设备(4个灯全灭),屏幕刷绿色,然后四个灯全部亮起闪烁三次,结束后屏幕刷成红色。
/*初始化设备(4个灯全灭),屏幕刷绿色,然后四个灯全部亮起闪烁三次,结束后屏幕刷成红色。
*/
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <syslog.h>
#include <errno.h>
#include <linux/input.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <stdbool.h>
#include <linux/fb.h>
#include <sys/mman.h>
#include <sys/ioctl.h>
#include <string.h>
#define TEST_MAGIC 'x'
#define TEST_MAX_NR 4
#define LED1 _IO(TEST_MAGIC, 0)
#define LED2 _IO(TEST_MAGIC, 1)
#define LED3 _IO(TEST_MAGIC, 2)
#define LED4 _IO(TEST_MAGIC, 3)
#define LED(i) _IO(TEST_MAGIC, i)//做循环用
//控制灯开关
int openorcloseLed();//控制灯全开或全关 ,正常返回1,错误返回-1
int openorcloseLed(int arg){
int fd;
fd = open("/dev/Led",O_RDWR);
if(fd<0)
{
printf("打开驱动文件失败,请检查是否有该驱动或者路径是否正确\n");
return -1;
}
for(int i=0;i<4;i++){
ioctl(fd, LED(i), arg);
}
return 1;
}
int pmsx(long a)
{
int fd=open("/dev/fb0",O_RDWR);
unsigned char *FB=mmap(NULL,800*480*4,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
//blue point
long red =a;
int i,j;
for(j=0;j<480;j++)
{
for(i=0;i<800;i++)
{
memcpy(FB+4*i+800*4*j,&red,4);
}
}
munmap(FB,800*480*4);
close(fd);
return 0;
}
//---------------------------------------------------------------------------
int main(int argc, char **argv[])
{
/* LED+LCD:
初始化设备(4个灯全灭),屏幕刷绿色,然后四个灯全部亮起闪烁三次,结束后屏幕刷成红色。
*/
openorcloseLed(1);//LED全灭
//--------------------------------------------------------------------
pmsx(0x0000FF00); //屏幕刷成绿色
openorcloseLed(0);
sleep(1);
openorcloseLed(1);
sleep(1);
openorcloseLed(0);
sleep(1);
openorcloseLed(1);
sleep(1);
openorcloseLed(0);
sleep(1);
openorcloseLed(1);
sleep(1);
pmsx(0x00FF0000); //屏幕刷成红色
return 0;
}
出现这个错误,应该如何修改代码呢?