尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
硬件获取IO设备信息自动化小工具
import tkinter as tk from tkinter import messagebox from pymodbus.client import ModbusSerialClient # # ️ 自定义配置弹窗类 (保持不变) # class ConfigDialog: def __init__(self, parent): self.result None self.top tk.Toplevel(parent) self.top.title(⚙️ Modbus 连接配置) self.top.resizable(False, False) fields [ (串口号 (如 COM1):, COM2), # 默认设为 COM2 (波特率:, 9600), (设备地址 (Slave ID):, 100), (读取 DI 数量:, 8) ] self.entries [] for i, (label_text, default_val) in enumerate(fields): frame tk.Frame(self.top) frame.pack(pady5, padx10, fillx) label tk.Label(frame, textlabel_text, width20, anchorw) label.pack(sideleft) entry tk.Entry(frame) entry.insert(0, str(default_val)) entry.pack(sideright, expandTrue, fillx) self.entries.append(entry) btn_frame tk.Frame(self.top) btn_frame.pack(pady15) tk.Button(btn_frame, text✅ 确认连接, commandself.confirm).pack(sideleft, padx5) tk.Button(btn_frame, text❌ 取消, commandself.cancel).pack(sideleft, padx5) self.top.wait_window() def confirm(self): try: port self.entries[0].get() baudrate int(self.entries[1].get()) slave_id int(self.entries[2].get()) di_count int(self.entries[3].get()) if not port: raise ValueError(端口号不能为空) self.result { port: port, baudrate: baudrate, slave_id: slave_id, di_count: di_count } self.top.destroy() except ValueError as e: messagebox.showerror(输入错误, f请检查输入格式\n{e}) def cancel(self): self.top.destroy() # # 主程序逻辑 (已修正为 read_discrete_inputs) # if __name__ __main__: root tk.Tk() root.withdraw() # 1. 弹出配置窗口获取参数 dialog ConfigDialog(root) config dialog.result if config is None: print( 用户取消操作程序退出。) else: print( * 40) print(f 配置已加载: {config[port]} | Baud: {config[baudrate]}) print(f 地址: {config[slave_id]} | DI数: {config[di_count]}) print( * 40) # 初始化客户端 client ModbusSerialClient( methodrtu, portconfig[port], baudrateconfig[baudrate], timeout1 ) # 尝试建立物理连接 if not client.connect(): print(f❌ 无法连接到 {config[port]}请检查端口是否被占用) else: print(f✅ 成功连接到 {config[port]}) # 2. 进入循环读取 while True: print(\n正在读取数据...) # 【关键修正】使用 read_discrete_inputs (功能码 02) result client.read_discrete_inputs( address0, countconfig[di_count], slaveconfig[slave_id] ) if not result.isError(): print( 读取结果解析) has_alarm False for i in range(config[di_count]): status result.bits[i] if status: print(f ⚠️ 第 {i 1} 路告警) has_alarm True else: print(f ✅ 第 {i 1} 路正常) if not has_alarm: print( (所有端口均正常)) else: print(f❌ 读取失败: {result}) # 3. 询问用户是否继续 print(- * 40) choice input(是否继续读取(输入 y 继续其他键退出): ).strip().lower() if choice ! y: print( 程序已停止连接已关闭。) break # 确保程序结束时关闭连接 try: client.close() except: pass root.destroy() 禁止商用哈
RELATED

相关推荐

pgGraph选型指南:适用场景、硬性限制清单与Apache AGE终极对比

pgGraph选型指南:适用场景、硬性限制清单与Apache AGE终极对比

pgGraph选型指南:适用场景、硬性限制清单与Apache AGE终极对比 pgGraph 是一款开源的 PostgreSQL 图数据库扩展:它不改写你的表结构,而是在现有 Postgres 表之上构建可重建的图索引,让你直接用 SQL 完成图遍历、最短路径和关系查…

📅 2026/10/17 2:48:58
掌握多 Agent 协同工作秘籍:从任务拆解到可靠交付,小白也能轻松上手!

掌握多 Agent 协同工作秘籍:从任务拆解到可靠交付,小白也能轻松上手!

本文深入探讨了企业级多 Agent 架构的设计逻辑与实现要点,从需求理解到任务规划,再到策略优化与编排执行,最后实现可靠结果交付,并提供了五个关键的工程实施建议。通过五阶段执行链路,三大边界分离和五个工程要点&…

📅 2026/10/17 2:43:58
配音选声不是选好听,是选对赛道:4类内容的真实经验

配音选声不是选好听,是选对赛道:4类内容的真实经验

声明:本文仅为个人配音实操经验分享,文中提到的声线、工具仅为本人实测体验,不构成任何产品推荐。选声这件事,我是真的交了不少 “学费” 才慢慢摸清楚门道。之前接过一个短剧账号的角色配音订单,习惯性用上了平时影视…

📅 2026/10/17 2:43:58
MORE NEWS

更多资讯

📰

J2EE订单履约系统:事务原子性与JMS解耦实战

简介:这是一套基于J2EE技术栈开发的完整在线图书销售系统——“云工厂-网上书城”,面向Java Web初学者与企业级应用实践者,用于深入理解多层架构设计、前后端协同及数据库集成等核心开发能力。资源包含588个文件,涵盖83个Java源码…

📰

基于Spring Boot+Vue的智能药箱系统:药品管理、库存预警与用药提醒实战解析

智能药箱?听名字像是物联网硬件项目,实际做出来才明白,它更像是一个“药品领域的进销存提醒服务”的管理系统。作为计算机毕业设计选题,Spring BootVue这套前后端分离的技术组合,加上药品录入、库存预警、用药提醒这些…

📰

卷积神经网络如何精准识别食物图像

简介:本资源是一个基于TensorFlow实现的食物图像识别完整项目,面向深度学习初学者与计算机视觉实践者,聚焦卷积神经网络在真实场景(如餐饮识别、健康饮食分析)中的落地应用。项目涵盖数据预处理、CNN模型构建&#xff…

📰

从幽灵窗口到 exit_reparent:X11 下安全拆解窗口树父子关系

1. 从一个“关不掉的窗口”说起我在维护一个自制轻量窗口管理器时,遇到一个特别反常的 Bug:窗口能正常创建、正常拖动、正常缩放,但只要一点关闭按钮,屏幕左上角就会留下一个无法操作的“幽灵窗口”,后台进程没退出&am…

📰

SQLAlchemy ORM实战指南:从核心概念到性能优化与踩坑经验

1. 从裸SQL到ORM:我为什么最终选择SQLAlchemy先说下我自己的经历。早几年做项目时,数据库操作基本都是靠手写SQL,当时觉得这样最可控,性能也好把控。但随着项目越做越复杂,表结构从几张涨到几十张,各种关联…

📰

多模态RAG视频知识库构建:数据清洗全流程实战经验

一直以来我都觉得,纯文本 RAG 已经很难伺候了,直到我接了一个要把视频变成可检索知识库的需求,才意识到真正麻烦的事还在后头。视频知识库的核心难点不在“建库”,而在“清洗”。一段 30 分钟的产品演示视频里,既有人声…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬