ARM音声認識に基づくスマート ホーム システム
前回の記事では、Linux システムでのプログラムのコンパイルを実装しましたが、最初に 2 つの小さな演習を使用してコンパイル方法に慣れました。今回は液晶画面の基本的な使い方をご紹介します。
1. 液晶画面の基本的な使い方
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; i<1024*600; i++)
{
buf[i] = R;
}
//3、写入颜色像素点数据。
int w_size = write(lcd_fd, buf, 1024*600*4);
//4、关闭设备文件。
close(lcd_fd);
return 0;
}
2. 開発ボード実行プログラム
1. クロスコンパイラー arm-linux-gcc を使用して、Ubuntu プラットフォームでプログラムをコンパイルします。
2. プログラムを開発ボードにダウンロードします。
3. 許可を与えてプログラムを実行します。
3.インターフェース表示(bmp画像)
bmp: BMP は、英語 Bitmap (ビットマップ) の略称で、Windows オペレーティング システムの標準の画像ファイル形式です。 ビットマップストレージを使用した画像フォーマットであり、画像データ内のRGBデータをそのまま利用できます。
1. 画像の準備
2.bmp画像を表示する
1. 開発ボードの LCD デバイス ドライバー ファイルを開きます。 (/dev/fb0) 2. bmp イメージ ファイルを開きます。 3. bmp 画像のピクセルカラーデータを読み込みます。 4. カラーピクセルデータを LCD に書き込みます。 5. デバイスを閉じ、ファイルを閉じます。
ヘッダー ファイル: #include 関数プロトタイプ: 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; i<1024*600; i++, j+=3)
{
// ARGB b g r a
lcd_buf[i] = bmp_buf[0+j]<<0 | bmp_buf[1+j]<<8 | bmp_buf[2+j]<<16 | 0x00<<24;
}
//3.2 图片上下翻转
int show_buf[1024*600] = {0}; //lcd 像素数据缓冲区
int x, y;
for(y = 0; y<600; y++)
{
for(x = 0; x<1024; x++)
{
show_buf[y*1024+x] = lcd_buf[(599-y)*1024+x];
}
}
//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;
}
4. オーディオとビデオの再生:
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 プレーヤーです。これを開発ボードのルート ファイル システムの /bin ディレクトリにコピーし、実行権限を与えます。
cd /usr/bin/tftp ダウンロード コマンドは次のとおりです: tftp 192.168.1.100 -gr mplayer実行権限を与える: chmod +x mplayer
使用:
mplayer は、コマンド ラインのオーディオおよびビデオ再生ツールです。
コードメソッド:
システム関数#include <stdlib.h>
int system(const char *command);
コマンド: コマンドフォアグラウンド再生は直接停止できます。バックグラウンド再生は、信号を送信することによってのみ停止、一時停止、継続できます。
killall -19 mplayer Pause
killall -18 mplayer 続行
killall -9 mplayer プロセスを強制終了
#include <stdlib.h>
int main(int argc, char const *argv[])
{
system("mplayer 1.mp3 </dev/null &");
return 0;
}