Serial Communication Code Error
显示 更早的评论
h=instrfindall;
for i= 1:length(h)
fopen('COM'+string(i))
end
h=instrfindall;
str=string(h.name(find(cell2mat(h.BytesAvailable))));
fclose('all');
fopen(str);
I developed this code on friday for finding out on which Port my Arduino is plugged in and it actually worked. Today I tried to implement the code into my GUI and an error is appearing.
Error: Struct contents reference from a non-struct array object.
What do I have to do, so that the error won't appear anymore?
Thank you for your help
回答(2 个)
Nate
2017-10-26
0 个投票
Hi Tobias,
Could you please provide more information?
1) Does the code still work correctly when it is not in a GUI? 2) Could you please provide the full error? I am interested in knowing which line causes the error.
Thanks, Nate
Walter Roberson
2017-10-27
0 个投票
You would get that error if instrfindall returns empty.
8 个评论
Tobias Wzl
2017-10-27
Walter Roberson
2017-10-27
None the less, put in a test for h being empty. If it is an "impossible" situation then your error about non-struct will not disappear. If somehow it can happen then you will avoid the error.
Tobias Wzl
2017-10-27
Walter Roberson
2017-10-27
It has been known to happen in the past that instrfind has lost track of a port, and that it was necessary to restart MATLAB to find it again. In the time that was happening most often there was no way to force a bus rescan. Part of the problem back then was that when this was happening most often, USB serial ports could only be detected if the device was plugged in at the time MATLAB was started. That should no longer be the case in current versions, but it used to happen. (You do not happen to mention your MATLAB version.)
Tobias Wzl
2017-10-27
Walter Roberson
2017-10-27
What is returned if you execute
com.mathworks.toolbox.instrument.Instrument.jinstrfindall
Also, try
instrreset
Tobias Wzl
2017-11-3
Walter Roberson
2017-11-3
Hmmm, instrreset has been around in Instrument Control Toolbox since before R2006a; https://www.mathworks.com/help/instrument/instrreset.html
Anyhow, I do not know why your devices cannot be seen, unless perhaps the system considers them to already be in use for something else. Perhaps this link will help: http://www.intech.co.nz/downloads/help/mscanv5/faq_84.htm
类别
在 帮助中心 和 File Exchange 中查找有关 MATLAB Support Package for Arduino Hardware 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!