体重が70kg切るまで更新し続ける日記

その日に出会った猫の写真がメインのゆるふわ日記です。

Ubuntu+Node.jsでSerialPortを使用する際の注意点

Node.jsでは、シリアルポートを使用するためのserialportと言うパッケージがある。そのままだけど。

github.com

で、このパッケージはlistと言うメソッドを持っていてlistを使用することで、そのPCが持っているシリアルポートを列挙してくれる。なのになぜかUbuntuでは、シリアルポートを検出してくれない。

最初は、シリアルポートが有効になっていないとか、ハードウェア、OS的にうまく認識されてないのでは?という可能性を考えていたのだけれど、どうやら調べてみると、/dev/serial/by-idを参照参照して列挙してるみたいなんですね。あれ、これそもそもUbuntuに無い(手元の12.04、14.04で確認)

とりあえず、下記のページを参考にこんなコードをごまかしてみたが、これ結構困ってる人いるみたいですねぇ…。

var exec = require('child_process').exec;
exec('dmesg | grep tty', function (error, stdout, stderr) {
  stdout.split("\n").forEach(function(line){
    var words=line.split(" ");
    if(words.length>=6 && words[6].substring(0,3)=="tty"){
        console.log(words[6])
    }
  });
});

stackoverflow.com