waitfor( ) isn't working for a SerialPort

3 ビュー (過去 30 日間)
Gavin
Gavin 2024 年 9 月 21 日
コメント済み: Gavin 2024 年 9 月 23 日
Seems simple my code does this to be sure everything has been processed from the USB port connected to an Arduino Pico.
if (app.PicoCom.NumBytesAvailable>0)
PicoInput(app,app.PicoCom); % Call the callback 'by hand'
waitfor(app.PicoCom,NumBytesAvailable,0); % wait until it's REALLY done
end
I seem to need this because even though the trigger is "terminator" and call back has:
while (app.PicoCom.NumBytesAvailable>0)
raw = readline(src);
% Do the processing needed
end
sometimes data gets left in the buffer.
So here's the relevant help on waitfor():
waitfor(obj,propname,propvalue) specifies a value that the property must change to before execution can resume. If the specified property is already equal to propvalue, then waitfor returns immediately and execution resumes.
I assume that obj is the Serial Handle and I'm waiting for the property NumBytesAvailable to be 0
Here is what I get when it's run
Warning: Error executing listener callback for PostSet event on TotalBytesWritten
dynamic property in object of matlabshared.asyncio.internal.Channel class:
Unrecognized function or variable 'NumBytesAvailable'.
Error in MouseOdor20/RunTrial (line 419)
waitfor(app.PicoCom,NumBytesAvailable,0); % wait until it's REALLY done

採用された回答

Walter Roberson
Walter Roberson 2024 年 9 月 21 日
waitfor(app.PicoCom, 'NumBytesAvailable', 0); % wait until it's REALLY done
  1 件のコメント
Gavin
Gavin 2024 年 9 月 23 日
quote the property! You would think mLint could have figured that one out!

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMigrate GUIDE Apps についてさらに検索

製品


リリース

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by