地平线机器人开发UART串口通信程序

描述

运行示例程序

接下来就可以运行串口通信的例程了。

$ sudo python3 test_serial.py

实物接线完成后,在旭日X3派的终端中输入指令启动例程,很快就可以在终端中看到串口向外发送的数据了。

在串口连接的电脑中打开一个串口软件,用来接收和发送数据,设置好端口和波特率,就能看到旭日X3派发过来的数据了。我们再使用电脑的串口软件尝试下发送数据给旭日X3派,输入1234,点击发送,可以看到,X3Pi的终端这边也成功的接收到了数据并且打印出来了。

代码解析

test_serial.py:

#!/usr/bin/env python3


import sys
import os
import time


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


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')
        if received_data :
            print("Recv: ", received_data)


        time.sleep(1)


    ser.close()
    return 0




if __name__ == '__main__':
    if serialTest() != 0:
        print("Serial test failed!")
    else:
        print("Serial test success!")

X3Pi这边如果要使用串口,直接使用serial库就可以了,这里我们先调用系统的库,打印出当前有哪些串口,然后手动输入选择串口的设备名,再输入串口的波特率,就可以进项串口的初始化了,初始化成功之后就会进入循环。

循环中,X3Pi会每隔一秒发送一次AA55,同时还会判断是否接收到了数据,如果接收到了数据也会打印出来。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分