赞
踩
参考博文 https://blog.csdn.net/weixin_30555753/article/details/95315610?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-1.pc_relevant_default&spm=1001.2101.3001.4242.2&utm_relevant_index=4
serial模块里面的wirte跟read都是bytes的数据 根据需要转成str类型 用encode decode来转换
# -*- codeing = utf-8 -*- # @Time : 2022/3/24 15:15 # @Author: CXZ # @Flie : serial_test.py # @Software: PyCharm import serial import time ser = serial.Serial("com3", 115200) # 选择串口,并设置波特率 if ser.is_open: print("port open success") # hex(16进制)转换为bytes(2进制),应注意Python3.7与Python2.7此处转换的不同 send_data = bytes.fromhex('ff 01 00 55 00 00 56') # 发送数据转换为b'\xff\x01\x00U\x00\x00V' ser.write("test_chr".encode()) # 发送命令 发送的是bytes类型 time.sleep(3) # 延时,否则len_return_data将返回0,此处易忽视!!! len_return_data = ser.inWaiting() # 获取缓冲数据(接收数据)长度 if len_return_data: return_data = ser.read(len_return_data) # 读取缓冲数据 print(type(return_data)) #<class 'bytes'> 2 种常用的字符串类型,分别为 str 和 bytes 类型,其中 str 用来表示 Unicode 字符,bytes 用来表示二进制数据。 #str 类型和 bytes 类型之间就需要使用 encode() 和 decode() 方法进行转换。 # bytes(2进制)转换为hex(16进制),应注意Python3.7与Python2.7此处转换的不同,并转为字符串后截取所需数据字段,再转为10进制 str_return_data = str(return_data.hex()) feedback_data = int(str_return_data[-6:-2], 16) print(feedback_data) print(return_data.decode()) #返回从serial发送过来的字符串 else: print("port open failed")
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。