获取计算机所有com信息,使用Modbus RTU读取数据

1.获取计算机所有com信息

使用serial模块实现

# 列出计算机的COM口
import serial.tools.list_ports
all_comports = serial.tools.list_ports.comports()
for comport in all_comports:print(comport.device, comport.name, comport.description, comport.interface)# COM8 COM8 USB Serial Port (COM8) None# COM3 COM3 USB-SERIAL CH340 (COM3) None
enery_comports = []
for i in range(len(all_comports)):enery_comports.append(list(all_comports[i]))print(enery_comports)#[['COM8', 'USB Serial Port (COM8)', 'USB VID:PID=0403:6001 SER=A9080U1DA'], ['COM3', 'USB-SERIAL CH340 (COM3)', 'USB VID:PID=1A86:7523 SER= LOCATION=1-1']]
print(all_comports[1].description)
# USB-SERIAL CH340 (COM3)
print(len(all_comports))
# 2

2.使用Modbus RTU读取下位机数据

import serial
import modbus_tk.defines as cst
from modbus_tk import modbus_rtu
# modbus通讯
def modbusfunc(self, PORT='com8', BAUDRATE=9600, BYTESIZE=8, PARITY='N', STOPBITS=1):red = []alarm = ''try:# 设定串口为从站master = modbus_rtu.RtuMaster(serial.Serial(port=PORT, baudrate=BAUDRATE, bytesize=BYTESIZE, parity=PARITY, stopbits=STOPBITS))master.set_timeout(5.0)master.set_verbose(True)# 读保持寄存器# 1号站点,0-15号寄存器red = master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 18)  # 这里可以修改需要读取的功能码alarm = '正常'return list(red), alarmexcept Exception as exc:alarm = str(exc)return red, alarm  # 如果异常就返回【】,故障信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/204947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聊一聊Java中的枚举和泛型(两种强大的编程特性)

聊一聊Java中的枚举和泛型(两种强大的编程特性) 保持热爱,奔赴山海。。。。。。 Java中的枚举 在Java中,枚举(Enum)是一种特殊的数据类型,用于定义包含固定常量集合的数据类型。枚举类型在Jav…

Win10 安装.NET Framework 3.5 报错0x80240438

环境: Win10专业版 NET Framework 3.5 问题描述: Win10 安装.NET Framework 3.5 报错0x80240438 解决方案: 1.检查自动更新服务是否未开启,开启自动更新失败,用工具开启自动更新,重启电脑(未解决&am…

如何使用phpStudy本地快速搭建网站并内网穿透远程访问

文章目录 使用工具1. 本地搭建web网站1.1 下载phpstudy后解压并安装1.2 打开默认站点,测试1.3 下载静态演示站点1.4 打开站点根目录1.5 复制演示站点到站网根目录1.6 在浏览器中,查看演示效果。 2. 将本地web网站发布到公网2.1 安装cpolar内网穿透2.2 映…

C++11——包装器

该篇为lambda表达式的延申,请在熟知lambda表达式的基础上阅读该文章 一文详解C11lambda表达式https://blog.csdn.net/qq_74260823/article/details/134839319?spm1001.2014.3001.5501 包装器的由来 这同样是一个不属于C原始风味的语法 我们在lambda表达式中讲到过…

windows 安装两个mysql

参考链接一 参考链接二 安装第二个mysql 端口号改为3307进入 bin目录管理员身份运行cmd mysqld --defaults-fileC:\\soft\\1mysql-5.7.33-winx64\\my.ini --initialize --console 初始化 data 目录修改密码 修改 my.ini 文件添加 skip-grant-tables 见下启动mysql mysqld -…

了解linux计划任务

本章主要介绍如何创建计划任务 使用 at 创建计划任务 使用 crontab 创建计划任务 有时需要在某个指定的时间执行一个操作,此时就要使用计划任务了。计划任务有两种: 一个是at计划任务,另一个是 crontab计划任务。 下面我们分别来看这两种计…

Python 几个简单的案例

1.1 作业讲解 输入一个数字,求解此数字的所有因子之和! 如 6 的因子有 1,2,3,6,所有因子相加 123612 numint( input("请输入一个数字:")) #两个核心逻辑: 因子,求和 s0 fo…

c++实验多态程序设计

运行程序&#xff0c;分析结果。 #include <iostream> using namespace std; class B { public: virtual void f1(double x) { cout<<"B::f1(double)"<<x<<endl; } void f2(double x) { cout<<"B::f2(double)"<<…

IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Mybatis中参数传递问题

第一章 Mybatis中参数传递问题 1.1 单个普通参数 可以任意使用&#xff1a;参数数据类型、参数名称不用考虑 1.2 多个普通参数 Mybatis底层封装Map结构&#xff0c;封装key为param1、param2…【支持&#xff1a;arg0、arg1、…】 1.3 命名参数 语法&#xff1a; Param(val…

时间序列预测实战(二十五)PyTorch实现Seq2Seq进行多元和单元预测(附代码+数据集+完整解析)

一、本文介绍 本文给大家带来的时间序列模型是Seq2Seq&#xff0c;这个概念相信大家都不陌生了&#xff0c;网上的讲解已经满天飞了&#xff0c;但是本文给大家带来的是我在Seq2Seq思想上开发的一个模型和新的架构&#xff0c;架构前面的文章已经说过很多次了&#xff0c;其是…

MySQL数据库,函数与分组

单行函数&#xff1a; 操作数据对象 接受参数返回一个结果 只对一行进行变换 每行返回一个结果 可以嵌套 参数也可以是一列或一个值 数值函数 基本函数&#xff1a; 注&#xff1a;ROUND(x,y)函数的y是负数时&#xff0c;即往高位进行四舍五入&#xff0c;如-3就是按百位…

Python-函数详解(局部、全局变量)

函数:一段可以被重复利用的代码 函数定义&#xff1a; def 函数名 (参数) 函数体 return 返回值(可有可无) def 函数名()#函数参数#函数体return #返回值&#xff08;可有可无&#xff09; 函数的调用&#xff1a;先定义&#xff0c;后调用 警告和错误&#xff1a; …

出生率持续下降,而低代码,成了!

低代码这个概念在IT界应该是火了很久&#xff0c;在十年前就有低代码的概念。 在最初的时候&#xff0c;我们都是用高级语言或者脚本来开发页面或者应用&#xff0c;比如Java、C&#xff0c;前端会使用Vue、React等等。但是我们发现经常写的功能或者页面都是重复的&#xff0c;…

Python实现内网穿透和端口转发代理

对于大型的爬虫项目&#xff0c;肯定需要有良好的反爬机制&#xff0c;还应该配合代理iP使用&#xff0c;只有这两种结合才能让你的爬虫更高效准确。今天我就借用我一点空闲时间&#xff0c;来谈一谈有关python爬虫网络方面的解决方案&#xff0c;这里提供内网穿透和端口转发两…

分治法解决众数重数

问题 D: 22-数组-2-众数问题 [命题人 : 外部导入] 时间限制 : 1.000 sec 内存限制 : 128 MB 题目描述 问题描述&#xff1a; 给定含有n个元素的多重集合S&#xff0c;每个元素在S中出现的次数称为该元素的重数&#xff0c;其中重数最大的元素称为众数。 例如&#xff0c;S{1&a…

基于多波束和时间调制平均的相位量化栅瓣抑制方法极其性能极限

概要 为了抑制相位量化所导致的量化栅瓣,在波束合成中引入随机虚拟相移(RVPS,Random Virtual Phase Shift),采用多波束平均(MBS,Multi-beam Average)或时间调制平均(TMA,Time-Modulated Average)方法实现了对量化栅瓣的抑制,仿真验证了方法的有效性及限制,并进一…

印刷企业实施数字工厂管理系统有几个步骤

随着科技的飞速发展&#xff0c;许多传统行业正面临着前所未有的挑战。印刷行业也不例外&#xff0c;尤其在面对生产效率低下&#xff0c;资源浪费严重等问题时&#xff0c;数字工厂管理系统的实施成为了必然选择。那么&#xff0c;印刷企业实施数字工厂管理系统具体有几个步骤…

echarts 柱状图 定时自动轮播(非提示框轮播)

看了很多文档都是实现提示框轮播的&#xff0c;而我要实现的功能是&#xff1a;柱状图有多条数据时&#xff0c;轮播展示其中几条&#xff0c;比如我有100条数据&#xff0c;不能全部展示&#xff0c;设置轮播5条或者10条&#xff0c;依次显示数据&#xff0c;并形成闭环。 &a…

zabbix配置snmp trap--使用snmptrapd和Bash接收器--图文教程

1.前言 我的zabbix的版本是5.0版本&#xff0c;5.0的官方文档没有使用bash接收器的示例&#xff0c;6.0的官方文档有使用bash接收器的示例&#xff0c;但是&#xff0c;下载文件的链接失效&#xff1f;&#xff01; 这里讲解zabbix-server端配置和zabbix web端配置 2.zabbix-…

11、pytest断言预期异常

官方用例 # content of test_exception_zero.py import pytestdef test_zero_division():with pytest.raises(ZeroDivisionError):1/0# content of test_exception_runtimeerror.py import pytestdef test_recursion_depth():with pytest.raises(RuntimeError) as excinfo:def…