wangfq 11f1c4f55b fix: device_status_monitor 增加 dnt_info 全表扫描,修正状态不一致
- 新增 get_all_device_serials() 查询 dnt_info 全表
- device_status_monitor 改为三阶段:
  Phase 1: 遍历 _registry 活跃设备
  Phase 2: 扫描 dnt_info 全表,修正 DB 状态与交互实际不符的情况:
    - state=1(在线) 但 >60s 无交互 → 更新为离线
    - state=0(离线) 但有交互 → 根据交互模式更新
  Phase 3: 预留清理位
- 提取 _apply_state_change() 避免重复代码
- Count_Off 登录时主动设 _device_status[serial]=1,
  防止刚登录只有 1 条交互记录时被误判为 通信不良
2026-06-10 09:36:01 +08:00

EDC 服务 (Edge Data Center)

测试工装边缘数据中心 — Python 实现,基于 uvloop 的高性能异步网络服务。

系统架构

 TCP/UDP         ┌─────────────────────────────────────┐
◄─────────────►  │              EDC 服务                │
                 │                                     │
 UDP :5500  ───► │  设备发现 / 心跳 / 信息查询           │
 UDP :5505  ───► │  消息监听                            │
 TCP :5550  ───► │  时间同步 / 数据上报 / 串口透传       │
                 │                                     │
                 │  后台解析服务 ──► DG430 协议 → MySQL  │
                 └─────────────────────────────────────┘

快速开始

# 创建虚拟环境
python3 -m venv .venv && source .venv/bin/activate

# 安装依赖
pip install -r requirements.txt

# 设置环境变量
export EDC_MYSQL_HOST=127.0.0.1
export EDC_MYSQL_USER=root
export EDC_MYSQL_PASSWORD=your_password
export EDC_MYSQL_DB=edc

# 确保数据库已创建
mysql -u root -e "CREATE DATABASE IF NOT EXISTS edc CHARACTER SET utf8mb4"

# 启动
python run.py

配置

所有配置通过环境变量,见 src/config.py

变量 默认值 说明
EDC_UDP_PORT 5500 UDP 设备发现端口
EDC_UDP_MSG_PORT 5505 UDP 消息监听端口
EDC_TCP_PORT 5550 TCP 数据上报端口
EDC_BIND_HOST 0.0.0.0 绑定地址
EDC_MYSQL_HOST 127.0.0.1 MySQL 地址
EDC_MYSQL_PORT 3306 MySQL 端口
EDC_MYSQL_USER root 数据库用户
EDC_MYSQL_PASSWORD 数据库密码
EDC_MYSQL_DB edc 数据库名
EDC_PARSE_POLL_INTERVAL 0.5 解析轮询间隔(秒)
EDC_LOG_LEVEL INFO 日志级别

协议参考

目录结构

edc_server/
├── run.py                 # 入口
├── requirements.txt       # uvloop, aiomysql
└── src/
    ├── config.py          # 环境变量配置
    ├── models.py          # MySQL 连接池 + 表结构 + CRUD
    ├── protocol.py        # PGLC JSON 协议解析
    ├── dg430.py           # DG430 二进制协议解析
    ├── handlers.py        # 业务处理 + 后台解析服务
    └── server.py          # UDP/TCP 异步服务主程序
Description
EDC 边缘数据中心 — 车检器测试工装后端服务 (Python/uvloop)
Readme 301 KiB
Languages
Python 100%