分享

GoPro Arduino控制库.阅读源码.1

 云深无际 2021-11-03

打开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);};

我把这个类单拿出来看看.

用这个功能先看看

类里面就是这些东西

其实我有点不懂.这个类名和一个函数名字一样.我不懂最后一个参数的意思是什么是相机的型号吗?我没有看到有什么地方调用这个参数





函数几个

  1. 开始

  2. 发啥?

  3. 确认连接


    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多