Peripherals UART

UARTモジュールです。
UARTは2つ利用可能で、
uart0からuart1までです。

obniz.getFreeUart()

未使用のuartを返します。

var uart = obniz.getFreeUart();

もし未使用のuartがなければエラーとなります。

var uart0 = obniz.getFreeUart();
var uart1 = obniz.getFreeUart();
var uart2 = obniz.getFreeUart(); // Error

start({tx, rx[, gnd, baud, stop, bits, parity, flow control, rts, cts, drive, pull ]})

uartを開始します。
txで指定したピンが送信でそこからデータがobnizから送信され、rxで指定したピンで受信します。
tx とrx以外は設定されて無くても動作します。その場合のデフォルト通信設定は以下のとおりです。

Defaults

  • 速度 115200bps
  • 非同期
  • フローコントロールなし
  • 8bit
  • パリティなし
  • 1 ストップビット
  • 5v push-pull drive
  • 内部プルアップなし

設定する場合、設定できるのは以下のとおりです

  1. baud: number (default 115200)
  2. stop: ストップビット幅 数値で 1(default)/1.5/2
  3. bits: データ幅 数値で 8(default)/5/6/7
  4. parity: パリティチェック 文字列で "off"(default)/"odd"/"even"
  5. flowcontrol: フローコントロール 文字列で "off"(default)/"rts"/"cts"/"rts-cts"
  6. rts: rtsで利用するピン番号 数値
  7. cts: ctsで利用するピン番号 数値
// Javascript Example
obniz.io0.output(false) // for sharing GND.
obniz.uart0.start({tx: 1, rx: 2, baud:9600, bits:7 });
obniz.uart0.send("Hi");

obniz.uart1.start({tx: 3, rx: 4, cts:5, rts:6, flowcontrol: 'rts-cts'});
obniz.uart1.send("Hi");

send(data)

データを送信します。
dataで送れるものは

  • 文字 => utf8エンコードされたバイト列となります(ヌル文字は含まれません)
  • 数字 => 1byteのデータになります
  • 数字の配列 => 1つ1つ1byteのデータとして送信されます
  • Buffer/Array => そのまま送信されます
// Javascript Example
obniz.uart0.start({tx:0, rx:1})
obniz.uart0.send("Hi");
obniz.uart0.send(0x11);
obniz.uart0.send([0x11, 0x45, 0x44]);

end()

uartを停止します。uartで使われていたピンは入力となります

// Javascript Example
obniz.uart0.start({tx:0, rx:1})
obniz.uart0.send("Hi");
obniz.uart0.end();

onreceive

データを受信した時に呼び出されます。
第一引数のdataは受信したデータをarrayとして受け取れます。
第二引数のtextは受信したarrayをtextとして変換したものです。

// Javascript Example
obniz.uart0.start({tx:0, rx:1})
obniz.uart0.onreceive = function(data, text) {
  console.log(data);
  console.log(text);
}
obniz.uart0.send("Hello");

isDataExists

受信済みで,まだ使用していないデータが無いかチェックします.
データがあればtrueを返します

もしonreceiveを設定していれば,データが来ると同時にonreceive関数によって値を受け取るので,
この値は常にfalseになります.

// Javascript Example
obniz.uart0.start({tx:0, rx:1})

while(1){
    if(obniz.uart0.isDataExists()){
        console.log(obniz.uart0.readText());
    }
    await obniz.wait(10);  //wait for 10ms
}

readBytes

受信済みで,まだ使用していないデータをarrayで返します

// Javascript Example
obniz.uart0.start({tx:0, rx:1})

while(1){
    if(obniz.uart0.isDataExists()){
        console.log(obniz.uart0.readBytes());
    }
    await obniz.wait(10);  //wait for 10ms
}

readText

受信済みで,まだ使用していないデータを文字列で返します

// Javascript Example
obniz.uart0.start({tx:0, rx:1})

while(1){
    if(obniz.uart0.isDataExists()){
        console.log(obniz.uart0.readText());
    }
    await obniz.wait(10);  //wait for 10ms
}