Hallo zusammen.
Ich möchte ein LeCroy-Oszilloskop (WaveRunner), welches SCPI-Befehle
unterstützt, mit SCPI-Befehlen steuern.
Das Ganze soll von einem PC aus über ein Java-Programm funktionieren,
wofür ich ein kleines Programm aus dem Netz zum Testen hergenommen habe
(siehe Code).
Leider funktioniert das Ganze aber nicht, obwohl es funktionieren
sollte.
Die IP des Rechners ist statisch, die des Oszis eben so.
Der Socket wird auch korrekt erzeugt, mit der jeweiligen IP und dem Port
des LeCroy-Oszis.
Dass eine Verbindung hergestellt wird, zeigt mir das LeCroy-Gerät auch
im Log an. Allerdings reagiert es nicht auf die trivialen Befehle wie
"*OPC?" oder "*IDN?"
Hier der Quellcode:
1 | import java.io.*;
|
2 | import java.net.*;
|
3 | class ScpiSockTest
|
4 | {
|
5 | public static void main(String[] args)
|
6 | {
|
7 | String instrumentName = "xxxxx"; // Put your instrument's name here
|
8 |
|
9 | try
|
10 | {
|
11 | Socket t = new Socket(instrumentName,5025); // Connect to instrument
|
12 | // Setup read/write mechanism
|
13 | BufferedWriter out =
|
14 | new BufferedWriter(
|
15 | new OutputStreamWriter(t.getOutputStream()));
|
16 | BufferedReader in =
|
17 | new BufferedReader(
|
18 | new InputStreamReader(t.getInputStream()));
|
19 | System.out.println("Setting frequency to 1 Ghz...");
|
20 | out.write("freq 1Ghz\n"); // Set frequency
|
21 | out.flush();
|
22 | System.out.println("Waiting for source to settle...");
|
23 | out.write("*opc?\n"); // Wait for complete
|
24 | out.flush();
|
25 | String opcResponse = in.readLine();
|
26 | if (!opcResponse.equals("1"))
|
27 | {
|
28 | System.err.println("Invalid response to '*OPC?'!");
|
29 | System.exit(1);
|
30 | }
|
31 | System.out.println("Retrieving instrument ID...");
|
32 | out.write("*idn?\n"); // Query the id string
|
33 | out.flush();
|
34 | String idnResponse = in.readLine(); // Read the id string
|
35 | // Pring the id string
|
36 | System.out.println("Instrument ID: " + idnResponse);
|
37 | }
|
38 | catch (IOException e)
|
39 | {
|
40 | System.out.println("Error" + e);
|
41 | }
|
42 | }
|
43 | }
|
Hattet ihr schonmal so etwas gemacht bzw. könnt mir helfen, wo das
Problem liegen könnte, dass das Oszilloskop jegliche Befehle
"ignoriert"?
Mache ich im Java-Programm etwas falsch?
Vielen Dank schon mal!
Gruß
Joh