S
stephuN
Gast
Hallo!
ich hoffe von euch kann mir jemand helfen.
mein problem: ich möchte einfach den COM1 port öffnen, etwas in einen OutputStream schreiben, dann mittels SerialPortEventListener aus dem InputStream auslesen und ausgeben.
mein Problem ist, dass in der Funktion
, wenn ich
sage, dann springt das Event nicht an. Er geht nicht in die Klasse [Java]serialPortEventListener[/code] hinein und überprüft auch nicht, ob Daten vefügbar sind.
Mein programm:
Meine Frage also: warum zieht das Event nicht?
vielen dank schonmal für alle die mir helfen
mfg,
Stefan
ich hoffe von euch kann mir jemand helfen.
mein problem: ich möchte einfach den COM1 port öffnen, etwas in einen OutputStream schreiben, dann mittels SerialPortEventListener aus dem InputStream auslesen und ausgeben.
mein Problem ist, dass in der Funktion
Java:
void sendeSerialPort(String nachricht)
Java:
outputStream.write(nachricht.getBytes());
Mein programm:
Java:
package SerialChat3;
import java.util.Enumeration;
import javax.comm.CommPortIdentifier;
import javax.comm.PortInUseException;
import javax.comm.SerialPort;
import javax.comm.SerialPortEvent;
import javax.comm.SerialPortEventListener;
import javax.comm.UnsupportedCommOperationException;
import java.util.TooManyListenersException;
import java.io.*;
public class EinfachSenden2 {
/**
* @param args
*/
public static void main(String[] args)
{
new EinfachSenden2();
System.out.println("main finished");
}
/**
*
*/
CommPortIdentifier serialPortId;
Enumeration enumComm;
SerialPort serialPort;
OutputStream outputStream;
InputStream inputStream;
Boolean serialPortGeoeffnet = false;
int baudrate = 9600;
int dataBits = SerialPort.DATABITS_8;
int stopBits = SerialPort.STOPBITS_1;
int parity = SerialPort.PARITY_NONE;
String portName = "COM1";
int secondsRuntime = 20;
public EinfachSenden2()
{
System.out.println("Konstruktor: EinfachSenden");
}
boolean oeffneSerialPort(String portName)
{
Boolean foundPort = false;
if (serialPortGeoeffnet != false) {
System.out.println("Serialport bereits geöffnet");
return false;
}
System.out.println("Öffne Serialport");
enumComm = CommPortIdentifier.getPortIdentifiers();
while(enumComm.hasMoreElements()) {
serialPortId = (CommPortIdentifier) enumComm.nextElement();
if (portName.contentEquals(serialPortId.getName())) {
foundPort = true;
break;
}
}
if (foundPort != true) {
System.out.println("Serialport nicht gefunden: " + portName);
return false;
}
try {
serialPort = (SerialPort) serialPortId.open("Öffnen und Senden", 500);
} catch (PortInUseException e) {
System.out.println("Port belegt");
}
try {
outputStream = serialPort.getOutputStream();
} catch (IOException e) {
System.out.println("Keinen Zugriff auf OutputStream");
}
try {
inputStream = serialPort.getInputStream();
} catch (IOException e) {
System.out.println("Keinen Zugriff auf InputStream");
}
try {
serialPort.addEventListener(new serialPortEventListener());
} catch (TooManyListenersException e) {
System.out.println("TooManyListenersException für Serialport");
}
serialPort.notifyOnDataAvailable(true);
try {
serialPort.setSerialPortParams(baudrate, dataBits, stopBits, parity);
} catch(UnsupportedCommOperationException e) {
System.out.println("Konnte Schnittstellen-Paramter nicht setzen");
}
serialPortGeoeffnet = true;
return true;
}
void schliesseSerialPort()
{
if ( serialPortGeoeffnet == true) {
System.out.println("Schließe Serialport");
serialPort.close();
serialPortGeoeffnet = false;
} else {
System.out.println("Serialport bereits geschlossen");
}
}
void sendeSerialPort(String nachricht)
{
System.out.println("Sende: " + nachricht);
if (serialPortGeoeffnet != true)
return;
try {
outputStream.write(nachricht.getBytes());
} catch (IOException e) {
System.out.println("Fehler beim Senden");
}
}
void serialPortDatenVerfuegbar() {
try {
byte[] data = new byte[150];
int num;
while(inputStream.available() > 0) {
num = inputStream.read(data, 0, data.length);
System.out.println("Empfange: "+ new String(data, 0, num));
}
} catch (IOException e) {
System.out.println("Fehler beim Lesen empfangener Daten");
}
}
class serialPortEventListener implements SerialPortEventListener {
public void serialEvent(SerialPortEvent event) {
System.out.println("serialPortEventlistener");
switch (event.getEventType()) {
case SerialPortEvent.DATA_AVAILABLE:
System.out.println("juhuuu!");
break;
case SerialPortEvent.BI:
case SerialPortEvent.CD:
case SerialPortEvent.CTS:
case SerialPortEvent.DSR:
case SerialPortEvent.FE:
case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
System.out.println("leer");
case SerialPortEvent.PE:
case SerialPortEvent.RI:
default:
}
}
}
}
Meine Frage also: warum zieht das Event nicht?
vielen dank schonmal für alle die mir helfen
mfg,
Stefan