fb-script

2015年11月1日 星期日

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

終於把專案整理了一下

這邊小解釋一下,其他還有問題就留言我盡量幫忙看看囉

首先我把專案設計成三個 ViewController,分別處理不同的事情,如下圖

在 ViewController1 和 ViewController2 的列表 item 如下兩圖

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

2015年9月19日 星期六

iOS平滑移動切換 ViewController,使用 Storyboard、ScrollView、Container View、AutoLayout

這次要介紹一個讓 ViewController 之間像平滑移動相片的方式來切換顯示的方法

首先、先建立一個空白的專案,使用 SingleViewProject

1.建立專案


2015年9月4日 星期五

macbook Yosemite 只顯示在外接螢幕上

方法一
接上外接螢幕,然後調整 macbook 亮度到最暗。
這個作法是最簡單但是其實並不是真的只顯示在外接螢幕上,不過顯示上可以達到一樣效果。
方法二
安裝 DisableMonitor
啟動後在上方程式列就可以看到 這個圖示
點選以後就可以看到目前偵測到的螢幕,選擇是否 Disable 就可以了。

2015年9月1日 星期二

JAVA 中 char, byte, bit

char 轉 byte
在 JAVA 中一個 char是 16 bits, 一個 byte 是 8 bits, 一個 bit 就是一個 0 或者 1
一個 char 可以看成是:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
一個 byte 可以看成是:0 0 0 0 0 0 0 0

16 進位表示法 0 ~ F =10 進位的 0 ~ 15 = 2 進位的 0 ~ 1111,所以每四個 bit 就可以用一個 16 進位的符號來表示,也習慣上把四個 bit 連在一起寫。
所以一個 byte 可以表示的範圍就是由 0000 0000 到 1111 1111,以 16 進位表示就是 00 到 FF,以 10 進位表示就是 0 到 255 囉!也就是總共 256 個數。
而一個 char 可以表示的範圍就是由 0000 0000 0000 0000  到 1111 1111 1111 1111,以 16 進位表示為 0000 到 FFFF,而以 10 進位表示就是 0 到 65535,總共 65536 個數。
所以一個 char 是沒辦法轉成一個 byte 的,因為 char 比 byte 大。但是可以將一個 char 轉成 “兩個” byte
那這邊就介紹怎麼把這兩個 byte 從一個 char 抓出來囉!

2015年8月21日 星期五

在 Mac 上安裝 Windows 軟體 (以 RC 為例)

因為興趣的關係所以獲得了 Macbook Pro 2015 mid 一件, 就開始了 Mac 的不歸路(因為好用), 結果發現有些軟體並沒有做 Mac 版本,就研究了一下,其實還滿多種方法的。

這邊使用的是一款叫做 Wineskin 的包裝軟體,它可以模擬一個小型的 windows 環境,然後將要使用的 windows 軟體安裝檔安裝在這個環境中,再把整個環境包裝成一個 Mac 的 .app軟體,然後就可以黑皮的使用啦,當然依照安裝軟體的不同,都可能會有某種程度上的 bug。但我想這比開 pd 或 bootcamp 雙系統去開某些程式輕多了。

環境
mac os x 10.10.5 Yosemite
Wineskin winery 1.7
軟體
Wineskin 首頁
Wineskin 下載頁面
Wineskin 1.7 安裝檔
上面三個連結其實差不多,不過介於英文介面,所以還是分開列出來讓大家各取所需
獲得 windows 軟體安裝檔 (以 RC 為例)