2023/6/16

TI mmWave python : send config file

send config file 抄這篇
import serial
import time

serialControl = serial.Serial("/dev/ttyUSB1",115200,timeout=0.01)

with open(configFilePath, "r") as configFile:
    for configLine in configFile.readlines():
        # Send config value to the control port
        serialControl.write(configLine.encode())
        # Wait for response from control port
        time.sleep(0.01)
        echo = serialControl.readline()
        done = serialControl.readline()
        prompt = serialControl.read(11)
        print(echo.decode('utf-8'), end='')
        if verbose:
            print(done.decode('utf-8'))
            print(prompt.decode('utf-8'))
time.sleep(0.01) 很重要,不然會送得太快,chip 後來會掉字。
另外, cfg file 是 dos 還是 unix 格式都沒關係。 (\r\n or \n)。

encode, decode 是要做 字串 對 byte 之間的轉換。

open serial port 時,加上 timeout=0.01 是為了之後 readline( ) N 次的關係。
如果不加 timeout,readline 為卡住,一直到有資料輸出。
在 command error 的時候,就只有 Error 跟 prompt,少一次 Done。

TI Example, Lab 中的code,雖然都是用 cfg file, cfg command。
但是每個 Example. Lab support 的 command 不一樣。


dataport 沒有資料。
查一下是不是command 有錯。

sdk 的 util/cli.c 的 CLI_task 負責 control console
task 從 configurPort 讀取後,先和 gCLI.cfg.tableEntry[] 找 match cmd.
如果沒有,再交給 CLI_MMWaveExtensionHandler( ) 處理。
再沒有,就是 "not recognized as CLI command"

其中 * gCLI.cfg.tableEntry[] 是每個 example 自己定義的 command * CLI_MMWaveExtensionHandler 裡面使 mmwave SDK 內建的 command 錯誤的command 好像不會對程式造成影響...

結果:

送出 cfg command 時,要 delay,即使已經有收到 Done, 跟 prompt,還是要 delay 一下。
使用 matlab 的 script 在 windows 7 上 run,可能每個 step run 起來比較慢。所以 OK
在 linux 用 python 跑就會太快了,要再每個 command 送出後做 time.sleep(0.01),另外做 sensorStart 之前也要 delay 久一點。
實際有沒有成功,可以用 sensorStar 的回應來看,如果 OK, sensorStart 後,一樣會回答 Done,然後出現 prompt等待command。
這種狀況下 Dataport 才會有輸出。

沒有留言:

張貼留言