看板 ASM 關於我們 聯絡資訊
最近開始嘗試使用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把我送的東西當成給它的資料而產生奇 怪的行為? 以上兩個問題希望能有先進分享經驗,謝謝。 -- 使用MCU快10年了才第一次用上UART...XD -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.72.212.239 ※ 文章網址: https://www.ptt.cc/bbs/ASM/M.1470789397.A.8F3.html ※ 編輯: icetofux (211.72.212.239), 08/10/2016 08:38:27
chuegou: 第一個protocol 看你應用 自己要用自己定也行 08/10 08:45
那有一般常用的protocol可以參考嗎?比方說protocol名稱之類的,我想找資料來看。
chuegou: 只是要考慮未來有人跟你要protocol來連線 08/10 08:46
chuegou: 第二個 這叫virtual com port 是usb的裝置類型 要改可能 08/10 08:48
chuegou: 連PC driver都要改? 08/10 08:48
chuegou: 問題2-2 因為USB有product id(pid) 很難撞到 08/10 08:51
※ 編輯: icetofux (211.72.212.238), 08/10/2016 10:59:36
chuegou: 我是覺的modbus之類的工控協定滿常見的 但是要架也很搞 08/10 12:17
chuegou: 剛 08/10 12:17
chuegou: 如果是一般要用 你提到的就ok了 再加個checksum之類也行 08/10 12:39
a9d9: 你可以去了解半導體通訊協定,對你有幫助 08/17 20:50