Compare commits
4 Commits
c875cf383b
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3580f89552 | ||
|
|
25aafd57c8 | ||
|
|
cdddfac609 | ||
|
|
944870496a |
16
src/dg430.py
16
src/dg430.py
@@ -280,12 +280,16 @@ def decode_fault_info(fault: int) -> str:
|
|||||||
|
|
||||||
|
|
||||||
def decode_relay_info(relay: int) -> str:
|
def decode_relay_info(relay: int) -> str:
|
||||||
"""解码继电器 bitmask"""
|
"""解码继电器输出状态为可读字符串
|
||||||
items = []
|
|
||||||
for bit, desc in RELAY_BITS.items():
|
0xB2 继电器输出状态原始值 x 的解析规则:
|
||||||
if relay & (1 << bit):
|
- x & 0x01 为真 → "存在继电器有输出",否则 "存在继电器无输出"
|
||||||
items.append(desc)
|
- x & 0x02 为真 → "脉冲继电器有输出",否则 "脉冲继电器无输出"
|
||||||
return "; ".join(items) if items else "无输出"
|
汇总格式: "存在继电器有输出,脉冲继电器有输出"
|
||||||
|
"""
|
||||||
|
exist = "存在继电器有输出" if (relay & 0x01) else "存在继电器无输出"
|
||||||
|
pulse = "脉冲继电器有输出" if (relay & 0x02) else "脉冲继电器无输出"
|
||||||
|
return f"{exist},{pulse}"
|
||||||
|
|
||||||
|
|
||||||
# ─── 0x4A 获取设备版本号响应 ──────────────────────────────────────
|
# ─── 0x4A 获取设备版本号响应 ──────────────────────────────────────
|
||||||
|
|||||||
@@ -387,6 +387,7 @@ async def parse_loop():
|
|||||||
dpg430_addr=wave.addr,
|
dpg430_addr=wave.addr,
|
||||||
remain_count=wave.remain_count,
|
remain_count=wave.remain_count,
|
||||||
relay_code=wave.relay_out,
|
relay_code=wave.relay_out,
|
||||||
|
relay_out=relay_info,
|
||||||
work_freq=wave.work_freq,
|
work_freq=wave.work_freq,
|
||||||
curr_dist=wave.curr_dist,
|
curr_dist=wave.curr_dist,
|
||||||
speed=wave.speed,
|
speed=wave.speed,
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ async def _create_tables(pool: aiomysql.Pool):
|
|||||||
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
`username` VARCHAR(45) UNIQUE NOT NULL,
|
`username` VARCHAR(45) UNIQUE NOT NULL,
|
||||||
`password_hash` VARCHAR(256) NOT NULL,
|
`password_hash` VARCHAR(256) NOT NULL,
|
||||||
`role` VARCHAR(20) DEFAULT 'operator' COMMENT 'admin/operator',
|
`role` VARCHAR(20) DEFAULT 'operator' COMMENT 'admin/manager/operator/analyst',
|
||||||
`is_active` TINYINT DEFAULT 1,
|
`is_active` TINYINT DEFAULT 1,
|
||||||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP
|
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
|
||||||
@@ -344,6 +344,15 @@ async def _create_tables(pool: aiomysql.Pool):
|
|||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# V2.3.0 迁移:tb_user 角色增加 manager
|
||||||
|
try:
|
||||||
|
await cur.execute(
|
||||||
|
"ALTER TABLE tb_user MODIFY COLUMN `role` VARCHAR(20) DEFAULT 'operator' "
|
||||||
|
"COMMENT 'admin/manager/operator/analyst'"
|
||||||
|
)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
logger.info("数据库表初始化完成")
|
logger.info("数据库表初始化完成")
|
||||||
|
|
||||||
|
|
||||||
@@ -522,7 +531,8 @@ async def insert_wave_data(dnt_id: int, dpg430_addr: int,
|
|||||||
remain_count: int, relay_code: int,
|
remain_count: int, relay_code: int,
|
||||||
work_freq: float, curr_dist: int, speed: int,
|
work_freq: float, curr_dist: int, speed: int,
|
||||||
near_dist: int, far_dist: int,
|
near_dist: int, far_dist: int,
|
||||||
enter_dist: int, leave_dist: int):
|
enter_dist: int, leave_dist: int,
|
||||||
|
relay_out: str = ""):
|
||||||
"""插入 0xB4 波动测试上报数据到 tb_state_tst"""
|
"""插入 0xB4 波动测试上报数据到 tb_state_tst"""
|
||||||
coil_id, simulate_car_id = await get_fixture_coil_car_ids(dnt_id)
|
coil_id, simulate_car_id = await get_fixture_coil_car_ids(dnt_id)
|
||||||
dev_type = await get_fixture_dev_type(dnt_id)
|
dev_type = await get_fixture_dev_type(dnt_id)
|
||||||
@@ -542,7 +552,7 @@ async def insert_wave_data(dnt_id: int, dpg430_addr: int,
|
|||||||
VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)""",
|
VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)""",
|
||||||
(dnt_id, dpg430_addr, dev_type, str_type,
|
(dnt_id, dpg430_addr, dev_type, str_type,
|
||||||
1, "B4",
|
1, "B4",
|
||||||
"", relay_code,
|
relay_out, relay_code,
|
||||||
remain_count, work_freq, curr_dist, speed,
|
remain_count, work_freq, curr_dist, speed,
|
||||||
near_dist, far_dist, enter_dist, leave_dist,
|
near_dist, far_dist, enter_dist, leave_dist,
|
||||||
coil_id, simulate_car_id),
|
coil_id, simulate_car_id),
|
||||||
|
|||||||
Reference in New Issue
Block a user