1 システムや不具合のふりかえり
昨日の記事の続きになります。
(URL⇒) 【Node-RED/RaspberryPI/バーコード読込/タッチパネルでの選択】技術力向上がテーマでした。(その①) | 刃金からくり屋
下図のようなシステム構想し、RaspberryPIとNode-REDを組み合わせたシステム開発を行いました。
商品コードの読み取りはできるようになりましたが、商品コードに同じ数字が続くと、不具合が生じることもわかました。
今回は、それをどのように解決したかを紹介します。
下図は、商品コードに同じ数字化が続く場合の不具合の内容を説明しています。
この時点でのアルゴリズムでは、読み取った仕様品コードに同じ数字が続くと、余分な数値が仕様品コードとして付加されてしまうのです。
困りました。
そこで、以下のように改善することにしました。
2 前処理の改善
商品コード1桁の数値に対し、同じ数値を2回、payloadとして送出することが判っています。
そこで、”join”ブロックを使って、送出された2つの数値を2桁の数値にまとめてしまいます。
このような処理をすることで、送出された数値を個別に処理するのではなく、送出された2つの数値を1桁の数値として扱うことができます。
次に、この2つの数値の平均値を計算し、その値をpayloadに載せて次のブロックに送出するようにします。
例えば、商品コードが”3″の場合、”3″、”3″がpayloadで出力されますから、”join”ブロックで”33″としてしまいます。
その後、”Calc”ブロックで、十の位の値と一の位の値の平均値を求めます。
“33”の場合、(“3<十の位>”+”3<一の位>”)/2 = 3
このような処理に改善することで、不具合が解消されます。
3 原因は?
アルゴリズムを見たわけではないのですが、おそらく2バイトコードに解釈されて上位と下位のASCIIコードとして送出されているのかな…。
と、想像しています。
本当のところは、開発者にしかわからないことなので、追及はしません。
面倒な手続きだとは思いますが、結果的に不具合は解決できたわけですから。
それ以上は望まないことです。
4 開前後の結果
商品コードを正しくpayloadに乗せることができました。
5 この続き
この続きは、データベースを使って、時刻管理ができれば勤怠管理などができると考えていました。
データベース部分の実装とNode-Redからの呼び出しを調べているうちに、ほかの仕事が詰まりだし、現在に至っている状況です。
ここから先について、興味がある方々、作りこんでみてください。