最近開始嘗試使用USB to UART或是藍芽 to UART傳輸資料給MCU, 目前已經可以正確的
讓PC跟MCU傳輸/接收資料了,不過要完成應用還有一些部份沒什麼經驗要怎麼做,想跟
大家請教一下。
問題一:
我研究了一下arduino的serial bootloader,發現它是用接收到的第一個字元來決定接
下來做什麼事情,比方說:
第一個字元接收到'A'就依下一個接收到的字元回送不同的version資訊。
第一個字元接收到'U'就把下兩個接收到的byte當成address。
依此類推,並且回送都會以0x14開頭、以0x10結尾。
如果我要做自己的應用,像是上述這些定義我隨自己喜好定義就好嗎?還是有一定的規
範呢?比方說回送資料以0x14開頭、以0x10結尾可以依自己喜好改成其他數值之類的?
問題二:
UART device在PC上會被顯示成COM 1、COM 2...COM N,編號似乎沒有一定規則,我要
怎麼知道我的device是哪個COM port呢?目前想到兩種方案:
1. 在PC UI上讓使用者自己選COM port。
arduino IDE就是採用這種方式,不過這有點不人性化,事實上我就常常忘記選或是選
錯。對一般電腦知識較淺的使用者而言要開裝置管理員找到正確的COM port也不是這麼
容易。
2. 在device裡設計一個回送自己ID的命令,然後PC端軟體執行時對所有COM port的
device送出詢問命令,只要回答的ID正確就表示它是我要通訊的device。
這方法克服方法1的缺點,可是針對所有COM port送東西這點好像有點怪怪的,如果保
護做的不夠周全,感覺有可能會有某個device把我送的東西當成給它的資料而產生奇
怪的行為?
以上兩個問題希望能有先進分享經驗,謝謝。