【Node-RED/RaspberryPI/バーコード読込/タッチパネルでの選択】技術力向上がテーマでした。(その②)

 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からの呼び出しを調べているうちに、ほかの仕事が詰まりだし、現在に至っている状況です。

ここから先について、興味がある方々、作りこんでみてください。

PAGE TOP