Forum: PC-Programmierung Matlab: COM-Port nicht gefunden nach Neuinstallation


von Daniel V. (voda) Benutzerseite


Lesenswert?

Hallo liebes Forum,

leider musste ich mein Hauptarbeitsrechner neu aufsetzten. Mach 
Installation von Matlab, wollte ich meine entwickelte Hardware per FTDI 
und USART wieder zugreifen. Das Problem, es funktioniert nicht mehr. 
Wähle ich den COM-Port aus erscheint folgende Fehlermeldung:
1
Index exceeds matrix dimensions.
2
3
Error in main_ui>connect_btn_Callback (line 160)
4
handles.serialPort = initSerialPort(hObject, eventdata, handles, handles.com_port{12});
5
6
Error in gui_mainfcn (line 96)
7
        feval(varargin{:});
8
9
Error in main_ui (line 39)
10
    gui_mainfcn(gui_State, varargin{:});
11
12
Error in @(hObject,eventdata)main_ui('connect_btn_Callback',hObject,eventdata,guidata(hObject))
13
14
 
15
Error while evaluating uicontrol Callback

Vor der Neuinstallation hat alles wunderbar funktioniert. Anbei mein 
Code:

In der main.m:
1
gui_Singleton = 1;
2
gui_State = struct('gui_Name',       mfilename, ...
3
                   'gui_Singleton',  gui_Singleton, ...
4
                   'gui_OpeningFcn', @main_ui_OpeningFcn, ...
5
                   'gui_OutputFcn',  @main_ui_OutputFcn, ...
6
                   'gui_LayoutFcn',  [] , ...
7
                   'gui_Callback',   []);
8
if nargin && ischar(varargin{1})
9
    gui_State.gui_Callback = str2func(varargin{1});
10
end
11
12
if nargout
13
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
14
else
15
    gui_mainfcn(gui_State, varargin{:});
16
end

Im Modul initSerialPort.m
1
function serialPort = initSerialPort(hObject, eventdata, handles, portName)
2
3
serialPort = serial(portName);
4
5
% Set the baud rate
6
str = get(handles.baud_rate_pop, 'String');
7
ind = get(handles.baud_rate_pop, 'Value');
8
serialPort.BaudRate = str2num(str{ind}(1:end-4)); %4%
9
%serialPort.Terminator = 'CR/LF'; 
10
str = get(handles.buffer_size_pop, 'String'); 
11
ind = get(handles.buffer_size_pop, 'Value'); 
12
serialPort.InputBufferSize = str2num(str{ind}(1:3))*str2num(str{ind}(5)); 
13
14
% Add a callback function to be executed whenever 1 byte is available
15
% to be read from the port's buffer.
16
serialPort.BytesAvailableFcn = {@readPort, hObject, eventdata, handles};
17
serialPort.BytesAvailableFcnMode = 'byte';
18
serialPort.BytesAvailableFcnCount = serialPort.InputBufferSize;
19
end

An meinem Laptop kommt die gleiche Fehlermeldung. Der aktuelle 
FTDI-Treiber ist installiert.

Danke im Voraus und Gruß
Daniel

von Stefan W. (bier16v)


Lesenswert?

Daniel V. schrieb:
> Index exceeds matrix dimensions.

Der Fehler sagt ja alles, oder? Du greifst wo auf ein Element zu, das 
nicht existiert.
Was gibt
1
handles.com_port{12}
aus? Sollte ja COM1 bis COM** sein...

Was passiert, wenn du den Port (nur zum Testen) fix programmierst?
Nach dem "neu aufsetzen" werden die Portnamen gerne neu nummeriert...

von Daniel V. (voda) Benutzerseite


Angehängte Dateien:

Lesenswert?

Das ist richtig, funktioniert nur auch nicht wenn ich COM3 vergebe.
1
Error in main_ui>connect_btn_Callback (line 160)
2
handles.serialPort = initSerialPort(hObject, eventdata, handles, handles.com_port{3});

EDIT:

Wer lesen kann ist klar im Vorteil!!!

Hier ist der Fehler zu finden:
1
com_port_ind = get(handles.com_port_pop, 'Value'); 
2
3
% Diese Zeile war auskommentiert:
4
handles.serialPort = initSerialPort(hObject, eventdata, handles, handles.com_port{com_port_ind}); 
5
6
%% Hier war eine fester COM-Port zugewiesen, warum auch immer....
7
%handles.serialPort = initSerialPort(hObject, eventdata, handles, handles.com_port{12}); 
8
9
set(handles.connect_btn, 'Enable', 'off'); 
10
set(handles.disconnect_btn, 'Enable', 'on'); 
11
% Open the serial port for reading and writing.
12
fopen(handles.serialPort);

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.