银杏科技有限公司旗下技术文档发布平台 | |||
技术支持电话 | 0379-69926675-801 | ||
技术支持邮件 | Gingko@vip.163.com | ||
版本 | 日期 | 作者 | 修改内容 |
---|---|---|---|
V1.0 | 2020-07-01 | gingko | 初次建立 |
了解STM32的SPI和W5500的结构,使用MicroPython将iCore3做为TCP服务器。
iCore3带有W5500嵌入式以太网控制器,本实验实现TCP服务器功能。以PC作为客户端,iCore3作为TCP服务器,PC的IP地址为192.168.0.1,iCore3的IP为192.168.0.2,端口号为60001,当PC客户端连接到TCP服务器,TCP建立成功即可进行数据信息传输。原理示意图如下所示:
# -*- coding: utf-8-*- # main.py -- put your code here! import pyb, network, socket, _thread #导入库 # 定义全局变量 client_list = [] #客户端列表 server_socket = None #服务器套接字 nic = None #以太网对象 # 服务器初始化 def server_init(): global server_socket, nic #创建WIZNET5K对象,指定SPI,端口初始化,A15连接LAN_cs,G2连接LAN_INT nic = network.WIZNET5K(pyb.SPI(1), pyb.Pin('A15'), pyb.Pin('G2')) #设置iCore3的ip地址、子网掩码、网关、DNS服务器地址 nic.ifconfig(('192.168.0.2','255.255.255.0','192.168.0.1','192.168.0.1')) #创建新的套接字,使用ipv4协议、TCP协议 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind(('192.168.0.2',60001)) #设置服务器地址,端口号 server_socket.listen(50) #监听端口 # 服务器信息处理 def deal_with(id): global client_list while True: # 历遍所有客户端 for client in client_list: # 若连接存在 try: # 获取接收到的数据,,并解码 data = client[0].recv(1024).decode('utf-8') # 若数据不为空,则给客户端回复消息 if len(data) > 0: client[0].send('iCore3 receive %s from %s.\n'%(data,client[1])) except: # 断开连接 client_list.remove(client) client[0].close() pyb.delay(1) # 客户端连接管理 def mana_socket(id): global server_socket while True: # 获取客户端接口与地址 client_socket, client_addr = server_socket.accept() # 若接口不为空 if client_socket: # 则将该连接加入到client_list中 client_list.append((client_socket, client_addr)) pyb.delay(10) # 初始化服务器 server_init() # 创建服务器处理线程并开启,线程id号为1 _thread.start_new_thread(deal_with, (1,)) # 创建客户端管理线程并开启,线程id号为2 _thread.start_new_thread(mana_socket, (2,))
附录1:
1、打开设置,网络和Internet,更改适配器选项,以太网,属性; 2、Internet协议版本4,选择使用下面的IP地址,网络配置信息如下图所示:
附录2:
1、TCP&UDP测试工具安装 双击TCPUDPDebug102_Setup.exe,点击下一步,在这里安装路径我们默认即可,点击安装,然后点击Finish完成安装。
2、TCP&UDP测试工具的使用
(1)打开测试工具,界面如下,点击创建连接,在弹出的设置窗口中,我们设置类型为TCP,目标服务器ip为192.168.0.2,端口号为60001,点击创建。
(2)点击连接按钮,连接到TCP服务器,在发送区编辑消息,点击发送,即可接收到TCP服务器返回的消息。
(3)iCore3客户端上电启动后主动连接服务器,即可进行通信。(若连接不上请检查网线连接,禁用无线网卡,关闭电脑防火墙)