树莓派同时收发hex和ascill的程序 | 您所在的位置:网站首页 › 921600波特率 › 树莓派同时收发hex和ascill的程序 |
import serialfrom pymodbus.client.sync import ModbusSerialClientfrom pymodbus.exceptions import ConnectionException # 打开串口,根据实际情况修改端口号和波特率ser = serial.Serial('/dev/ttyS0', 9600) # 创建 Modbus 串口客户端client = ModbusSerialClient(method='rtu', port='/dev/ttyS0', baudrate=9600) # 连接 Modbus 设备try: if not client.connect(): raise ConnectionException("连接 Modbus 设备失败")except ConnectionException as e: print(e) # 读取传感器的寄存器数据sensor_address = 1 # 传感器地址start_register = 0 # 起始寄存器地址register_count = 2 # 寄存器数量response = client.read_holding_registers(start_register, register_count, unit=sensor_address) # 打印读取到的数据(以16进制形式显示)if response.isError(): print("读取寄存器失败,错误代码:", response.functionCode)else: data = response.registers print("读取到的数据:", ' '.join(hex(d) for d in data)) # 发送16进制数据到传感器data_to_send = [0x01, 0x03, 0x00, 0x00, 0x00, 0x02, 0xC4, 0x0B]ser.write(bytes(data_to_send)) # 读取传感器的响应数据data_received = ser.read(10) # 读取10个字节的数据print('Received data: ', ' '.join(hex(b) for b in data_received)) # 关闭 Modbus 客户端和串口client.close()ser.close() |
CopyRight 2018-2019 实验室设备网 版权所有 |