當TX和RX引腳連接到我的HC-05模塊上傳代碼到我的Arduino時,一串隨機字符被髮送到TX緩衝區,當我連接到設備,這些字符被髮送並弄亂了通信。上傳代碼後有沒有辦法清除這個緩衝區?每當我上傳時我都會斷開電線,但我想找一個更簡單的方法。謝謝!在代碼上傳過程中發送給藍牙TX的Arduino隨機字符
0
A
回答
1
好吧,如果你使用串口同時發送數據和過程的程序,你會看到它在BT的另一邊......可能的解決方案:每次
- 斷開藍牙模塊當你需要編程Arduino
- 關閉HC-05(或將其保持在復位狀態),直到arduino說,你要編程Arduino
- 關閉另一個BT設備(或只是斷開它)它正在進行通信(因此在程序開始時使用GPIO來控制復位引腳或晶體管爲BT供電)
- 在HC-05和Arduino串行端口之間使用一個3狀態驅動(一個驅動用於TX,另一個用於RX),並在arduino程序開始時激活其輸出。
我不喜歡djUniversal的解決方案,因爲您無法控制PC傳輸的內容;例如,如果您決定使用字節0xAA來指示傳輸開始,那麼如果PC發送0xAA,另一個設備認爲Arduino正在傳輸。選擇更長的字節序列會有所幫助,因爲序列變得不太可能,但是.....
此外,您必須在EVERY命令上發送它,而不僅僅是在開始時,因爲您必須重置arduino以對其進行編程(因此其他設備不知道何時停止考慮數據)。
1
唯一的解決方法是每次發送一個可能有幾個字節的頭部來發送消息。另一個程序可以在開始執行命令之前等待這些字符。在從緩衝區中讀取這些字符之前,您只需執行一個Serial.read()循環來擺脫垃圾。另外,如果垃圾中的字符會讓你的程序非常糟糕,那麼你可能需要考慮創建一些粗略的校驗和來確認正確的傳輸。
需要幫助編碼?讓我知道。
相關問題
- 1. 如何通過藍牙從android手機發送字符到arduino?
- 2. 通過藍牙發送簡單字符串的Android示例藍牙代碼
- 3. 發送消息從Arduino通過藍牙傳送到Windows Phone 8
- 4. 通過藍牙發送字符
- 5. 如何發送字符到arduino使用藍牙
- 6. 我可以直接通過藍牙發送arduino程序嗎?
- 7. 在Android中通過藍牙發送字符串(字節)
- 8. 機器人發送和通過藍牙
- 9. Firmata通過藍牙在Arduino上?
- 10. 通過Android上的藍牙發送字符?
- 11. 通過藍牙傳輸數據到arduino
- 12. Android藍牙編程:通過藍牙將事件/數據從藍牙耳機發送到Android手機。
- 13. 通過藍牙發送一個字節
- 14. 藍牙 - tx電源和rssi
- 15. Android藍牙發送文字
- 16. 通過藍牙發送內容的代碼?
- 17. Arduino藍牙連接給我上傳錯誤
- 18. Arduino通過藍牙向Android應用(App Inventor 2)發送Junk值
- 19. 通過藍牙將圖像從arduino發送到android
- 20. 通過藍牙發送String + Int數據Arduino
- 21. Android通過藍牙向Arduino發送數據
- 22. 通過藍牙串行發送數據從arduino
- 23. 如何通過藍牙將通知從arduino發送到iPhone?
- 24. Arduino未形成藍牙連接/從arduino發送sensordata到android
- 25. 如何通過藍牙將實時數據流從Arduino發送到手機
- 26. 如何通過藍牙在android上發送幾個字節?
- 27. 在Android中通過藍牙發送音頻文件(到耳機)
- 28. Android使用AVRDUDE通過藍牙將草圖上傳到Arduino
- 29. 如何通過android上的藍牙發送字節數組?
- 30. 如何通過Java中的藍牙向手機發送短信?
一個兩字節的序列通常應該足夠了。除非他正在推動傳輸數據的極限,否則這應該與他的效率差不多。我之所以建議我做的是因爲他說垃圾價值有負面影響。如果在日常傳輸過程中發生數據損壞(在正常範圍內)會怎麼樣?頭文件和檢查將使整體代碼更加健壯。 – djUniversal 2014-11-06 23:02:46
我目前在每次傳輸開始時都有1個字節的標題,以確定它是哪種類型的命令。我已經試過在程序加載之前不能連接,但即使我以後連接了手機,它也會收到Arduino發送的連接字符。此外,看起來垃圾字符串每次都是相同的,所以我可以在Arduino設置上發送一個命令,該命令在字符串中找不到,表示它已被加載。不過,現在,我將使用重置引腳。謝謝(你的)信息! – 2014-11-13 13:55:54