藍牙字串 |
|
黃逸軒
更新時間:2017/2/10 下午 06:32:20 |
|
老師您好:
請問我想從藍牙接收到的資料字串指判斷字串裡的第幾byt的數字 請問辦的道嗎?
一般的教學只能判斷完整的資料!! 麻煩老師解答了 謝謝~~ |
|
|
|
文淵閣工作室
更新時間:2017/2/13 上午 07:08:08 |
|
您指的是何種軟體或語言? |
|
|
|
黃逸軒
更新時間:2017/2/13 上午 08:51:38 |
|
App inventor |
|
|
|
|
文淵閣工作室
更新時間:2017/2/14 上午 09:27:16 |
|
您好: 感謝您的支持。 要讀取字串資料中的部份資料可以使用 segment 拼塊。 segment(text,start,length) 會從 text 字串的 start 開始擷取 length 字元。 例如: segment("applepie",6,3) 會得到 "pie" 字串。
藍牙通訊當 client 斷線時,並不會觸發 Server 的事件,因此實際上 Server 並不知道 client 已經斷線,但可以使用特殊的技巧,即在 client 未斷線前先送一個辨識的指令如 ClientDisconnect 給 Server,當 Server 收到此 ClientDisconnect 指令即知道 client 將要斷線了。 我們的書中有提到這個技術 |
|
|
|
黃逸軒
更新時間:2017/2/14 上午 10:18:37 |
|
非常感謝老師的解惑 也說明得很詳細
以解決我主要的問題!!
另外老師您說的技巧是指ButtonDisconnect功能嗎?
但因我手機是與一台只有藍芽模組的設備連接,連接使用後如果當只有藍芽模組那端發生非人為斷線(如斷電.無開機狀態) 我手機這端能知道對方已關機嗎?
Ps.因怕使用者(手機端)無法得知其實已經沒與設備溝通了 (但手機介面還保持連線中!!)
|
|
|
|
文淵閣工作室
更新時間:2017/2/15 上午 09:40:28 |
|
一、您可以在 Server 端 Show 出 Client 清單,或是以訊息顯示 Client 已連線的狀態。
二、若 Client 連線中斷,Sever 端讀取資料時會產生錯誤,並觸發 Screen1.出現錯誤 事件,您可以利用這個事件進行處理。 |
|
|
|
|
黃逸軒
更新時間:2017/2/24 下午 04:58:55 |
|
問題已解決 感恩!! |
|
|
|
文淵閣工作室
更新時間:2017/2/27 上午 09:42:20 |
|
讚! 前幾天出去上課,未處理您的問題,恭喜您已解決問題。 |
|
|
|
黃逸軒
更新時間:2017/4/7 下午 03:56:48 |
|
老師您好: 想再請教一下藍牙連線方面書本上是用到清單選擇器,選擇好之後按連線扭去連接選擇的裝置。
那請問能做到我不想靠選擇器選擇,按連線按鈕就能連到我想要連的已配對裝置嗎
雖然有想過用address設定,但每個藍牙裝置都有他獨有的address,所以看能不能用名稱的方式判斷
例如: 王小明的手機裝置(在手機上已配對的藍牙裝置) 之後我只要按連線按鈕他就能搜尋我裝置上以配對的選單中有(王小明)的關鍵字就跟他連線呢!!
|
|
|
|
|
黃逸軒
更新時間:2017/4/10 上午 11:38:42 |
|
首先非常感謝老師提供的兩個範例程式!!
1.如果使用最簡單的方式改名稱,但發現藍牙拚塊只有連線(位置)卻沒連線(名稱) 那該如何解決呢?
2.老師提供的這兩個範例雖然連線的方式不同 但還是都免不了需要用手動選擇!! 如:第2範例點了連線按鈕後還是會跳到ListPicker選擇!! 而我想的是 點連線按鈕就能自己去連我指定以配對的藍芽裝置名稱
|
|
|
|
文淵閣工作室
更新時間:2017/4/10 下午 05:39:02 |
|
將 call BluetoothClient1.Connect 拼塊的 address 參數直接填上 address 字串,就是直接連接指定的藍牙。範例中有引導怎麼取得 address 字串。 |
|
|
|
黃逸軒
更新時間:2017/4/11 上午 11:10:42 |
|
不好意思我有點搞混,請問範例引導怎麼取得 address 字串,適合我的要求是參考<ex_BlueTooth_addr.aia>這個範例嗎
我看完的理解是: 需要先把我以配對的裝置先轉成清單,在檢查哪個清單項的文字中有包含我指定的名稱嗎?
|
|
|
|
黃逸軒
更新時間:2017/4/11 上午 11:45:54 |
|
可能比較不懂的地方在:
例:我已配對裝置有5個,先把它轉成清單 那在這5個清單項我要如何判定哪個清單項的文字有包含我指定的文字,再而去連那個清單項!! |
|
|
|
文淵閣工作室
更新時間:2017/4/11 下午 06:22:38 |
|
您好: 以 <ex_BlueTooth_addr.aia>為例,NameList 就是您的藍牙裝置名稱,addresslist 就是對應的 address 字串,當點選 Spinner 的選項後,會依 索引值(SelectionIndex) 從 addresslist 清單中取得對應的 address 字串,LabelAddr 就是這個 address 字串。 最後再將這個 address 字串放入 call BluetoothClient1.Connect 拼塊的 address 參數中。
addresslist 字串中的 address 字串,必須手動取得後設定。 |
|
|
|
黃逸軒
更新時間:2017/4/12 上午 10:14:35 |
|
老師您好: 請問所以當開啟此APP後,要與指定的藍牙連線,一開始還是需得按Spinner做選擇嗎? 因為我看不出範例裡面哪裡有可以去判斷我配對過的裝置裡,它如何去連線我指定的那個裝置!!
另外(addresslist 字串中的 address 字串,必須手動取得後設定) 這部分範例是[address1][address2][address3],手動取得是只要自己改成我想要連的裝置Adders字串?
|
|
|
|
文淵閣工作室
更新時間:2017/4/13 上午 11:37:11 |
|
首先必須取得 address 字串,例如:我的藍牙名稱是 HC-06_CHIOU,它的 address 字串是 20:14:04:17:28:35
將 call BluetoothClient1.Connect 拼塊的 address 參數直接填上這個字串,就可直接連接指定的藍牙。
即 call BluetoothClient1.Connect(20:14:04:17:28:35)
至於連接的時機,例如:在 Screen1.initial 時應用程式啟動時開啟,或是 按下 button 時開啟,您可依自已的需求而訂。 |
|
|
|
黃逸軒
更新時間:2017/4/13 下午 01:28:10 |
|
感謝老師的解答: 但正如老師所說的也是我疑惑所在,因每台藍牙設備都有他獨有的address,如這樣設定就只能綁定一個設備,而我疑問的是否能用藍牙名稱而不要靠位址判定呢?
如我手機已配對裝置名稱如下:[HC-06_CHIOU] [HC-06_LEE] [HC-06_Syuan] 我程式判定藍牙名稱有包括[HC-06] 的裝置就去跟他連線。 |
|
|
|
文淵閣工作室
更新時間:2017/4/13 下午 03:14:18 |
|
我們直接鎖定您的需求,要以 BluetoothClient1.AddressesAndNames 取得所有的藍牙裝置,也就是 <S4ABT_Connection_ex>示範,這時傳回的是 位址和名稱組成的清單,但因為名稱無法更改,所以無法完成您的需求。
以前研究 Arduino 時,可以燒錄更改藍牙名稱的程式(.ino)到 Arduino 控制板 (但中文名稱我沒有試過),再將藍牙插入 Arduino 的藍牙插槽中燒錄達成,另一個方法則可以使用 Arduino Serial Command 的 AT 指令更改藍牙名稱,不過這些方法您都必須對 Arduino 有一定的了解。 |
|
|
|
楊千毅
更新時間:2018/4/17 上午 10:07:39 |
|
老師您好: 關於上面要讀取字串資料中的部份資料可以使用 segment 拼塊。 segment(text,start,length) 會從 text 字串的 start 開始擷取 length 字元。 例如: segment("applepie",6,3) 會得到 "pie" 字串。 我做的是2進制8個數字的判斷但ai2的2進制會自動消除前面的0例如:00111111會變成111111,我想問的是有辦法固定字串嗎? |
|
|
|
Louis Lee
更新時間:2018/11/19 上午 01:14:59 |
|
老師您好!我想請問 若是想用app inventor 寫一個透過藍芽傳送訊息給樹莓派3讀取的app 該注意些什麼呢? 因為我寫好的app在選擇清單找到樹莓派後 按下連接 卻顯示無法找到裝置 |
|
|
|
文淵閣工作室
更新時間:2018/11/19 上午 09:20:31 |
|
您好,我們並沒有連線到樹莓派3的範例,也沒有相關設備,這部份可能就沒有辦法回答您了,很抱歉。 |
|
|
|