---
name: fix-yoxo1007-receive-data
description: 修复YOXO1007以太网模块接收数据解析错误问题
source: auto-skill
extracted_at: '2026-06-17T04:30:00.000Z'
---

# 修复 YOXO1007 以太网模块接收数据解析错误

## 问题现象

服务器已收到网关注册请求并响应，但网关端无法接收/解析服务器返回的数据。

## 根本原因

YOXO1007 模块在**透传模式**下发送的是**原始二进制数据**，不是 ASCII 格式的 hex 字符串。

原代码错误地使用了 `AsciiToHex` 函数进行格式转换：

```c
// 错误代码 - 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 接收线程的数据处理逻辑，直接传递原始二进制数据：

```c
// 修改后的正确代码
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...），与数据透传是不同层面
- 模块配置保存后重启会自动进入之前保存的工作模式，无需额外进入透传模式的命令