fb-script

2015年10月21日 星期三

iOS swift 2 使用 CocoaAsyncSocket 建立 TCP byte array 通訊

AsyncSocket 下載位置
因為專案是 swift 專案,要使用 objecitive-c 的函式庫要在 Header 檔中 import

1.複製AsyncSocket.mAsyncSocket.h 到專案中,xcode 會問你是否建立 Bridge file,確定建立
2.在 你的專案名稱-Bridging-Header.h檔中加入#import "AsyncSocket.h"
3.建立連線物件var socket: AsyncSocket = AsyncSocket(delegate: 委派對象)

2015年10月20日 星期二

iOS NSData 轉 UInt8 array

extension NSData {
    func getByteArray() -> [UInt8]? {
        var byteArray: [UInt8] = [UInt8]()
        for(var i = 0;i < self.length; i++) {
            var temp: UInt8 = 0
            self.getBytes(&temp, range: NSRange(location: i, length: 1))
            byteArray.append(temp)
        }
        return byteArray
    }
}

iOS CoreBluetooth swift 2 連線客製化藍芽 BLE 模組 - ( 3 ) 通訊

終於到的這個階段
這階段主要目的是要得知哪幾個特徵值是和客製化藍芽裝置通訊的介面,在上一階段可以看到每個 characteristic 的 property 屬性有些一權限,例如 Read / Wirte / Notify … 等等

2015年10月19日 星期一

iOS CoreBluetooth swift 2 連線客製化藍芽 BLE 模組 - ( 2 ) 連線

要和藍芽裝置進行連線,需要幾個物件來實作
1. 掃描到藍芽裝置時的 centralManager
2. 藍芽裝置的 peripheral

所以先加入一個新的 ViewController 在點擊 tableView 的時候去切換 segue,並把 centralManger 和要連線的藍芽 peripheral 送過去

這邊建立一個 BTDeviceConfigViewController 的 ViewController 和對應的 storyboard 視圖

2015年10月12日 星期一

iOS CoreBluetooth swift 2 連線客製化藍芽 BLE 模組 - ( 1 ) 掃描

1.先拉一個 UIViewController 並用 NavigationController embed 起來,在 Navigation Bar 上面加個 title 和 UIBarButtonItem,這邊是選擇 Refresh 的 System Item 樣式,並且在剩下的範圍加上一個 UITableview 當作掃描後顯示藍芽裝置的列表

iOS CoreBluetooth swift 2 連線客製化藍芽 BLE 模組 - ( 0 ) 大綱

使用 CoreBluetooth 連線可以大致分為幾個步驟

1.掃描
這個步驟主要是掃描周邊有哪些藍芽裝置,在這個步驟會拿到藍芽裝置的 UUID、Name、RSSI 和是否可以連線
2.連線並獲得服務資訊
選定某個裝置連線後,獲得該裝置所提供的服務(CBService),並使用服務獲得可以對藍芽裝置做 io 的特徵值(CBCharacteristic)
3.找出可以寫入裝置的特徵值
依照特徵值的屬性或UUID來判斷那個特徵值可以寫入給藍芽模組
4.找出可以獲得裝置回傳的特徵值
依照特徵值的屬性或UUID來判斷那個特徵值獲得模組的 Notify 事件

下一篇 iOS CoreBluetooth swift 2 連線客製化藍芽 BLE 模組 - ( 1 )

2015年10月2日 星期五

javascript 中的匿名函式初始化 (function(){})() 是什麼意思

先來看看 function 的宣告不同的地方

  1. function funcA() {}
  2. var funcA = function(){}

這兩種基本上是一樣的,差異在於,第二種寫法是變數寫法,所以在宣告前使用會出現尚未宣告的錯誤,意思這樣

funcB(); //使用 funcB
var funcB = function(){}; // 宣告 funcB,因為是變數所以需要加分號結尾。

這樣的用法會出現 Uncaught TypeError: funcB is not a function