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

範例

osx/Examples/Serial

//
    // 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)
        }
    }

results matching ""

    No results matching ""