pySerial 从 MCU 读取十六进制值

pySerial reading hex value from MCU

我是 python 的新手,我正在使用 2.7 和 spyder

我有一个anduino风格的板运行这个:

void setup() {
  Serial1.begin(115200);
}

void loop() {
  Serial1.write(0x80);
}

在我的笔记本电脑上,我无法读取传入的数据,也无法将其分配给变量:

# -*- coding: utf-8 -*-
import serial
print (serial.__version__)
#3.4
ser = serial.Serial(
    port='/dev/ttyUSB1',
    baudrate=115200,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS,
    timeout = None
    #timeout = 1
)

while 1:
    print ser.read()
    a = ser.read()
    print a

我真的不明白我做错了什么,当我尝试将 ser.read() 分配给 "a" spyder 崩溃时 我只想读取传入的十六进制值

用这个解决了它:

print hex(int(a.encode('hex'), 16))

希望对你有用 现在我想了解为什么 pyserial 经常崩溃

编辑:升级到 python 3.x 解决了所有使用 pyserial 崩溃的问题 而且语法也变得更加清晰

in_bin = ser.read()
in_hex = hex(int.from_bytes(in_bin,byteorder='little')) 

这种方式也有效:

in_hex = ser.read().hex()