赞
踩
在互联网的世界中,实时、高效的数据交换是至关重要的。WebSocket协议,作为一种强大的通信工具,正是为满足这一需求而生。与传统的HTTP协议不同,WebSocket协议允许服务器主动向客户端发送数据,而不需要客户端发起请求。这种特性使得WebSocket协议在需要实时数据交换的场景中,如在线聊天、多人在线游戏等,具有显著的优势。
W5100S/W5500是一款集成全硬件 TCP/IP 协议栈的嵌入式以太网控制器,同时也是一颗工业级以太网控制芯片。本教程将介绍W5100S/W5500以太网Web socket应用的基本原理、使用步骤、应用实例以及注意事项,帮助读者更好地掌握这一技术。
WebSocket是一种网络协议,允许服务器和客户端之间进行双向通信。与HTTP使用请求和响应模式不同,WebSocket对等方可以在任何时候向任一方向发送消息。WebSocket通常用于聊天应用和其他需要服务器和客户端之间持续通信的应用。
MODBUS TCP协议的优点包括:
WebSocket协议的应用场景广泛,以下是一些主要的领域:
使用WebSocket搭建的在线网页聊天示例:
WIZnet 主流硬件协议栈以太网芯片参数对比
Model | Embedded Core | Host I/F | TX/RX Buffer | HW Socket | Network Performance |
---|---|---|---|---|---|
W5100S | TCP/IPv4, MAC & PHY | 8bit BUS, SPI | 16KB | 4 | Max.25Mbps |
W6100 | TCP/IPv4/IPv6, MAC & PHY | 8bit BUS, Fast SPI | 32KB | 8 | Max.25Mbps |
W5500 | TCP/IPv4, MAC & PHY | Fast SPI | 32KB | 8 | Max 15Mbps |
程序的运行框图如下所示:
软件
硬件
通过数据线连接PC的USB口(主要用于烧录程序,也可以虚拟出串口使用)
通过TTL串口转USB,连接UART0 的默认引脚:
使用模块连接RP2040 进行接线时
通过PC和设备都通过网线连接路由器LAN口
我们使用的是WIZnet官方的ioLibrary_Driver库。该库支持的协议丰富,操作简单,芯片在硬件上集成了TCP/IP协议栈,该库又封装好了TCP/IP层之上的协议,我们只需简单调用相应函数即可完成协议的应用。
第一步:在websocket_server.c文件中引用对应的库文件。
第二步:宏定义常量和定义全局变量。
第三步:定义四个函数,包括一个1秒定时器回调函数(用于处理DHCP超时处理),一个设置网络地址函数,一个串口初始化函数以及一个串口接收回调函数。
第四步:主函数首先是对串口和SPI进行初始化以及链路检测。然后是设置W5100S的网络地址,首先使用DHCP的方式进行获取,失败后使用预设的静态IP地址。然后则是将网页信息注册到HTTP服务器上,最后则是在主循环中跑httpServer的程序和websocketServer程序。
主函数程序如下:
int main() { int i; struct repeating_timer timer; // Define the timer structure wiz_NetInfo get_info; /* MCU init */ stdio_init_all(); // Initialize the main control peripheral wizchip_initialize(); // Initialize the chip interface wizchip_setnetinfo(&net_info); // Configure once first UART0_Init(); // uart0 init /*dhcp init*/ DHCP_init(SOCK_DHCP, ethernet_buf); // DHCP initialization add_repeating_timer_ms(1000, repeating_timer_callback, NULL, &timer); // Add DHCP 1s Tick Timer handler printf("wiznet chip websocket server example.\r\n"); network_init(&net_info); // Configuring Network Information print_network_information(&get_info); // Read back the configuration information and print it httpServer_init(http_tx_ethernet_buf, http_rx_ethernet_buf, MAX_HTTPSOCK, socknumlist); // HTTP Server initialization reg_httpServer_webContent((uint8_t *)"index.html", (uint8_t *)INDEX_HTML); // netinfo.html : Network information example page while (true) { for (i = 0; i < MAX_HTTPSOCK; i++) { httpServer_run(i); } do_websocket_server(SOCK_WEBSOCKET); } }
(1)在library/ioLibrary_Driver/Ethernet/下找到wizchip_conf.h这个头文件,将_WIZCHIP_ 宏定义修改为W5500。
(2)在library下找到CMakeLists.txt文件,将COMPILE_SEL设置为ON即可,OFF为W5100S,ON为W5500。
想了解更多,评论留言哦!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。