Forum: PC-Programmierung Matlab: COM-Port nicht gefunden nach Neuinstallation
von
Daniel V.
(voda )
15.07.2017 14:54
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
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
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 )
15.07.2017 15:41
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);
15.07.2017 15:46 :
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.