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

Funktion in GUI einbaun

 

RomanF
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 06.11.07
Wohnort: Wiesbaden
Version: ---
     Beitrag Verfasst am: 29.01.2008, 15:27     Titel: Funktion in GUI einbaun
  Antworten mit Zitat      
Hallo, ich versuche schon seit längeren eine GUI zu erstellen.
Und bin schon bald am verzweifeln.
Ihr seid meine letzte Hilfe!

Anfäglich sollte sie komplizierter sein mit PullDowns und so weiter aber jetzt versuche ich einfach nur eine ganz einfache zu erstellen.
Denn es funktionierte leider nicht wirklich.
Aber auch die einfache klappt nicht:
Einfach nur ein PushButton der die Funktion aufrufen soll und eine Axis zum darstellen.
Nach längeren versuchen und lesen und Email austausch habe ich einen Code zusammenbekommen der vielleicht auch gehen könnte:

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

global s; % Der geöffnete COM-Kanal
s = fopen(...);

for n=1:1e2
fwrite(s,[84 88 32 56 49 32 65 70 13 10]);
out=fscanf(s);
tmp=[tmp constellation(out)];

plot (handles.axes1, tmp, '.g' )

whitebg('black')
axis([-500 500 -400 400])
grid

xlabel('In-Phase Amplitude')
ylabel('Quadrature Amplitude')
title('16 QAM-Constellation Diagram RF-Input1')
drawnow

end

function out=constellation(in)

N=length(in);
M=(N-14)/4;

zahlen_double=zeros(1,M);


for n=1:M
tmp=hex2dec(in(14+(n-1)*4+[0:3]));
binaer=dec2bin(tmp,16);
if strcmp(binaer(1),'1')
tmp=-1*bitcmp(tmp-1,16);
end
zahlen_double(n)=tmp;
end
out=zahlen_double(1:2:M-1)+j*zahlen_double(2:2:M);

Also hier ist mein Cod alles hinter dem pushbutton1_Callback geschrieben.
Eigentlich habe ich diesen Code in einer funktion stehen die ich mit constellation_verkettet aufgerufen wird und diese dann auf die constellation zugereift in dieser die wetre gewandet werden.
Unser Receiver wirft uns in diesem Fall die Konstellationspunke in Hex form raus diese wandeln wir und wollen dieses Plotten.
Wenn ich die Funktion von Matlab Command Window aufrufe geht das einbahnfrei nur mit der GUI gehts nicht.
s ist der serielle COM1 Port.
Und laut Malab Hilfe soll dort s = fopen(...) stehen aber was jetzt in die Klammer reinsoll das weiß ich nicht.
Soll wohl irgend eine irgendeine Spezifikation von COM1 sein.

Wäre schön wenn mir da jemand helfen könnte.
Vielen Dank im voraus.



Auch hätte ich noch eine andere Frage: Wir lesen auch noch mehere Übertragungskanalgüte Werte in dB aus.
Also Zahlenwerte die sich z.B. bei der SN Anzeige wenig ändern nur so zwichen 16 und 19 beispielsweise.
Wir haben dazu wieder so eine kleine Funktion geschrieben also wieder einen hex Code an das Gerät geschickt, die Antwort gewandelt und ausgegeben.
Jetzt würde wir die Anzeige gerne so machen das wir eine Anzeige erhalten und diese sich dan dynamisch ändert als GUI oder sonst etwas.
Wenn wir einfach nur eine Schleife um die Funktion bauen kommt als Anzeige im Workspace jedoch immer nur der letzte Wert.
Wie könnten wir denn das am besten realisieren?
Gibts dazu irgendwelche Tools?

Vielen Dank
Private Nachricht senden Benutzer-Profile anzeigen


Nyquist
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 19.11.07
Wohnort: Laupheim
Version: ---
     Beitrag Verfasst am: 29.01.2008, 16:52     Titel:
  Antworten mit Zitat      
Hei Roman F,

lies Dir das mal durch da sind die Grundlagen einer GUI ganz ordentlich erklärt. Ich denke die meisten deiner Probleme sind da beschrieben

http://www.mepnet.de/index.php?opti.....w&id=24&Itemid=35
_________________

Mit freundlcihem Gruß
Nyquist
Private Nachricht senden Benutzer-Profile anzeigen
 
Nyquist
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 19.11.07
Wohnort: Laupheim
Version: ---
     Beitrag Verfasst am: 30.01.2008, 14:59     Titel:
  Antworten mit Zitat      
Sers Roman F,

ich habe meine Daten bisher über eine SchnittstellenDLL und über Codesys eingelesen.

Eine COM schnittstelle habe ich zur kommunikation mit Excel benützt

actxserver

    global s; % Der geöffnete COM-Kanal
    s = fopen(...);


in dieses fopen sollte nun so ein Object eines COM Servers übergeben werden. Lies mal in der Matlab Hilfe unter Stichwort COM actxserver actxcontrol nach.

Mehr kann ich dir leider nicht sagen hab dies selbst noch nie gemacht. wenn du es hinbekommen hast würde mich das auch interessieren.
_________________

Mit freundlcihem Gruß
Nyquist
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.