1

Xojo で作成されたプログラムを実行しているラズベリー pi 3 があります。

私の目標は、画面上の各センサーを流れる水の量を表示する 2 つのフロー センサーを用意することです。

1 つのフロー センサーで動作するプログラムがあります。GPIO ライブラリと「InterruptModule」と呼ばれるカスタム モジュールを使用します。チュートリアルに従ってこのプログラムを作成しました。

チュートリアル: https://einhugur.com/blog/index.php/xojo-gpio/connecting-button-with-gpio-and-using-interupts/#comment-14

このプログラムは、両方のフロー センサーに対して正常に機能しますが、一度に 1 つのみです。つまり、入力ピンを変更してプログラムを再度実行すると、機能します。

ただし、2つを結合しようとすると、2つの入力を区別できません。

2 つの GPIO モジュールと 2 つのカスタム 'InterruptModule' モジュールを試してみましたが、最初に定義されたセンサーで入力がカウントされます。

ここで私の試みを参照してください。

Xojo コードのスクリーンショット

4

1 に答える 1

0

2 つの割り込みを区別する 1 つの方法は、2 つの別個のコールバック メソッドを作成することです。

例:

Const kPin = 14
If GPIO.WiringPiISR(kPin, GPIO.EDGE_RISING, Addressof InteruptModule.ButtonDownInterupt1) = -1 then
MsgBox "Could not register for Interupt1 on kPin14"
End If

Const kPin = 18
If GPIO.WiringPiISR(kPin, GPIO.EDGE_RISING, Addressof InteruptModule.ButtonDownInterupt2) = -1 then
MsgBox "Could not register for Interupt2 on kPin18"
End If

この例では、各ピン割り込みには、各ピンを処理するための異なるコードを持つ独自のコールバック メソッドがあります。

于 2020-07-18T21:56:52.483 に答える