获取计算机所有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), alarm
    except Exception as exc:
        alarm = str(exc)
    return red, alarm  # 如果异常就返回【】,故障信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值