New Ribbon
網路開店×拍賣王:蝦皮來了! 用Photoshop玩影像設計比你想的簡單:快快樂樂學Photoshop CC(第二版) 翻倍效率工作術-不會就太可惜的Google超極限應用(第三版) 翻倍效率工作術:不會就太可惜的Excel 必學函數(第二版) 翻倍效率工作術–詢問度破表的Office職人技500+ iOS 11+iPhone 8 / 8Plus / X / iPad 完全活用術:225個超進化技巧攻略 翻倍效率工作術:不會就太可惜的Excel+Power BI 大數據視覺圖表設計與分析 會做簡報就會製作跨平台 App:Smart Apps Creator 3 超神開發術 快快樂樂學威力導演15 - 影片/MV剪輯活用情報特蒐 Excel 2016高效實用範例必修16課-善用資料圖表 x 函數巨集的精算達人 中老年人快樂學電腦(Windows 10+Office 2016) 中老年人快樂學Facebook+LINE 翻倍效率工作術:不會就太可惜的Excel必學圖表

 

  藍牙字串

黃逸軒

黃逸軒
更新時間:2017/2/10 下午 06:32:20

 

老師您好:

請問我想從藍牙接收到的資料字串指判斷字串裡的第幾byt的數字 請問辦的道嗎?

一般的教學只能判斷完整的資料!!
麻煩老師解答了  謝謝~~

文淵閣工作室

文淵閣工作室
更新時間:2017/2/13 上午 07:08:08

 

您指的是何種軟體或語言?

黃逸軒

黃逸軒
更新時間:2017/2/13 上午 08:51:39

 

App inventor

黃逸軒

黃逸軒
更新時間:2017/2/13 上午 09:33:22

 

您好我付上圖片解說應該會比較清楚:

https://drive.google.com/file/d/0B4fXUyr-Ii9QWnZlUlZyUkt3Y3c/view?usp=sharing

在取得位元組數那邊想變成如上次所提到只想讀到一串資料中的第幾個固定數字能做到嗎?

另外詢問一下 藍牙是否本身就無法知道對方斷開連線?! 雖說程式有固定的去偵測它連線狀態 但試著將另一端關閉後 我手機卻沒顯示斷線訊息呢!!

文淵閣工作室

文淵閣工作室
更新時間: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:29

 

一、您可以在 Server 端 Show 出 Client 清單,或是以訊息顯示 Client 已連線的狀態。

二、若 Client 連線中斷,Sever 端讀取資料時會產生錯誤,並觸發 Screen1.出現錯誤 事件,您可以利用這個事件進行處理。

黃逸軒

黃逸軒
更新時間:2017/2/22 下午 12:12:33

 

老師您好:

再請教一下
(要讀取字串資料中的部份資料可以使用 segment 拼塊。
segment(text,start,length) 會從 text 字串的 start 開始擷取 length 字元。
例如: segment("applepie",6,3)  會得到 "pie" 字串。)


這問題是解決但卻有多出另一個新問題 就是當收到藍牙資料頻率太快就會跳出錯誤訊息 如圖:
https://drive.google.com/file/d/0B4fXUyr-Ii9QTDNtUVdtb0h0RDQ/view?usp=sharing

請問是哪裡出問題呢?

PS.我每一筆收到的資料大概在100多字元  我想判斷地23字元是否是我想要的

黃逸軒

黃逸軒
更新時間:2017/2/24 下午 04:58:56

 

問題已解決  感恩!!

文淵閣工作室

文淵閣工作室
更新時間:2017/2/27 上午 09:42:20

 

讚!
前幾天出去上課,未處理您的問題,恭喜您已解決問題。

黃逸軒

黃逸軒
更新時間:2017/4/7 下午 03:56:48

 

老師您好:
想再請教一下藍牙連線方面書本上是用到清單選擇器,選擇好之後按連線扭去連接選擇的裝置。

那請問能做到我不想靠選擇器選擇,按連線按鈕就能連到我想要連的已配對裝置嗎

雖然有想過用address設定,但每個藍牙裝置都有他獨有的address,所以看能不能用名稱的方式判斷

例如:
王小明的手機裝置(在手機上已配對的藍牙裝置)
之後我只要按連線按鈕他就能搜尋我裝置上以配對的選單中有(王小明)的關鍵字就跟他連線呢!!



文淵閣工作室

文淵閣工作室
更新時間:2017/4/10 上午 09:41:29

 

您好:
最簡單的方式,點選 設定\藍牙\藍牙裝置\重新命名 將藍牙取個好辨識的名稱。

或者事先取得 address 字串,將 address 字串組成清單,再對照到 另一個 裝置名稱 的對照表。

因為解說不易,這兩個範例給您參考。<ex_BlueTooth_addr.aia>、<S4ABT_Conncction_ex.aia>

下載網址:

https://www.dropbox.com/s/gtohkv91pmcrrqa/ex_BlueTooth_addr.aia?dl=0

https://www.dropbox.com/s/ngq0eeco7gmiaxz/S4ABT_Conncction_ex.aia?dl=0

黃逸軒

黃逸軒
更新時間:2017/4/10 上午 11:38:43

 

首先非常感謝老師提供的兩個範例程式!!

1.如果使用最簡單的方式改名稱,但發現藍牙拚塊只有連線(位置)卻沒連線(名稱)
那該如何解決呢?

2.老師提供的這兩個範例雖然連線的方式不同 但還是都免不了需要用手動選擇!!
如:第2範例點了連線按鈕後還是會跳到ListPicker選擇!! 而我想的是 點連線按鈕就能自己去連我指定以配對的藍芽裝置名稱

文淵閣工作室

文淵閣工作室
更新時間:2017/4/10 下午 05:39:03

 

將 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:39

 

您好:
以 <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:19

 

我們直接鎖定您的需求,要以 BluetoothClient1.AddressesAndNames 取得所有的藍牙裝置,也就是 <S4ABT_Connection_ex>示範,這時傳回的是 位址和名稱組成的清單,但因為名稱無法更改,所以無法完成您的需求。

以前研究 Arduino 時,可以燒錄更改藍牙名稱的程式(.ino)到 Arduino 控制板 (但中文名稱我沒有試過),再將藍牙插入 Arduino 的藍牙插槽中燒錄達成,另一個方法則可以使用 Arduino Serial Command 的 AT 指令更改藍牙名稱,不過這些方法您都必須對 Arduino 有一定的了解。

楊千毅

楊千毅
更新時間:2018/4/17 上午 10:07:40

 

老師您好:
關於上面要讀取字串資料中的部份資料可以使用 segment 拼塊。
segment(text,start,length) 會從 text 字串的 start 開始擷取 length 字元。
例如: segment("applepie",6,3)  會得到 "pie" 字串。
我做的是2進制8個數字的判斷但ai2的2進制會自動消除前面的0例如:00111111會變成111111,我想問的是有辦法固定字串嗎?




 

 

Re:藍牙字串

請輸入姓名。

已超出字元數目的最大值。


請輸入電子郵件。

格式無效。


請輸入內容。