Files
LaserTracing_Debug/.qwen/skills/auto-skill-fix-yoxo1007-receive-data/SKILL.md
T

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...),与数据透传是不同层面
  • 模块配置保存后重启会自动进入之前保存的工作模式,无需额外进入透传模式的命令