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

时间:2022-07-24
本文章向大家介绍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);
};

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

用这个功能先看看

类里面就是这些东西

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





函数几个

  1. 开始
  2. 发啥?
  3. 确认连接