運(yùn)行示例程序
接下來就可以運(yùn)行串口通信的例程了。
$ sudo python3 test_serial.py
實(shí)物接線完成后,在旭日X3派的終端中輸入指令啟動(dòng)例程,很快就可以在終端中看到串口向外發(fā)送的數(shù)據(jù)了。
在串口連接的電腦中打開一個(gè)串口軟件,用來接收和發(fā)送數(shù)據(jù),設(shè)置好端口和波特率,就能看到旭日X3派發(fā)過來的數(shù)據(jù)了。我們再使用電腦的串口軟件嘗試下發(fā)送數(shù)據(jù)給旭日X3派,輸入1234,點(diǎn)擊發(fā)送,可以看到,X3Pi的終端這邊也成功的接收到了數(shù)據(jù)并且打印出來了。
代碼解析
test_serial.py:
#!/usr/bin/env python3
import sys
import os
import time
# 導(dǎo)入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("請輸入需要測試的串口設(shè)備名:")
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庫就可以了,這里我們先調(diào)用系統(tǒng)的庫,打印出當(dāng)前有哪些串口,然后手動(dòng)輸入選擇串口的設(shè)備名,再輸入串口的波特率,就可以進(jìn)項(xiàng)串口的初始化了,初始化成功之后就會進(jìn)入循環(huán)。
循環(huán)中,X3Pi會每隔一秒發(fā)送一次AA55,同時(shí)還會判斷是否接收到了數(shù)據(jù),如果接收到了數(shù)據(jù)也會打印出來。
-
機(jī)器人
+關(guān)注
關(guān)注
211文章
28618瀏覽量
207918 -
程序
+關(guān)注
關(guān)注
117文章
3794瀏覽量
81281 -
uart
+關(guān)注
關(guān)注
22文章
1243瀏覽量
101612 -
串口通信
+關(guān)注
關(guān)注
34文章
1627瀏覽量
55649
發(fā)布評論請先 登錄
相關(guān)推薦
評論