Warum unterscheiden sich die Ausgänge, wenn ich diesen Code mit Netbeans 6.8 und Eclipse ausführe? [Duplikat

StackOverflow https://stackoverflow.com/questions/4533140

Frage

Mögliches Duplikat:
Warum unterscheiden sich die Ausgänge, wenn ich diesen Code mit Netbeans 6.8 und Eclipse ausführe?

Wenn ich den folgenden Code mit Eclipse und Netbeans 6.8 ausführe. Ich möchte die verfügbaren COM -Ports auf meinem Computer sehen. Wenn ich in Eclipse ausgeführt wird, gibt es mir alle verfügbaren COM -Ports zurück, aber wenn ich sie in NetBeans ausführt, scheint es keine Ports zu finden.

public static void test() {
    Enumeration lists=CommPortIdentifier.getPortIdentifiers();

    System.out.println(lists.hasMoreElements());
    while (lists.hasMoreElements()) {
        CommPortIdentifier cn =
          (CommPortIdentifier)lists.nextElement();

        if ((CommPortIdentifier.PORT_SERIAL==cn.getPortType())) {
            System.out.println(
              "Name is serail portzzzz " +
              cn.getName()+
              " Owned status " +
              cn.isCurrentlyOwned());

            try {
                SerialPort port1=(SerialPort)cn.open("ComControl",800000);
                port1.setSerialPortParams(
                  9600,
                  SerialPort.DATABITS_8,
                  SerialPort.STOPBITS_1,
                  SerialPort.PARITY_NONE);
                System.out.println("Before get stream");
                OutputStream out=port1.getOutputStream();
                InputStream input=port1.getInputStream();
                System.out.println("Before write");
                out.write("AT".getBytes());
                System.out.println("After write");
                int sample=0;
                //while((( sample=input.read())!=-1)){
                System.out.println("Before read");
                //System.out.println(input.read() + "TEsting ");
                //}
                System.out.println("After read");
                System.out.println(
                  "Receive timeout is " +
                  port1.getReceiveTimeout());
            }
            catch(Exception e) {
                System.err.println(e.getMessage());
            }
        }
        else {
            System.out.println(
              "Name is parallel portzzzz " +
              cn.getName() +
              " Owned status " +
              cn.isCurrentlyOwned() +
              cn.getPortType() +
              "    ");
        }
    }
}

Ausgabe mit NetBeans,

FALSCH

Ausgabe mit Eclipse,

true
Name is serail portzzzz COM1 Owned status false
Before get stream
Before write
After write
Before read
After read
Receive timeout is -1
Name is serail portzzzz COM2 Owned status false
Before get stream
Before write
After write
Before read
After read
Receive timeout is -1
Name is parallel portzzzz LPT1 Owned status false2
Name is parallel portzzzz LPT2 Owned status false2
War es hilfreich?

Lösung

Eine erste Vermutung wäre, dass die in einer DLL eingeschlossene Bibliothek, die Sie verwenden, nativen Code verwendet, und dass der Code nicht zuvor einen Fehler enthält, den Sie übersehen haben, und der Code auf ein Dummy -Verhalten zurückfällt.

Ich würde mir den Initialisierungscode genauer ansehen, um zu sehen, was dort passiert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top