Microduino ENC网络(三)/zh

来自Microduino Wikipedia
Pkj讨论 | 贡献2014年4月24日 (四) 06:58的版本 调试
跳转至: 导航搜索

目的

本教程将教大家如何向一个网站发送数据和接收该网站的返回数据。

设备

  • 其他硬件设备
    • USB数据连接线 一根

DNS

通常我们连接一个网站是键入他的域名(如http://www.microduino.cc),我们的电脑,会通过一个dns服务器将他的域名解析为相应ip来进行连接。

在Microduino中配置你网络对应的dns服务器地址是非常重要的:

如果你的Microduino是采用DHCP服务器来进行配置,通常DNS服务器地址也是自动获取的。

如果是静态配置,那么你调用 staticSetup()方法时需要包含DNS服务器地址。


原理图

  • Microduino-ENC28J60
  • Microduino-RJ45
  • Microduino-Core
  • Microduino-FT232R

层层堆叠,再插上网线。

如下图所示:

MicroduinoENCShow.jpg


程序

https://github.com/Microduino/Microduino_Tutorials/tree/master/Microduino_ENC/ENCnetworkthree


调试

步骤一:首先需要下载EtherCard库:https://github.com/jcw/ethercard

放到你的IDE的libraries文件夹中,重启IDE。

步骤二:解释一下代码:

为了使下面的例子更实际,这里有一个简单的php网页,每次连接将随机返回一句格言,地址如下http://www.lucadentella.it/demo/aphorisms.php

我们编写的代码可以获得这些格言并输出到串口。

在代码中,用dnsLookup()方法验证域名服务器是否正常。

EtherCard库提供了一个非常方便的方法browseUrl()来连接一个网站。

browseUrl()方法需要一些参数:

prog_char urlbuf,地址的 固定部分;

const char * urlbuf_varpart,地址的变量部分;

prog_char hoststr,网站的名称;

void (*callback)(byte,word,word)),这是一个回调函数名称,连接结束时调用的函数。

地址分为两部分,以优化内存的利用率:静态部分存储在flash中(PSTR()命令),以节省RAM空间。

回调函数:

回调函数包含连接结束时执行的一个动作,在这个例子,是在串口打印出网站返回的格言。

你可以选择任意的函数名称,但必须声明如下的参数:

static void response_callback (byte status, word off, word len);

第一个参数为连接的状态,第二个参数为响应存储在buffer中的偏移量,第三个参数为响应的长度。

要理解偏移量(OFF)参数的含义,你必须要注意的以太网连接发送和接收的所有数据存储在我们定义的缓冲区中:

byte Ethernet::buffer[700];

你收到数据,整个数据包(包含头文件及校验字段等),都存储在这个缓冲区中,偏移量值告诉我们从那个字段开始存储这个数据包,及哪儿是我们收到的网页响应。

下面是一个回调函数在串口打印网页的响应:

static void response_callback (byte status, word off, word len) { Serial.print((const char*) Ethernet::buffer + off); }


步骤三:下载代码并编译通过。

步骤四:看看你的串口有啥反应。

结果

如果没其他问题的话,你应该可以看到如下信息:

ResponseCallback.jpg

格言会随机一行一行的显示给你。

视频