フィルターのクリア

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

1 回表示 (過去 30 日間)
Daigo
Daigo 2019 年 5 月 7 日
コメント済み: Yoshio 2019 年 5 月 8 日
機器から出力されるフォーマットにLFが出力されないためqueryで読み込むとタイムアウトまで待つ必要があります。
機器メーカーによると出力の先頭にデータ長が出力されるため、先頭数バイトを読み込み、データ長を確認して
そのデータ長だけ読み込めば良いとのことです。
上記を実現する方法を教えてください。

採用された回答

Yoshio
Yoshio 2019 年 5 月 7 日
直接の回答にはならないかもしれませんし、勘違いかも知れませんが
ですので、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 件)

カテゴリ

Help Center および File Exchangeソフトウェア開発ツール についてさらに検索

タグ

製品


リリース

R2018a

Community Treasure Hunt

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

Start Hunting!