Error refreshing com ports

My computer is connected to a LED light source over a virtual com port. The LED light source crashes from time to time. If this is the case, I have to restart it, which I can do over this com port (the crash is a power failure. The light source is not working properly anymore, but I still can communicate with it). The problem is, that after the restart, I'm not anymore able to connect to it. I'm trying to establish a new connection with
connection = serial('COM14','BaudRate',9600);
fopen(connection)
If I execute the fopen command, I get the following error message:
Error using serial/fopen (line 72)
Open failed: Port: COM14 is not available. Available ports: COM12,
COM14, COM15.
Use INSTRFIND to determine if other instrument objects are connected to
the requested device.
If I restart Matlab, I am able to reconnect. Do you know if there is any workaround?

14 件のコメント

Adrian Dronca
Adrian Dronca 2013 年 3 月 5 日
編集済み: Adrian Dronca 2013 年 3 月 5 日
If you are able to reconnect after restart my guess is that Matlab opens the connection and keeps it open, or keeps it in the memory.
Then you cannot connect anymore because it is already in use.
Do you also close it ?
Edit: one hint is that you have an error in your code. Do you always check for errors ?
Stiphu
Stiphu 2013 年 3 月 6 日
Yes, I do close the com port. And there is no error in the code, or do you see one in this two lines of code? The strange thing is that it says that Port 14 is not available and then says that Port 14 is available.
Benjamin
Benjamin 2013 年 5 月 30 日
編集済み: Benjamin 2013 年 5 月 30 日
I'm experiencing the same problem and would be very interested in a solution (port unavailable, yet available). The port is closed and deleted, yet I get the following message:
fopen(serial('COM3'))
Open failed: Port: COM3 is not available. Available ports:
COM3, COM5, COM6, COM7, COM8.
It can be solved by restarting the system. Until it fails again after some hours of com port use.
Bergercookie
Bergercookie 2015 年 9 月 16 日
編集済み: Bergercookie 2015 年 9 月 16 日
I had the same problem. There is a similar post ( http://www.mathworks.com/matlabcentral/newsreader/view_thread/145681 ) in which a working solution is presented.
Essentially you can resolve the problem by issuing the following command
delete(instrfindall);
Siddharth Rajesh
Siddharth Rajesh 2016 年 7 月 19 日
delete(instrfindall);
This statement has solved my issue, thank you so much for you help.
abhinay kumar
abhinay kumar 2017 年 12 月 7 日
This also solved my problem. Thank You.
a m
a m 2018 年 5 月 30 日
This also solved my problem. Thank You.
ehsan ghaderi
ehsan ghaderi 2018 年 6 月 20 日
This also solved my problem. very very Thank You .
Amirabbas Amrollahi
Amirabbas Amrollahi 2019 年 6 月 26 日
where sould i add this suggested comand?
Mahmoud Abulwafa
Mahmoud Abulwafa 2019 年 10 月 7 日
at the end i guess
Walter Roberson
Walter Roberson 2019 年 10 月 7 日
It would go at the beginning. It would clean up after whatever had gone before.
You should also make sure to release the port when you are done with it.
Ashirwad Gad
Ashirwad Gad 2019 年 11 月 15 日
@Walter Roberson, thanks for that tip on releasing the port. Now how is it done exactly or is it the same as delete(instrfindall) ?
Walter Roberson
Walter Roberson 2019 年 11 月 15 日
delete() the serial port object when you are through with it. Consider using an onCleanup() in case of a code crash
Ashirwad Gad
Ashirwad Gad 2019 年 11 月 15 日
alright thanks!

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

回答 (1 件)

Nhat Nguyen Thanh Minh
Nhat Nguyen Thanh Minh 2018 年 5 月 21 日

0 投票

thanks for your help !

カテゴリ

ヘルプ センター および File ExchangeCOM Component Integration についてさらに検索

製品

質問済み:

2013 年 3 月 5 日

コメント済み:

2019 年 11 月 15 日

Community Treasure Hunt

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

Start Hunting!

Translated by