How do I close the port Arduino is connected to?

31 visualizzazioni (ultimi 30 giorni)
I have developed a GUI which uses the Arduino support package. Every time I close and rerun the program an error pops up saying the port is already being used by MATLAB. I clear all the variables and can rerun the program without any issues. I wanted to know if there was a way to close the connection with the arduino when the figure is closed.
I already tried to delete the arduino object but that did not work. I also tried to clear the object which also oddly did not work. Can someone help?
  2 Commenti
Adithya Vivek
Adithya Vivek il 24 Lug 2017
Modificato: Walter Roberson il 8 Feb 2021
Dear Mathews, I apologize for not being able to answer your question, but could you please help with a similar problem I have? I am trying to create a way to autodetect the com port the arduino is connected to such that I can create an application usable on any Windows computer. I created a link for this question here: https://www.mathworks.com/matlabcentral/answers/349958-auto-detection-of-the-com-port-that-arduino-is-connected-to-then-defined-as-an-argument-that-can-be
I would be infinitely grateful!
PAUL ANGARITA
PAUL ANGARITA il 8 Feb 2021
Modificato: PAUL ANGARITA il 8 Feb 2021
I will give my contribution. Sorry for late reply. I recommend using the Command
.... clear... .
Remember it cleans all Variables in WORKSPACE. If you need to delete only the object ...a = arduino().. so only delete ...a
Remember to close or delete all objects regarding arduino stuff, firstly.

Accedi per commentare.

Risposte (3)

Mathews John
Mathews John il 17 Lug 2015
I think I figured it out.
a = arduino(); %Creates an arduino object and connects to the hardware.
% Do stuff while open
fclose( serial(a.Port) ); %Create a serial object with the port Arduino is connected to it and close it
clear a; %Remove the variable
Don't know if there's a better way
  2 Commenti
Image Analyst
Image Analyst il 18 Lug 2015
Not that I know of. It's only a line of code so I don't know how it could be simpler or better. glad my suggestion of fclose() worked for you.

Accedi per commentare.


Azrg
Azrg il 23 Ott 2019
Whenever I get the message that a Arduino is already used when it is not, I use these two functions:
fclose(instrfindall);
delete(instrfindall);
Works for me :) hope it helps someone else who has this issue

Image Analyst
Image Analyst il 15 Lug 2015
Perhaps call fclose():
s = serial('COM1');
fopen(s)
fprintf(s, '*IDN?')
idn = fscanf(s);
fclose(s)

Categorie

Scopri di più su Arduino Hardware in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by