tcp_write in Octave aus Funtion aufrufen - Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Studierende:
Praktikum - Optische Verbrennungsdiagnostik von Zündsystemen mit MATLAB
Branche: mehrere
IAV GmbH - Ingenieurgesellschaft Auto und Verkehr - Berlin

Praktikant (w/m) Toolentwicklung Matlab
Branche: Beratung, Expertise, Fahrzeugtechnik, Fahrzeugteile, Technische Dienstleistungen
MBtech Group GmbH & Co. KGaA - Fellbach

Abschlussarbeit / Praktikum: Entwicklung Matlab (m/w)
Branche: Informationstechnologie, Elektrotechnik, Elektronik
GIGATRONIK Technologies GmbH - Ulm

Praktikum - App-Entwicklung für Raspberry Pi Prototyping System
Branche: Fahrzeugtechnik, Fahrzeugteile, Elektrotechnik, Elektronik
IAV GmbH - Berlin

Bachelor-/ Masterarbeit (m/w) in der Softwareentwicklung
Branche: Dienstleistungen
über Campusjäger GmbH - Karlsruhe

weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

tcp_write in Octave aus Funtion aufrufen

 

Axel_S
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 07.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2018, 12:18     Titel: tcp_write in Octave aus Funtion aufrufen
  Antworten mit Zitat      
Hallo,

ich habe noch eine Frage zu Octave. Ich möchte Zeilen aus einer Datei auslesen und per tcp_write an ein Gerät schicken.

Wenn ich das mit F9 nacheinander mache, funktionert alles super. Wenn ich den tcp_write aber in eine Funktion einbinde, gibt er mit folgenden Fehler:
Zitat:

error: Invalid call to tcp_write. Correct usage is:

-- Loadable Function: N = tcp_write (TCP, DATA)
error: called from
print_usage at line 91 column 5
send_script at line 21 column 11
Script_aus_Octave_schicken at line 29 column 1


Mein Minimalbeipsiel sieht folgendermaßen aus:
Code:

clear all
close all
clc

pkg load instrument-control


com_KEITHLEY = tcp("192.168.0.200",5025,200);
pause(0.2);

function send_script(filename)
    global com_KEITHLEY

    fid1 = fopen(filename);

    while (~feof(fid1))
      A = fgetl(fid1);
        if (~isempty(A))
          if A(1) ~= '-'
          B = [A,"\r\n"]
          tcp_write(com_KEITHLEY,B);
          end
        end
    end
    fclose(fid1);
end


send_script('beeper');

tcp_close(com_KEITHLEY);
 


Kann mir dabei einer helfen?

Danke und Gruß,
Axel
Private Nachricht senden Benutzer-Profile anzeigen


Axel_S
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 07.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2018, 12:21     Titel:
  Antworten mit Zitat      
vielleicht noch ein Nachsatz zur Verdeutlichung. Mit handisch ausführen meine ich, dass ich
Code:
filename = 'beeper'
in der Console setzt, das Gerät initialisiere und dann den Code zwishen fid1 = ... und fclose(fid1) per F9 ausführe. Aber halt eben nicht über den Funktionsaufruf...
Private Nachricht senden Benutzer-Profile anzeigen
 
Axel_S
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 07.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2018, 12:49     Titel: Sorry...
  Antworten mit Zitat      
Es tut mir leid. Ich bin etwas doof...
ein
Code:
vor der Initialisierung löst das Problem.
Private Nachricht senden Benutzer-Profile anzeigen
 
AndyydnA

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2018, 15:30     Titel:
  Antworten mit Zitat      
Du solltest besser keine globalen Variablen verwenden. Gib es einen Grund, dass du deiner send_script Funktion nicht auch das handle mitgibst? Also klassisch

Code:
function send_script(h, filename)
 
Axel_S
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 07.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2018, 23:20     Titel: Nachtrag
  Antworten mit Zitat      
Hallo,

ja es gibt einen Grund. Ich habe dieses Beispiel als Minimalbeispiel auf einem GUI Code von mir herausgezogen (und dabei auch entsprechende Deklaration vergessen). Dazu hatte ich kürzlich auch schon eine Frage --> siehe http://www.gomatlab.de/srl-write-in.....-in-octavegui-t45281.html.

Die Funktionen die dort ganz unten über die Buttons aufgerufen werden ('callback', @functionName), haben nicht so richtig funktioniert, wenn man noch zusätzliche Dinge mit übergeben wollte. Daher habe ich mich erstmal für die quick and (very) dirty methode entschlossen, da das Projekt zeitlich auch etwas knapp ist.

Für Anregungen, wie man dieses besser machen kann, bin ich natürlich immer offen.

Liebe Grüße,
Axel
Private Nachricht senden Benutzer-Profile anzeigen
 
AndyydnA

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2018, 23:49     Titel:
  Antworten mit Zitat      
Ah, sowas packt man normalerweise bei GUI Sachen in userdata oder guidata. Da die callbacks ein handle auf die figure haben, kommt man darüber dann easy an userdata ran.

Happy hacking, Gruß Andy
 
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
.



goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2018 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.