问题是:3、LED+图片加载:
初始化设备(4个灯全灭),1s后,进行跑马灯三次,最后加载一张图片(800*480像素,24位bmp格式)。
/*
3、LED+图片加载:
初始化设备(4个灯全灭),1s后,进行跑马灯三次,最后加载一张图片(800*480像素,24位bmp格式)。
*/
#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 tpdk(){
int lcd = open("/dev/fb0",O_RDWR);
int open_bmp = open("./c.bmp",O_RDWR);
char bmp24_buf[800*480*3]={0};
char bmp32_buf[800*480*4]={0};
lseek(open_bmp,54,SEEK_SET);
int i,j;
read(open_bmp,bmp24_buf,800*480*3);
for(i=0,j=0;i<800*480*4;i+=4,j+=3)
{
bmp32_buf[i+2] = bmp24_buf[j+2];
bmp32_buf[i+1] = bmp24_buf[j+1];
bmp32_buf[i+0] = bmp24_buf[j+0];
}
write(lcd,bmp32_buf,800*480*4);
close(lcd);
return 1;
}
//---------------------------------------------------------------------------
int main()
{
/*
3、LED+图片加载:
初始化设备(4个灯全灭),1s后,进行跑马灯三次,最后加载一张图片(800*480像素,24位bmp格式)。
*/
openorcloseLed(1);//LED全灭
sleep(1);
//--------------------------------------------------------------------
for(int i=0;i<5;i++){
ioctl(fd,LED1,0);
sleep(1);
ioctl(fd,LED1,1);
ioctl(fd,LED2,0);
sleep(1);
ioctl(fd,LED2,1);
ioctl(fd,LED3,0);
sleep(1);
ioctl(fd,LED3,1);
ioctl(fd,LED4,0);
sleep(1);
ioctl(fd,LED4,1);
sleep(1);
}
tpdk();
return 0;
}
编译出现如图所示的错误,请问如何修改代码呢?