短編小説:Luaのコールバック関数にパラメータを渡すにはどうすればよいですか?Lua:コールバック関数のパラメータを追加する
長い物語:
私はNodeMCUファームウェアとESP8266に取り組んでいます。基本的には、ノードごとに複数のボタンがあるだけで、ダッシュボタンを作成するつもりです。私はGPIOピンの割り込みの可能性を持ってこれをやっています。
しかし、コールバック関数にパラメータを渡す方法は、十分に文書化されていないようです。私の場合は、割り込みがどのピンに来たのかを知りたい。これは私が思いついたものです。これは、ピンの値を除いて動作しています。これはトリガされたときに初期化値1にリセットされているようです。
-- Have an area to hold all pins to query (in testing only one)
buttonPins = { 5 }
direction="up"
armAllButtons()
function armAllButtons()
for i,v in ipairs(buttonPins)
do
armButton(v)
end
end
function armButton(buttonPin)
print("Arming pin "..buttonPin.." for button presses.")
gpio.mode(buttonPin,gpio.INT,gpio.FLOAT)
gpio.trig(buttonPin, direction, function (buttonPin) notifyButtonPressed(buttonPin) end)
print("Waiting for button press on "..buttonPin.."...")
end
function notifyButtonPressed(buttonPin)
print("Button at pin "..buttonPin.." pressed.")
--rearm the pins for interrupts
armButton(buttonPin)
end
しかしnotifyButtonPressed()
機能の中から、buttonPin
の値が押されたときに、ではない5、私はそれがあることを期待すると常に1です。私はそれがおそらく数値変数の初期値だと考えています。あるとして
'buttonPinPressed'はどのように1に設定されていますか? – hjpotter92
申し訳ありませんが、投稿間違いでした。私はコードを変更しました。 varはbuttonPinPressedではなく、buttonPinです。しかし、まだ問題は残っている。 フォーマットにごめんね、あなたがいたときに並行して変更していました。 (関数 'へ – Jens
変更'関数(buttonPin)notifyButtonPressed(buttonPin)end')notifyButtonPressed(buttonPinは)それをやったこと、あなたは正しい、 – hjpotter92