Python 与 RS-485 传感器设备进行串口通信, 读取数值
import serial
import time
# 设置串口参数
ser = serial.Serial(
port='/dev/ttyS1', # 替换为你的RS-485设备对应的串口
baudrate=9600,
parity=serial.PARITY_EVEN,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.SEVENBITS
)
# 读取传感器数据
def read_sensor_data(ser):
try:
# 发送请求到传感器
ser.write(b'\x01\x86\x00\x00\x00\x00\x00\x17') # 请求数据的命令,需要根据传感器手册进行修改
time.sleep(0.5) # 等待响应时间,根据传感器响应时间调整
# 读取传感器响应
response = ser.read(8) # 假设传感器响应为8个字节
if len(response) == 8:
# 解析传感器响应
# 假设响应数据格式为:0x86, 高8位, 低8位, CRC_高, CRC_低
# 解析出高低字节数据,CRC需要验证通过才使用
data_high = response[1]
data_low = response[2]
data = (data_high << 8) | data_low # 将高低字节组合成16位整数
return data
else:
return None
except serial.SerialException as e:
print(f"传感器通信异常: {e}")
return None
# 主程序
if __name__ == "__main__":
while True:
data = read_sensor_data(ser)
if data is not None:
print(f"读取到的数据: {data}")
else:
print("未能读取到数据")
time.sleep(1) # 根据需要调整读取间隔
这段代码提供了一个简化的例子,展示了如何使用Python的serial库与RS-485传感器通信。代码中的read_sensor_data
函数用于发送请求并读取传感器的响应,然后解析数据。主程序循环中调用了这个函数,并打印出读取的数据。注意,这个例子假设传感器响应为8个字节,并且解析方式是简化的。实际应用中需要根据传感器的具体通信协议进行相应的修改。
评论已关闭