智能家居实训(华清远见)第一天

一、项目介绍
利用集成开发板,编写代码实现温湿度数据采集显示,摄像头采集图像,按键控制led小灯。
二、软件介绍
VMware、Qt
三、基本内容讲解
vim编辑器:
三种模式:命令行模式 插入模式 底行模式
vim 文件名:vim test.c 文件不存在,新建该文件并打开,如果存在就直接打开
vim打开一个文件默认是命令行模式,该模式不能编辑文本
编辑文本必须在插入模式下

命令行模式-----》插入模式 按i o a
插入模式-----》命令行模式 按esc
命令行模式-----》底行模式 shift+:

保存文本都是在底行模式下
:w 保存
:q 退出
:wq 保存并退出
:wq! 强制保存并退出

nyy : 复制n行
p : 粘贴
u : 撤销
鼠标选中要开始复制的位置,在命令行模式下按nyy,鼠标再次选择你要粘贴的位置,然后按p就会从下一行开始粘贴

gedit便捷器:
gedit 文件名

编译:
gcc test.c //默认生成的可执行文件名叫a.out
运行: ./a.out

gcc test.c -o test //生成的可执行文件名叫test
运行: ./test
四、Linux系统相关知识讲解
常见命令:
打开终端:ctrl+alt+t
放大:ctrl+shift+’+’
ls : 查看目录下的内容
ls -l : 查看目录下内容的详细属性
Linux下面一切皆文件,一共有七种类型的文件
d ----->文件夹 目录

  • ----->普通文件
    c ------>字符设备文件
    b ------->块设备文件
    p ------->管道文件
    l ------->链接文件
    s ------->套接字文件

ls -a :查看目录下的所有内容(包含了隐藏文件 以.开头的文件)

用户的工作目录(家目录): /home/用户名
cd : 切换路径
相对路径:具体看参照路径
绝对路径:从根目录开始的路径

cd 目录:切换到该目录
cd … : 返回上一级
cd - : 快速返回上一次所在目录
cd (cd ~):快速返回家目录
cd . : 当前目录

cp 要复制的文件 目标路径
cp -r 要复制的文件夹 目标路径

mv 要移动的文件(夹) 目标路径
mv aa bb:bb如果存在,那么就是将aa移动到bb 如果不存在,就是将aa改名为bb

touch :新建普通文件
mkdir :新建文件夹
rm : 删除普通文件
rm -rf:删除文件夹
清屏:clear(ctrl+l)
sudo :增加权限
向上的箭头:查看历史命令
Tab键:自动补全

五、C语言知识相关讲解
文件IO :Linux操作系统提供的一系列对文件进行操作的接口函数

文件描述符:文件的唯一标识,一般是一个整型数
0-----》标准输入
1-----》标准输出
2-----》标准错误

文件操作:
(1)打开文件 open

 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>


 int open(const char * pathname, int flags);     //打开一个已经存在的文件
       参数1:打开的文件的路径    字符串常量      
       参数2:打开文件的方式
	O_RDONLY    只读
	O_WRONLY   只写
	O_RDWR        可读可写
     返回值:如果文件打开成功会返回文件描述符,打开失败会返回-1

     int fd = open("./test.c",O_RDONLY);
     if(fd < 0)
     {
	printf("open test.c failed!\n");
     }
     printf("open ok!fd = %d\n",fd);


       int open(const char *pathname, int flags, mode_t mode);   //打开的是一个不存在的文件(新建的文件)
       参数1:打开的文件的路径    字符串常量      
       参数2:打开文件的方式       O_CREAT | O_RDWR
	O_RDONLY    只读
	O_WRONLY   只写
	O_RDWR        可读可写
      参数3:新建文件的权限   一般用八进制的方式表示
      返回值:如果文件打开成功会返回文件描述符,打开失败会返回-1
    int fd = open("./test1.c",O_CREAT | O_RDWR,0666);
    if(fd < 0{
	perror("open");
   }
    printf("fd = %d\n",fd);

(2)关闭文件 close

 #include <unistd.h>
 
       int close(int fd);
       参数:文件描述符
      close(fd);
      close(fd1);

(3)读取文件内容 read

  		#include <unistd.h>
       ssize_t read(int fd, void *buf, size_t count);    //从fd这个文件里面读取count个字节的内容到buf里面
       参数1:要读取内容的文件的描述符
       参数2:数据缓存区       (通常是数组)
       参数3:读取内容的大小

       返回值:如果返回值大于0,返回的就是实际读取到的字节数;返回值等于0,说明已经读到了文件末尾;返回值小于0,说明读取失败。

       char buf[100] = {0};
        int ret = read(fd,buf,sizeof(buf));
        if(ret < 0)
        {
	perror("read");
        }
        printf("buf : %s\n",buf);

(4)写入文件 write

       #include <unistd.h>
       ssize_t write(int fd, const void *buf, size_t count);    //向fd这个文件里面写入buf的count个字节的内容
       参数1:要写入内容的文件的描述符
       参数2:数据缓存区
       参数3:写入内容的大小
       返回值:返回值大于0,返回实际写入的字节数   返回值小于0,写入失败

      int ret1  = write(fd1,buf,ret);

(7)完全复制一个文件的内容到另外一个文件


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <strings.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main()
{
	int fd = open("./test.c",O_RDONLY);
	if(fd < 0)
	{
		perror("open");
		return -1;
	}
	printf("open ok!fd = %d\n",fd);

	int fd1 = open("./day1-1/test1.c",O_CREAT | O_RDWR, 0666);
	if(fd1 < 0 )
	{
		perror("open");
		return -1;
	}
	printf("fd1 = %d\n",fd1);
	while(fd1==0){
		char buf[1000] = {0};
		int ret = read(fd,buf,sizeof(buf));
		if(ret < 0)
		{
			perror("read");
		}
		printf("buf : %s\n",buf);

		int ret1 = write(fd1,buf,ret);
		if(ret1 < 0)
		{
			perror("write");
		}
	}

	printf("write ok!\n");

	close(fd);
	close(fd1);
	return 0;
}
  • 11
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值