完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
第三篇文章,我会介绍如何连接一个网站并获取返回的信息。
当你学会了如何(使用静态ip地址或者通过DHCP服务器自动获取ip地址)把你的Arduino连接到网络后,你需要学习如何向一个网站发送数据和接收该网站的返回数据。 为了使下面的例子更实际,我编写了一个简单的php网页,每次连接将随机返回一句格言,地址如下http://www.lucadentella.it/demo/aphorisms.php。 我们来编写一个Arduino代码来获得这些格言并输出到串口。 DNS 通常我们连接一个网站是键入他的域名(如www.sina.com.cn),我们的电脑,会通过一个dns服务器将他的域名解析为相应ip来进行连接。 在arduino中配置你网络对应的dns服务器地址是非常重要的: 如果你的arduino是采用DHCP服务器来进行配置,通常DNS服务器地址也是自动获取的。 如果是静态配置,那么你调用 staticSetup()方法时需要包含DNS服务器地址。
[color=rgb(51, 102, 153) !important]复制代码 你可以用dnsLookup()方法验证域名服务器是否正常。
[color=rgb(51, 102, 153) !important]复制代码 连接 EtherCard库提供了一个非常方便的方法browseUrl()来连接一个网站,This method prepares the connection; which is completed in following steps performed(不知道咋个翻译) – during the loop - 通过我们已经学了的2个指令:
[color=rgb(51, 102, 153) !important]复制代码 非常重要的是需要保持这两个指令运行,才能使代码正常工作。 browseUrl()方法需要一些参数: prog_char urlbuf,地址的 固定部分; const char * urlbuf_varpart,地址的变量部分; prog_char hoststr,网站的名称; void (*callback)(byte,word,word)),这是一个回调函数名称,连接结束时调用的函数。 地址分为两部分,以优化内存的利用率:静态部分存储在flash中(PSTR()命令),以节省RAM空间。 回调函数 回调函数包含连接结束时执行的一个动作,在这个例子,是在串口打印出网站返回的格言。 你可以选择任意的函数名称,但必须声明如下的参数:
[color=rgb(51, 102, 153) !important]复制代码 第一个参数为连接的状态,第二个参数为响应存储在buffer中的偏移量,第三个参数为响应的长度。 要理解偏移量(OFF)参数的含义,你必须要注意的以太网连接发送和接收的所有数据存储在我们定义的缓冲区中:
[color=rgb(51, 102, 153) !important]复制代码 你收到数据,整个数据包(包含头文件及校验字段等),都存储在这个缓冲区中,偏移量值告诉我们从那个字段开始存储这个数据包,及哪儿是我们收到的网页响应。 下面是一个回调函数在串口打印网页的响应:
[color=rgb(51, 102, 153) !important]复制代码 如果你运行这个代码(你可以在这个链接找到)(注意要把回调函数改成以上回调函数),你就可以看到如下信息: arduino正确配置了DHCP,它解析“www.lucadentella.it”这个域名,连接网站,打印网站响应。 响应不仅包含格言,还包含了HTTP头文件。你需要打印所有的响应,然后通过文本编辑器(推荐notepad++),找到它们有多少个字符: 这些行位于接收缓冲器中的格言之前。所以我们需要改变回调函数,打印207个字符之后的缓冲区的内容:
[color=rgb(51, 102, 153) !important]复制代码 经过以上更改,你就可以接收到正确的数据: |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
WIO Terminal +MCP2515 实现车辆OBD的速度监控
10367 浏览 0 评论
60659 浏览 77 评论
5960 浏览 3 评论
一块扩展板完成Arduino的10类37项实验(代码+图形+仿真)
36053 浏览 219 评论
10025 浏览 0 评论
488浏览 1评论
请教:esp32中用u8g2显示shtc3传感器数据到i2c液晶屏,显示不稳定的问题
1250浏览 1评论
1391浏览 1评论
601浏览 0评论
722浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 13:04 , Processed in 0.630995 second(s), Total 72, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号