undefined

bokuweb.me

Node.jsでRS232C通信を試してみる

以前、以下のような記事を書きましたが今度はNode.jsで試してみます。できることに大差はないんですが、Node.jsであれば「くろーむ?IE8以外のぶらうざを使うなんてなんということでしょう」という前時代的な人間の目をかい潜ることができます。

bokuweb.hatenablog.com

node-serialportのインストール

インストールします。

npm install serialport -g

テストソース

ひとまず以下のサンプルでループバックを試してみます。環境はwin7でCOM1固定。 事前にCOMポートのTXとRXをショートしておきます。(D-SUB9pinであれば2pinと3pin)。

iBUFFALO USBシリアルケーブル(USBtypeA to D-sub9ピン)1.0m ブラックスケルトン BSUSRC0610BS

iBUFFALO USBシリアルケーブル(USBtypeA to D-sub9ピン)1.0m ブラックスケルトン BSUSRC0610BS

COMポートがない先進的なPCはこういうのを使います。

app.coffee

SerialPort = require "serialport"
  .SerialPort
serialPort = new SerialPort "COM1",
  baudrate: 57600

serialPort.on "open", (err)->
  if err
    console.log 'failed to open:' + err
  else
    console.log 'open'
    serialPort.on 'data', (data)->
      console.log 'data received: ' + data

    serialPort.write "test message", (err, results)->
      if err? then console.log 'err ' + err
      console.log 'results ' + results

ちなみに今回はポート決め打ちだけど以下のようにリストを取得することもできるらしい。未確認です。

serialPort = require "erialport"
serialPort.list (err, ports)->
  ports.forEach (port)->
    console.log port.comName
    console.log port.pnpId
    console.log port.manufacturer

実行

実行する

node app.js

結果

open
results 12
data recieved: test mes
data recieved: sage

できた。簡単でした。