来自MCU的pySerial读取十六进制值

时间:2017-08-04 11:43:51

标签: hex pyserial

我是python的新手,我正在使用2.7 with 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崩溃 我只是想读取传入的十六进制值

2 个答案:

答案 0 :(得分:1)

解决了这个问题:

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

我希望它可能有用 现在我想了解为什么pyserial经常崩溃

编辑:升级到python 3.x解决了所有与pyserial崩溃的问题 并且sintax变得更加清晰

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

答案 1 :(得分:1)

这种方式也可以

in_hex = ser.read()。hex()