No.3ベストアンサー
- 回答日時:
#01です。
まずはお詫びを。
>t.TimerFcn = ['fprintf(', num2str(b), ','''volt 2''')']
シングルクォートが多かったですね。
以下、ご質問への回答です。
(1)TimerFcnが動作しつづけない
まず、記述がおかしいです。
>t.TimerFcn='fprintf(h,''volt 5'')';
とありますが、これだとfprintf関数が実行されないと思います。
ここでの’h’は数値型の変数ですよね?
だとすると、以下のように記述しなければならないはずです。
t.TimerFcn=['fprintf(', num2str(h, '%.15f'), ',''volt 5'')'];
(2)fprintfのvolt 5のところに変数
上述した方法で大丈夫です。
具体的には、以下のようになります。
n=5;
t.TimerFcn=['fprintf(', num2str(h, '%.15f'), ',''volt ', num2str(n), ''')'];
(3)時間に比例して変化させる
秒単位であれば、工夫すればいけるような気がします。
ただ、1/100秒位の精度での制御は難しいかも知れませんね。
回答ありがとうございます!!
おかげでうまく動作させることができました!
うまく動作できたってのは,線形的に変化させることができたという意味です^^
特にnum2strのところはコメントをもらわなかったらできていなかったです!
また,知識を貸してもらうような機会があると重いますのでそのときにはまた,回答してくることを願います!
No.2
- 回答日時:
#01です。
>t.TimerFcn=fprintf(b,'volt 2')
この行はおかしいと思います。
TimerFcnプロパティは、実行する関数を文字列で指定しなければならないと思います。
t.TimerFcn = ['fprintf(', num2str(b), ','''volt 2''')']
この回答への補足
ありがとうございます!!
とりあえず、エラーなしで動かすことはできました!!
ですが、やはり僕の思ってたステップ的には動作してくれません。。。
start(t);のあとにwait(t);を入れることで3秒後にタイマーはちゃんと動作してくれましたがそれから5秒間の間、TimerFcnが動作しつづけてくれません・・・。
Periodのプロパティを設定してみたのですがだめでした。
t=timer;
set(t,'StartDelay',3,'Period',5)
t.TimerFcn='fprintf(h,''volt 5'')';
start(t);
wait(t);
stop(t);
delete(t);
のような状態です。
これはstop(t);が近すぎて駄目だという感じなのかなとは自分では考えているのですか・・・。
あと、質問攻めですみませんが、将来的にはステップ的ではなく線形的に電圧を変化させたいと考えているのですがfprintfのvolt 5のところに変数はおけるものなんでしょうか? 置けたとしてもそこから時間に比例して変化させるのは厳しいのかなって自分的には考えています。
No.1
- 回答日時:
>僕はTimerFcnのところでfprintfを用いて機器にコマンドを送ろうとしているのですがうまくいきません(出力引数が多すぎるとのエラー)
ソースコードやエラーメッセージも示さずに、何を回答しろと言うのでしょうか?
ご質問からは、関数の戻り値の受け取りが不正なこと以外何も分かりません。
この回答への補足
b=gpib('ni',2,12);
fopen(b)
set(b,'EOSMode','read&write')
set(b,'EOSCharCode','LF')
fprintf(b,'volt 3')
t=timer;
set(t,'TimerFcn')
t.TimerFcn=fprintf(b,'volt 2')
start(t);
stop(t);
delete(t);
fclose(b);
delete(b)
こんな感じに書いています。
エラーは
??? ==>icinterface.fprintf
出力引数が多すぎます
エラー==>t.TimerFcn=fprintf(b,'volt 2')
こんな感じです。
自分自身の考え方だとハンドル関数を使って何かしらするのかなとは
思うのですがMATLABマニュアルを見てもさっぱりわかりませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 工学 制御工学についての質問です。 制御器、検出器、制御対象の伝達関数の積を表す用語って何でしょうか? 教 1 2023/07/21 02:13
- その他(Microsoft Office) 【スプレドシート】IMPORTRANGE関数とSUMIFSの組み合わせ 1 2023/03/05 18:17
- IT・エンジニアリング 三菱シーケンサについて 1 2023/04/07 12:41
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- 工学 制御工学の問題です。 3 2023/01/23 22:32
- バッテリー・充電器・電池 スマホやタブレットのACアダプターは2A以上ないと充電出来ない機器があるのですか?? 3 2022/12/25 19:41
- その他(生活家電) 日本の家電を海外で使用するための変圧器を買いたいのですが、例えばミシンのような低いワット数の機器を使 4 2022/05/21 16:17
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- その他(車) バッテリー充電器のセルスタート機能について 5 2023/05/04 00:20
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ終了時にDOS窓を閉じるコ...
-
バッチファイル 文字列にスペ...
-
ショートカットをデスクトップ...
-
コンピュータ名をファイル名に...
-
AccessVBAから差し込みWORD起動...
-
ftpコマンドを実行すると「425 ...
-
バッチファイルで文字列の検索...
-
コマンド プロンプト
-
DOSコマンドで指定日数よりも過...
-
コマンドプロンプトをクリック...
-
findstrでヒットした1行前の文...
-
バッチファイルについて教えて...
-
FTPコマンドを非表示にする
-
2つ目の「pause」は無効?
-
VB6・一括でファイル名の変更...
-
VBScriptでCABファイルを展開する
-
MSDOSで容量チェックをしたい!
-
シェルの「:コマンドが見つか...
-
Query sessionを実行させるには?
-
バッチコマンドのIF文(条件...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ終了時にDOS窓を閉じるコ...
-
バッチファイル 文字列にスペ...
-
make test って何をするための...
-
コマンドプロンプトをクリック...
-
ショートカットをデスクトップ...
-
バッチファイルを使ってテキス...
-
シェルの「:コマンドが見つか...
-
ftpコマンドを実行すると「425 ...
-
コンピュータ名をファイル名に...
-
バッチコマンドのIF文(条件...
-
SSH接続でwindowsサーバのコマ...
-
コマンドプロンプトで、特定の...
-
findstrでヒットした1行前の文...
-
FTP送信エラーの検知について
-
DOSコマンドで指定日数よりも過...
-
ftpコマンド出力結果の取得
-
Pythonで単純にファイルを結合...
-
AccessVBAで実行時間を指定する...
-
2つ目の「pause」は無効?
-
コマンドプロンプトを最小化し...
おすすめ情報