ポテンショメーターの値をNode.jsで取得したとき、出力値がおかしい

今回の記事は以下の記事の続きになっています。

challenge-think.hatenablog.com

 

ポテンショメータから受け取った値をNode.jsでコンソール画面に書き出してみたところ、0~5Vで変化する値のはずが、途中で7やら98やら変な値が取れました。

 

ここで、原因がわからずにハマってしまいました。。。

 

そこで、送られてくるデータをすべて確認したところ、


        0.98
        0
        .98
        3.23
        2
        .32
        1
        .22
        2.33
    

等、変な位置で切り取られていることが判明しました。 この問題に対する本質的な対処法に関してはわかりませんでしたが、 (送られてくる文字数)==4でちゃんとしたデータを抽出することで解決しました。

~追記(2022.10.24)~

後日、再度console.log(data.toString().split(''));とデータを出力してみると、以下のように区切りがおかしいことが判明しました。


[ '5', '.', '0', '0', '\r', '\n' ]
[ '5', '.', '0', '0', '\r', '\n' ]
[ '5', '.', '0', '0', '\r', '\n' ]
[
  '5',  '.',  '0',  '0',
  '\r', '\n', '5',  '.',
  '0',  '0',  '\r', '\n'
]
[
  '5',  '.',  '0',  '0', '\r',
  '\n', '5',  '.',  '0', '0',
  '\r', '\n', '5',  '.', '0',
  '0',  '\r', '\n'
]
[
  '5',  '.',  '0',  '0',
  '\r', '\n', '5',  '.',
  '0',  '0',  '\r', '\n'
]
[
  '5',  '.',  '0',  '0',
  '\r', '\n', '5',  '.',
  '0',  '0',  '\r', '\n'
]
[ '5', '.', '0', '0', '\r', '\n' ]
[ '5', '.', '0', '0', '\r', '\n' ]
    

ボーレートは正しいのになんでかはまだわかっていませんが、対処法としては、

volt = data.toString().split('\n');
VOLT=volt[0].trim();

とすると、ほとんどの値を取得することができます。