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

目次

ARM音声認識に基づくスマートホームシステム

演習 1

1. プログラムのコンパイル

演習 2:

2. ファイルIO

3. ファイル IO でよく使用される API インターフェイス関数

1. ファイルを開く open()

2. データ内容をファイルに書き込みます write()

3. ファイルを閉じる(保存)

4. プログラミング例

要約する


ARM音声認識に基づくスマートホームシステム

前回の記事では、Linux システムの特質について説明しました。今日は、Linux システムでプログラムをコンパイルします。2 つの小さな演習を通じて、Linux システムに慣れていきます。

演習 1

基本的なコマンドの使用法に慣れてください。
    1. ユーザーのデスクトップ ディレクトリに新しいディレクトリ ファイル demo/ を作成します。
    2. 新しい通常のファイル hello.c をディレクトリ demo/ に作成します。
    3. ファイル hello.c を変更する権限は次のとおりです。
        ユーザーは読み取り、書き込み、および実行が可能です。 rwx 7
        同じグループのユーザーは、-wx の書き込みと実行が可能です。 3
        他のユーザーによる読み取りが可能です。 r-- 4
    4. ディレクトリ demo/ をルート ディレクトリにコピーします。

1. プログラムのコンパイル

hello world!! を出力するプログラムを書きますが、ここにいる人なら誰でも書けると思います。

//#include <stdio.h>   //宏:包含导入c语言标准输入输出头文件

int main()   //程序入口
{
	printf("hello world!!\n");   //在终端上打印 hello world!! 字符串 
	
	return 0;
}

gcc: 编译器、编译c语言的工具。

编译: gcc hello.c    编译得到一个可执行文件 a.out
执行: ./可执行文件   ./a.out
gcc hello.c -o bin
-o:将可执行文件重命名为bin,方便使用,防止文件覆盖。

 Linux システムでは、gcc hello.c を実行することで .out ファイルを取得できます。プログラムにエラーがある場合は、エラーの場所が表示されます。以下は GCC コンパイラーの概要です。 

GCC (GNU Compiler Collection) は、C、C++、Objective-C、Fortran、Ada などの複数のプログラミング言語をサポートする無料のオープンソース コンパイラーです。これは、GNU/Linux、Mac OS X、FreeBSD などを含む、多くのオペレーティング システムとソフトウェアの基礎です。 GCC は広く使用されており、大規模なコミュニティがあるため、業界で最も人気があり、広く使用されているコンパイラーの 1 つとなっています。

GCC (GNU Compiler Collection) は、C、C++、Objective-C、Fortran、Ada などの複数のプログラミング言語をサポートする無料のオープンソース コンパイラーです。これは、GNU/Linux、Mac OS X、FreeBSD などを含む、多くのオペレーティング システムとソフトウェアの基礎です。 GCC は広く使用されており、大規模なコミュニティがあるため、業界で最も人気があり、広く使用されているコンパイラーの 1 つとなっています。

 

 

演習 2:

    notpad++ を使用して、名前、学校、専攻を出力する C プログラムを作成します。 Ubuntu 共有ディレクトリでコンパイルして実行します。
    拡張: 99 個の九九を出力します (ループ)。

ここにあるプログラムは比較的単純なので、コードを直接示しますが、ここでの主な目的は、GCC でプログラムをコンパイルする方法を練習し、このプロセスに慣れることです。

#include <stdio.h> 

int main()  
{
	int i, j;
	for(i = 1; i<=9; i++)
	{
		for(j = 1; j<=i; j++)
		{
			printf("%dx%d=%d ", i, j, i*j);
		}
		printf("\n");
	}
	
	return 0;
}

得られた結果が私と全く同じであれば、あなたはこの方法をマスターしたことになります。

2. ファイルIO

ファイルとは何ですか? 
    ファイルはデータの集合です。 
    例: .txt ファイル、.bmp ファイル、.jpg ファイル、、、データ ファイル (*.mp3、*.bmp)、プログラム ファイル (*.c、 *.h 、 *.o)、デバイスファイル (LCD、タッチスクリーン、マウス)、ネットワークファイル (ソケット) などはすべてファイルに抽象化され、統一的に管理されます。 


Linux システムでは、すべてがファイルです。

液晶画面デバイスの制御---》液晶画面デバイスに対応するデバイスファイルの制御---》ファイルIO

3. ファイル IO でよく使用される API インターフェイス関数

ファイルを開く-----》ファイルの読み取り/書き込み-----》ファイルを閉じる(保存)

1. ファイルを開く open()

头文件:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

函数原型:
    int open(const char *pathname, int flags);
参数列表:
    const char *pathname:需要打开的文件路径的字符串  "./1.txt"
     int flags: 打开文件的方式
         O_RDONLY 以只读方式打开文件
         O_WRONLY 以只写方式打开文件
         O_RDWR   以可读写方式打开文件
返回值:
        失败: -1,错误码errno被设置。
        成功:返回一个新的文件描述符(文件的唯一标识符,遥控器)
        我们就可以通过这个文件描述符操纵这个文件。

2. データ内容をファイルに書き込みます write()

头文件:
	#include <unistd.h>

函数原型:
    ssize_t write(int fd, const void *buf, size_t count);
从buf写入数据的内存缓冲区中  取count个字节数据  写入fd指代的文件中
参数列表:
    int fd:需要写入数据的目标文件的文件描述符,就是open函数的返回值。
    const void *buf:临时存放待写入的数据的内存缓冲区
    size_t count:写入的数据字节大小
    
返回值:
        失败: -1,错误码errno被设置。
        成功:返回实际写入的字节个数。

3. ファイルを閉じる(保存)

头文件:
	#include <unistd.h>
函数原型:
    int close(int fd);
参数列表:
	int fd: 需要关闭的目标文件的文件描述符。
返回值:
	成功:返回0;
	失败:返回-1,错误码errno被设置。

4. プログラミング例

#include <stdio.h> 
#include <sys/types.h>  //open()
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>    //write()

int main()  
{
	//1、打开文件 1.txt
	int fd = open("./1.txt", O_RDWR);
	if(fd == -1)
	{
		//printf("open file failed!");
		perror("open file failed!");  //通过错误码打印错误信息
		return -1;   //程序非正常结束
	}
	
	//2、向文件中写入数据
	char buf[50] = "好好学习,天天向上!";
	int w_size = write(fd, buf, 50);
	printf("返回实际写入的字节个数: %d\n", w_size);
	
	//3、保存退出
	close(fd);

	return 0;
}
  • //1、打开文件 1.txt:ファイルを開く部分です。現在のディレクトリにある「1.txt」ファイルを開こうとしますが、ファイルが存在しない場合は -1 を返します。
  • //通过错误码打印错误信息: これはエラー処理コードです。ファイルを開くときにエラーが発生した場合は、エラー メッセージが出力され、-1 が返されます。
  • //2、向文件中写入数据:ファイルにデータを書き込む部分です。文字配列 buf を作成し、「毎日一生懸命勉強して進歩しましょう!」と書き込みます。 「この文。次に、write() 関数を使用して、buf の内容をファイルに書き込みます。
  • //返回实际写入的字节个数: %d: これは、ファイルに書き込まれた実際のバイト数を出力する部分です。
  • //3、保存退出:ファイルを閉じる部分です。データを書き込んだ後、close() 関数を使用してファイルを閉じます。

ここでは、ファイルを開いて、ファイルに書き込み、最後にファイルを閉じています。今日のプログラムは難しいものではありません。重要なのは、操作に慣れることです。

要約する

現在、私たちは主に GCC を使用してプログラムをコンパイルしたり、関連するファイル操作を行ったりすることに慣れています。次回はLEDスクリーンに写真を表示する方法を紹介します。

おすすめ

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