专栏首页知识分享8-网络芯片CH395Q学习开发-模块使用Socket0作为TCP服务器和电脑上位机TCP客户端局域网通信(单连接和多连接)

8-网络芯片CH395Q学习开发-模块使用Socket0作为TCP服务器和电脑上位机TCP客户端局域网通信(单连接和多连接)

<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/LearnCH395Q" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

说明

这节演示一下模块使用Socket0作为TCP服务器和电脑上位机TCP客户端局域网通信.

关于单连接和多连接:

单连接:

模组使用其中一个Socket作为TCP通信,然后启用监听,该Socket就作为了TCP服务器.

但是只能一个客户端进行连接通信(所有版本都支持单连接)

多连接:(版本4及其以上版本支持)

模组使用其中一个Socket 作为TCP通信,然后启用监听,该监听只作为监听客户端连接,并不做通信,只做客户端的连接和断开监听

其它Socket作为通信.

提醒:无论是SPI,USART,并口,程序操作步骤都是一样的!

只是不同的接口发指令发给模块,然后用不同的接收接收数据而已.

测试本节代码(单连接)

由于单连接和多连接程序差异有点大,所以分开了.

1.用户可以使用杜邦线根据自己的情况设置和连接引脚

2,注意!

要想模块使用SPI通信,模块的TX引脚需要在模块重启之前设置为低电平.

上面的引脚分配把模块的TX引脚接到了单片机的PA3上,也就是串口2的RX上,如果用户使用了串口2,请注意!

3.把模块用网线和路由器或者交换机(和上位机在同一个局域网下)

注意,连接路由器或者交换机的时候是连接其LAN口.

4.程序里面默认监听的端口号为 8080

5.下载程序到单片机,查看串口打印的日志

下面打印了模块的IP地址.

我的模块当前TCP服务器的IP地址为: 192.168.0.104 端口号为: 8080

6.打开电脑端TCP调试助手,并配置连接

7.客户端发送数据给服务器

注:服务器默认把接收的数据返回给客户端

程序说明

1.模块连接路由器通信需要启用DHCP,并打印模块分得的地址信息

2.初始化配置和启动TCP监听(使用的Socket 0)

3.在中断检测事件里面处理Socket相关事件

4.注意事项

在单连接模式下客户端Socket连接,然后断开后需要重新配置并打开Socket监听.

所以在断开和超时事件里面清零监听状态,以让程序重新配置并打开Socket监听

其它注意的就是如果使用Socket4或5或6或7作为TCP服务器监听

记得重新配置下Socket内存分配(参考上一节)

测试本节代码(多连接,仅4,及其以上版本才支持)

1.提示

CH395 共有 8 个独立的 Socket 通道,TCP SERVER 多连接模式下,首先需要先创建

一个监听连接,然后按照与监听连接相同端口号创建数据连接,且数据连接至少创建一个,

具体数据连接创建个数根据 TCP SERVER 实际支持的客户端连接个数而定,

假定需要支持 N 个客户端,则需要创建的数据连接个数为 N。

比如创建一个 TCPSERVER,支持 4 个 TCP CLIENT,需要创建 1 个监听连接,4 个数据连接,

2,打开这节的程序

3,这节的程序配置Socket 0 作为了监听,然后其它Socket作为数据连接

用户根据自己的习惯设置服务器监听的端口号

4.把程序下载到单片机

正常运行会打印模块分配的IP地址信息

此时模块作为TCP服务器的IP地址为:192.168.0.104 端口号为:8080

5.打开电脑端TCP调试助手,并配置连接

6.按照同样的步骤还可以创建其它的6个客户端连接服务器

7,使用客户端发送数据给服务器

注:服务器默认把接收的数据返回给客户端

程序说明

1.版本大于等于0x44才允许运行; 执行多链接函数,配置Socket 缓存区域分配

2.启用DHCP,打印模块获取的IP地址信息

3,初始化配置和启动监听

4.在不同的Socket中断事件里面执行中断执行函数

5.提示

Socket0-7都是使用的void ch395_socket_tcp_client_interrupt(UINT8 sockindex)

但是因为Socket0作为监听,所以连接和断开都会进入的Socket0

Socket1-7作为数据通信,数据通信会进去他们的中断

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 5-网络芯片CH395Q学习开发-模块使用Socket0作为TCP客户端和电脑上位机TCP服务器局域网通信

    上面的引脚分配把模块的TX引脚接到了单片机的PA3上,也就是串口2的RX上,如果用户使用了串口2,请注意!

    杨奉武
  • 7-网络芯片CH395Q学习开发-模块使用Socket0-5作为6路TCP客户端和电脑上位机TCP服务器局域网通信(Socket缓存区配置)

    <p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/LearnCH395Q" frame...

    杨奉武
  • 6-网络芯片CH395Q学习开发-模块使用Socket0-3作为4路TCP客户端和电脑上位机TCP服务器局域网通信

    <p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/LearnCH395Q" frame...

    杨奉武
  • 1-网络芯片CH395Q学习开发-硬件测试使用说明

    CH395芯片自带10/100M 以太网介质传输层(MAC)和物理层(PHY),完全兼容IEEE802.3 10/100M 协议,

    杨奉武
  • 9-网络芯片CH395Q学习开发-模块使用Socket0作为UDP和电脑上位机UDP局域网通信

    <p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/LearnCH395Q" frame...

    杨奉武
  • 12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信

    <p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/LearnCH395Q" frame...

    杨奉武
  • 轻松使用8266

    今天算是做好了板子啦!做了一块直接用串口配置8266的板子,,也可以无线配置,配置完一次,上电自动运行...这篇文章也是写给一个朋友看的,朋友的项目做了很长时间...

    杨奉武
  • 网络编程基础-socket的简单实用

    如QQ、pycharm等,手机端的微信、王者荣耀等等 缺点:1.若用户想在同一台设备上使用多个软件,必须下载多个客户端。 2.软件的每一次更新,客户端也必须...

    GH
  • 【STM32H7】第13章 RL-TCPnet V7.X之创建多个TCP客户端

    最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=95243

    armfly

扫码关注云+社区

领取腾讯云代金券