Problem mit der Communication Api
-
Hi ich habe folgendes Problem:
Ich möchte mit Java einen Wert an die serielle Schnittstelle(COM1) senden. Ich habe die Anweisungen in der Readme befolgt und alle Dateien an die richtige Stelle kopiert.
Hier ist noch mein Code:import java.io.*; import java.util.*; import javax.comm.*; public class SimpleWrite { static Enumeration portList; static CommPortIdentifier portId; static String messageString = "Hello, world!"; static SerialPort serialPort; static OutputStream outputStream; static boolean outputBufferEmptyFlag = false; /** * Method declaration * * * @param args * * @see */ public static void main(String[] args) { boolean portFound = false; String defaultPort = "COM1"; if (args.length > 0) { defaultPort = args[0]; } portList = CommPortIdentifier.getPortIdentifiers(); while (portList.hasMoreElements()) { portId = (CommPortIdentifier) portList.nextElement(); if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { if (portId.getName().equals(defaultPort)) { System.out.println("Found port " + defaultPort); portFound = true; try { serialPort = (SerialPort) portId.open("SimpleWrite", 2000); } catch (PortInUseException e) { System.out.println("Port in use."); continue; } try { outputStream = serialPort.getOutputStream(); } catch (IOException e) {} try { serialPort.setSerialPortParams(19200, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); } catch (UnsupportedCommOperationException e) {} try { serialPort.notifyOnOutputEmpty(true); } catch (Exception e) { System.out.println("Error setting event notification"); System.out.println(e.toString()); System.exit(-1); } System.out.println( "Writing \""+messageString+"\" to " +serialPort.getName()); try { outputStream.write(messageString.getBytes()); } catch (IOException e) {} try { Thread.sleep(2000); // Be sure data is xferred before closing } catch (Exception e) {} serialPort.close(); System.exit(1); } } } if (!portFound) { System.out.println("port " + defaultPort + " not found."); } } }
Das Programm liefert mir nun immer
port COM1 not found.
An was kann das liegen.
Ich arbeite mit dem JDK 1.4. <- Vielleicht liegt hier das Problem.
-
hi
bei mir funktioniert der code prima.
ich fahre windows 98, und habe noch ein älteres java, j2sdk1.4.0-beta3, (ich weiß, muss ich mal updaten...)
Found port ... und write.
die comm.jar liegt bei mir in folgenden ordner (habe sie schon vor längerem installiert.. )
javapfad\jre\lib\
javapfad\jre\lib\ext\
javapfad\lib\welches betriebssystem fährst du?
-
Komisch.
Ich habe Win 2000.
-
asdf schrieb:
Komisch.
Ich habe Win 2000.Für gewöhnlich sperrt NT / 2K / XP den direkten Zugriff auf die Ports. Beachtet das eure Lib?! Vielleicht mal in die FAQs schauen...
-
klar beachtet sie das, sonst könnte ich nicht den com1 ansprechen.. native.
runterzuladen ist die comm api platformspezifisch. sonst würde es ja nicht gehen.
ich habe leider eine alte fassung dieser api, auszug:
This is due to platform limitations. For Windows 95 and Windows 98 the
Java communications API will always enumerate the serial ports
COMM 1 though COMM 4 and the parallel ports LPT1 and LPT2. For Windows NT
the Java communications API will enumerate the serial ports entered in the
Registry and the parallel port LPT1 and LPT2. Attempting to open a port
that does not exist will result in a PortInUseException being thrown.asdf: du müsstest mal in der neueren mitgelieferten readme oder faq schaun, wie Sgt. Nukem schon sagt..
-
elise schrieb:
klar beachtet sie das, sonst könnte ich nicht den com1 ansprechen.. native.
*DU* fährst ja auch Win98!! Und das ist eben NICHT NT / 2K / XP!!
Oder wie meintest Du das jetzt?!?
-
Ich verwende XP und es funkt bei mir auch auf 2000.
Da muss bei der API doch so ein Beispiel dabei sein (es heißt BlackBox oder so).
Das sollte auf alle Fälle laufen. (Und da kannst du dann auch Sourcen rauskopieren)
-
Ich habe das Problem.
Ich habe dieses Propertie Fiel nur nach
javapfad/lib
javapfad/jre/lib
(Obwohl in der readme nur javapfad/lib steht)
kopiert.
Jetzt habe ich es auch noch nach javapfad/jre/lib/ext kopiert.@elise Danke also für den indirekten Tipp