-1

マイクロビットから Windows PC にシリアル通信でデータを送信しようとしています。私はマイクロビットのウェブサイトからここの例に従いましたが、Tera Term ウィンドウに何も表示できないようです。

マイクロビットは、PC の前面にある USB ポートの 1 つに接続されており、次のコードが含まれています。

basic.forever(function () {
    serial.writeLine("test")
})

Tera Term に新しい接続を追加するとき、COM1を選択します(これが唯一のオプションです)。

Tera Term での新しい接続

次に、[セットアップ] > [シリアル ポート]に移動し、次の設定を保存します。

シリアル送信設定

残念ながら、これにはデータが表示されません。別の USB ポートとケーブルを試してみましたが、役に立ちませんでした。

4

1 に答える 1

0

次の python 3 コードは、microbit の VID と PID を使用して、microbit に接続されているポートを見つけるまで、シリアル ポートをスキャンします。スクリプトはポート情報を表示します。この後、スクリプトはマイクロビットからシリアル ポートを介して送信されたものをすべて表示します。

ポート名を使用して Tera Term をセットアップするか、スクリプトにシリアル ポートからのデータの表示を続行させることができます。マイクロビットのデフォルトのボーレートは 115200 です。以下の出力例では、ポート名は COM5 です。マイクロビットを抜き差しするたびに、ポート名が変わる可能性があります。

出力例:

starting
looking for microbit
scanning ports
port: COM5 - mbed Serial Port (COM5)
pid: 516 vid: 3368
found target device pid: 516 vid: 3368 port: COM5
opening and monitoring microbit port

コード:

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()


if __name__ == '__main__':
    print('starting')
    main()
    print('exiting')
于 2020-01-15T04:30:31.867 に答える