queryで先頭数バ​イトを読み込んでから​残りを読み込む方法

機器から出力されるフォーマットにLFが出力されないためqueryで読み込むとタイムアウトまで待つ必要があります。
機器メーカーによると出力の先頭にデータ長が出力されるため、先頭数バイトを読み込み、データ長を確認して
そのデータ長だけ読み込めば良いとのことです。
上記を実現する方法を教えてください。

 採用された回答

Yoshio
Yoshio 2019 年 5 月 7 日

0 投票

直接の回答にはならないかもしれませんし、勘違いかも知れませんが
ですので、EOSModeを{none}に設定すると、End-Of-String (EOS) が無視されるので、データを全て読み込めるかと思います。
なお、プロトコルや機器メーカーのAPI、データの定義の記載がないので、
「出力の先頭にデータ長が出力されるため、先頭数バイトを読み込み、データ長を確認して」
について、このままでは回答が難しいです。機器メーカーの説明書に情報がありませんか?

2 件のコメント

Daigo
Daigo 2019 年 5 月 8 日
回答ありがとうございます
下記のようにすれば解決することが判明致しました。
s = serial('COM1');
fopen(s)
len = fread(s, 1);
dat = fread(s, len);
fclose(s)
Yoshio
Yoshio 2019 年 5 月 8 日
ご報告ありがとうございます。
解決できて良かったです。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeInstrument Control Toolbox についてさらに検索

製品

リリース

R2018a

タグ

質問済み:

2019 年 5 月 7 日

コメント済み:

2019 年 5 月 8 日

Community Treasure Hunt

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

Start Hunting!