Microduino W5500网络(六)/zh

来自Microduino Wikipedia
Radiumray9@gmail.com讨论 | 贡献2015年2月2日 (一) 03:12的版本 程序
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

目的

本教程将教大家使用UDP协议来跟Microduino-W5500通讯

设备

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

UDP

UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。

UDP协议全称是用户数据报协议[1] ,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。

与所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。UDP协议的主要作用是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的传输单位。每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。

原理图

  • Microduino-ENC28J60
  • Microduino-RJ45
  • Microduino-Core
  • Microduino-USBTTL

层层堆叠,再插上网线。

如下图所示:

MicroduinoW5500Show.png

程序

[MicroduinoW5500Six]

调试

步骤一:首先需要确保你的IDE中有_02_Microduino_Ethernet_WIZ库,如果没有下载放到你的IDE的libraries文件夹中,重启IDE。

步骤二:如果你的IDE的libraries文件夹中还有之前的Ethernet库的话,需要删除掉,因为之前的Ethernet是根据W5100协议编写的。

然后需要改动一下_02_Microduino_Ethernet_WIZ文件以使库函数与Microduino-W5500模块的引脚对应:

先找到_02_Microduino_Ethernet_WIZ库中的utility文件夹里的w5100.h

把代码中的 #define wiz_cs_pin 8 //CS_PIN 改为 #define wiz_cs_pin 10 //CS_PIN 就可以了。

步骤三:解释一下代码:

 // if there's data available, read a packet
 int packetSize = Udp.parsePacket();
 if(packetSize)
 {
   Serial.print("Received packet of size ");
   Serial.println(packetSize);
   Serial.print("From ");
   IPAddress remote = Udp.remoteIP();
   for (int i =0; i < 4; i++)
   {
     Serial.print(remote[i], DEC);
     if (i < 3)
     {
       Serial.print(".");
     }
   }
   Serial.print(", port ");
   Serial.println(Udp.remotePort());
 //以上代码判断是否有传过来的数据,如果有的话串口打印出客户端的IP地址和端口号
 
   // read the packet into packetBufffer
   Udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE);
   Serial.println("Contents:");
   Serial.println(packetBuffer);
 
   // send a reply, to the IP address and port that sent us the packet we received
   Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
   Udp.write(ReplyBuffer);
   Udp.endPacket();
 }
 delay(10);
 //以上代码读取传送过来的信息,打印在串口中然后回复客户端 ”acknowledged”

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

步骤五:这里为了测试我们用一个工具:SocketTool 来发送UDP数据包

打开SocketTool选择UDP client,点击创建

MicroduinoW5500SocketTool1.png

在弹出的对话框中填写对方IP和端口

MicroduinoW5500SocketTool2.png

在数据发送窗口填写信息后发送数据

MicroduinoW5500SocketTool3.png

在接收窗口中会显示”acknowledged”

MicroduinoW5500SocketTool4.png

结果

通过Microduino-W5500实现了一个UDP接收端,可以接受UDP发送端的信息和回复信息。

视频