2014-03-26 99 views
1

我需要通過藍牙串行鏈路傳輸多個8字節數據包。我正在使用JY MCU藍牙串行模塊。在PC端,我有一個C#應用程序正在運行,與COM端口進行通信。使用C#通過藍牙串行模塊傳輸數據

考慮到115200波特,每個8字節的數據包應該花費8 * 8/115200 = 0.555毫秒。

問題是,每4個數據包中有一個需要39毫秒的時間才能完全破壞所有的時間。

對於測量次數,我使用.net框架的秒錶組件。從C#應用 輸出:


試樣#583:39.126841990471毫秒

試樣#584:0.7883273789593毫秒

試樣#585:0.93885067781563毫秒

試樣#586:0.884708368788226毫秒

樣品#587:8.65278575619526 ms

樣品#588:1.05558303203074毫秒

樣品#589:0.870116824511337毫秒

樣品#590:0.888932236868378毫秒

樣品#591:39.0876752137277毫秒

樣品#592:1.02639994347697毫秒

樣品#593:0.820198383564084 ms

樣品#594:0.960737994230964毫秒

試樣#595:15.2051571125331毫秒


注意,每個樣品含有8個字節的數據

+0

如果降低波特率,一致性會提高嗎?在類似的說明中,當我切換到使用bt 4.0時,我注意到更好的連接時間。您是否在主機和客戶端上使用相同的bt版本? –

+0

該模塊的波特率不能用軟件改變。我明天將訪問實驗室,看看一致性是否發生變化。 現在不太瞭解bt版本:( – Faisal

回答

0

教條#1:沒有這樣的東西作爲一個保證定時在藍牙世界。

只要考慮一個丟幀的設備(例如,因爲您的微波爐剛打開) - 將幀理解爲丟失的時間非常可觀。此外,第一個樣本中顯示的連接/斷開連接冗長。如果其中一個設備使用例如一個藍牙鼠標或可發現,所有投注都關閉。長話短說:藍牙消息沒有一致的定時 - 如果你想保持定時信息,在你的有效載荷中包括一個時間戳。

+0

Thanx的建議。 但爲什麼每4個數據包顯示重大錯誤?我在想,添加一個緩衝區或類似的東西可能會改善時間? 實際上,這個C#應用程序正在模擬腦電圖設備,所以計時非常重要。 – Faisal

+0

如果無線連接,真正的EEG設備會將樣本的時間戳與樣本一起發送,這完全是因爲無線無法保證時間。 –

+0

好的。但爲了在每個數據包中添加更多的數據,我需要增加波特率。你能建議我如何超越115200?如果我可以以1382400 bps進行通信,情況會更容易。 (雖然它是一個虛擬的COM端口,但C#不允許我在高於115200的任何端口上打開COM端口) – Faisal