西安市城乡建设管理局网站,泉州网站模板建站,外包活一般是怎么接的,门头沟石家庄网站建设基于ARM语音识别的智能家居系统
我们上一篇#xff0c;我们实现在Linux系统下编译程序#xff0c;我们首先通过两个小练习来熟悉一下如何去编译。今天#xff0c;我们来介绍一下LCD屏幕基本使用。
一、LCD屏幕基本使用 如何使用LCD屏幕#xff1f; 1、打开开发板LCD设…基于ARM语音识别的智能家居系统
我们上一篇我们实现在Linux系统下编译程序我们首先通过两个小练习来熟悉一下如何去编译。今天我们来介绍一下LCD屏幕基本使用。
一、LCD屏幕基本使用 如何使用LCD屏幕 1、打开开发板LCD设备驱动文件。 (/dev/fb0) 2、准备颜色数据。 3、写入颜色像素点数据。 4、关闭设备文件。 示例代码
#include stdio.h
#include sys/types.h //open()
#include sys/stat.h
#include fcntl.h
#include unistd.h //write()int main()
{//1、打开开发板LCD设备驱动文件。 (/dev/fb0)int lcd_fd open(/dev/fb0, O_RDWR);if(lcd_fd -1){perror(open lcd_fd failed!); //通过错误码打印错误信息return -1; //程序非正常结束}//2、准备颜色数据。int buf[1024*600] {0}; //像素数据缓冲区// A R G B : 0 255 0 0 ----- 0x00FF0000;int R 0x00FF0000;int i;for(i 0; i1024*600; i){buf[i] R;}//3、写入颜色像素点数据。int w_size write(lcd_fd, buf, 1024*600*4);//4、关闭设备文件。close(lcd_fd);return 0;
}
二、开发板运行程序
1、在Ubuntu平台上使用交叉编译器arm-linux-gcc 编译程序。 2、下载程序到开发板。 3、给予权限运行程序。 三、界面显示bmp图片
bmpBMP是英文Bitmap位图的简写它是Windows操作系统中的标准图像文件格式。
它是用位映射存储的方式的图片格式图像数据中的RGB数据直接可以使用。
1、图片准备 2、显示bmp图片
1、打开开发板LCD设备驱动文件。 (/dev/fb0)
2、打开bmp图片文件。
3、读取bmp图片像素颜色数据。
4、写入颜色像素点数据到LCD。
5、关闭设备关闭文件。 头文件 #include unistd.h
函数原型ssize_t read(int fd, void *buf, size_t count);从文件描述符fd指代的文件中读取count字节数据存入buf指向缓冲区中。
参数列表int fd:读取的目标文件的文件描述符。void *buf存储读到的数据的内存缓冲区。size_t count要读取的字节数。
返回值成功 成功读取的字节个数。失败 -1并且errno被设置。 示例代码
#include stdio.h
#include sys/types.h //open()
#include sys/stat.h
#include fcntl.h
#include unistd.h //write()int showBmp(char *bmp_path)
{//1、打开开发板LCD设备驱动文件。 (/dev/fb0)int lcd_fd open(/dev/fb0, O_RDWR);if(lcd_fd -1){perror(open lcd failed!); //通过错误码打印错误信息return -1; //程序非正常结束}//2、打开bmp图片文件。int bmp_fd open(bmp_path, O_RDWR);if(bmp_fd -1){perror(open bmp failed!); //通过错误码打印错误信息return -1; //程序非正常结束}//3、读取bmp图片像素颜色数据。//文件偏移量光标从文件开始位置偏移54字节去除无效数据。char buf[54] {0};read(bmp_fd, buf, 54);char bmp_buf[1024*600*3] {0};read(bmp_fd, bmp_buf, 1024*600*3);//3.1数据处理//将3字节的bgr 的bmp图像像素点数据处理为 lcd 屏幕所需要的 argb像素数据int lcd_buf[1024*600] {0}; //lcd 像素数据缓冲区int i, j 0;for(i 0; i1024*600; i, j3){// ARGB b g r alcd_buf[i] bmp_buf[0j]0 | bmp_buf[1j]8 | bmp_buf[2j]16 | 0x0024;}//3.2 图片上下翻转int show_buf[1024*600] {0}; //lcd 像素数据缓冲区int x, y;for(y 0; y600; y){for(x 0; x1024; x){show_buf[y*1024x] lcd_buf[(599-y)*1024x];}}//4、写入颜色像素点数据到LCD。write(lcd_fd, show_buf, 1024*600*4);//5、关闭设备,关闭文件。close(lcd_fd);close(bmp_fd);return 0;
}int main()
{showBmp(./1.bmp);return 0;
}
四、音视频播放
mplayer 是一款开源的多媒体播放器可以用来播放音视频mplayer 自带多种格式的解码器不需要我们再另外安装。开发板并未安装配置mplayer需要自行移植。
直接移植我提供的mplayer 文件使用说明
alsa-lib--lib.tar.gz
此为alsa-lib的编译结果 lib库文件压缩包先把该文件拷贝到开发板。
tftp下载命令为 tftp 192.168.1.100 -gr alsa-lib--lib.tar.gz 解压并将此目录下的所有库文件拷贝到开发板的/usr/lib 目录下。
解压命令为 tar -zxvf alsa-lib--lib.tar.gz
进入解压目录 cd lib/
拷贝到/usr/lib目录下 cp ./* /usr/lib -r arm-alsa.tar.gz 此为alsa-lib编译出的配置文件压缩包把该文件拷贝到开发板。
tftp下载命令为 tftp 192.168.1.100 -gr arm-alsa.tar.gz 解压后将此目录下所有文件拷贝开发板的 /usr/share/arm-alsa 目录下。需要先在开发板根文件系统中也创建一个/usr/share/arm-alsa 目录 新建arm-alsa/目录 mkdir /usr/share/arm-alsa (空格) -p 新建arm-alsa/目录 mkdir /usr/share/arm-alsa (空格) -p 拷贝到/usr/share/arm-alsa目录: cp ./arm-alsa/* /usr/share/arm-alsa/ -r zlib--lib.tar.gz
此文件为zlib的编译结果lib库文件压缩包先把该文件拷贝到开发板。
tftp下载命令为 tftp 192.168.1.100 -gr zlib--lib.tar.gz 解压后将此目录下的 lib 库文件拷贝到开发板根文件系统的/usr/lib 目录下。 解压命令为 tar -zxvf zlib--lib.tar.gz 拷贝到/usr/lib目录: cd lib/ //进入解压得到的lib目录cp ./* /usr/lib -r //拷贝 mplayer 此为mplayer的可执行文件这就是我们需要的 mplayer播放器将其拷贝到开发板根文件系统的/bin 目录下并给予执行权限即可。 cd /usr/bin/ tftp下载命令为 tftp 192.168.1.100 -gr mplayer 给予执行权限 chmod x mplayer 使用 mplayer是一个命令行音视频播放工具。 代码方式 system函数 #include stdlib.h int system(const char *command); command命令 前台播放可以直接停掉后台播放只能通过发送信号来停止暂停继续 killall -19 mplayer 暂停 killall -18 mplayer 继续 killall -9 mplayer 杀死进程 #include stdlib.hint main(int argc, char const *argv[])
{system(mplayer 1.mp3 /dev/null );return 0;
}