Hefei Zhongke Shengu 組み込みプロジェクトの実践 - ARM 音声認識に基づくスマート ホーム システム (3)

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 ディレクトリを作成する必要があります)

  1. 新しい arm-alsa/ ディレクトリを作成します: mkdir /usr/share/arm-alsa (スペース) -p 
  2. 新しい arm-alsa/ ディレクトリを作成します: mkdir /usr/share/arm-alsa (スペース) -p 
  3. /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;
}

おすすめ

転載: blog.csdn.net/BROKEN__Y/article/details/134541878