自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 收藏
  • 关注

原创 树莓派开发实战项目 智能家居--简单工厂模式(摄像头图片获取)

2021-11-30 23:15:00 368

原创 树莓派开发实战项目 智能家居--简单工厂模式(libcurl库编程使用)

一、libcurl简介libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证。libcurl的官网 http://curl.haxx.se/库下载https://github.com/curl/curl/releases/tag/curl-7_71_1

2021-11-15 17:59:28 1063

原创 树莓派开发实战项目 智能家居--简单工厂模式(http协议详解、https协议及密码学扫盲)

参考文章:https://www.cnblogs.com/xietianjiao/p/13255099.html一、http协议的特性http协议是建立在TCP/IP协议之上应用层协议,默认端口为80,8080http协议的的特点是无状态,无连接二、http协议的请求利用抓包工具httpwatch可以获取报文http协议的报文传输的是ASCII码,在TCP/IP协议之上,主要主要分为三部分请求行、请求头、请求体1.请求行第一行,包含三个信息:请求方式,url,http协议版本GET 请求

2021-11-10 22:12:50 241

原创 树莓派开发实战项目 智能家居--简单工厂模式(socket,tcp,http三者之间的区别和原理)

OSI 模型(Open System Interconnection model)是一个由国际标准化组织提出的概念模型,试图提供一个使各种不同的计算机和网络在世界范围内实现互联的标准框架。它将计算机网络体系结构划分为七层,每层都可以????供抽象良好的接口。了解 OSI 模型有助于理解实际上互联网络的工业标准——TCP/IP 协议。socket,tcp,http三者之间的区别和原理http、TCP/IP协议与socket之间的区别下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位

2021-11-10 21:57:54 657

原创 树莓派开发实战项目 智能家居--简单工厂模式(树莓派mjpg-streamer实现监控功能调试)

1.下载mjpg-streamer软件git clone https://github.com/jacksonliam/mjpg-streamer.git2.树莓派相关sudo apt-get update #更新软件列表sudo apt-get upgrade #更新软件sudo apt-get install subversion #Subversion是一个自由开源的版本控制系统sudo apt-get install libjpeg8-dev #JPEG支持库sudo a

2021-11-05 13:01:35 223

原创 树莓派开发实战项目 智能家居--简单工厂模式(socket 和语音代码初步实现)

socketContrl.c中 read不方便一致循环读取,暂时放到主程序中主程序#include <stdio.h>#include <string.h>#include <stdlib.h>#include "contrlDevices.h"#include "InputCommand.h"#include <unistd.h>#include <pthread.h>#include <sys/types.h>

2021-11-05 10:51:03 223

原创 树莓派开发实战项目 智能家居--简单工厂模式(初步实现socket服务器“有部分问题”)

qq

2021-11-04 12:46:09 132

原创 树莓派开发实战项目 智能家居--简单工厂模式(添加声音识别模块的串口读取功能)

#include "InputCommand.h"#include <wiringPi.h>#include <wiringSerial.h>#include <stdio.h>#include <unistd.h>int voiceInit(struct InputCommander *voicer,char *ipAdress,char *port){ int fd; if(fd = serialOpen(voicer->comma

2021-11-04 11:25:20 131

原创 树莓派开发实战项目 智能家居--简单工厂模式(四个灯功能的实现及添加火灾检测模块)

contrlDevices.h#include <wiringPi.h>#include <stdlib.h>struct Devices{ char deviceName[128]; int status; int pinNum; int (*open)(int pinNum); int (*close)(int pinNum); int (*deviceInit)(int pinNum); int (*readStatus)(); int (*chan

2021-11-03 22:25:11 229

原创 树莓派开发实战项目 智能家居--简单工厂模式(简单工厂模式介绍)

一、智能家居架构代码文件工程二、搭建模型

2021-11-03 22:21:14 639

原创 树莓派开发 IO操控代码编程

每个寄存器32位,四个字节volatile:1.指令不会因编译器的优化而省略2.每次直接读值一、位运算(按位与、按位或、异或)按位与运算符(&)参加运算的两个数,按二进制位进行“与”运算。运算规则:只有两个数的二进制同时为1,结果才为1,否则为0。(负数按补码形式参加按位与运算)即 0 & 0= 0 ,0 & 1= 0,1 & 0= 0, 1 & 1= 1。例:3 &5 即 00000011 & 00000101 = 0000000

2021-10-31 13:57:29 269

原创 树莓派开发 小知识点

查看内存大小cat /proc/meminfounix设计与实现—启蒙书(内核设计文档)驱动两大利器:电路图和芯片手册电路图作用:通过电路图找到寄存器peripherals 外围设备导读手册里面是总线地址功能选择输出设置清0...

2021-10-30 09:51:24 79

原创 树莓派开发 基于框架编写驱动代码

linux 一切皆文件

2021-10-28 23:12:15 141

原创 树莓派开发 内核结构

1. linux系统架构如下图所示:linux系统架构由硬件、kernel、系统调用、shell、c库、应用程序组成。最内层是硬件,最外层是用户常用的应用,比如说firefox浏览器,evolution查看邮件,一个计算流体模型等等。硬件是物质基础,而应用提供服务。但在两者之间,还要经过一番周折。还记得Linux启动。Linux首先启动内核 (kernel),内核是一段计算机程序,这个程序直接管理管理硬件,包括CPU、内存空间、硬盘接口、网络接口等等。所有的计算机操作都要通过内核传递给硬件。为了方便

2021-10-27 11:26:11 801

原创 树莓派开发 文件系统

一、文件系统的认知

2021-10-26 21:44:40 143

原创 树莓派开发 高阶

一、ubuntu18.04版本安装

2021-10-26 11:13:24 262

原创 树莓派开发 交叉编译

一、概念1.什么是交叉编译?交叉编译:是在一个平台上生成另一个平台上的可执行代码。我们在windows上面编写C51代码,并编译成可执行代码,如xx.hex,是在C51上面运行,不是在windows上面运行我们在ubuntu上面编写树莓派代码,并编译成可执行代码,如a.out,是在树莓派上面运行,不是在ubuntu Linux上面运行编译:是在一个平台上生成在该平台上的可执行代码例子:C51 交叉编译地发生在keil(集成环境上面)2.为什么要交叉编译有时是因为目的平台上不允许或不能够安装我

2021-10-22 16:58:02 168

原创 语音模块笔记

语音模块 STC11L08XEvoid ExtInt0Handler(void) interrupt 0 中断处理函数当LD3320识别成功后,会引发IO口中断nAsrRes = LD_GetResult(); /获取结果/User_handle(nAsrRes);//用户执行函数main Led_test(); 开机闪灯3次 MCU_init(); 单片机本身初始化,开启中断 LD_Reset(); ld3320初始化 UartIni(); /*串口初始化*/while(1){

2021-10-19 23:48:01 180

原创 树莓派开发 串口通信

串口中\r\n才是换行单独\n不好用一、概述全双工:女骂男、男骂女半双工:只能一个骂两个人之间交流分:语言、语速对应串口就是:数据格式(数据位、奇偶校验、停止位)、波特率

2021-10-19 16:29:00 158

原创 树莓派开发 继电器

一、控制继电器开关gpio readall查看树莓派对应的IO口控制代码二、继电器组控制同继电器控制节约了IO口wiringPi库https://www.cnblogs.com/lulipro/p/5992172.html

2021-10-19 16:28:34 85

原创 树莓派开发 超声波模块

一、工作原理(1)树莓派向 Trig 脚发送一个 10us 的脉冲信号。(2) HC-SR04 接收到信号,开始发送超声波,并把 Echo置为高电平,然后准备接收返回的超声波。(3) HC-SR04 接收到返回的超声波,把 Echo 置为低电平。(4)Echo 高电平持续的时间就是超声波从发射到返回的时间间隔。(5)计算距离:距离(单位:m) = (start - end) * 声波速度 / 2声波速度取 343m/s 。然后再把测得的距离转换为 cm。距离(单位:cm) = (sta

2021-10-18 12:58:55 847

原创 树莓派开发 外设开发综述

一、树莓派的接口: 驱动1.树莓派的接口: 驱动IO口:input output 对主控来说Input:人体,烟雾,火焰,震动等Output:继电器,蜂鸣器PWM:电机调速,灯光调明亮度语音识别模块,液晶屏串口uartIICSPIIIS其他特定硬件的接口:flash Nanopi:LinuxS3c2410,2440 6410Tiny210 tiny4412海思方案,瑞芯微方案,移远方案C51,stm32,arduino,wemosD1:没有操作系统(Linux)树

2021-10-17 18:10:58 99

原创 树莓派开发 库相关概念

1111

2021-10-17 14:28:50 132

原创 树莓派开发 树莓派 和 windows FileZilla连接

正常输入ip地址用户名密码连接不上需要在主机地址前加上sftp://192.168.1.176连接即可

2021-10-16 10:02:30 115

原创 树莓派开发 树莓派 图形方式登陆树莓派

输入sudo apt-get install xrdp电脑自带远程桌面连接输入ip地址

2021-10-16 09:58:18 72

原创 树莓派开发 树莓派 VIM更新

一、VIM更新到好用版本默认的源是国外的,apt-get 安装的时候失败,我们更新成国内的源sudo apt-get install vim输入sudo nano /etc/apt/sources.list用#注释或直接删除原有的内容,新增两条1|deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi2|#deb-src http://mirrors.tuna.

2021-10-16 09:38:09 75

原创 树莓派开发 树莓派 两种不同方式接入树莓派

一、串口方式登陆树莓派

2021-10-16 09:25:31 306

原创 Linux系统编程 网络编程

TCP/UDP对比1.TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前,不需要建立连接。2.TCP提供可靠的服务,也就是说,通过TCP连接传送的数据,无误差,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。3.TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使电源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)。4.每一条TCP连接只能是点到点的;UDP支持1

2021-10-07 08:27:59 107

原创 Linux系统编程 线程

一、进程与线程1.什么是线程典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程各自处理独立的任务。进程是程序执行时的一个实例,是担当分配系统资源(CPU时间、内存等)的基本单位。在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器。程序本身只是指令、数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例。线程是操作系统能够进行运算调度的最小单位。它被包含在进

2021-10-02 11:23:16 86

原创 Linux系统编程 进程间通信

进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息.IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。一、管道管道,通常指无名管道,是 UNIX 系统IPC最古老的形式。1、特点:1.它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。2.它只能用于具有亲缘关系的进程之间的通信(也是父子进程或者兄弟进程

2021-09-27 15:47:21 88

原创 Linux系统编程 进程

一、进程相关概念1.什么是程序,什么是进程,有什么区别?程序是静态的概念,gcc xxx.c -o pro 磁盘中生成pro文件,叫做程序。进程是程序的一次运动活动,通俗点意思是程序跑起来了,系统中就多了一个进程。2.如何查看系统中有哪些进程?使用ps指令查看 ps -aux;实际工作中,配合grep来查找程序中是否存在某一个进程。使用top指令查看,类似windows任务管理器。3.什么是进程标识符每个进程都有一个非负整数表示的唯一ID,叫做pid,类似身份证。pid = 0;称为交换

2021-09-17 11:19:59 151

原创 Linux系统编程 文件

一、打开及创建#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int main(){ int fd; fd = open("./file1",O_RDWR); if(fd == -1) { printf("open file1 failed\n

2021-09-12 20:30:07 490

原创 C Linux贪吃蛇

ncurse :为什么要用ncurse:因为这个b按键响应很nb是什么:早已淡出舞台 用户体验感很差,这里主要用于使用控制蛇 不学习!#include<curses.h>int main(){ initscr();printw(“this is a curse window.\n”);getch();endwin();return 0;}编译时 gcc 。。。lcurses 。。。...

2021-04-03 16:59:23 95

原创 链表 头插法

#include<stdio.h>#include<stdlib.h>struct Test{int data;struct Test *next;};void printLink(struct Test *head){while(head != NULL){printf("%d ",head->data);head = head->next;}}struct Test *inPutData(struct Test *head){str

2021-04-03 10:26:47 148 1

原创 C 语言 WeMos D1智能垃圾桶上

和STM32模块开发类似,集成度高STM32方案也更经济便宜板载 5V 1A开关电源(最高输入24V)ARDUINO开发环境Wemos IO口 玩蜂鸣器**VCC:**供电电压**GND:**GND是电线接地端的简写。代表地线或0线。这个地并不是真正意义上的地,是出于应用而假设的一个地,对于电源来说,它就是一个电源的负极Wemos同Arduino上电后不断执行loop函数中的代码,我们核心控制代码写入loopsetup函数只调用一次,一般用于硬件相关的初始化,比如IO口,串口,wifi等

2021-03-31 18:44:03 161

原创 Linux虚拟机网络配置

Bridged(桥接模式)1.每台都能上网2.互相通信3.不足。每台虚拟机都要独立配置DNS(用来上网的) 比较消耗IP地址NAT(网络地址转换模式)1.每台都能上网 DNS是统一的2.ip地址是假的 单向Host-Only(仅主机模式)1.不能访外网我们用的最多的是桥接模式ifconft 查看ip相同网段sudo ifconfig eth0 192.168.1.88将ip地址配置成192.168.1.88ctrl + c 返回...

2021-03-31 14:49:15 91

原创 Linux和 windows 之间传输

Linux和windows文件共享1.直接拖拽2.共享文件夹cd /mnt/mgfs/sharefromwindowscp空格/mnt/mgfs/sharefromwindows/gpsdataparse.c空格. :拷贝到当前路径 ,最后一个点是当前路径的意思以上两种方式 需要安装VMware Tool;3.ftpfirezilla工具 totalcommand cuteftp在获取完 虚拟机ip地址后 ping空格 虚拟机的ip地址来看是否能相连...

2021-03-31 09:11:18 129

原创 Linux 常用初级指令介绍和使用

常用指令ls:列出当前文件夹下有哪些文件ls -a :把所有文件夹列出来pwd:显示当前在哪个文件夹下面mkdir zhazhaxing :新建文件夹 名字是zhazhaxingcd zhazhaxing:进入文件夹 zhazhaixingcd … :退回上层文件夹 cd空格点点./ firstProgram : 运行firstProgramtab键: 自动补全 文件名太长,一般敲前面几个字符再按tab就会补全mv *.c zhazhaxing :1.将所有文件移动剪切到zhazhax

2021-03-31 08:21:54 154 2

原创 C语言 ubuntu

xrandr 调分辨率ls 列出当前文件夹下有哪些文件VI的使用模式 :命令行模式 默认此模式 从输入模式回到命令行模式 按esc输入模式 按 i 进入 看到insert就能编辑代码 esc按完insert消失退出vi,保存代码 :命令行模式下按:(冒号) wq w保存 q退出gcc a.c -o aa.c是你要编译的c文件的名字,a是生成的程序名字运行 ./程序名 ./a...

2021-03-30 15:20:42 82

原创 C语言 typdef关键字

作用是作为一种数据类型定义一个新名字这里的数据类型包括内部数据类型(int,char等)和自定义的函数struct等。和struct来陪匹配为了代码编写简洁和普通类型匹配,通过名字来获取一些信息#include <stdio.h>#include <stdlib.h>typedef unsigned char u_int8; //(0-255) 无符号的整型8位typedef unsigned short int u_int16; // 无符号的整型16位typ

2021-03-30 09:19:13 202

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除