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

news2024/11/26 0:32:14

目录

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

练习一

一、程序编译

练习二:

二、文件IO

三、文件IO常用API接口函数

1、打开文件 open()

2、将数据内容写入文件 write()

3、关闭(保存)文件

四、编程示例

总结


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

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

总结

今天,我们主要熟悉了用GCC来编译程序和对文件的相关操作。下一篇,我们来介绍在led屏幕上显示图片。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1208335.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spring-cloud 简介

springcloud 定义 1.定义&#xff1a;springcloud为开发人员提供了在分布式系统中快速构建一些通用模式的工具&#xff08;例如配置管理、服务发现、断路器、路由、控制总线等&#xff09;2.微服务:基于单体应用&#xff0c;基于业务进行拆分&#xff0c;每个服务都是独立应用…

应用层——HTTPS协议

文章目录 一.HTTPS协议介绍二.关于加密1.什么是"加密"2.为什么要加密3.常见的加密方式4.数据摘要 && 数据指纹 三.HTTPS的工作过程探究1.方案1 —— 只使用对称加密&#xff08;明文传输不可取&#xff09;2.方案2 —— 只使用非对称加密&#xff08;仅单向安…

图文示例:Python程序的运行原理解读

文章目录 一、编译型语言&#xff08;C语言为例&#xff09;二、动态型语言三、程序是如何运行起来的&#xff1f;四、分析五、dir 函数六、def 指令七、pyc文件1.pyc文件三大作用 八、import 指令总结关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三…

zabbix中图形可视化页面中文乱码解决

在window 电脑中的 C:\Windows\Fonts 里面是字体文件&#xff0c;里面有一个 SIMKAI.TTF &#xff08;有的是小写&#xff09; 这个是楷体 将该文件复制到虚拟机中 怎么导入应该不需要我说吧 查看zabbix的字体文件在哪个目录下 [rootlocalhost /]# find / -name fonts /boo…

【Android】画面卡顿优化列表流畅度五之下拉刷新上拉加载更多组件RefreshLayout修改

之前也写过类似组件的介绍&#xff1a; 地址&#xff1a;下拉刷新&上拉加载更多组件SmartRefreshLayout 本来打算用这个替换的&#xff0c;但在进行仔细研究发现不太合适。功能都很好&#xff0c;但嵌入不了当前的工程体系里。原因就是那啥体制懂的都懂。这样的组件需要改…

力扣 225. 用队列实现栈(C语言实现)

目录 1.解题思路2.代码实现 1.解题思路 这道题如果使用C会好写的多&#xff0c;因为可以使用C提供的队列来实现&#xff0c;但如果使用C语言则必须手写一个队列来实现&#xff0c;在这里我用了我前面文章中实现好的队列来解答&#xff0c;首先因为队列是先进先出&#xff0c;而…

揭秘视频号创作者分成计划,带你玩赚视频号流量主,保姆级教程

项目介绍 今天给大家分享一个视频号流量主的一个项目&#xff0c;也就是视频号创作者广告分成计划。这个项目在目前来说是一个蓝海赛道&#xff0c;做的人是比较少&#xff0c;作为副业来说还是非常适合个人来做的。如果大家有工作室的话&#xff0c;也可以进行批量操作&#…

2021年06月 Scratch(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

一、单选题(共25题,每题2分,共50分) 第1题 小猫位置在舞台中心,点击一次小猫后能前进10步的程序为? A: B: C: D: 答案:B 第2题 快速切换到下一个背景图片应该使用哪个积木? A: B:

MySQL库的操作『增删改查 ‖ 编码问题 ‖ 备份与恢复』

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; MySQL 学习 &#x1f383;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 &#x1f381;软件版本&#xff1a; MySQL 5.7.44 文章目录 1.创建数据库2.数据库中的编码问题2.1.字符集与校验集2.3.支持的字符…

环保气膜建筑的运维成本在哪几个方面

作为一种环保建筑&#xff0c;气膜结构在工业和文体领域得到了广泛认可。尽管气膜建筑在经济上具有明显的优势&#xff0c;但对于不了解它的人来说&#xff0c;他们可能会下意识地认为在运营和维护过程中会产生大量费用。今天&#xff0c;让我们一起了解一下气膜建筑在运营维护…

【蓝桥杯选拔赛真题68】Scratch打地鼠游戏 少儿编程scratch图形化编程 蓝桥杯创意编程选拔赛真题解析

目录 scratch打地鼠游戏 一、题目要求 编程实现 二、案例分析 1、角色分析

未来之路:大模型技术在自动驾驶的应用与影响

本文深入分析了大模型技术在自动驾驶领域的应用和影响&#xff0c;万字长文&#xff0c;慢慢观看~ 文中首先概述了大模型技术的发展历程&#xff0c;自动驾驶模型的迭代路径&#xff0c;以及大模型在自动驾驶行业中的作用。接着&#xff0c;详细介绍了大模型的基本定义、基础功…

【论文阅读】(CTGAN)Modeling Tabular data using Conditional GAN

论文地址&#xff1a;[1907.00503] Modeling Tabular data using Conditional GAN (arxiv.org) 摘要 对表格数据中行的概率分布进行建模并生成真实的合成数据是一项非常重要的任务&#xff0c;有着许多挑战。本文设计了CTGAN&#xff0c;使用条件生成器解决挑战。为了帮助进行公…

数据同步到Redis消息队列,并实现消息发布/订阅

一、假设需求&#xff1a; 某系统在MySQL某表中操作了一条数据在其他系统中&#xff0c;实时获取最新被操作数据的数据库名、数据表名、操作类型、数据内容 应用场景&#xff1a; 按最近项目的一个需求来说&#xff1a; 1.当某子系统向报警表中新增了一条报警数据&#xff1b;…

外包能做多久?这才是掩藏在虚假繁荣后的真实

讲一下我的故事和想法&#xff0c;你们自己寻思一下 我25岁&#xff0c;中级测试&#xff0c;外包&#xff0c;薪资13.5k&#xff0c;人在上海。 内卷什么的就不说了&#xff0c;而且人在外包那些高级精英年薪大几十的咱也接触不到&#xff0c;就说说外包吧。 假设以我为界限…

2023年亚太杯数学建模思路 - 案例:ID3-决策树分类算法

文章目录 0 赛题思路1 算法介绍2 FP树表示法3 构建FP树4 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法&#xff0c;就是频繁模…

GB28181/GB35114国标平台LiveGBS适配国产信创环境,使用国产数据库达梦数据库、高斯数据库、瀚高数据库的配置方法...

1、如何配置切换信创达梦数据库&#xff1f; livecms.ini -> [db]下面添加配置如&#xff1a; ... [db] dialectdm url dm://SYSDBA:Aa12345678localhost:5236/livegbs 2、如何配置切换高斯数据库&#xff1f; livecms.ini -> [db]下面添加配置如&#xff1a; ... [db] d…

【论文阅读】CTAB-GAN: Effective Table Data Synthesizing

论文地址&#xff1a;[2102.08369] CTAB-GAN: Effective Table Data Synthesizing (arxiv.org) 介绍 虽然数据共享对于知识发展至关重要&#xff0c;但遗憾的是&#xff0c;隐私问题和严格的监管&#xff08;例如欧洲通用数据保护条例 GDPR&#xff09;限制了其充分发挥作用。…

爱上C语言:整型和浮点型在内存中的存储(进制转换,原码,反码,补码以及大小端)

&#x1f680; 作者&#xff1a;阿辉不一般 &#x1f680; 你说呢&#xff1a;生活本来沉闷&#xff0c;但跑起来就有风 &#x1f680; 专栏&#xff1a;爱上C语言 &#x1f680;作图工具&#xff1a;draw.io(免费开源的作图网站) 如果觉得文章对你有帮助的话&#xff0c;还请…

深度学习之基于YoloV5钢材表面缺陷检测系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习技术在计算机视觉领域的应用为表面缺陷检测系统的发展提供了强大的推动力。本文将介绍基于YoloV5的钢材表面…