Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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 如何使用PySerial与micro:bit建立串行通信?_Python_Python 3.x_Serialization_Pyserial_Bbc Microbit - Fatal编程技术网

Python 如何使用PySerial与micro:bit建立串行通信?

Python 如何使用PySerial与micro:bit建立串行通信?,python,python-3.x,serialization,pyserial,bbc-microbit,Python,Python 3.x,Serialization,Pyserial,Bbc Microbit,我目前正试图将加速度计数据从microbit发送到计算机上运行的python程序。我决定使用uart和pyserial来尝试这样做 from microbit import * while True: x = accelerometer.get_x() uart.write(str(x)) msg_bytes = uart.read() print(str(msg_bytes)[:-4]) 但是,我从未使用过pyserial,因此我不确定如何使用该模块将ms

我目前正试图将加速度计数据从microbit发送到计算机上运行的python程序。我决定使用uart和pyserial来尝试这样做

from microbit import *

while True:
    x = accelerometer.get_x()
    uart.write(str(x))

    msg_bytes = uart.read()
    print(str(msg_bytes)[:-4])

但是,我从未使用过pyserial,因此我不确定如何使用该模块将msg_字节数据从microbit提取到我的计算机上。

在microbit上读取acceleromter数据和在连接microbit的设备上显示数据有两个部分

microbit的micropython脚本,然后是在连接microbit的设备上运行的python脚本

请在下面找到一些代码,这些代码是我在Debian下使用连接到运行Python 3.7.3的Thinkpad X230的microbit进行测试的。Python脚本也应该在Windows上运行。我使用Mu编辑器将micropython闪存到microbit

要加载到microbit的micropython:

from microbit import *

while True:
    x = accelerometer.get_x()
    y = accelerometer.get_y()
    z = accelerometer.get_z()
    print("x, y, z:", x, y, z)
    display.show(Image.YES)
    sleep(250)
    display.show(Image.NO)
    sleep(250)
显示加速计数据的Python脚本。脚本使用设备的VID和PID查找微比特,使用pyserial连接,然后显示数据。如果尚未安装pyserial库,则需要运行“pip3安装pyserial--user”

import serial
import serial.tools.list_ports as list_ports


PID_MICROBIT = 516
VID_MICROBIT = 3368
TIMEOUT = 0.1


def find_comport(pid, vid, baud):
    ''' return a serial port '''
    ser_port = serial.Serial(timeout=TIMEOUT)
    ser_port.baudrate = baud
    ports = list(list_ports.comports())
    print('scanning ports')
    for p in ports:
        print('port: {}'.format(p))
        try:
            print('pid: {} vid: {}'.format(p.pid, p.vid))
        except AttributeError:
            continue
        if (p.pid == pid) and (p.vid == vid):
            print('found target device pid: {} vid: {} port: {}'.format(
                p.pid, p.vid, p.device))
            ser_port.port = str(p.device)
            return ser_port
    return None


def main():
    print('looking for microbit')
    ser_micro = find_comport(PID_MICROBIT, VID_MICROBIT, 115200)
    if not ser_micro:
        print('microbit not found')
        return
    print('opening and monitoring microbit port')
    ser_micro.open()
    while True:
        line = ser_micro.readline().decode('utf-8')
        if line:  # If it isn't a blank line
            print(line)
    ser_micro.close()

为什么要使用PySerial?它似乎已经在microbit代码中处理过了?你的问题在哪里?你的产出是多少?你以为你得到了什么?