合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(二)

简介: 合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(二)

基于ARM语音识别的智能家居系统

我们上一篇讲了,关于Linux系统的一些质量,今天,我们实现在Linux系统下编译程序,我们通过两个小练习来熟悉一下。

练习一

熟悉基本命令的使用:

   1、在用户桌面目录下新建一个目录文件 demo/。

   2、在该目录 demo/下新建一个普通文件 hello.c。

   3、修改文件hello.c的权限为:

       对用户可读可写可执行     rwx   7

       对同组用户可写可执行     -wx   3

       对其他用户可读          r--   4

   4、将该目录 demo/ 拷贝到根目录下。

一、程序编译

我们编写程序实现输出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的广泛应用和社区的庞大,它成为了业内最流行和广泛使用的编译器之一。

GCC(GNU Compiler Collection)是一款免费的开源编译器,支持多种编程语言,例如C、C++、Objective-C、Fortran、Ada等。它是许多操作系统和软件的基石,包括GNU/Linux、Mac OS X、FreeBSD等。由于GCC的广泛应用和社区的庞大,它成为了业内最流行和广泛使用的编译器之一。

 

 

练习二:

   使用    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;
}

如果你得到的结果和我一模一样,就说明,你已经掌握了这个方法,接下来,我们介绍文件。

二、文件IO

什么是文件?

   文件就是存放数据的集合。

   比如:.txt文件 .bmp文件   .jpg文件、、、、



Unix/Linux对数据文件(*.mp3、*.bmp),程序文件(*.c、*.h、*.o),设备文件(LCD、触摸屏、鼠标),网络文件( socket ) 等的管理都抽象为文件,使用统一的方式方法管理。

在Linux系统中,一切皆是文件!!!

控制一个LCD屏幕设备----》控制LCD设备对应的设备文件---》文件IO

三、文件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被设置。

四、编程示例

#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()函数关闭文件。

我们这里实现了打开文件,写入文件的,最后关闭文件,今天的程序难度不大,主要还是熟悉操作。

相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
7天前
|
存储 安全 网络安全
智能家居系统的安全漏洞及防护措施
【7月更文挑战第8天】随着物联网技术的飞速发展,智能家居系统已经逐渐走进千家万户。本文将深入探讨智能家居系统中存在的安全漏洞,分析其产生的原因,并提出有效的防护措施。通过本文,读者将了解到如何保护自己的智能家居设备免受黑客攻击,确保家庭网络环境的安全。
|
16天前
|
存储 Ubuntu 编译器
合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三)
合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三)
合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三)
|
7天前
|
传感器 监控 安全
智能家居系统的安全性分析与防护措施
【7月更文挑战第8天】随着物联网技术的飞速发展,智能家居系统已成为现代生活的一部分。然而,伴随便利性而来的是日益严峻的安全问题。本文从智能家居系统的安全漏洞出发,分析了潜在的风险点,并提出了相应的防护措施。通过技术手段和管理策略的双重保障,旨在为智能家居用户打造一个更加安全、可靠的居住环境。
|
14天前
|
传感器 安全 网络安全
智能家居系统的安全性分析与防护措施
【6月更文挑战第30天】本文深入探讨了智能家居系统面临的安全挑战,并提出了有效的防护策略。通过分析智能家居系统的架构和潜在的安全漏洞,本文旨在为智能家居用户提供全面的安全指导和建议。
|
15天前
|
存储 安全 物联网
智能家居系统的安全性分析与防护措施
【6月更文挑战第29天】本文深入剖析了智能家居系统面临的安全威胁,并提出了相应的防护策略。通过案例分析,揭示了黑客攻击智能家居系统的常见手段及其潜在后果。文章还探讨了智能家居设备制造商在提升产品安全性方面应采取的措施,以及用户在日常使用中可以实施的安全最佳实践。
|
10天前
|
机器学习/深度学习 人工智能 计算机视觉
好的资源-----打卡机+Arm+Qt+OpenCV嵌入式项目-基于人脸识别的考勤系统-----B站神经网络与深度学习,商城
好的资源-----打卡机+Arm+Qt+OpenCV嵌入式项目-基于人脸识别的考勤系统-----B站神经网络与深度学习,商城
|
8天前
|
机器学习/深度学习 安全 物联网
智能家居技术在现代生活中的应用与挑战
【7月更文挑战第7天】随着物联网技术的飞速发展,智能家居已成为现代生活的一个趋势。本文将探讨智能家居技术如何改变我们的日常生活,分析其背后的关键技术,并讨论实现智能家居时面临的主要挑战。最后,文章将展望智能家居未来的发展方向和潜在影响。
|
10天前
|
人工智能 搜索推荐 物联网
未来智能家居的发展趋势与技术应用
智能家居技术正在以惊人的速度演进,从简单的智能灯泡到全面的家庭自动化系统。本文探讨了未来智能家居的发展趋势及其技术应用,涵盖了人工智能、物联网、安全性和用户体验等关键领域,展望了智能家居在改善生活质量和增强家庭生活便利性方面的潜力。【7月更文挑战第5天】
|
3天前
|
传感器 人工智能 安全
未来智能家居中的人工智能技术应用与发展
智能家居正逐步走向普及,其背后的关键技术——人工智能(AI),正在不断演进和应用。本文将探讨人工智能在智能家居中的重要性、现有技术的应用和未来的发展方向,以及其对用户生活带来的实际影响。 【7月更文挑战第12天】
|
1天前
|
搜索推荐 安全 数据安全/隐私保护
智能家居技术的未来趋势与挑战
【7月更文挑战第14天】随着物联网和人工智能技术的飞速发展,智能家居系统正逐步成为现代生活的新宠。本文将探讨智能家居技术的最新发展趋势,包括增强的用户体验、无缝的设备集成以及通过大数据分析实现的个性化服务。同时,文章还将讨论在实现这一愿景过程中面临的主要挑战,如数据安全、隐私保护、设备兼容性和用户接受度等问题。
13 2