Serial Class
Serial Class 為相容於 Arduino 中的 serial 所建立之 UART 應用類別。
.init()
init(withDuino:SwiftDuino)
創建 Serial 物件,並導入 SwiftDuino。使用前必先先創建 Serial 物件。
.begin()
func begin(speed:SwiftDuino.UART_BAUDRATE, txPin:UInt8 = 9, rxPin:UInt8 = 11)
初始化板子上的 Serial Port, 參數:
speed: 傳送送率
txPin:UInt8 指定傳送資料之 TXD pin 腳
rxPin:UInt8 指定接收資料之 RXD pin 腳
.available()
func available() -> Int
傳回目前在 stream buffer 中,可供讀取之 byte 數量。
.read()
func read() -> UInt8
讀回一個 byte 資料
.read()
func read(count:Int) -> [UInt8]
指定讀取數量 count ,並讀回一串 Byte Array。
.write()
func write(val:UInt8) -> Int
寫入一個 byte 資料。回傳多少 byte 被送出。
.write()
func write(str:String) -> Int
寫入字串。回傳多少 byte 被送出。
.write()
func write(bytes:[UInt8]) -> Int
寫入 Byte Array。回俴多少 byte 被送出。
.peek()
func peek() -> UInt8
查看 buffer 中第一個 byte 值。只查看,並未讀出刪除,仍會保留在 buffer 中。
.flush()
func flush()
清除輸入輸出 buffer
.event() - Closure Block
func event(block:@escaping (_ serial:Serial)->Void)
當有資料進來 (available) 時 ,會呼叫此 closure block
程式碼
On GitHub
範例
//
// MARK: - Arduino Like Routine
//
func arduinoLike(duino:SwiftDuino) {
// 創建 Serial 物件
let serial = Serial.init(withDuino: duino)
var state = false
//
// MARK: -- Setup Routine
//
duino.setup { duino in
// 設定 Baudrate 及 pin 腳
serial.begin(speed: .B115200, txPin: 9, rxPin: 11)
// attach serial event closure block
serial.event { serial in
let count = serial.available()
if count > 0 {
let bytes = serial.read(count: count)
let data = Data.init(bytes: bytes)
let text = String.init(data: data, encoding: .utf8)
self.displayText(text!)
}
}
self.serial = serial
}
//
// MARK: -- Loop Routine
//
duino.loop { duino in
duino.digitalWrite(pin: 21, level: state ? .HIGH : .LOW)
state = !state
duino.delay(ms: 100)
}
}