目录
本文通过wireshark抓包分析了官方配套CH9126搜索上位机软件的底层通信,简单分析了搜索,恢复出厂,配置,获取配置这四个操作。
(1)CH9126简介
CH9126 基于 SNTP 协议的网络授时芯片。主要解决单片机等嵌入式设备时间同步问题。CH9126 具有两种工作模式:①作为 SNTP 客户端,向 SNTP 服务器索取时间,并通过串口输出时间;②作为SNTP 时间服务器,以脉冲和串口数据作为基准时间,对 SNTP 客户端进行网络授时。 芯片内部还有一个独立的数据透传通道,可以实现以太网与串口数据透传。
(2)应用
(3)特点
- 内部自带以太网介质传输层(MAC)和物理层(PHY)。
- 支持 10/100M,全双工/半双工自适应,兼容 802.3 协议。
- 与 802.3x 全双工流控和半双工背压流控完全兼容。
- 支持 MDI/MDIX 线路自动转换。
- 支持 SNTP 服务器和 SNTP 客户端模式。
- 可以通过网络和串口配置芯片参数。
- 串口支持 5、6、7 或者 8 个数据位以及 1 或者 2 个停止位。
- 支持奇、偶、无校验、空白 0、标志 1 等校验方式。
- 波特率支持 300-921600bps。
- 授时精度为 10ms。
- 支持一个独立的数据通道,提供网络转串口的数据透传功能。
1 #ifndef __SOCKET_H__ 2 #define __SOCKET_H__ 3 4 #include "RingMen.H" 5 6 #define CFGAdd 0x1000 //参数存放地址4k 7 8 #define COMMFLAG "CH9126_MODULE_V1.03" //"CH9126_UPDATA" 9 #define MODULENAME "123456789" 10 11 #define SNTP_PORT 123 12 13 #define NetConfigPort 50000 14 /*=============================================================================*/ 15 /*可设置的socket个数*/ 16 /*-----------------------------------------------------------------------------*/ 17 #define SocketNum 2 18 /*=============================================================================*/ 19 /*通信命令码*/ 20 /*-----------------------------------------------------------------------------*/ 21 #define NET_MODULE_CMD_SET 0X01 //配置网络中的模块 22 #define NET_MODULE_CMD_GET 0X02 //获取某个模块的配置 23 #define NET_MODULE_CMD_RESET 0x03 //复位模块 24 #define NET_MODULE_CMD_SEARCH 0X04 //搜索网络中的模块 25 /*=============================================================================*/ 26 /*应答命令码*/ 27 /*-----------------------------------------------------------------------------*/ 28 #define NET_MODULE_ACK_SET 0X81 //回应配置命令码 29 #define NET_MODULE_ACK_GET 0X82 //回应获取命令码 30 #define NET_MODULE_ACK_RESEST 0X83 //回应复位命令码 31 #define NET_MODULE_ACK_SEARCH 0X84 //回应所搜命令码 32 /*=============================================================================*/ 33 /*开关*/ 34 /*-----------------------------------------------------------------------------*/ 35 #define Enable 1 36 #define Disable 0 37 /*=============================================================================*/ 38 /*PHY_Type*/ 39 /*-----------------------------------------------------------------------------*/ 40 #define HALF_10M 1 41 #define FULL_10M 2 42 #define HALF_100M 3 43 #define FULL_100M 4 44 /*=============================================================================*/ 45 /*CurrNetSta*/ 46 /*-----------------------------------------------------------------------------*/ 47 #define NET_Disconnect 0 48 #define NET_Connect 1 49 /*=============================================================================*/ 50 /*CommFormat*/ 51 /*-----------------------------------------------------------------------------*/ 52 #define Format_ASC 1 53 #define Format_HEX 2 54 /*=============================================================================*/ 55 /*TTL*/ 56 /*-----------------------------------------------------------------------------*/ 57 #define TTL_Num 128 58 59 //网络配置 60 #pragma pack(1) 61 typedef struct _NET_CONFIG 62 { 63 UINT8 MACAddr[6]; 64 UINT8 IP[4]; 65 UINT8 Mask[4]; 66 UINT8 Gateway[4]; 67 UINT8 DNS1[4]; 68 UINT8 DNS2[4]; 69 UINT8 PHY_Type; 70 //UINT8 CurrNetSta; //存放当前的网络状态 71 UINT8 DHCPEn; 72 //UINT8 PulseOutEn; //脉冲输出使能 73 UINT8 TTLNum; 74 UINT16 NetCfgPort; 75 UINT32 CtrlPara; //控制参数,byte0控制脉冲输出 76 UINT8 KeepAliveEn; 77 UINT32 KeepAliveIdleTime; //空闲时间 78 UINT32 KeepAliveIntervalTime; //间隔时间 79 UINT32 KeepAliveOUTCount; //超时次数 80 81 }NET_CONFIG,*pnet_cfg; 82 /*=============================================================================*/ 83 /* 串口参数 数据位 */ 84 /*-----------------------------------------------------------------------------*/ 85 #define UART_DATA_5BIT 5 /* 数据位5位,RT8711不支持 */ 86 #define UART_DATA_6BIT 6 /* 数据位6位,RT8711不支持 */ 87 #define UART_DATA_7BIT 7 /* 数据位7位 */ 88 #define UART_DATA_8BIT 8 /* 数据位8位 */ 89 /*=============================================================================*/ 90 /* 串口参数 校验 */ 91 /*-----------------------------------------------------------------------------*/ 92 #define UART_CHECK_NONE 0 /* 无校验 */ 93 #define UART_CHECK_ODD 1 /* 奇校验 */ 94 #define UART_CHECK_EVEN 2 /* 偶校验 */ 95 #define UART_CHECK_MARK 3 /* Mark校验,校验始终为1 */ 96 #define UART_CHECK_SPACE 4 /* Space校验,校验始终为0 */ 97 /*=============================================================================*/ 98 /* 串口参数 停止位 */ 99 /*-----------------------------------------------------------------------------*/ 100 #define UART_STOP_1BIT 1 /* 1个停止位 */ 101 #define UART_STOP_2BIT 2 /* 2个停止位 */ 102 /*=============================================================================*/ 103 /* 串口数据 通信格式 */ 104 /*-----------------------------------------------------------------------------*/ 105 #define UART_HEX 0 /* HEX格式 */ 106 #define UART_ASCII 1 /* ASCII格式 */ 107 /*=============================================================================*/ 108 //串口设置 109 #pragma pack(1) 110 typedef struct _UART_CONFIG 111 { 112 UINT32 UARTBps; 113 UINT8 DataBit; 114 UINT8 StopBit; 115 UINT8 VerifyBit; 116 UINT16 RXPacket; //打包长度 117 UINT16 RXTimeOut; //超时 118 UINT8 CommFormat; 119 }UART_CONFIG,*puart_cfg; 120 /*=============================================================================*/ 121 /*socket type*/ 122 /*-----------------------------------------------------------------------------*/ 123 #define TCP_Server 1 //不显示该选项,放在第一位界面上好处理 124 #define TCP_Client 2 125 #define UDP_Server 3 126 #define UDP_Client 4 127 #define SNTP_Server 5 128 #define SNTP_Client 6 129 /*=============================================================================*/ 130 /* socket TCP sta*/ 131 /*-----------------------------------------------------------------------------*/ 132 #define TCP_Disconnect 0 133 #define TCP_Connecting 1 134 #define TCP_Connect 2 135 /*=============================================================================*/ 136 /*PHYOFFDealType*/ 137 /*-----------------------------------------------------------------------------*/ 138 #define KeepSocket 0 //保存连接 139 #define DiscardSocket 1 //丢弃连接 140 /*=============================================================================*/ 141 /*OtherChannDeal*/ 142 /*-----------------------------------------------------------------------------*/ 143 #define StoreAllData 0 //全部保存(1K满) 144 #define StoreLastData 1 //保存上一包 145 #define StoreNoData 2 //不保存 146 147 //socket配置 148 #pragma pack(1) 149 typedef struct _SOCKET_CONFIG 150 { 151 UINT8 EnableF; // 152 UINT8 Type; //类型 153 UINT8 PHYOFFDealType; //only tcp:网络断开的处理方式,1.丢弃连接 2.保持连接,默认:DiscardSocket 154 UINT8 OtherChannDeal; //tcp&udp其他网络连接数据处理,1.全部保存(1k满),2.保存上一包数据,3.不保存 ,默认:StoreNoData 155 UINT8 DesIP[4]; 156 UINT16 DesPort; //SNTP模式下存储轮询间隔 157 UINT8 PortRandomEn; 158 UINT16 SourPort; 159 }SOCKET_CONFIG,*psocket_cfg; 160 161 //通讯参数整合 162 #pragma pack(1) 163 typedef struct _PARA_CFG_MAN 164 { 165 UINT8 CommFlag[64]; //通讯、存储标志 166 UINT8 VerNum[4]; //增加一个版本信息 格式:v102(asc) = v1.02 167 UINT8 ModuleName[64]; //模块名称 168 UINT8 ModuleID[8]; //模块的ID 169 UINT8 cmd; //传输命令码 170 UINT8 mod_mac[6]; //模块的MAC 171 UINT8 cfg_mac[6]; //PC端的MAC 172 UART_CONFIG UARTCfg; //串口配置 173 NET_CONFIG NetCfg; //网络参数配置 174 SOCKET_CONFIG SocketConfig[SocketNum]; //配置 175 UINT8 Res[128]; //保留字 176 }PARA_CFG_MAN, *pnet_comm; 177 178 /**************************************************************/ 179 /*============================================================*/ 180 181 //网络 182 typedef struct _NET_COMM 183 { 184 UINT8 CurrNetSta; //存放当前的网络状态 185 }NET_COMM; 186 187 //传输 188 typedef struct _SOCKET_TRAN_MANAGE 189 { 190 UINT8 SocketID; //该Socket获取到的ID号 191 UINT8 TCPSta; //TCP状态 192 UINT32 TCPTimeCount; //TCP网络状态计时,初始化的时候赋值以便第一次直接连接 193 UINT8 *P_SocketBuf; //库初始化的缓存地址 194 UINT8 *SendMem; //发送缓存 195 UINT8 *RecMem; //接收缓存 196 UINT8 *TempMen; //暂存缓存 197 RING_MEMORY *P_RingMen_Rec; //接收环形缓存 198 RING_MEMORY *P_RingMen_Tran; //发送环形缓存 199 UINT16 RecLen; 200 UINT16 SendLen; 201 //UDP服务器时接收的客户端 202 UINT8 UDPClientIP[4]; 203 UINT16 UDPClientPort; 204 }SOCKET_TRAN_MANAGE; 205 206 //通道管理 207 typedef struct _CHANNEL_MANAGE 208 { 209 UINT8 CurrChannel; //当前通道 = Socket号 210 }CHANNEL_MANAGE; 211 212 //SNTP一些配置管理 213 typedef struct _SNTP_MANAGE 214 { 215 UINT8 SNTPPulseOutEn; //脉冲输出 216 UINT8 SNTPPulseInEn; //脉冲输入,有服务器则该标志置位 217 UINT8 SNTPServerEn; //有服务器则该标志置位 218 UINT8 SNTPClientEn; //有客户端则该标志置位 219 UINT8 PulseStaFlag; //脉冲的一些状态标志 220 UINT32 PulseOUTTimCount; //用于脉冲检测计数 221 UINT32 PulseTimCount; //用于脉冲检测计数 222 }SNTP_MANAGE; 223 224 //通讯参数整合 225 typedef struct _PARA_COMM_MAN 226 { 227 NET_COMM NetCommPara; 228 SOCKET_TRAN_MANAGE SocketTranPara[SocketNum]; 229 CHANNEL_MANAGE ChannelPara; 230 SNTP_MANAGE SNTPCommPara; 231 }PARA_COMM_MAN; 232 233 234 //extern PARA_MAN ParaManage; 235 extern PARA_CFG_MAN CfgPara; 236 extern PARA_COMM_MAN CommPara; 237 238 void InitPara(void); 239 240 //void SocketUDPServerRecDeal(SOCK_INF *socinf,UINT8 *buf,UINT32 len); 241 //void SocketSNTPServerRecDeal(SOCK_INF *socinf,UINT8 *buf,UINT32 len); 242 243 #endif
(1)通讯方式
CH9126 通过 UDP 广播方式进行网络配置功能。
CH9126 广播本地接收端口:50000,软件上位机广播本地接收端口:60000。
(2)通讯过程
CH9126上位机配置功能主要包括:①搜索,②获取配置,③配置网络参数,④恢复出厂设置。
下面结合通讯过程中的数据包解析设置流程。(通过wireshark抓取到数据包来对上位机软件进行协议解析)
-->PC下发的搜索包:
43 48 39 31 32 36 5f 4d 4f 44 55 4c 45 5f 56 31
2e 30 33 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //64字节通讯、存储标志
00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
04 //通信命令码:搜索网络中的模块
ff ff ff ff ff ff
00 e0 4c 36 35 5a //pc端MAC
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00
<--9121回复的应答包:
43 48 39 31 32 36 5f 4d 4f 44 55 4c 45 5f 56 31
2e 30 33 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //64字节通讯、存储标志
76 31 32 31 //版本信息 格式:v121(asc) = v1.21
43 48 39 31 32 36 00 44 55 4c 45 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //模块名称,64字节
2f 8d 58 87 78 cc 66 d7 //模块id,8字节
84 //通信命令码:回应所搜命令码
84 c2 e4 e9 34 a2 //模块MAC
00 e0 4c 36 35 5a //pc端MAC
/****************************从这往下是串口配置*************************************/
80 25 00 00 //波特率(9600)
08 //数据位
01 //停止位
00 //校验位
00 04 //打包长度(1024)
00 00 //超时
00 //通信数据格式(0为hex格式,1为ASCII格式)
/******************************从这往下是网络配置*********************************/
84 c2 e4 e9 34 a2 //模块MAC
c0 a8 01 c8 //模块自身IP
ff ff ff 00 //模块掩码
c0 a8 01 01 //模块网关
00 00 00 00 //DNS1
00 00 00 00 //DNS2
04 //当前PHY_Type(1为10M半双工,2为10兆全双工,3为百兆半双工,4为百兆全双工)
00 //DHCP使能(0为不开启,1为开启)
80 //TTL值,默认128
50 c3 //NetConfigPort,默认50000
01 00 00 00 //控制参数,byte0控制脉冲输出
01 //KeepAliveEn(1为开启keepalive)
20 4e 00 00 //空闲时间 20000ms
98 3a 00 00 //间隔时间 15000ms
05 00 00 00 //超时次数 5次
/***************************从这往下是socket配置(第一个是SNTP通道,第二个是数据通道)***************************/
01 //使能(即启用SNTP通道)
06 //模式类型(1为tcp_server;2为tcp_client;3为udp_server;4为udp_client;5为sntp_server;6为sntp_client)
01 //(only tcp)网络断开的处理方式:00表示保存连接,01表示丢弃连接(默认丢弃)
02 //tcp&udp其他网络连接数据处理:00为全部保存(1k满),01为保存上一包数据,02为不保存(默认不保存)
c0 a8 01 78 //目的ip
0a 00 //SNTP模式下存储轮询间隔
00 //端口是否随机
7b 00 //SNTP_PORT,默认123
01 //使能(即启用数据通道)
02 //模式类型(1为tcp_server;2为tcp_client;3为udp_server;4为udp_client;5为sntp_server;6为sntp_client)
01 //(only tcp)网络断开的处理方式:00表示保存连接,01表示丢弃连接(默认丢弃)
02 //tcp&udp其他网络连接数据处理:00为全部保存(1k满),01为保存上一包数据,02为不保存(默认不保存)
c0 a8 01 96 //目的ip
d0 07 //目的端口
00 //本地端口是否随机(0为不随机,1为随机)
d0 07 //本地端口
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //128个保留字
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-->PC下发的获取配置请求包
43 48 39 31 32 36 5f 4d 4f 44 55 4c 45 5f 56 31
2e 30 33 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //64字节通讯、存储标志
00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
03 //通信命令码:复位模块
84 c2 e4 e9 34 a2 //9126MAC
00 e0 4c 36 35 5a //pc端MAC
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00
<--9121的应答包:(从下面的数据包可以得到CH9126各网络参数的默认值)
43 48 39 31 32 36 5f 4d 4f 44 55 4c 45 5f 56 31
2e 30 33 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //64字节通讯、存储标志
76 31 32 31 //版本信息 格式:v121(asc) = v1.21
53 4e 54 50 5f 4d 4f 44 55 4c 45 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //模块名称,64字节
2f 8d 58 87 78 cc 66 d7 //模块id,8字节
83 //通信命令码:回应复位命令码
84 c2 e4 e9 34 a2 //模块MAC
00 e0 4c 36 35 5a //pc端MAC
/****************************从这往下是串口配置*************************************/
80 25 00 00 //波特率(9600)
08 //数据位
01 //停止位
00 //校验位
00 02 //打包长度(512)
0a 00 //超时(10)
00 //通信数据格式(0为hex格式,1为ASCII格式)
/******************************从这往下是网络配置*********************************/
84 c2 e4 e9 34 a2 //模块MAC
c0 a8 01 c8 //模块自身IP
ff ff ff 00 //模块掩码
c0 a8 01 01 //模块网关
00 00 00 00 //DNS1
00 00 00 00 //DNS2
04 //当前PHY_Type(1为10M半双工,2为10兆全双工,3为百兆半双工,4为百兆全双工)
00 //DHCP使能(0为不开启,1为开启)
80 //TTL值,默认128
50 c3 //NetConfigPort,默认50000
00 00 00 00 //byte0为脉冲输出使能位
01 //KeepAliveEn(1为开启keepalive)
20 4e 00 00 //空闲时间 20000ms
98 3a 00 00 //间隔时间 15000ms
05 00 00 00 //超时次数 5次
/***************************从这往下是socket配置(第一个是SNTP通道,第二个是数据通道)***************************/
01 //使能
06 //模式类型(1为tcp_server;2为tcp_client;3为udp_server;4为udp_client;5为sntp_server;6为sntp_client)
01 //(only tcp)网络断开的处理方式:00表示保存连接,01表示丢弃连接(默认丢弃)
02 //tcp&udp其他网络连接数据处理:00为全部保存(1k满),01为保存上一包数据,02为不保存(默认不保存)
c0 a8 01 64 //目的ip
70 17 //SNTP模式下存储轮询间隔(默认6000)
00 //端口是否随机
7b 00 //SNTP_PORT,默认123
00 //默认禁用数据通道
02 //模式类型(1为tcp_server;2为tcp_client;3为udp_server;4为udp_client;5为sntp_server;6为sntp_client)
01 //(only tcp)网络断开的处理方式:00表示保存连接,01表示丢弃连接(默认丢弃)
02 //tcp&udp其他网络连接数据处理:00为全部保存(1k满),01为保存上一包数据,02为不保存(默认不保存)
c0 a8 01 64 //目的ip
88 13 //目的端口(默认5000)
00 //本地端口是否随机(0为不随机,1为随机)
d1 07 //本地端口(2001)
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //128个保留字
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-->PC下发的获取配置请求包
43 48 39 31 32 36 5f 4d 4f 44 55 4c 45 5f 56 31
2e 30 33 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //64字节通讯、存储标志
00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
02 //通讯命令码:获取某个模块的配置
84 c2 e4 e9 34 a2 //模块MAC
00 e0 4c 36 35 5a //pc端MAC
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00
<--9121的应答包:(因为本文是在恢复出厂设置后再去获取的配置参数,所以下面的数据和出厂数据一致)
43 48 39 31 32 36 5f 4d 4f 44 55 4c 45 5f 56 31
2e 30 33 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //64字节通讯、存储标志
76 31 32 31 //版本信息 格式:v121(asc) = v1.21
53 4e 54 50 5f 4d 4f 44 55 4c 45 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //模块名称,64字节
2f 8d 58 87 78 cc 66 d7 //模块id,8字节
82 //通信命令码:回应获取命令码
84 c2 e4 e9 34 a2 //模块MAC
00 e0 4c 36 35 5a //pc端MAC
/****************************从这往下是串口配置*************************************/
80 25 00 00 //波特率(9600)
08 //数据位
01 //停止位
00 //校验位
00 02 //打包长度(512)
0a 00 //超时(10)
00 //通信数据格式(0为hex格式,1为ASCII格式)
/******************************从这往下是网络配置*********************************/
84 c2 e4 e9 34 a2 //模块MAC
c0 a8 01 c8 //模块自身IP
ff ff ff 00 //模块掩码
c0 a8 01 01 //模块网关
00 00 00 00 //DNS1
00 00 00 00 //DNS2
04 //当前PHY_Type(1为10M半双工,2为10兆全双工,3为百兆半双工,4为百兆全双工)
00 //DHCP使能(0为不开启,1为开启)
80 //TTL值,默认128
50 c3 //NetConfigPort,默认50000
00 00 00 00 //byte0为脉冲输出使能位
01 //KeepAliveEn(1为开启keepalive)
20 4e 00 00 //空闲时间 20000ms
98 3a 00 00 //间隔时间 15000ms
05 00 00 00 //超时次数 5次
/***************************从这往下是socket配置(第一个是SNTP通道,第二个是数据通道)***************************/
01 //使能
06 //模式类型(1为tcp_server;2为tcp_client;3为udp_server;4为udp_client;5为sntp_server;6为sntp_client)
01 //(only tcp)网络断开的处理方式:00表示保存连接,01表示丢弃连接(默认丢弃)
02 //tcp&udp其他网络连接数据处理:00为全部保存(1k满),01为保存上一包数据,02为不保存(默认不保存)
c0 a8 01 64 //目的ip
70 17 //SNTP模式下存储轮询间隔(默认6000)
00 //端口是否随机
7b 00 //SNTP_PORT,默认123
00 //默认禁用数据通道
02 //模式类型(1为tcp_server;2为tcp_client;3为udp_server;4为udp_client;5为sntp_server;6为sntp_client)
01 //(only tcp)网络断开的处理方式:00表示保存连接,01表示丢弃连接(默认丢弃)
02 //tcp&udp其他网络连接数据处理:00为全部保存(1k满),01为保存上一包数据,02为不保存(默认不保存)
c0 a8 01 64 //目的ip
88 13 //目的端口(默认5000)
00 //本地端口是否随机(0为不随机,1为随机)
d1 07 //本地端口(2001)
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //128个保留字
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-->PC下发的配置包
43 48 39 31 32 36 5f 4d 4f 44 55 4c 45 5f 56 31
2e 30 33 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //64字节通讯、存储标志
76 31 32 31 //版本信息 格式:v121(asc) = v1.21
53 4e 54 50 5f 4d 4f 44 55 4c 45 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //模块名称,64字节
2f 8d 58 87 78 cc 66 d7 //模块id,8字节
01 //通信命令码:配置网络中的模块
84 c2 e4 e9 34 a2 //模块MAC
00 e0 4c 36 35 5a //pc端MAC
/****************************从这往下是串口配置*************************************/
80 25 00 00 //波特率(9600)
08 //数据位
01 //停止位
00 //校验位
00 04 //打包长度
0a 00 //超时
00 //通信数据格式(0为hex格式,1为ASCII格式)
/******************************从这往下是网络配置*********************************/
84 c2 e4 e9 34 a2 //模块MAC
c0 a8 01 c8 //模块自身IP
ff ff ff 00 //模块掩码
c0 a8 01 01 //模块网关
00 00 00 00 //DNS1
00 00 00 00 //DNS2
04 //当前PHY_Type(1为10M半双工,2为10兆全双工,3为百兆半双工,4为百兆全双工)
00 //DHCP使能(0为不开启,1为开启)
80 //TTL值,默认128
50 c3 //NetConfigPort,默认50000
00 00 00 00 //byte0为脉冲输出使能位
01 //KeepAliveEn(1为开启keepalive)
20 4e 00 00 //空闲时间 20000ms
98 3a 00 00 //间隔时间 15000ms
05 00 00 00 //超时次数 5次
/***************************从这往下是socket配置(第一个是SNTP通道,第二个是数据通道)***************************/
01 //使能
06 //模式类型(1为tcp_server;2为tcp_client;3为udp_server;4为udp_client;5为sntp_server;6为sntp_client)
01 //(only tcp)网络断开的处理方式:00表示保存连接,01表示丢弃连接(默认丢弃)
02 //tcp&udp其他网络连接数据处理:00为全部保存(1k满),01为保存上一包数据,02为不保存(默认不保存)
c0 a8 01 78 //目的ip
0a 00 //SNTP模式下存储轮询间隔(默认6000)
00 //端口是否随机
7b 00 //SNTP_PORT,默认123
01 //使能数据通道
02 //模式类型(1为tcp_server;2为tcp_client;3为udp_server;4为udp_client;5为sntp_server;6为sntp_client)
01 //(only tcp)网络断开的处理方式:00表示保存连接,01表示丢弃连接(默认丢弃)
02 //tcp&udp其他网络连接数据处理:00为全部保存(1k满),01为保存上一包数据,02为不保存(默认不保存)
c0 a8 01 96 //目的ip
d0 07 //目的端口
00 //本地端口是否随机(0为不随机,1为随机)
d0 07 //本地端口
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //128个保留字
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
<--9121回复的应答包
43 48 39 31 32 36 5f 4d 4f 44 55 4c 45 5f 56 31
2e 30 33 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //64字节通讯、存储标志
76 31 32 31 //版本信息 格式:v121(asc) = v1.21
53 4e 54 50 5f 4d 4f 44 55 4c 45 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //模块名称,64字节
2f 8d 58 87 78 cc 66 d7 //模块id,8字节
81 //通信命令码:回复配置命令
84 c2 e4 e9 34 a2 //模块MAC
00 e0 4c 36 35 5a //pc端MAC
/****************************从这往下是串口配置*************************************/
80 25 00 00 //波特率(9600)
08 //数据位
01 //停止位
00 //校验位
00 04 //打包长度
00 00 //超时
00 //通信数据格式(0为hex格式,1为ASCII格式)
/******************************从这往下是网络配置*********************************/
84 c2 e4 e9 34 a2 //模块MAC
c0 a8 01 c8 //模块自身IP
ff ff ff 00 //模块掩码
c0 a8 01 01 //模块网关
00 00 00 00 //DNS1
00 00 00 00 //DNS2
04 //当前PHY_Type(1为10M半双工,2为10兆全双工,3为百兆半双工,4为百兆全双工)
00 //DHCP使能(0为不开启,1为开启)
80 //TTL值,默认128
50 c3 //NetConfigPort,默认50000
00 00 00 00 //byte0为脉冲输出使能位
01 //KeepAliveEn(1为开启keepalive)
20 4e 00 00 //空闲时间 20000ms
98 3a 00 00 //间隔时间 15000ms
05 00 00 00 //超时次数 5次
/***************************从这往下是socket配置(第一个是SNTP通道,第二个是数据通道)***************************/
01 //使能
06 //模式类型(1为tcp_server;2为tcp_client;3为udp_server;4为udp_client;5为sntp_server;6为sntp_client)
01 //(only tcp)网络断开的处理方式:00表示保存连接,01表示丢弃连接(默认丢弃)
02 //tcp&udp其他网络连接数据处理:00为全部保存(1k满),01为保存上一包数据,02为不保存(默认不保存)
c0 a8 01 78 //目的ip
0a 00 //SNTP模式下存储轮询间隔(默认6000)
00 //端口是否随机
7b 00 //SNTP_PORT,默认123
01 //使能数据通道
02 //模式类型(1为tcp_server;2为tcp_client;3为udp_server;4为udp_client;5为sntp_server;6为sntp_client)
01 //(only tcp)网络断开的处理方式:00表示保存连接,01表示丢弃连接(默认丢弃)
02 //tcp&udp其他网络连接数据处理:00为全部保存(1k满),01为保存上一包数据,02为不保存(默认不保存)
c0 a8 01 96 //目的ip
d0 07 //目的端口
00 //本地端口是否随机(0为不随机,1为随机)
d0 07 //本地端口
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //128个保留字
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
上位机搜索软件及协议:https://files.cnblogs.com/files/blogs/808422/CH9126ConfigTool.zip?t=1709781664&download=true
CH9126技术文档:搜索 ch9126 - 南京沁恒微电子股份有限公司 (wch.cn)
标签:协议,00,01,UINT8,tcp,网口,模块,CH9126,define From: https://www.cnblogs.com/wchwchlq/p/18058274