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

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

 채택된 답변

Kojiro Saito
Kojiro Saito 2023년 3월 7일
편집: Kojiro Saito 2023년 3월 7일

1 개 추천

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

댓글 수: 6

mayu
mayu 2023년 3월 7일
ありがとうございます、私も触っててちょうど今気づきました💦
これで設定してみます。
mayu
mayu 2023년 3월 7일
편집: mayu 2023년 3월 7일
たびたび失礼いたします。
このような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 2023년 3월 7일
ボタングループ内での切り替えだったらSelectionChangedFcn を使うほうが良いです。
どのボタンを押されたかはコールバック内でappのButtonGroup.SelectedObjectやイベントオブジェクト(event)のevent.NewValueの値を見ることで分かります。
function ButtonGroupSelectionChanged(app, event)
disp(app.ButtonGroup.SelectedObject) % 選択されたボタン
disp(event.NewValue) % 選択されたボタン
disp(event.OldValue) % 変更前に選択されていたボタン
end
mayu
mayu 2023년 3월 7일
편집: mayu 2023년 3월 7일
ありがとうございます、
上記、いただいたコードは、どのボタンが押されたかをコマンドウィンドウに表示するということでしょうか。
すみません、私の質問がよくわからなかったかもしれませんが、
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 2023년 3월 7일
コマンドウィンドウに表示されるデータを見てコーディングを進めてもらえばと思ったのですが、回答は以下の通りになります。
選択されたボタンが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 2023년 3월 7일
そういうことだったのですね、失礼しました💦
ボタン上の文字情報も、それで取得ができるのですね。
こちらを活用させていただき設定してみます。
たびたびご教示いただきまして、ありがとうございました!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 プログラミング에 대해 자세히 알아보기

제품

릴리스

R2021b

질문:

2023년 3월 7일

댓글:

2023년 3월 7일

Community Treasure Hunt

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

Start Hunting!