App designerを利​用して、トグルボタン​でのON/OFF設定​について

App designerの画面上にトグルボタンを置いて、ラズパイ➡i2c経由で、機器の電源ON/OFFをしようと思っています。
最初、状態ボタンや通常ボタンにコールバック関数を設定して、ONの接続先情報など記載していたのですが、
ON/ OFFの切り替えは通常はトグルボタンのほうがいいのかなと思って同様に変更しようとしたら、
「Buttonオブジェクトにコールバック プロパティがありません」となっており、トグルボタンにコールバック設定できませんでした。
上記、画面右側の「トグルボタン」項目を見ても、ボタン上の文字や左右寄せなど見た目上の設定しかできなさそうで、コード記述できそうな箇所が見当たらないのですが、どこから設定できるのでしょうか。
お忙しいところお手数おかけしますが、ご教示いただけますと幸いです。
どうぞよろしくお願いいたします。

 Réponse acceptée

Kojiro Saito
Kojiro Saito le 7 Mar 2023
Modifié(e) : Kojiro Saito le 7 Mar 2023

1 vote

トグルボタンの1つ上の階層のボタングループを選択している状態で右クリックからコールバックを指定できます。
SelectionChangedFcn ButtonDownFcn コールバックを使えば良いと思います。

6 commentaires

mayu
mayu le 7 Mar 2023
ありがとうございます、私も触っててちょうど今気づきました💦
これで設定してみます。
mayu
mayu le 7 Mar 2023
Modifié(e) : mayu le 7 Mar 2023
たびたび失礼いたします。
このようなON/OFFボタンで、押した時にサイズ変更しないで切り替える場合は
上記3種のコールバック関数のうち、SelectionChangeFcnかButtonDownFcnのいずれかになるのかなと思ったのですが、この場合はどちらがいいとかありますでしょうか。
▼ButtonGroup のプロパティ
https://jp.mathworks.com/help/matlab/ref/matlab.ui.container.buttongroup-properties.html
➡SelectionChangeFcn ・・・ 選択変更時
➡ButtonDownFcn ・・・ ボタンが押されたとき
とあり、選択やボタンが押されたとき、どっちのボタンにしたかはどうやって判定するのでしょうか。
サンプルコードなどがあれば少しは分かったかもしれませんが説明読んでもいまいちわからなくて・・・
初心者で恐れ入りますが、どうぞよろしくお願いいたします。
Kojiro Saito
Kojiro Saito le 7 Mar 2023
ボタングループ内での切り替えだったらSelectionChangedFcn を使うほうが良いです。
どのボタンを押されたかはコールバック内でappのButtonGroup.SelectedObjectやイベントオブジェクト(event)のevent.NewValueの値を見ることで分かります。
function ButtonGroupSelectionChanged(app, event)
disp(app.ButtonGroup.SelectedObject) % 選択されたボタン
disp(event.NewValue) % 選択されたボタン
disp(event.OldValue) % 変更前に選択されていたボタン
end
mayu
mayu le 7 Mar 2023
Modifié(e) : mayu le 7 Mar 2023
ありがとうございます、
上記、いただいたコードは、どのボタンが押されたかをコマンドウィンドウに表示するということでしょうか。
すみません、私の質問がよくわからなかったかもしれませんが、
ON(26V)が押された場合の処理
OFF(0V)が押された場合の処理
をifなどで書きわける方法分からなくて質問させていただきました。。。
event.NewValue(選択されたボタン)がONボタンだったら(またはOFFボタン)というのはどう書いたらいいのでしょうか。
1つのボタンでON/OFF切り替えはvalueを1か0で出来そうと思うのですが、このボタンの場合は、個別にONとOFFのボタンがあり、ON/OFFボタンの違いはボタン上の文字しか判別方法がなさそうなので、それぞれのボタンを何で判別するのかわかりませんでした。
識別子(Tag)にONとかOFFとか設定してやるのかなと思って、if文で
if event.Source.Tag == 'ON'
のようにしてみましたが、「スカラー コンテキストで 'on' が予期せず使用されました。」と警告がでてうまくいきません。
Kojiro Saito
Kojiro Saito le 7 Mar 2023
コマンドウィンドウに表示されるデータを見てコーディングを進めてもらえばと思ったのですが、回答は以下の通りになります。
選択されたボタンがONかOFFかは、event.NewValue.Textで拾えます。
function ButtonGroupSelectionChanged(app, event)
if event.NewValue.Text == "ON"
% ラズパイ電源ONの処理を入れる
elseif event.NewValue.Text == "OFF"
% ラズパイ電源OFFの処理を入れる
end
end
mayu
mayu le 7 Mar 2023
そういうことだったのですね、失礼しました💦
ボタン上の文字情報も、それで取得ができるのですね。
こちらを活用させていただき設定してみます。
たびたびご教示いただきまして、ありがとうございました!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur プログラミング dans Centre d'aide et File Exchange

Produits

Version

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!