说完了【MCU实战经验】+stm32f4 + uCOS-III(V3.0.3) + LWIP(V1.4.0) ,总觉得该用网络做点什么来结尾。后来看到这个活动里,有人提到Yeelink ,后来看了下,觉得还是不错的。就玩了一下,之前的网友说的稍显简略,我在这里就狗尾续貂说一下,这个网站怎么用吧。) q' K8 ?7 o1 S# x 首先,主页http://www.yeelink.net/。进去之后注册,注册之后会有一个API-KEY用于验证你访问网站上注册设备的权限,然后是建立你的设备,传感器,同时网站会产生设备ID和传感器ID,这些会在后面的HTTP请求里用到。 层次结构是:一个设备包含很多传感器,一个传感器包含很多数据点。 其次,和网站进行互动,实质是通过HTTP协议传输一些请求,比如POST,PUT,DELETE。你可以通过查看相关API来了解什么样的请求完成什么样的功能,一看便知。令人欣慰的是,这个网站有个人性化的地方,就是这里http://www.yeelink.net/developer/debug,你可以通过设置相应的接口,API-KEY,HTTP请求方式,POST数据,在不用任何终端的情况下,进行调试。这些内容怎么填,根据你的需要(创建数据点?,编辑数据点?,删除数据点?或是管理传感器),去看网站上提供的API说明http://www.yeelink.net/developer/apidoc/11,填好之后,点击发送,相应的HTTP请求和服务器响应会出现在下面。 POST /v1.0/device/xxxx/sensor/xxxxx/datapoints HTTP/1.1 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:9.0.1) Gecko/20100101 Firefox/9.0.13 r, m5 v. ~+ x5 X' |* b% o1 x3 Q2 b Host: api.yeelink.net Accept: */*+ C# Z' S5 I: D N$ X+ [$ M' T3 ] U-ApiKey: xxxxxxxxxxxxxxxxxxxxxxxx Content-Length: 11 Content-Type: application/x-www-form-urlencoded( {% d" k4 u5 o) Z7 Q M1 h {"value":1} 而这些HTTP请求字符串就是你的终端要发给服务器的数据。所以就算你不了解HTTP,也可以玩。话多了,自己探索吧。待会儿上传个tcp/udp客户端服务器的软件。也可以用这个软件测试下,这个网站的功能,这样就避免了在网站内部测试忽略了实际上网络传输的过程。: L+ Q* ^4 F" r6 A. ?5 E" f 实现与yeelink数据交互,首先要在网站上注册并创建设备和传感器。然后调好stm32的网络终端(这里要实现的是一个tcp客户端,对于带os的lwip来说,就是创建一个线程,具体过程可以参考老衲五木的最后一章API的使用说明,测试可以用我待会儿上传的那个软件)。然后连接到可以访问网络的路由器,注意路由器的设置与stm32网络终端的ip获得方式要一致,要么静态ip,要么dhcp。我用的dhcp,一旦成功获得ip地址,就可以正常访问网络了。接下来就是根据你的要求,进行建立,绑定,连接,发送,释放的过程了。服务器使用的端口是http通用的80端口。+ `5 i i0 y" W' s( E) y 最后再说一句,如果你想用dns的话,可以在lwipopts.h中设置LWIP_DNS为1,同时修改一个MEMP_NUM_SYS_TIMEOUT宏,这个宏是当前超时事件数,你添加了一个功能超时事件数就会增加,因此必须与之对应,实际上设置LWIP_DHCP为1的时候也可能出现这个状况。在定义了LWIP_DNS之后,在init.c的初始化函数中多调用一个dns_init函数。之后就可以用netconn_gethostbyname函数获得ip地址了,这个函数只有两个参数,一个const char* 是穿进去的网站网址,另一个是一个ip地址结构体指针,用于填充解析出来的ip地址。返回值是一个结果" k! ~% P, F* l" |8 Y/ x * @return ERR_OK: resolving succeeded, s1 n5 @/ A6 p1 B; E * ERR_MEM: memory error, try again later * ERR_ARG: dns client not initialized or invalid hostname * ERR_VAL: dns server response was invalid' n O* P! u8 g) ^% ~ 一个细节,DNS采用的域名解析的服务器默认是208.67.222.222,查了一下,美国的resolver1.opendns.com。同样你也可以用dns_setserver设置DNS服务器ip地址。里面有两个参数,一个是索引号,一个是服务器的ip地址。索引号是不能大于DNS_MAX_SERVERS这个宏的。 另一说明,LWIP实现的DHCP和DNS都是客户端,有人想实现服务器可能要自己搞哦。 好了,终于说完了。热烈欢迎拍砖讨论! |
SocketTool.rar
下载404.84 KB, 下载次数: 234
【银杏科技ARM+FPGA双核心应用】STM32H7系列10——ADC
【银杏科技ARM+FPGA双核心应用】STM32H7系列57——MDK_FLM
【STM32图书分享之九】—《STM32F 32位ARM微控制器应用设计与实践》
无刷直流电机控制应用+基于STM8S系列单片机---电子书
STM32 USB的程序,包含固件、驱动和测试用的应用程序
工业以太网总线ETHERCAT驱动程序设计及应用(扫描版)
【实战经验】STM32 DFSDM测量温度应用
【实战经验】基于STM32 I2S的音频应用开发介绍
【中文文档】AN4112_使用STM32F05xx模拟比较器的六个应用案例
[连载]STM32F103ZET6 uCGUI3.90a控件应用教程(第五节 复选框和单选按钮)
回复:【MCU实战经验】+stm32f4 + uCOS-III(V3.0.3) + LWIP(V1.4.0)应用与结贴
回复:【MCU实战经验】+stm32f4 + uCOS-III(V3.0.3) + LWIP(V1.4.0)应用与结贴
回复:【MCU实战经验】+stm32f4 + uCOS-III(V3.0.3) + LWIP(V1.4.0)应用与结贴
不好意思 第二个问题解决了 应该是用冒号分隔数据
0 O0 }( X5 g, g' e4 N# a
继续加油!
RE:【MCU实战经验】+stm32f4 + uCOS-III(V3.0.3) + LWIP(V1.4.0)应用与结贴
RE:【MCU实战经验】+stm32f4 + uCOS-III(V3.0.3) + LWIP(V1.4.0)应用与结贴