- 博客(23)
- 收藏
- 关注
原创 树莓派mjpg-streamer实现监控功能
更新软件列表 sudo apt-get update #更新软件列表 sudo apt-get upgrade #更新软件 相关环境搭建 sudo apt-get install libjpeg8-dev #JPEG支持库 sudo apt-get install imagemagick sudo apt-get install libv4l-dev #4l是小写"L" sudo apt-get install cmake #下载编译工具 下载mjpg-streamer源码包 https
2020-10-09 17:23:48
458
原创 树莓派简单的字符设备驱动
区分不同的设备驱动 设备文件名 设备号:主设备号,次设备号 驱动链表 管理不同设备驱动程序 添加:编写完驱动程序,加载到内核 查找:调用驱动程序 删除 驱动插入链表的顺序由设备号检索 提示:printk为内核打印函数,可以通过dmesg查看内核信息 内核驱动框架基本 a.驱动代码编写,参考pin4driver2.c b.内核驱动编译 a1.把驱动代码拷贝到drivers/char a2.修改Makefile(obj-m +=pin4driver2.o),告诉编译器,要编译的驱动文
2020-10-08 16:13:55
598
原创 树莓派串口通信-----------python篇
修改"/boot"目录下的cmdline.txt 修改内容为 dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait 安装python-serial模块 sudo apt-get install python-serial 重启树莓派 sudo reboot 代码实例 import serial import time ser
2020-10-06 14:09:58
1661
4
原创 下:树莓派人脸识别控制蜂鸣器
树莓派python环境搭建 a)硬件需求 1.树莓派开发板 2.CSI接口摄像头 3.蜂鸣器 4.若干杜邦线 b)软件搭建 1.开启树莓派偏好设置,开启树莓派摄像头权限 sudo raspi-config 2.上传人脸识别SDK文件到树莓派里 3.进入SDK目录 4.安装百度ai模块 sudo pip install baidu-aip 5 .安装已下载的SDK sudo python3 setup.py install python控制树莓派GPIO 树莓派控制代码 from aip import
2020-10-05 19:12:19
1362
原创 上:树莓派人脸识别(基于百度智能云上传图片)
1.上传识别图片 a.选择人脸识别模块 b.创建应用 c.创建应用成功,下载相应的python sdk d.添加识别图片 e.记录创建应用的 AppID,API Key ,Secret Key
2020-10-05 16:32:39
1128
3
原创 Linux文件系统
a)什么是文件系统? 常规认知:根目录 文件系统是操作系统用于明确存储设备组织文件的方法 以上说的方法:就是文件管理系统(程序),简称:文件系统 b)文件系统(文件管理方法)的种类有哪些? FAT NTFS EXT1/2/3/4 HFS VFAT … 树莓派查看文件系统的命令:df -T vfat:boot(bootloader,kernel)相关代码 ext4:根目录分区 tmpfs:临时文件系统,内存文件系统 c)什么是分区? widows:C、D盘,目录即分区 Linux:按照功能,每个分区严格
2020-09-28 15:32:29
122
原创 树莓派Linux 内核的编译,芯片上表层的移植
1.前期准备 交叉编译工具的安装 相关内容 树莓派Linux内核源码的下载 uname -r 查看树莓派版本 下载路径 2.
2020-09-20 15:14:52
669
原创 system与popen
system #include <stdlib.h> system("const char* cmdstring"); cmdstring:可执行程序或者sh脚本 返回值: 成功返回进程的状态值; 当sh不能执行时,返回127; 失败返回-1. 源码 #include #include #include #include int system(const char * cmdstring) { pid_t pid; int status; if(cmdstring == NULL){
2020-08-26 15:20:24
235
原创 exec族函数
exec定义以及用法 可查询:Linux函数查询 exec族函数函数的作用 当程序运行到某一位置时,调用exec族函数,该程序就会跳到exec所引用的程序中,若调用成功则不返回原来的程序,失败则返回-1,继续往下执行源程序。 注:调用exec函数并不会创建新进程 功能 在调用进程内部执行一个可执行文件。可执行文件既可以是二进制文件,也可以是任何Linux下可执行的脚本文件。 函数族 exec函数族分别是:execl, execlp, execle, execv, execvp, execvpe 在这里插入代
2020-08-26 10:35:12
432
1
原创 Linux进程
概述 问1:什么是程序,什么是进程,有什么区别? 程序是静态的概念,gcc xxx.c -o pro 磁盘生成的pro文件,叫程序 进程是程序的一次运行活动,通俗意思是程序跑起来了,系统中就多了一个进程 问2:如何查看系统中有哪些进程? a.使用ps指令查看,通常 ps -aux|grep 来过滤所要查看的进程 b.使用top指令查看,类似widows任务管理器 问3:什么是进程标识符? 每个进程都有一个非负整数表示的唯一ID,叫pid pid=0:称为交换进程(swapper),起进程调度的作用
2020-08-24 10:51:06
131
原创 标准C库文件编程
标准C库与Linux文件编程api的区别用法 来源 open是UNIX系统调用函数(包括LINUX等),返回的是文件描述符(File Descriptor),它是文件在文件描述符表里的索引。 fopen是ANSIC标准中的C语言库函数,返回的是一个指向文件结构的指针。 移植性 fopen是C标准函数,有较好的移植性,open是UNIX系统调用函数,移植性有限。 适用范围 fopen是用来操纵普通正规文件(Regular File)的。 open返回文件描述符,而文件描述符是UNIX系统下的一个重要
2020-08-22 16:38:06
264
原创 Linux文件编程
文件描述符: 文件的打开或创建,内核都会向进程返回一个非负整数(文件描述符)供用户对其进行操作read,write 系统默认0,1,2分别为标准输入,标准输出,标准错误 程序运行通过文件描述符来区分不同的文件 文件描述符仅作用在当前进程 open或create,成功返回文件描述符,失败返回-1 静态文件和动态文件: 静态文件:文件存在块设备中的文件系统文件的,就是静态文件 动态文件:当我们去open一个文件时,Linux内核在进程建立一个打开文件的数据结构,记录该文件的信息,这就是动态文件 打开文件后
2020-08-22 15:28:35
177
原创 Linux交叉编译(树莓派)
a)什么是交叉编译 编译:是在一个平台上生成在该平台上的可执行代码 交叉编译:是在一个平台上生成另一个平台上的可执行代码。 例如: ①我们再windows上面编写C51代码,并编译成可执行代码,如xx.hex, 是在c51上面运行,不是在windows上面运行 ②我们在ubuntu上面编写树莓派的代码,并编译成可执行代码,如a.out, 是在树莓派上面运行,不是在ubuntu linux上面运行 b)为什么要交叉编译 平台上不允许或不能够安装我们所需要的编译器比如C51 因为目的平台上的资源贫乏,无法运行
2020-08-09 20:35:33
602
原创 Linux中的软链接和硬链接
软链接 概述: 软链接文件有类似于Windows的快捷方式。 在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。 你选定的位置上生成一个文件的镜像,不会占用磁盘空间 只要建立链接后,用户可以通过调用链接来间接调用源文件 创建: ln -s 源文件 目标文件 硬链接 在指定的位置生成一个与源文件相同大小的文件 一定程度上防止了“误删”的情况,文件真正删除的条件是与之相关的所有硬连接文件均被删除 链接到的文件被修改,其他文件也同步修改 创建: ln 源文件 目标文件 ...
2020-08-09 19:30:53
131
原创 树莓派wiringPi库,串口通信
a)概述以及使用 wiringPi是一个很棒的树莓派IO控制库,使用C语言开发,提供了丰富的接口:GPIO控制,中断,多线程,等等 使用:gcc xxx.c -lwiringPi -o xxx b)相应的API 硬件初始化函数 int wiringPiSetup (void) 返回:执行状态,-1表示失败 当使用这个函数初始化树莓派引脚时,程序使用的是wiringPi 引脚编号表,编号为 0~16 int wiringPiSetupGpio (void) 返回执行状态,-1表示失败 当使用
2020-08-07 15:13:41
1958
1
原创 Linux库概念及相关编程
概述 使用GNU的工具我们如何在Linux下创建自己的程序函数库?一个“程序函数库”简单的说就是一个文件包含了一些编译好的代码和数据,这些编译好的代码和数据可以在事后供其他的程序使用。程序函数库可以使整个程序更加模块化,更容易重新编译,而且更方便升级。 程序函数库可分为3种类型:静态函数库(static libraries)、共享函数库(shared libraries)、动态加载函数库(dynamically loaded libraries): 1、静态函数库,是在程序执行前就加入到目标程序中去了 ;
2020-08-05 20:21:32
162
原创 树莓派(一)刷机,登录方式,文件共享,更新源
1.树莓派刷机 利用Win32Disklmager把光盘映像写入SD卡 2.串口方式登录树莓派 默认情况,树莓派的串口和蓝牙连接,修改配置文件config.txt和cmdline.txt 1.打开SD卡根目录的"config.txt"文件,将以下内容添加在最后并且保存。 dtoverlay=pi3-miniuart-bt 2.然后再修改根目录的"cmdline.txt",将里面的内容全部替换成以下内容,以防万一,请先备份好这个文件的原内容。 dwc_otg.lpm_enable=0 console=t
2020-08-04 20:43:16
388
原创 网络编程(socket)
1.网络编程概述 支持多机通信,进程间通信是基于一个Linux系统的单机通信 TCP/UDP对比 TCP面向连接(如打电话要先拨号建立连接);UDP是面向无连接,即发送数据之前不需要建立连接 TCP提供可靠服务,也就是说TCP连接传数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,不保证可靠交付 TCP面向字节流,实际上是把数据看成一串无结构的字节流;UDP面向报文,没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(微信电话,实时视频会议等) 每一条TCP连接只能是点到点的;UDP支
2020-08-01 14:32:27
248
原创 线程
1.线程概述 进程: 程序执行的实例 进程同一时刻只能做一件事,有了多个控制线程后,可以把一个进程设计在同一时刻做多个任务,每个线程独立处理任务 进程担当分配系统资源(内存,CPU)的基本单位,线程的容器 一个进程可以有多个线程 进程间相互独立,一个进程崩溃,不会影响另外一个进程数据 线程: 线程共享同一块内存,没有单独的地址空间 线程是操作系统能够进行运算调度的最小单位 进程中一个线程崩溃会导致整个进程不能正常运行 通过条件变量和互斥锁来对访问内存访问 区别: 进程有独立空间,线程没有独立的地址
2020-07-26 16:46:06
156
原创 进程间通信方式
1.存在形式,特点 消息存在于Linux内核中,以链表的形式存在,一个队列由标识符(ID)来标识 队列每一个节点由结构体构成 队列中的数据由Linux内核进行管理,与进程的状态无关 两个进程间进行通信,使用相同的队列 消息队列可以随机查询,不用遵循先进先出的顺序,也可以按照消息的类型查询 2.队列的创建 消息队列的API #include <sys/msg.h> //创建或打开消息队列,成功返回队列ID,失败返回-1 int msgget(key_t key,int flag);//ke
2020-07-22 11:43:16
205
原创 Linux环境变量
环境变量的修改 可执行文件执行情况 查看可执行文件所在目录:pwd 查看环境变量:echo $PATH 修改环境变量:export PATH=$PATH:+可执行文件所在目录 修改后可执行文件可执行情况
2020-07-20 10:36:41
156
原创 Widows下利用SSHD远程登录并操作Linux系统
Widows下利用SSHD远程登录并操作Linux系统 1.SSHD服务 客户端访问服务端的一种协议,可通过网络客户机可以登录到Linux shell界面。 2.Widows访问远程Linux服务器工具 SecureCRT Widows下可以直接在SecureCRT访问Linux终端界面,并对其进行操作。 3.作用 解决了多机登录同一用户问题 大大提高了访问效率 解决了距离问题,即使在异地也可以对其服务端进行访问 同时也提高了安全性 4.SSHD服务的搭建(涉及权限问题可在命令前加sudo) Li
2020-07-19 10:11:54
187
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人