簡體   English   中英

Android 藍牙串口/RFCOMM/SPP,如何更改波特率?

[英]Android Bluetooth Serial/RFCOMM/SPP, How to Change the BAUD RATE?

這非常令人沮喪,因為我已經嘗試了數周,甚至在互聯網上都沒有任何線索。

我正在研究一個在不同農業硬件上讀取/寫入藍牙串行數據的項目。

這些硬件中的大多數都是舊的,並且無法更改其 SPP 的波特率。

我使用 android 藍牙聊天作為讀/寫的基礎,我只更改了 UUID 以允許連接到我擁有的設備

我已經成功地以 19,200 的糟糕速率從標簽閱讀器中讀取,並且格式很好

但是,我現在被波特率 9,600 的刻度卡住了,並且在我的應用程序中顯示有趣的字符,甚至不接近應該來自刻度的格式

這個項目以前是在舊的 Windows Mobile 上完成的,波特率可以在他們的 API 中改變

有沒有辦法在 Android 中做到這一點,還是我在叫錯樹?

編輯:修正了一些錯誤。

互聯網上沒有關於此的好的信息——而且很多信息都是錯誤的——不要相信任何人!

特別是,這兩件事是正確的:

  • RFCOMM 和 SPP(串行端口配置文件)是同一事物的兩個名稱。 (然而,它們之間的關系非常密切。)
  • 無需設置 RFCOMM / SPP 連接的波特率。

這是我發現的:

藍牙串行連接按照 SPP 中的描述使用RFCOMM進行。 RFCOMM 是一個在 L2CAP 上運行的連接,允許以幀的形式發送串行數據和控制參數。 它在很大程度上基於稱為TS 07.10的古老標准。 SPP 是藍牙配置文件。

此成幀還允許您發送帶外數據,用於控制串行信號(DTR、CTS 等)和設置波特率

從 SPP 規范:

DevA 可以直接在 DLC 建立之前使用遠程端口協商命令通知 DevB 的 RS232 端口設置。 如果 RFCOMM 適配層的 API 公開了這些設置(例如波特率、奇偶校驗),則需要這樣做。

可悲的是,Android 根本沒有公開此功能。 我想可以自己發送遠程端口協商命令,但我很確定這需要重新實現 RFCOMM,這需要訪問我們沒有的L2CAP

遠程端口協商命令第 31 頁有詳細說明。 注意“所有參數都分配了默認值,如果不執行協商,則選擇默認值。”

因此,無法在 Android 上根據需要設置波特率。 它將使用您的藍牙適配器使用的默認波特率(可能是 9600)。

另請注意,Windows確實支持設置藍牙適配器的波特率。

大概一些藍牙到串行轉換器連接到舊設備? 如果是這樣,您應該能夠對其進行一次編程以始終使用特定的比特率。 那么藍牙客戶端就不需要設置比特率了……

齊吉 你怎么能這樣? 我無法理解

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM