2.0 KiB
2.0 KiB
name, description, source, extracted_at
| name | description | source | extracted_at |
|---|---|---|---|
| fix-yoxo1007-receive-data | 修复YOXO1007以太网模块接收数据解析错误问题 | auto-skill | 2026-06-17T04:30:00.000Z |
修复 YOXO1007 以太网模块接收数据解析错误
问题现象
服务器已收到网关注册请求并响应,但网关端无法接收/解析服务器返回的数据。
根本原因
YOXO1007 模块在透传模式下发送的是原始二进制数据,不是 ASCII 格式的 hex 字符串。
原代码错误地使用了 AsciiToHex 函数进行格式转换:
// 错误代码 - CATONE 模式使用的 ASCII 转换不适用于 ETH 透传模式
memset(HexData, 0x00, CatOneEthRxLen / 2);
uint8_t ret = AsciiToHex(RxBuffTemp, HexData, CatOneEthRxLen);
if(ret > 0)
GateWay->SvrRevCallBack(GateWay, HexData, ret);
这导致服务器返回的二进制数据被错误解析,回调函数无法正确处理。
修复方案
修改 CatOneTask.c 中 ETH 接收线程的数据处理逻辑,直接传递原始二进制数据:
// 修改后的正确代码
CAT1_DBG_LOG("Eth Rev: len=%d\r\n", CatOneEthRxLen);
/* YOXO1007模块在透传模式下发送原始二进制数据,直接传递 */
if(CatOneEthRxLen > 0)
GateWay->SvrRevCallBack(GateWay, (uint8_t *)CatOneEthRxBuff, CatOneEthRxLen);
修改位置
Project/GateWay/source/User/Src/CatOneTask.c 中的 CatOneRev_Thread_Entry 函数内的 ETH 分支。
关键区别
| 模式 | 数据格式 | 解析方式 |
|---|---|---|
| CAT1 (4G) | ASCII 字符串 (AT 命令/响应) | 需要 AsciiToHex 转换 |
| ETH (YOXO1007) | 原始二进制 (透传模式) | 直接传递,不转换 |
注意事项
- 此修改仅影响 ETH 通信模式,CAT1 模式的 ASCII 解析逻辑保持不变
- YOXO1007 模块配置参数使用二进制命令协议(识别流 ED F2 A3 56...),与数据透传是不同层面
- 模块配置保存后重启会自动进入之前保存的工作模式,无需额外进入透传模式的命令