Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Raspberry pi中处理串行读取值_Python_Raspberry Pi_Serial Port_Serial Communication_Mbed - Fatal编程技术网

Python 如何在Raspberry pi中处理串行读取值

Python 如何在Raspberry pi中处理串行读取值,python,raspberry-pi,serial-port,serial-communication,mbed,Python,Raspberry Pi,Serial Port,Serial Communication,Mbed,我一直在尝试在raspberry和我的STM32板之间进行串行通信(固件使用MBEDOS) 现在,我能够从我的树莓到微控制器进行串行写入,并且成功了 然而,我想尝试从微控制器写入一些东西到树莓,树莓应该处理它。但是,它似乎没有做到这一点 树莓的代码非常简单: import time import serial ser = serial.Serial( port='/dev/ttyUSB0', baudrate = 9600, parity=serial.PARITY_NO

我一直在尝试在raspberry和我的STM32板之间进行串行通信(固件使用MBEDOS)

现在,我能够从我的树莓到微控制器进行串行写入,并且成功了

然而,我想尝试从微控制器写入一些东西到树莓,树莓应该处理它。但是,它似乎没有做到这一点

树莓的代码非常简单:

import time
import serial
ser = serial.Serial(
    port='/dev/ttyUSB0',
    baudrate = 9600,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS,
    timeout=1
    )
while 1:
     x=ser.readline()
     if x[2] == "e":
         break         
     print x
print("stop")
对我的代码做一点解释,我想做的是当我的微控制器发送一个“e”时,它应该从循环中断。我使用了x[2],因为我注意到当我们打印串行数据时,它会打印:

b'eeeeeee\n'
因此,我决定使用x[2]

在微控制器部分,我使用了:

if(butn == 1) {
        // raspi.putc('e');
        raspi.printf("eeeeeee");
        swo.printf("e is printed");
    }
其中butn是用户按钮。我已经试过使用.putc('e'),但它也是一样的

我如何处理这个问题


谢谢

代码中的问题是
Serial.readline()
返回一个
bytes
对象,而不是字符串。这就是为什么打印时会看到
b

现在,使用bytes对象进行索引不会计算字符串中出现的b和 代表性;因此,如果需要第一个字符,应该使用
x[0]
。但是,当您在bytes对象中使用索引时,您将无法获得字符,您将获得所请求的特定字节的数字表示形式

x = b'eeeee'
print x[0]

>>> 101
令人惊奇的是,101是“e”的ascii码

您需要将x[0]强制转换为角色。结果将是:

while 1:
     x=ser.readline()
     if chr(x[0]) == "e":
         break         
     print x

嗨,巴勃罗!非常感谢你的解释!我现在明白了,我的代码现在运行良好。干杯