如何在Python中通过MCU发送的串行端口读取字节

时间:2019-09-25 17:40:15

标签: python

我从我的MCU通过串行端口将数据0、1、2、3、4、5 .... 254,255、1、2、3、4 ...发送到PC。我尝试阅读(在Python中)并将其绘制。我将数据保存到列表中,希望以十六进制或十进制格式显示值,但是在资源管理器中我什至看不到它们-我缺少了什么?您可以看到var资源管理器,其中的读取值保存在y

def readFromMCU(i):
    y.pop(0)
    y.append((ser.read()))
    x.pop(0)
    x.append(x[-1]+1) # just increment x axis   
    ax1.clear()
    ax1.plot(x, y)

1 个答案:

答案 0 :(得分:0)

我无法确切地说出您的概况,但这也许会有所帮助。我现在正在我的PC上运行它。我正在捕获离散发送的文件,而不是正在进行的数据流,但是出于这个目的,我认为差异可以忽略不计。

def collect_data(file_name):
    print(' ', file=sys.stdout);
    print('Writing ' + file_name, file=sys.stdout)
    ln = ser.readlines()

    with open(file_name, 'w') as f:
        for s in ln:
            f.write(str(s.decode('utf8')))

    # ...and DING :)
    winsound.MessageBeep(-1)

with serial.Serial("COM1") as ser:
    ser.timeout = 0.5;

    print(ser.name + ' is open')

    wait_time = 1;

    # Main Loop monitors COM port and user key press, 
    # and displays a progress meter.
    while True:
        time.sleep(wait_time)
        if ser.in_waiting > 0:
            collect_data(file_name)

我已将其从更大的程序中删除了,因此以示例为例,不必运行代码...:)