WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Array Cell String

 

TW1993
Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 09.10.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2017, 12:27     Titel: Array Cell String
  Antworten mit Zitat      
Code:
h=instrfindall;
for i= 1:length(h)
    fopen('COM'+string(i))
end
h=instrfindall
str= string(find(cell2mat(h.BytesAvailable)))

fclose('all');
fopen(str);


Mit diesem Code würde ich gerne einen Pushbotton betreiben um ihm sagen verbinde den Arduino an dem er angeschlossen ist.

Im Edittext will ich aber den Namen des Ports stehen haben. Bsp: Serial-COM5.
aber mit meiner Variablen erhalte ich immer nur die Position an dem der Name hinterlegt ist. (Tippe ich den Befehl: string(h.Name(2)) ein kommt der gesuchte Name des Ports)

wie komme ich von meiner Nummer auf den Namen ??

Danke für die HIlfe im Voraus schon mal

Edit: habs hinbekommen denke ich^^ ich hoffe ich habe den Arduino zumindest verbunden und ich könnte nun eine Datenübertragung starten, wenn ich später auf den Start-Button klicke...
Wäre nett wenn mir jmd dazu etwas sagen könnte Smile

CODE:

Code:
handles =guidata (hObject);
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);




Habe aber jetzt eine zwei weitere Frage;
Wenn mein Arduino jetzt verbunden ist nachdem ich den Connect-Button im GUI gedrückt habe, will ich das im Edittext dann der Portname erscheint. Muss ich dazu einfach display(str) im Callback des Edittexts hinterlegen oder wie funktioniert das?

"Disconnecten" des Arduinos habe ich im "Disconnect" mit
Code:
erledigt, ist dies so richtig?
Private Nachricht senden Benutzer-Profile anzeigen
Verschoben: 22.10.2017, 11:39 Uhr von Jan S
Von GUIs nach Programmierung


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.10.2017, 11:50     Titel: Re: Array Cell String
  Antworten mit Zitat      
Hallo TW1993,

fclose('all'); schließt sämtliche Streams, auch Files, die an anderer Stelle geöffnet wurden. Es ist sicherer, wenn Du nur die Ports schließt, die auch speziell hier gemeint sind, also das, was fopen als Output geliefert hat.

Zitat:
Mit diesem Code würde ich gerne einen Pushbotton betreiben

Mir ist nicht klar, was das genau heißt. Soll die Funktion gestartet werden, wenn Du den Button drückst?

Zitat:
Im Edittext will ich aber den Namen des Ports stehen haben. Bsp: Serial-COM5.

In welcher Form hast Du die Handles der GUI vorliegen? Vielleicht der "handles" Struct aus den von GUIDE erstellten Dialogen? Dann:
Code:
port = 5;
handles.Button1.String = sprintf('Serial-COM%d', port);

Oder vielleicht:
Code:
handles.Button1.String = h.Name{2};

Aber ich bin mir nicht sicher, was hier genau in h steht.

Zitat:
[...] will ich das im Edittext dann der Portname erscheint.

Code:
handles.Edit1.String = 'Port Name'


Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
TW1993
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 09.10.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.10.2017, 05:50     Titel:
  Antworten mit Zitat      
Code:
% --- Executes on button press in Connect.
function Connect_Callback(hObject, eventdata, handles)
% hObject    handle to Connect (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

                                                        %suchen der verfügbaren Ports,...
                                                        %rausfinden in for-Schleife welches Port...
                                                        %die geüwnschte Eigenschaft (offen) besitzt...
                                                        %und verbinde Arduino mit diesem Port
handles =guidata (hObject);
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);
a=arduino('str','Mega','Libraries',{'PID'});



% --- Executes on button press in Disconnect.
function Disconnect_Callback(hObject, eventdata, handles)
% hObject    handle to Disconnect (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
fclose('str');





function Portname_Callback(hObject, eventdata, handles)
% hObject    handle to Portname (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of Portname as text
%        str2double(get(hObject,'String')) returns contents of Portname as a double



% --- Executes during object creation, after setting all properties.
function Portname_CreateFcn(hObject, eventdata, handles)
% hObject    handle to Portname (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function Connection_Status_Callback(hObject, eventdata, handles)
% hObject    handle to Connection_Status (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of Connection_Status as text
%        str2double(get(hObject,'String')) returns contents of Connection_Status as a double


% --- Executes during object creation, after setting all properties.
function Connection_Status_CreateFcn(hObject, eventdata, handles)
% hObject    handle to Connection_Status (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



Zitat:
Es ist sicherer, wenn Du nur die Ports schließt, die auch speziell hier gemeint sind, also das, was fopen als Output geliefert hat.

hab ich erledigt, denke ich ^^


Zitat:
Aber ich bin mir nicht sicher, was hier genau in h steht.


in
Code:
str=string(h.name(find(cell2mat(h.BytesAvailable))))
 
steht jetzt der Name des Ports der"offen" also verbunden ist mit der Form "Serial-COM5".

ich nehme dann an der Befehl für den Edittext lautet dann wie folgt oder:

Code:
handles.Prtname.String = 'str'



Folgende Fehlermeldungen tauchen auf beim ausführen:

Zitat:
Error in CONTROL_GUI>Connect_Callback (line 131)
str=string(h.name(find(cell2mat(h.BytesAvailable))))

Error in gui_mainfcn (line 95)
feval(varargin{:});

Error in CONTROL_GUI (line 42)
gui_mainfcn(gui_State, varargin{:});

Error in matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)CONTROL_GUI('Connect_Callback',hObject,eventdata,guidata(hObject))

Error while evaluating UIControl Callback.


ich kann mit den Fehlermeldungen leider nichts anfangen ... -.-
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 23.10.2017, 16:39     Titel:
  Antworten mit Zitat      
Hallo TW1993,

Code:
handles.Prtname.String = str

Ohne die Quotes. 'str' wäre der String 'str', aber Du meinst die Variable namens str.

Die Fehlermeldung enthält nur den Ort, bei dem das Problem auftritt, aber nicht, was das Problem ist. Ist das wirklich die vollständige Meldung?

Du kannst auf jeden Fall den Debugger verwenden, um näheres herauszufinden: Lasse Matlab in der Zeile stoppen und gebe dann die Einzelteile des Befehls im CommandWindow ein:

[quote]% str=string(h.name(find(cell2mat(h.BytesAvailable))))
h.BytesAvailable
cell2mat(h.BytesAvailable)
find(cell2mat(h.BytesAvailable)))
string(h.name(find(cell2mat(h.BytesAvailable))))
[/code]
Wo scheitert es mit welcher Meldung?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
TW1993
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 09.10.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.10.2017, 05:51     Titel:
  Antworten mit Zitat      
er stoppt genau in der Zeile
Code:
str=string(h.name(find(cell2mat(h.BytesAvailable))));


Fehlermeldung bleibt die selbe lediglich noch mit dem Zusatz am Anfang:
Struct contents reference from a non-struct array object

als ich das ganze Zusammengeschustert habe letzte Woche funktionierte ja noch alles (machte zumindest den Anschein), von daher wundert mich das ganze umso mehr...
Private Nachricht senden Benutzer-Profile anzeigen
 
TW1993
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 09.10.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.10.2017, 11:43     Titel:
  Antworten mit Zitat      
TW1993 hat Folgendes geschrieben:
er stoppt genau in der Zeile
Code:
str=string(h.name(find(cell2mat(h.BytesAvailable))));


Fehlermeldung bleibt die selbe lediglich noch mit dem Zusatz am Anfang:
Struct contents reference from a non-struct array object

als ich das ganze Zusammengeschustert habe letzte Woche funktionierte ja noch alles (machte zumindest den Anschein), von daher wundert mich das ganze umso mehr...


finde es halt nur selber komisch da der Befehl an sich mir den COM-Port zu suchen an dem der Arduino angeschlossen ist am freitag funktioniert hat als ich ihn geschrieben hab und jetzt nicht mehr...
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.