GoPro Arduino控制库.阅读源码.1
打开plt->库
我怕这边已经安装好了饿
看库的路径
小东西,就vscode看就好了
先看README了解一下
支持的操作,可以看到基本上涵盖的方方面面了
支持的硬件8266和32,就是后面的不支持了.看起来是AT固件
去看一看at固件怎么样,是几年前的库了.比较老.先clone,然后再解剖
WiFiEsp
借助ESP8266开发板,WiFiEsp库允许Arduino开发板连接到互联网。它既可以用作接受传入连接的服务器,也可以用作进行传出连接的客户端。WiFiEsp库与Arduino WiFi和以太网库非常相似,并且许多函数调用是相同的。
支持ESP SDK版本1.1.1和更高版本(AT版本0.25和更高版本)。
特征
- 与标准Arduino WiFi库兼容的API。
- 使用标准ESP固件的AT命令(无需刷新自定义固件)。
- 支持硬件和软件串行端口。
- 可配置的跟踪级别。
接线
WiFiEsp库经过设计可与ESP WiFi防护板配合使用。它是Arduino WiFi防护板的廉价版本,它使用ESP-01模块为Arduino板提供联网功能。
例子
- ConnectWPA-演示如何连接到使用WPA2 Personal加密的网络
- WebClient-连接到远程Web服务器
- WebClientRepeating-对Web服务器重复进行HTTP调用
- WebServer-从WiFi防护板提供网页
- WebServerAP-从WiFi防护板提供网页以启动本地访问点
- WebServerLed-打开和关闭网页上的LED
- UdpNTPClient-使用UDP查询网络时间协议(NTP)服务器
支持的API
大多数标准的Arduino WiFi库方法都可用。有关更多详细信息,请参阅WiFi库页面。
WiFiEsp类
- begin()-并非所有身份验证类型
- connect()-是
- config()
- setDNS()-否(无AT命令可用)
- SSID()-是
- BSSID()-是
- RSSI()-是
- encryptionType()-否(没有可用的AT命令)
- scanNetworks()-是
- getSocket()
- macAddress()-是
WiFiEspServer类
WiFiEspServer类创建服务器,该服务器可以向连接的客户端(在其他计算机或设备上运行的程序)发送数据和从其接收数据。
- WiFiEspServer()-是
- begin()-是
- available()-是
- write()-是
- print()-是
- println()-是
客户类
WiFiEspClient类创建可以连接到服务器以及发送和接收数据的客户端。
- WiFiEspClient()-是
- connected()-是
- connect()-是
- write()-是
- print()-是
- println()-是
- available()-是
- read()-是
- flush()-是
- stop()-是
WiFiEspUDP类
UDP类允许发送和接收UDP消息。
- WiFiUDP-是
- begin()-是
- available()-是
- beginPacket()-是
- endPacket()-是
- write()-是
- parsePacket()-是
- 窥视()
- read()-是
- flush()
- 停()
- remoteIP()-是
- remotePort()-是
先复制一下描述~
全系相机都可以控制
安装方式
用arduino IDE
用就是我刚刚安装的方式
还有就是手动安装
mac和Linux可能有这个毛病
支持功能的相机对比,我发现3好像还多一点功能
没错哦
这个库的灵感来源,我也clone了.等等看
这个文件就像是Python里面pip库的配置文件一样.标识库文件
这个键码看不懂
Git库的忽略文件
一个是例子一个是源代码.我们先读后者
我是习惯先读读头文件,看看一些函数原型什么的
我把class关了
大致就是一个头文件,有条件编译语句.如果没有宏就创建一个宏.然后三个头文件.一个是arduino 的头,一个是setting的头.一会儿读.
下面简单,编译的设备目标.看起来支持8266和32.
还有一个http的头文件.http客户端头文件.
class GoProControl
{
public:
GoProControl(String ssid, String pwd, uint8_t camera);
uint8_t begin();
static void sendWoL(WiFiUDP udp, byte *mac, size_t size_of_mac);
uint8_t confirmPairing();
void enableDebug(HardwareSerial *debug_port, const uint32_t debug_baudrate = 115200);
void disableDebug();
uint8_t getGoProStatus();
void printGoProStatus();
uint8_t turnOn();
uint8_t turnOff();
uint8_t startCapture();
uint8_t stopCapture();
uint8_t localizationOn();
uint8_t localizationOff();
uint8_t deleteLast();
uint8_t deleteAll();
uint8_t setMode(uint8_t option);
uint8_t setOrientation(uint8_t option);
uint8_t setVideoResolution(uint8_t option);
uint8_t setPhotoResolution(uint8_t option);
uint8_t setFrameRate(uint8_t option);
uint8_t setFov(uint8_t option);
uint8_t setVideoEncoding(uint8_t option);
uint8_t setTimeLapseInterval(float option);
uint8_t setContinuousShot(uint8_t option);
private:
WiFiClient _client;
HTTPClient _http;
String _url;
String _ssid;
String _pwd;
uint8_t _camera;
String _host;
uint16_t _port;
String _request;
String _option;
uint8_t _GoProConnected = false;
HardwareSerial *_debug_port;
uint8_t _debug;
uint8_t sendRequest(String request);
String listen();
uint8_t validMode(int16_t mode, int16_t first, int16_t last);
};
我把这个类单拿出来看看.
用这个功能先看看
类里面就是这些东西
其实我有点不懂.这个类名和一个函数名字一样.我不懂最后一个参数的意思是什么是相机的型号吗?我没有看到有什么地方调用这个参数
函数几个
- 开始
- 发啥?
- 确认连接
- 动态绑定与静态绑定
- Android4.0 声卡配置-高通msm8916移植
- PHP安全:session劫持的防御
- 函数式非凡的抽象能力
- 设备树的interrupt
- gitignore文件的作用
- 《Redis设计与实现》读书笔记(十八) ——Redis客户端属性设计与原理
- 使用Python Pandas处理亿级数据
- PHP函数
- Spray中的Authentication和JMeter测试
- 《Redis设计与实现》读书笔记(二十一) ——Redis服务器定时函数serverCron详解
- Spark SQL访问Postgresql
- sysfs_create_group创建sysfs接口
- apache服务器配置
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 融入ThingJS 3D可视化方案,让城市管线更加智能、高效
- 类加载机制浅记
- 聊聊dubbo-go的nacosRegistry
- Java离Linux内核有多远?
- 关于懒汉模式和恶汉模式的区别
- Chrome 新功能 — CSS Overview 尝鲜
- 0门槛,轻松实现条形竞赛图动画
- 读懂数据库中的乐观锁和悲观锁和MVCC
- CentOS 7.x安装微服务网关Apache APISIX
- Sentinel规则Pull模式持久化
- 如何用Cloudbase Framework部署一个Vue项目?
- 第17问:如何评估 alter table 的进度?
- 【LeeCode 困难 python3】329. 矩阵中的最长递增路径
- 干!一张图整理了 Python 所有内置异常
- 面试官问:孤儿进程和僵尸进程,你造吗~