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

Octave Skript aus VBA mit Variablenübergabe starten

 

Pigmy
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 22.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2019, 17:21     Titel: Octave Skript aus VBA mit Variablenübergabe starten
  Antworten mit Zitat      
Moin,

ich würde gerne aus einer VBA Sub ein Octave Skript starten und bestimmte Variablen übergeben.
Hierzu öffne ich eine Batch Datei die wiederum das Octave Skript ausführt. Das funktioniert auch, solange ich keine Variablen übergebe, da ich das nicht auf die Reihe bekomme.

Hier der VBA Code:
Code:

Public Sub LinkOctave()
    Dim PID As Variant
    Dim BatchFilePath As String
    'Dim a As Byte
    a = 3
    a = StrConv(a, vbUnicoder)
    b = 500
    b = StrConv(b, vbUnicoder)
    BatchFilePath = "C:\Users\bla\Documents\Octave\run_octave_script.bat"
    PID = Shell(BatchFilePath & " " & a & " " & b)
End Sub
 

Erste Frage: Ist die Variablenübergabe von a und b an die Batch Datei korrekt?

Jetzt die Batch:
Code:

@echo off

set OCT_HOME=C:\Octave\Octave-5.1.0.0\mingw64\
set "PATH=%OCT_HOME%\bin;%PATH%"

set SCRIPTS_DIR=%~dp0

start octave-cli.exe --eval "cd(getenv('SCRIPTS_DIR')); myscript ; quit;"
 


Wie lese ich jetzt die Variablen ein?
Etwa so?
Code:

set a=%1
set b=%2
 

Wie gebe ich sie als Input an das Octave Skript weiter?
Vielleicht so?
Code:

start octave-cli.exe --eval "cd(getenv('SCRIPTS_DIR')); myscript a b; quit;"
 

Oder so:
Code:

start octave-cli.exe --eval "cd(getenv('SCRIPTS_DIR')); myscript %a% %b%; quit;"
 


Und die letzte Frage: Wie erhalte ich den dann den Input im Octave Skript?
Hier das kleine testskript:
Code:

x = a:b;
y = cumsum(rand(size(x)) - 0.5);
plot(x,y)
print -dpng -r0 out.png
 


Vielen Dank für eure Unterstützung
Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Pigmy
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 22.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.11.2019, 13:20     Titel:
  Antworten mit Zitat      
Ok, ich habe es soweit für Zahlen hinbekommen.
Aber sobald ich einen String übergeben will funktioniert es nicht.
Code für die Sub:
Code:

Public Sub LinkOctave()
    Dim PID As Variant
    Dim BatchFilePath As String
    Dim a As Byte
    Dim b As Byte
    Dim c As String
    a = 0
    b = 20
    c = "Titel"
    BatchFilePath = "C:\Users\bla\Documents\Octave\run_octave_script.bat"
    PID = Shell(BatchFilePath & " " & a & " " & b & " " & c)
End Sub
 


Code für die .bat:
Code:

@echo off

set OCT_HOME=C:\Octave\Octave-5.1.0.0\mingw64\
set "PATH=%OCT_HOME%\bin;%PATH%"

set SCRIPTS_DIR=%~dp0
set a=%1
set b=%2
set c=%3

start octave-cli.exe --eval "cd(getenv('SCRIPTS_DIR')); myscript(%a%, %b%, %c%); quit;"
 


Hier wird aber die Variable c richtig angegeben. Habe mir mit
Code:
den wert von c anzeigen lassen. War Titel.
Hier der Code vom Octave Skript:
Code:

function myscript(a,b,c)
x = a:b;
y = sin(x);
plot(x,y);
title(c)
print -dpng -r0 out.png
endfunction
 


Ich weiß nicht wieso der String nicht richtig übergeben wird. Wenn c nur eine Zahl ist, dann funktioniert es wieder perfekt. Aber so lange c ein string ist wird auch gar keine datei mit dem plot erstellt.
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.