前言
??21國賽中的K210就用了這一套代碼,當時在用micropython時發現它的串口只能發送字串型的數字,但是實際上很不方便,就比如TI的MSP432系列,它的串口接識訓把資料強制轉化為int型的資料,這就要求我們在ASCII碼上做功夫,所以本文提出一種自定義資料協議發送資料的方法
??這里主要是用到了ustruct函式,從官方檔案可以看到:它可以將串口要發的資料進行打包,然后自己定義幀頭幀尾,以及資料位,

??那么在用的時候,先初始化一個串口然后在函式中定義個全域變數就可以了,我們直接看代碼:
from machine import UART
import ustruct
uart = UART(2, baudrate=115200, rx=13,tx=12,timeout=10)
def sending_data(cx,cy): #發送函式
global uart;
data = ustruct.pack("<bbhhb",
0x2C,
0x12,
int(cx),
int(cy),
0x5B)
uart.write(data);
if __name__ == '__main__':
while True:
if uart.any():
# 如果有資料 讀入一行資料并轉化為int型別
bin_data = int(uart.readline())
if bin_data==1:
cx=110
cy=111
sending_data(cx,cy); #發送點位坐標
print(str(12))#PC除錯測驗,不需要時候可以刪掉
elif bin_data==2:
cx=120
cy=121
sending_data(cx,cy); #發送點位坐標
print(str(13))#PC除錯測驗,不需要時候可以刪掉
else:
print(str(10))#PC除錯測驗,不需要時候可以刪掉
??這里的代碼不拘泥于設備,無論是ESP32還是K210,只要用micropython就可以使用它來進行串口通信,應用范圍還是比較廣的,
??當我們發送端寫完了,還有就是單片機的接收端,這里無論是STM32還是TI的MSP432,在測驗了很多次后都可以使用,可以說是做車的話就打通了影像識別和主控芯片的大門,利用一個陣列就可以決議某個物體的坐標或者特征值了,

??關于決議端的代碼可以在后臺回復【串口決議micropython代碼】,更多問題想要一起交流的可以在后臺找我們呦.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/402537.html
標籤:其他
