一,安装:pyserial模块 

  1. pyserial模块封装了对串口的访问
  2. pip3 install pyserial
import serial #导入模块

import serial.tools.list_ports
port_list = list(serial.tools.list_ports.comports())
print(port_list)
if len(port_list) == 0:
   print('无可用串口')
else:
    for i in range(0,len(port_list)):
        print(port_list[i])

二,安装:modbus_tk模块安装

  1. modbus_tk支持modbus通信
  2. pip install modbus_tk
  3. ModbusRTU_Master.py
import serial
import modbus_tk
import modbus_tk.defines as cst
from modbus_tk import modbus_rtu
import time

# 数据接收端
def ModbusRTU_Master():
    try:
        # 设定串口为从站
        # 外置参数包括端口 port = "COM3" 波特率:115200
        master = modbus_rtu.RtuMaster(serial.Serial(port="com4",baudrate=115200, bytesize=8, parity='N', stopbits=1))
        master.set_timeout(1.0)
        master.set_verbose(True)
        # 读保持寄存器
        for i in range(30):
            read = master.execute(1, cst.HOLDING_REGISTERS, 0, 81)  # 这里可以修改需要读取的功能码
            print(read)
            time.sleep(1)
    except Exception as exc:
        print(str(exc))

ModbusRTU_Master()
  1. ModbusRTU_Slave.py
import serial
import modbus_tk
import modbus_tk.defines as cst
from modbus_tk import modbus_rtu
import time

def ModbusRTU_Slave():
    try:
        # 设定串口为从站
        # 外置参数包括端口 port = "COM3" 波特率:9600
        server= modbus_rtu.RtuServer(serial.Serial(port="com3",baudrate=9600, bytesize=8, parity='N', stopbits=1))
        server.start()
        print("runing...")
        SLAVE1 = server.add_slave(1)
        SLAVE1.add_block('A', cst.HOLDING_REGISTERS, 0, 4)  # 地址0,长度4
        increase_num = 17000
        for i in range(30):
            SLAVE1.set_values('A', 0, [17000-i, i + 1, i + 2, i + 3])  # 改变在地址0处的寄存器的值
            time.sleep(1)
            """
        for i in range(150):
            increase_num = increase_num - 1
            SLAVE1.set_values('A', 0, [increase_num, i + 1, i + 2])  # 改变在地址0处的寄存器的值
            time.sleep(1)
        for i in range(80):
            SLAVE1.set_values('A', 0, [10000, i + 1, i + 2])  # 改变在地址0处的寄存器的值
            time.sleep(1)
        for i in range(80):
            SLAVE1.set_values('A', 0, [17000, i + 1, i + 2])  # 改变在地址0处的寄存器的值
            time.sleep(1)
            """
        print("ending...")
    except Exception as exc:
        print(str(exc))

ModbusRTU_Slave()

 三,安装:psutil 模块安装

  

  1. psutil 是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(包括CPU ,内存,磁盘,网络等)信息。它主要应用于系统监控,分析和限制系统资源及进程的管理。它实现了同等命令行工具提供的功能,如ps ,top ,lsof ,netstat ,ifconfig ,who ,df ,kill ,free ,nice ,ionice ,iostat ,iotop ,uptime ,pidof ,tty ,taskset ,pmap 等。目前支持Linux的,32 位和64 位的,Windows ,OS X ,FreeBSD 和Sun Solaris 等操作系统。
  2. psutil 下载地址(官网):https://pypi.python.org/pypi/psutil/
  3. psutil 下载地址(github ):https://github.com/giampaolo/psutil/
  4. pip install psutil