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