package diplompack;
import ...
public class EMPlantConnector extends Thread
{
private static EMPlantConnector m_Instance;
private ....
/** native method declaraction **/
private static native int connect(String servername, String topic);
private static native int disconnect(int channel);
private static native String request(int channel, String objectpath);
private static native int poke(int channel, String objectpath);
private static native int execute(int channel, String instruction);
/** end of native method declaraction**/
private final static int DDEEXECUTE = 0;
private final static int DDEREQUEST = 1;
private final static int DDEPOKE = 2;
public final static int ERRMISSINGCONNECTION = -1;
private PipedWriter out;
private PipedReader in;
boolean write_end_dead;
static {
System.loadLibrary("daisiytoemplant");
}
// Constructor.
public EMPlantConnector()
{
EMPlantConnector con = new EMPlantConnector();
con.connect();
String test = con.request(".Modelle.Netzwerk.Auftragsdaten");
System.out.println("eM-Plant- Object::" + test);
//con.execute(".Modelle.Netzwerk.Ereignisverwalter.start()");
con.disconnect();
}
public EMPlantConnector(PipedWriter out)
{
in = null;
write_end_dead = false;
try
{
this.out = new PipedWriter();
this.in = new PipedReader(out);
}
catch (IOException ioexception)
{....
}
}
private synchronized Object process(int type, String cmd)
{...}
/** Connect to eM-Plant. */ --
public int connect() ---- > Hier ist das Problem, das ich nicht lösen kann !! :)
{
if (connected)
return 0;
int status = connect("eM-Plant", "");
connected = true;
return status;
}
/** Disconnect the Connection to eM-Plant. */
public int disconnect()
{
if (connected)
{
connected = false;
return disconnect(m_Channel);
}
return -1;
}
/** Send a instruction to eM-Plant. */
public int execute(String cmd)
{
return ((Integer) process(DDEEXECUTE, cmd)).intValue();
}
// Set field value for the simulation model.
public int poke(String cmd)
{
return ((Integer) process(DDEPOKE, cmd)).intValue();
}
// Request a field value from the model.
public String request(String cmd)
{
return (String) process(DDEREQUEST, cmd);
}
....
public void run()
{
BufferedReader br = new BufferedReader(in);
PrintWriter pw = new PrintWriter(out);
boolean exit = false;
connect();
while (!exit); ....
disconnect();
}
public static void main(String args[])
{
new EMPlantConnector();
}
}