IO编程
开发板登录返回以及退出设计
/****************************************************************************** file name: 2024-05-14_main.c* author : tongyaqi1110@163.com* date : 2024-05-14* function : 在LCD上显示并触摸开发板登录返回以及退出设计* note : None* CopyRight (c) 2024 tongyaqi1110@163.com Right Reseverd*****************************************************************************/
下面是“基操”代码打开LCD屏显示图片和动图/视频以及打开触摸屏int main(int argc, char const *argv[])
{// 1.打开LCD openint lcd_fd = open("/dev/fb0", O_RDWR);// 2.对LCD进行内存映射 mmaplcd_mp = (int *)mmap(NULL, 800 * 480 * 4, PROT_READ | PROT_WRITE, MAP_SHARED, lcd_fd, 0);// 3.显示开机动画char gif_path[128] = {0};for (int i = 0; i < 82; ++i){sprintf(gif_path, "./gif/Frame%d.jpg", i); // 构造jpg图片的路径read_JPEG_file(gif_path, 0, 0); // 在LCD上显示usleep(1000 * 10); // FPS = 50HZ}read_JPEG_file("hzw.jpg", 0, 0);printf("hhh\n");// 1.打开触摸屏int ts_fd = open("/dev/input/event0", O_RDWR);// 2.读取输入设备的信息struct input_event ts_event;// printf("hello\n"); 测试用的// int cnt = 0;while (1){read(ts_fd, &ts_event, sizeof(ts_event));// 获取的坐标是等比例缩小过的// 3.分析读取的设备信息 (type + code + value)if (ts_event.type == EV_ABS) // 说明是触摸屏{printf("2\n");if (ts_event.code == ABS_X) // 说明是X轴{// cnt++;x = ts_event.value * 800 / 1024;}if (ts_event.code == ABS_Y) // 说明是Y轴{// cnt++;y = ts_event.value * 480 / 600;}// printf("55\n"); 测试用}// printf("d\n"); 测试用return 0;}
下面为三个"按钮界面"代码
// 登录按钮if (x > 194 && x < 283 && y > 371 && y < 419){printf("dd\n");read_JPEG_file("bird.jpg", 0, 0);}// 返回按钮else if (x > 674 && x < 768 && y > 22 && y < 70){read_JPEG_file("hzw.jpg", 0, 0);cnt = 0;}// 退出按钮else if (x > 502 && x < 588 && y > 371 && y < 418){// 8.关闭LCDread_JPEG_file("black.jpg", 0, 0);munmap(lcd_mp, 800 * 480 * 4);close(lcd_fd);close(ts_fd);return 0;}