waitfor( ) isn't working for a SerialPort
3 次查看(过去 30 天)
显示 更早的评论
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
0 个评论
采纳的回答
Walter Roberson
2024-9-21
waitfor(app.PicoCom, 'NumBytesAvailable', 0); % wait until it's REALLY done
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Migrate GUIDE Apps 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!