Hallo,
ich habe noch ein Problem und zwar wenn ich bei meiner Klasse SerialPortEventListener implementiere (implements SerialPortEventListener) und die Methode public void serialEvent(SerialPortEvent event) überschreibe, wird dann jedes mal, wenn etwas empfangen wurde, die Methode public void serialEvent(SerialPortEvent event) aufgerufen.
Ich habe mich nämlich mit meinem JavaProgramm mit dem HyperTerminal eines anderen Comp verbunden und geben im Hyperterminal etwas ein, meine public void serialEvent(SerialPortEvent event)- Methode wird aber im Java Programm nicht aufgerufen.
Weiß vielleicht jemand was es da haben kann?
Vielen Dank
ich habe noch ein Problem und zwar wenn ich bei meiner Klasse SerialPortEventListener implementiere (implements SerialPortEventListener) und die Methode public void serialEvent(SerialPortEvent event) überschreibe, wird dann jedes mal, wenn etwas empfangen wurde, die Methode public void serialEvent(SerialPortEvent event) aufgerufen.
Ich habe mich nämlich mit meinem JavaProgramm mit dem HyperTerminal eines anderen Comp verbunden und geben im Hyperterminal etwas ein, meine public void serialEvent(SerialPortEvent event)- Methode wird aber im Java Programm nicht aufgerufen.
Weiß vielleicht jemand was es da haben kann?
Vielen Dank
Code:
import javax.comm.*;
import java.io.*;
import java.util.*;
public class SerielleSchnittstelle extends Thread implements SerialPortEventListener {
private Enumeration portList;
private CommPortIdentifier portId;
private SerialPort serialPort;
private OutputStream outs;
private InputStream ins;
public SerielleSchnittstelle()
{
try {
portList = CommPortIdentifier.getPortIdentifiers();
while (portList.hasMoreElements())
{
portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL)
{
if (portId.getName().equals("COM1"))
{
try {
serialPort = (SerialPort) portId.open("COM1ViewPanelXML", 3000);
System.out.println("Ich verbinde mich mit " + serialPort);
}
catch (PortInUseException e) {System.out.println("Fehler bei open: " + e);}
try {ins = serialPort.getInputStream();
outs = serialPort.getOutputStream();}
catch (IOException e) {System.out.println("Fehler bei Output Stream öffnen");}
serialPort.notifyOnDataAvailable(true);
try {serialPort.setSerialPortParams(57600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);}
catch (UnsupportedCommOperationException e) {System.out.println("Fehler bei der Initialisierung der seriellen Schnittstelle");}
outs.write("das zu schreibende".getBytes()); //schreiben
}
}
}
}
catch (Exception ex) {}
}
public void run()
{
System.out.println("Ich bin in run");
try {
byte[] readBuf = new byte[643];
byte[] writeBuf = new byte[643];
boolean hasData = true;
int len = 0;
try {
while (hasData)
{
System.out.println("Available: " + ins.available());
len = ins.read(readBuf); //lesen
outs.write("das zu schreibende".getBytes()); //schreiben
}
}
catch (IOException e) {System.out.println("Fehler beim Lesen: " + e);}
}
catch (Exception e) {}
}
public void serialEvent(SerialPortEvent event)
{
System.out.println("Ich bin in serialEvent");
if(event.getEventType() == SerialPortEvent.DATA_AVAILABLE){
String sNachricht = "";
byte[] readBuffer = new byte[120];
try {
while (ins.available() > 0)
{
int numBytes = ins.read(readBuffer);
}
String nachricht = new String(readBuffer);
char c = (char)0;
System.out.println("Nachricht: " + sNachricht);
}
catch (IOException e) {System.out.println("Fehler: "+e);}
}
}
}