積算値をもらって差分計算をするのですが、1回目はOKで、2回目以降がNGとなってしまいます。
・積算値はcsvから前回値を取得する
・今回取得した積算値と前回の積算値から差分を算出する
・積算値をcsvに書き込む
・プログラムは、毎分動作します
通常の動きは問題ないのですが、積算値がリセットされる時があり、
その時の処理が思ったようになりません。
【通常】
csvから取得した前回値:5
今回のカウント値:10
差分:5
今回の積算値:15 → csvに書き込み
【積算値リセット時】
csvから取得した前回値:20
今回のカウント値:2(取得済)
差分:-18
今回の積算値:2(本当は20+2=22としたい) → csvに書き込み
【積算値リセット時 2回目の処理】
csvから取得した前回値:2
今回のカウント値:2(取得済で積算値変更ない場合)
差分:2
今回の積算値:4(本当は前回値22+0(差分なし)=22としたい) → csvに書き込み
リセット後の積算値が0であれば問題ないのですが、次の読み込みの際にすでにカウントされていると0ではなく2次の積算値となるので、マイナスになってしまいます。
リセットのタイミングが取得できればいいのですが、取る方法がないので、ソフトでなんとかしたいのですが。。。
条件が悪いのでしょうか?
以下、プログラムです。
前回値との差分=今回の積算値ー前回の積算値(csvから取得済)
lastdiff = int(plscnt) - int(lastplscnt_m)
差分がマイナスを条件
if lastdiff < 0:
lastdiff = 0
tot_cnt = lastplscnt_m + plscnt
else:
tot_cnt = int(lastplscnt_m) + int(lastdiff)
差分を算出→クラウドへ
plscnt_mindiff = int(tot_cnt) - int(lastplscnt_m)
※tot_cnt を今回の積算値としてcsvに書き込みます。
積算値がリセットされてしまったときは、前回の積算値にプラスしたものをcsvに書き込みたいです。
差分はマイナスではなく、前回値からリセット後の積算値を足したものにしたいです。
2回目以降の処理が、今回の積算値になってしまい、積算値は変わっていないのに足されています。
ご教示の程、どうぞよろしくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/27 12:54
2018/07/27 12:59
2018/07/27 13:11
2018/07/27 13:19
2018/07/27 13:41
2018/07/27 13:54
2018/07/27 14:07
2018/07/27 14:10