[Scilab-users] Question about javasci V2
Daniel Neutzler
daniel.neutzler at haw-hamburg.de
Thu Feb 16 08:03:27 CET 2017
Hello Pierre,
I understand your Example. I can run it if I change it to Scilab sci=new
Scilab(false) without graphics.
How do I use the thread class Idle and the ScilabManager Class with the
Example to make it run ?
Like that ?
...
public class Main {
static boolean bgraph;
public static void main(String[] args){
*Idle newThread= new Idle(???);
Idle.run();
* ...further with your Example
Moreover my compiler dosen't know types /classes in Idle and Scilab
Manager. Which imports/librarys do I need ?
Thank You So Much,
Daniel
Am 15.02.2017 um 11:21 schrieb Perrichon:
>
> Hello Daniel,
>
> Here is a basic program I’ve realized under netbeans 7.01
>
> It works with scilab x64 windows 7 or 10, scilab 5.5.2 ; not with 6.0.0 b2
>
> Also here are the libraries to incilude in your java project (eclipse
> if i well understood) :
>
> org.scilab.modules.jvm.jar
>
> org.scilab.modules.javasci.jar
>
> org.scilab.modules.core.jar
>
> org.scilab.modules.types.jar
>
> JDK1.8
>
> It works with jdk1.8.0_40
>
> //----------------------------------------------------------------------------------------------------------------------------------------------------
>
> // Java program and main program
>
> /*
>
> * To change this template, choose Tools | Templates
>
> * and open the template in the editor.
>
> */
>
> package testscilabv2;
>
> import org.scilab.modules.javasci.Scilab;
>
> import org.scilab.modules.types.ScilabType;
>
> import org.scilab.modules.types.ScilabDouble;
>
> /**
>
> *
>
> * @author pierre
>
> */
>
> public class TestScilabV2 {
>
> static boolean bgraph;
>
> /**
>
> * @param args the command line arguments
>
> */
>
> public static void main(String[] args) {
>
> try {
>
> Scilab sci = new Scilab(true);
>
> if (sci.open()) {
>
> /* Send a Scilab instruction */
>
> sci.exec("foo = [ 2, 4, 6; 4, 0, 10; 6, 10, 12 ];");
>
> /* Retrieve the variable foo */
>
> ScilabType foo = sci.get("foo");
>
> /* Display the variable */
>
> System.out.println("Representation of : " + foo);
>
> /* Get the data and retrieve the 2,2 value */
>
> double[][] aReal = ((ScilabDouble)foo).getRealPart();
>
> System.out.println("foo[1,1] = " + aReal[1][1]);
>
> /* Change the value of 2,2 */
>
> aReal[1][1] = Math.PI;
>
> /* Create a new variable */
>
> ScilabDouble bar = new ScilabDouble(aReal);
>
> /* Send it to Scilab */
>
> sci.put("bar", bar);
>
> /* Display it through Scilab */
>
> sci.exec("disp(bar)");
>
> sci.exec("about();");
>
> sci.exec("plot3d();");
>
> System.out.println("\nFermer le grahique pour terminer le programme de
> test...");
>
> do {
>
> // Boucle tant que le graphique n'a pas été refermé
>
> //-------------------------------------------------
>
> bgraph=sci.isGraphicOpened();
>
> sci.exec("aPPeScilabJavasciv2=1;");
>
> }while (bgraph);
>
> sci.close();
>
> System.out.println("...Fin du programme de test");
>
> } else {
>
> System.out.println("Could not start Scilab ");
>
> }
>
> /* Can be improved by other exceptions: AlreadyRunningException,
>
> * InitializationException, UndefinedVariableException,
>
> * UnknownTypeException, etc
>
> */
>
> } catch (org.scilab.modules.javasci.JavasciException e) {
>
> System.err.println("An exception occurred: " + e.getLocalizedMessage());
>
> }
>
> }
>
> }
>
> *De :*Daniel Neutzler [mailto:daniel.neutzler at haw-hamburg.de]
> *Envoyé :* lundi 13 février 2017 13:07
> *À :* Perrichon <perrichon.pierre at wanadoo.fr>; 'Users mailing list for
> Scilab' <users at lists.scilab.org>
> *Objet :* Re: [Scilab-users] Question about javasci V2
>
> Hello Pierre,
> thank you for your answer. It is nice to hear that my Problem is
> probably a Bug.
> I'm not sure how to use your example. Which Libs do I need for it or
> may you have a simple example to use it?
> I'm sorry, my Java knowlegde is restricted (Beginner).
>
> Thank You for your Help,
> Daniel Neutzler
>
> Am 04.02.2017 um 19:29 schrieb Perrichon:
>
> Hello Daniel
>
> I’ve already met your problem one year ago, and for me it is
> really a bug.
>
> I work with scilab x64 5.5.2, netbeans 7.01, on W7 or W10 platform.
>
> I’ve sovled it in my application, so I’m just able to propose
> parts of code.
>
> I’ve delay the 2 instructions *Scilab sci = new Scilab(true)* and
> if (sci.open()) {, by creating a ScilabManager class, … and a
> thread class named Idle
>
> Part of ScilabManager (also note the public static void
> OpenScilab())
>
> public class ScilabManager {
>
> public static Scilab sci; //Driver Scilab
>
> public static boolean bScilabOpen;
>
> public static boolean InitScilab;
>
> public static Fifo FifoScilab;
>
> private static TListeFifo SciJob;
>
> static ScilabError TErrorScilab;
>
> public static File ScilabFile;
>
> private static int dim = 500;
>
> public static String [] Script;
>
> private static int iScript;
>
> public static Configuration AppConfiguration;
>
> public static Log LogScilab;
>
> public static int NumGraph=0;
>
> ScilabManager() {
>
> try {
>
> sci = new Scilab(true);
>
> InitScilab=true;
>
> } catch (JavasciException.InitializationException ex) {
>
> Logger.getLogger(ScilabManager.class.getName()).log(Level.SEVERE,
> null, ex);
>
> }
>
> }
>
> @SuppressWarnings("CallToThreadDumpStack")
>
> public static void OpenScilab() {
>
> try {
>
> bScilabOpen=sci.open();
>
> } catch (JavasciException ex) {
>
> ex.printStackTrace();
>
> }
>
> if (bScilabOpen) System.out.println("\nScilab est ouvert\n");
>
> else System.out.println("\nErreur ouverture Scilab\n");
>
> ScilabError.ClearScilabError();
>
> try {
>
> // Initialisation et chargements des fonctions Scilab
>
> //---------------------------------------------------
>
> AppConfiguration = new Configuration();
>
> } catch (FileNotFoundException ex) {
>
> Logger.getLogger(ScilabManager.class.getName()).log(Level.SEVERE,
> null, ex);
>
> } catch (IOException ex) {
>
> Logger.getLogger(ScilabManager.class.getName()).log(Level.SEVERE,
> null, ex);
>
> } catch (JavasciException ex) {
>
> Logger.getLogger(ScilabManager.class.getName()).log(Level.SEVERE,
> null, ex);
>
> }
>
> try {
>
> // Initialisation du fichier de log out (Traces commandes Scilab)
>
> //--------------------------------------------------------------
>
> LogScilab = new Log();
>
> OptsimView.SetLogFile();
>
> } catch (FileNotFoundException ex) {
>
> ex.printStackTrace();
>
> } catch (IOException ex) {
>
> ex.printStackTrace();
>
> }
>
> Script = new String[dim];
>
> Now note part of Idle task :
>
> public class Idle extends Thread {
>
> protected volatile boolean IdleRunning = true;
>
> public static boolean bCloseIdle=false;
>
> private static int Count=1;
>
> private static int setGraphe=0;
>
> private static JTextField TF=null;
>
> private static Timer bTimer;
>
> private static JLabel AnimationLabel;
>
> private static Icon idleicone;
>
> private int ThreadNumber;
>
> Idle (JTextField TFi, Timer busyIconTimer,
>
> JLabel statusAnimationLabel, Icon icone) {
>
> TF=TFi;
>
> bTimer=busyIconTimer;
>
> AnimationLabel=statusAnimationLabel;
>
> idleicone=icone;
>
> this.ThreadNumber=Count++;
>
> }
>
> @Override
>
> public synchronized void run() {
>
> boolean bTest;
>
> if (ScilabManager.InitScilab) {
>
> ScilabManager.OpenScilab();
>
> }
>
> ScilabManager.sci.exec("aPPeScilabJavasciv2=1;");
>
> while (IdleRunning) { …etc
>
> So instructions *Scilab sci = new Scilab(true)* and if (sci.open
> are delayed.
>
> This is the only solution I’ve found. After that Scilab well run
> with Java netbeans and javasci2.
>
> Also well note that my program doesn’t work with Scilab 6.0.0 b2
> at compile time and see :
>
> http://bugzilla.scilab.org/show_bug.cgi?id=14626
>
> Hope it helps you
>
> Sincerely
>
> Pierre
>
> *De :*users [mailto:users-bounces at lists.scilab.org] *De la part
> de* Daniel Neutzler
> *Envoyé :* mardi 31 janvier 2017 13:15
> *À :* users at lists.scilab.org <mailto:users at lists.scilab.org>
> *Objet :* [Scilab-users] Question about javasci V2
>
> Hi, I am using Scilab 5.5.2 and trying to open a Scilab script from
> Java. Therfore I followed the documentation: Compute and run with
> javasci v2.
>
> I use Eclipse to compile and run. It works, but I want now to open
> it in "advanced mode" to get grahpics
> (*Scilab sci = new Scilab(true);*). If i do it, I get a compile
> Error. What's wrong ?
> Code and Error Plot out see below.
>
> Thank You for your Help,
> Daniel Neutzler
>
> ####Error####
> java.lang.ExceptionInInitializerError
> at
> org.scilab.modules.commons.xml.XConfiguration.<clinit>(Unknown Source)
> at org.scilab.modules.core.Scilab.<clinit>(Unknown Source)
> at
> org.scilab.modules.javasci.Call_ScilabJNI.Call_ScilabOpen(Native
> Method)
> at
> org.scilab.modules.javasci.Call_Scilab.Call_ScilabOpen(Unknown Source)
> at org.scilab.modules.javasci.Scilab.open(Unknown Source)
> at StartUp.main.main(main.java:17)
> Caused by: java.lang.NullPointerException
> at java.io.File.<init>(Unknown Source)
> at org.scilab.modules.commons.ScilabConstants.<clinit>(Unknown
> Source)
> ... 6 more
> Exception in thread "main"
>
> #### JAVA Code####
>
> package StartUp;
> *import org.scilab.modules.javasci.Scilab;
> import org.scilab.modules.types.ScilabType;*
> import java.io.File;
> import java.io.FileNotFoundException;
>
> public class main {
>
> public static void main(String[] args) throws
> FileNotFoundException{
> System.out.println("Starte Programm
> Pin-Positionsanalyse-Tool V1.0...");
>
> try {
> *Scilab sci = new Scilab(true); // Starts in advanced mode *
> if (sci.open()) {
> sci.execException(new
> File("C:/Users/Daniel/Desktop/test.sce"));
> sci.close();
> } else {
> System.out.println("Could not start Scilab ");
> }
> /* Can be improved by other exceptions: AlreadyRunningException,
> * InitializationException, UndefinedVariableException,
> * UnknownTypeException, etc
> */
> } catch (org.scilab.modules.javasci.JavasciException e) {
> System.err.println("An exception occurred: " +
> e.getLocalizedMessage());
> }
> }
> }
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20170216/23fe9475/attachment.htm>
More information about the users
mailing list