多從機MultiCentral例程下,在接收到從機數(shù)據(jù)(從機發(fā)送數(shù)據(jù)頻率20ms9個字節(jié))后,我會定時(6S)向從機發(fā)送一幀數(shù)據(jù)(6個字節(jié))。發(fā)送幾次之后,就不會再發(fā)送了。經(jīng)過排查得知,發(fā)送數(shù)據(jù)函數(shù)返回0x16事務(wù)掛起,接著又返回0x17上一次事務(wù)超時。想知道這會是什么原因引起的,該如何解決。
在主機與從機連接的例程中,從機會默認給主機發(fā)送0x88的數(shù)據(jù),主機會默認給從機發(fā)送0x5A的數(shù)據(jù)(只發(fā)送一次)。你這里的操作應(yīng)該是主機先接收從機數(shù)據(jù),接收到數(shù)據(jù)后主機再發(fā)送數(shù)據(jù)給從機。
主機端在Receive noti后,調(diào)用TMOS任務(wù)進行發(fā)送的處理。
從機端接收主機數(shù)據(jù)也是同理處理。
是的,我就是在接收到從機數(shù)據(jù)后就向從機發(fā)送數(shù)據(jù)。其實就是就是按照例程修改的,只不過例程是發(fā)送一個字節(jié),我需要發(fā)送多個字節(jié)。
只是在發(fā)送幾次之后,就不再發(fā)送了。
打印GATT_WriteLongCharValue的返回值為0x16/0x17。
麻煩幫忙看一下??!
1、建議在例程上修改,默認的程序是發(fā)送1個字節(jié),你也先嘗試1個字節(jié)驗證是否出問題,然后逐次增加;
2、增加大連接間隔
BLE廣播間隔和連接間隔(CH573) - SweetTea_lllpc - 博客園 (cnblogs.com)
3、增大MTU
http://www.findthetime.net/bbs/thread-89965-1.html
?
根據(jù)您提供的思路,我直接使用MultiCentral例程進行測試。由于從機是一個透傳模組,所以在GATT服務(wù)部分做了一些修改。但是還是一樣的現(xiàn)象,發(fā)送幾次之后,也是不再繼續(xù)發(fā)送,打印GATT_WriteLongCharValue的返回值為0x16/0x17。
麻煩幫我看一下,該如何解決。
目前使用的是什么版本的庫,建議使用最新版的庫進行測試。
我看打印的顯示是V1.3.0版本的,最新的版本是1.5的吧,8.31發(fā)布的是吧。
不太清楚你這邊使用的是哪款芯片,可以對應(yīng)下載以下鏈接的開發(fā)包,可以替換lib庫,也可在新例程上進行修改。
http://www.findthetime.net/downloads/CH573EVT_ZIP.html