python读取RS485接口的TH10S-B温度传感器数据

准备TH10S-B温度sensor一个

python读取RS485接口的TH10S-B温度传感器数据_第1张图片

准备RS485 USB转换器一个

 python读取RS485接口的TH10S-B温度传感器数据_第2张图片

连线,插到电脑USB口,设置端口:

可以用商家的软件测试下传感器是否正常:

python读取RS485接口的TH10S-B温度传感器数据_第3张图片

进入正题,解析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)

 安装完运行结果:

python读取RS485接口的TH10S-B温度传感器数据_第4张图片

TH10S-B厂商手册对返回收据解析说明如下:

python读取RS485接口的TH10S-B温度传感器数据_第5张图片

实际上我看不懂这个手册。哈哈

问了商家,温度和湿度对应的位置,搞定。

python读取RS485接口的TH10S-B温度传感器数据_第6张图片

 

 最后说明,我使用的是win11系统,所以RS485 USB转接头是免驱动的,如果是win7的可能要安装驱动才能用,买的时候商家会给驱动。

 另外后期打算用树莓派读取温度湿度等数据,可以应用到设备工业领域。

 

 

你可能感兴趣的:(Python,实用功能,服务器,开发语言,python)