ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

アナログ電圧の取得プログラムは、複数同時に起動してはいけない

以前、Raspberry piの拡張ボードのHigh-Precision AD/DA Boardについて書きました。
ajya.hatenablog.jp

2ヶ月以上ぶりに、アナログ電圧の取得状況を確認する機会がありました。
サンプルプログラムをダウンロードして、記事に書いた手順のとおりにライブラリの作成とサンプルプログラムのコンパイルを行いました。
ajya.hatenablog.jp

サンプルプログラムを実行すると、全て0が表示されます。
0が表示されるということは、High-Precision AD/DA Boardから値が取得できていないということだというのは、以前サンプルプログラムを元にプログラムを作成した際に試していて気がついています。
サンプルプログラムを元にして作成したプログラムを起動すると、表示が一切されず、処理も終わりません。

同時に複数のプログラムを起動すると取り合いになる

サンプルプログラムは新たにコンパイルしたので、なにか手順を間違えた可能性があります。
サンプルプログラムを元に作成したプログラムは利用実績があるので、動作しないのはおかしいです。

ライブラリの作成とサンプルプログラムのコンパイルを再度実行しても、サンプルプログラムは全て0の表示のままです。
High-Precision AD/DA Boardが壊れてしまったのかと考えていたら、思い出しました。

思い出したのは、サンプルプログラムを同時に複数起動すると、値が取得できていたのがおかしくなることです。
サンプルプログラムはずっと繰り返し取得しているので、1つだけサンプルプログラムを残して、他のサンプルプログラムを終了すると、元通り正しく動作するようになります。

このことを思い出し、確認するとサンプルプログラムを元に作成したプログラムを常時起動するようにして、値を取得していました。
サンプルプログラムを元に作成したプログラムを常時起動しないようにして、再度サンプルプログラムを実行すると、値が正常に取得できるようになりました。


同時に複数起動はできないので、サンプルプログラムを元に作成したプログラムでは、同時に複数起動されないように排他処理をつけるべきかと考えたくらいでした。
それをすっかり忘れて、悩んでしまい時間を無駄にしてしまいました。