在去年的时候,我就开过一个专栏,就是试图找出Arduino的构成,就是代码的组织,一个硬件库的打包等。可以后来平台没有给我专辑,我就没有再写了,但是最近又拾起来了,所以想开一个新的专辑。老办法,还是读TT的相关的库,除了官方的,还有第三方的。试图从源码中挖掘语言的含义。
就是这样的,Github下载下来的ESP32 Arduino内核 第三方的一些TT库
然后把官方的库放到我们的内核里面
库的内容
用VSCode打开,正在分析
代码语言:javascript复制long map(long x, long in_min, long in_max, long out_min, long out_max)
{
return (x - in_min) * (out_max - out_min) / (in_max - in_min) out_min;
}
我们今天读一个简单的TT包装程序
库之间有重合
TT库的包装头
- 实现了连接状态的管理
- 发送指令
- 打印wifi的状态
- 获取无人机的回复信息
- 还有一些私有的方法
这个有点像This指针,指向自己
代码语言:javascript复制using string = basic_string<char, char_traits<char>, allocator<char>>;
代码语言:javascript复制class WiFiUDP : public UDP
WIFIUDP继承至UDP
代码语言:javascript复制class UDP : public Stream
UDP继承至stream
代码语言:javascript复制class Stream: public Print
stream继承至print
我悟了,这就是继承吗?
故事的终点在Print
代码语言:javascript复制size_t Print::printNumber(unsigned long n, uint8_t base)
{
char buf[8 * sizeof(long) 1]; // Assumes 8-bit chars plus zero byte.
char *str = &buf[sizeof(buf) - 1];
*str = '