当前位置:   article > 正文

python serial通讯_serial hex

serial hex

参考博文 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")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/791209
推荐阅读
相关标签
  

闽ICP备14008679号