准备TH10S-B温度sensor一个
准备RS485 USB转换器一个
连线,插到电脑USB口,设置端口:
可以用商家的软件测试下传感器是否正常:
进入正题,解析RS485数据首先安装serial包,使用serials.Serial()时我遇到个错误
报错module 'serial' has no attribute 'Serial'
解决办法,卸载serial,重新安装pyserial
pip uninstall serial
pip install pyserial
正式代码如下:
import serial
import time
temp_send = '01 03 00 00 00 02 C4 0B'
ser = serial.Serial("COM3", 9600)
# 发送的数据转为2进制b'\x01\x03\x00\x00\x00\x02\xc4\x0b'
temp_send = bytes.fromhex(temp_send)
print(temp_send)
while True:
if ser.is_open:
print('port open ok')
ser.write(temp_send)
time.sleep(0.1)
# 获取返回的缓冲data,获取的是buffer_data的长度 9
buffer_data = ser.in_waiting
# print(buffer_data, 'buffer_data')
if buffer_data:
# 返回的数据为2进制:b'\x01\x03\x04\x01\x08\x022\xfa\xb8'
return_data = ser.read(buffer_data)
# print('返回的数据2进制:', return_data)
# 二进制转换为16进制:010304010802307b79
return_data_hex = str(return_data.hex())
print('返回的数据转换为16进制:', return_data_hex)
# 对返回的数据进行解析,获取温度和湿度数据
print("当前温度为:", int(return_data_hex[6:10], 16)/10)
print("当前湿度为:", int(return_data_hex[10:14], 16)/10)
time.sleep(1)
安装完运行结果:
TH10S-B厂商手册对返回收据解析说明如下:
实际上我看不懂这个手册。哈哈
问了商家,温度和湿度对应的位置,搞定。
最后说明,我使用的是win11系统,所以RS485 USB转接头是免驱动的,如果是win7的可能要安装驱动才能用,买的时候商家会给驱动。
另外后期打算用树莓派读取温度湿度等数据,可以应用到设备工业领域。