微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 如何使用网络单片机W7100A实现TCP通信

如何使用网络单片机W7100A实现TCP通信

时间:11-26 来源:互联网 点击:

例1.5 接收数据

1.6 断开(DISCONNECT)

关闭SOCKET的方法通常有两种:第一种方法是通过DISCONNECT(n)函数。DISCONNECT(n)函数不能用来直接关闭SOCKET。它先向对端发送断开连接请求(FIN数据包),然后等待回复信息(FIN/ACK数据包),之后才能将SOCKET的状态变成SOCK_CLOSED(0×00),最后关闭SOCKET。当收到断开连接请求时,W7100A发送一个FIN/ACK数据包表示允许对端关闭SOCKET。如果在发送断开连接请求之后没有收到对端的回复,将会发生TCP超时,SOCKET的状态将会变成SOCKET_CLOSED(0×00)。当用户需要断开连接时,通过DISCONNECT()函数,选择合适的SOCKET号,然后发送断开连接请求。

例1.6 设置断开连接

1.7 关闭(CLOSE)

和断开的过程不同,关闭过程可以直接将SOCKET变成SOCK_CLOSED(0×00)。用户通过

CLOSE(n)函数选择合适的端口号,然后无论对端有没有做出响应都将关闭SOCKET。如果RST数据包来自对端,SOCKET将会无条件变成SOCK_CLOSED(0×00)。一旦SOCKET变成为SOCK_CLOSED(0X00), SOCKET将不再可用除非重新打开它。

例1.7 设置关闭

2 TCP回路测试(LOOPBACK)

2.1服务器模式

TCP回路测试可以通过回送来自于对端的数据从而检测TCP协议的性能。这一章节将会介绍服务器模式下回路测试的例子。程序范例如下:

例2.1 设置回路测试(LOOPBACK)服务器

如上面的例子所示,在SOCKET循环周期内除了connect()函数,其他所有函数都可以使用。首先利用getSn_SR(s)函数检测SOCKET状态,在W7100A复位后,所有的SOCKET全都变成SOCK_CLOSED(0×00)状态。然后利用close()函数完全关闭SOCKET,再通过socket(s,Sn_MR_TCP,port,0×00)函数来创建一个新的SOCKET。如果SOCKET创建成功,状态将会变成SOCK_INIT,再通过listen(s)函数将SOCKET的状态变成监听。一旦与对端建立连接,SOCKET的状态将变成SOCK_ESTABLISHED,并且等待数据。所有接收到的数据都保存在接收缓存器中,recv(s,data_buf,len)函数中的data_buf变量定义为接收到的数据的长度。最后再通过send(s,data,len)函数将数据回送到客户端。客户端会比较数据交换前后的差异来检测数据通信是否正常。

2.2 客户端模式

本章节将会介绍客户端模式下回路测试的例子。程序范例如下:

例2.2 设置回路测试(LOOPBACK)客户端

TCP客户端的程序例子和TCP服务器的例子基本相同。唯一的区别在于SOCK_INIT状态下,是通过connect()函数而不是listen()函数与服务器连接。

3 回路测试服务器演示

这一章将会介绍TCP回路测试程序运行的例子。在下载完成TCP回路测试应用的二进制文件后,运行iMCUW7100单片机内的数据包实现回路测试的演示过程。更多的详细信息,请参阅文档‘如何在W7100A中创建工程’,‘WizISP程序指南’以及‘W7100A Debugger指南’。

对TCP串行回路,用户按照下面的步骤进行设定:

确认测试环境。请参考‘iMCU7100EVB用户指南’

直接利用UTP线连接PC机与iMCU7100EVB

直接利用串口线连接PC机与iMCU7100EVB

使能iMCU7100EVB的5V电源适配器

添加下面测试PC机的网络信息

- IP地址 : 192.168.1.xxx (‘xxx’ 为用户PC机的IP地址,在客户端模式下此IP地址也是服务器的IP地址,即我们之前在TCP客户端代码中设置在destip[4]的IP地址)。在本文档中,IP设置为192.168.1.69,但是用户可以进行修改。

- 网关IP地址 : 192.168.1.1

- 子网掩码 : 255.255.255.0

运行超级终端机程序以及AX1程序

3.1超级终端机程序

<图3.1> 超级终端机程序选项

在超级终端机程序行完成之后,如图4.1设置串行通信的选项。超级终端机程序将会显示串行通信时iMCU7100EVB的运行状态。

3.2 AX1 设置

想了解更多关于AX1程序的信息,请参考AX1用户手册。

3.2.1TCP服务器模式下的iMCU7100EVB

当iMCU7100EVB运行于服务器模式时,PC作为TCP客户端利用AX1程序连接到iMCU7100EVB。在AX1程序中,选择TCP => CONNECT 菜单来实现与iMCU7100EVB的连接,此时对端的IP地址为192.168.1.2,端口号为5000。

一旦连接成功,如图4.2选择TCP => SEND 菜单发送数据。因为此时iMCU7100EVB作为服务器,AX1程序窗口将会显示客户端的状态。

<图3.2> AX1 发送数据

3.2.2 TCP客户端模式下的iMCU7100EVB

当iMCUW7100EVB运行于客户端模式下时,PC机作为TCP服务器使用AX1程序将iMCU7100EVB连接到服务器端口。如果在AX1程序中打开的服务器端口号是5000(监听状态),iMCU7100EVB将会连接到服务器IP地址以及服务器端口(192.168.1.xxx,5000)。需要注意的是IP地址必须是打开AX1程序的PC机上的IP地址。

一旦连接成功,选择TCP =>

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top