HumansXドキュメントセンター 公式サイトへ ↗

4. シリアル通信 - 受信データの確認

RDK X5 では、40PIN 上でデフォルトで UART1 が有効になっています。物理ピン番号は 8 と 10、IO 電圧は 3.3V です。

シリアルポートの使い方の詳細は、/app/40pin_samples/test_serial.py をご参照ください。

ループバックテスト

TXD と RXD をハードウェア上で接続してからテストプログラムを実行し、書き込みと読み出しを行います。読み出したデータが書き込んだデータと完全に一致すれば正常です。

ハードウェア接続

ジャンパーキャップで TXD と RXD を直接ハードウェア上で接続します。

テスト手順

  • python3 /app/40pin_samples/test_serial.py を実行します
  • 表示されたシリアルデバイス(/dev/ttyS0 はシステムのデバッグポートのため、その役割を十分に理解していない限りテストしないでください)から、テストするデバイスを入力して選択します。例えば RDK X3 では /dev/ttyS3、RDK X5 では /dev/ttyS1、RDK Ultra では /dev/ttyS2 を選択し、Enter キーで確定してからボーレートを入力します。
List of enabled UART:
/dev/ttyS0  /dev/ttyS1  /dev/ttyS3  /dev/ttyUSB0

请输出需要测试的串口设备名:/dev/ttyS3
请输入波特率(9600,19200,38400,57600,115200,921600):921600
Serial<id=0x7f819dcac0, open=True>(port='/dev/ttyS3', baudrate=921600, bytesize=8, parity='N', stopbits=1, timeout=1, xonxoff=False, rtscts=False, dsrdtr=False)
  • プログラムが正常に動作すると、Send: AA55 と Recv: AA55 が継続的に表示されます。
Starting demo now! Press CTRL+C to exit
Send:  AA55
Recv:  AA55

テストコード

#!/usr/bin/env python3

import sys
import signal
import os
import time

# 导入python串口库
import serial
import serial.tools.list_ports

def signal_handler(signal, frame):
    sys.exit(0)

def serialTest():
    print("List of enabled UART:")
    os.system('ls /dev/tty[a-zA-Z]*')
    uart_dev= input("请输出需要测试的串口设备名:")

    baudrate = input("请输入波特率(9600,19200,38400,57600,115200,921600):")
    try:
        ser = serial.Serial(uart_dev, int(baudrate), timeout=1) # 1s timeout
    except Exception as e:
        print("open serial failed!\n")

    print(ser)

    print("Starting demo now! Press CTRL+C to exit")

    while True:
        test_data = "AA55"
        write_num = ser.write(test_data.encode('UTF-8'))
        print("Send: ", test_data)

        received_data = ser.read(write_num).decode('UTF-8')
        print("Recv: ", received_data)

        time.sleep(1)

    ser.close()
    return 0

if __name__ == '__main__':
    signal.signal(signal.SIGINT, signal_handler)
    if serialTest() != 0:
        print("Serial test failed!")
    else:
        print("Serial test success!")