G
Guest
Gast
Hallo,
ich habe auch ein kleines Problem, wo ich nicht mehr weiterkomme... und zwar möchte ich einem Gerät einen Befehl geben, und mir dann die Antwort angucken.
Das Gerät empfängt auch ordnungsgemäß den Befehl, nur dass, was ich zurückbekomme, ist Zahlensalat zusammen mit ein paar Fragezeichen...
Seht Ihr den Fehler? Bin Anfänger mit der commapi...
Vielen Dank schonmal
ich habe auch ein kleines Problem, wo ich nicht mehr weiterkomme... und zwar möchte ich einem Gerät einen Befehl geben, und mir dann die Antwort angucken.
Das Gerät empfängt auch ordnungsgemäß den Befehl, nur dass, was ich zurückbekomme, ist Zahlensalat zusammen mit ein paar Fragezeichen...
Seht Ihr den Fehler? Bin Anfänger mit der commapi...
Vielen Dank schonmal
Code:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.*;
import javax.comm.*;
public class Verbindung implements SerialPortEventListener, Runnable
{
Enumeration portListe;
CommPortIdentifier portId;
String befehl;
String ergebnis;
SerialPort seriellerPort;
OutputStream outputStream;
InputStream inputStream;
Thread leseThread;
String standardPort = "/dev/ttyS0";
public Verbindung()
{
boolean portFound = false;
portListe = CommPortIdentifier.getPortIdentifiers();
while (portListe.hasMoreElements())
{
portId = (CommPortIdentifier) portListe.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL)
{
if (portId.getName().equals(standardPort))
{
System.out
.println("Port auf " + standardPort + " gefunden");
portFound = true;
try
{
seriellerPort = (SerialPort) portId.open("Verbindung",
2000);
} catch (PortInUseException e)
{
System.out
.println("Port wird von einem anderen Gerät benutzt");
continue;
}
try
{
outputStream = seriellerPort.getOutputStream();
} catch (IOException e)
{
e.printStackTrace();
}
try
{
seriellerPort.setSerialPortParams(9600,
SerialPort.DATABITS_7, SerialPort.STOPBITS_1,
SerialPort.PARITY_EVEN);
} catch (UnsupportedCommOperationException e)
{
} catch (Exception e)
{
System.out.println(e);
}
try
{
Thread.sleep(1000);
} catch (InterruptedException e)
{
e.printStackTrace();
}
try
{
inputStream = seriellerPort.getInputStream();
} catch (IOException e)
{
}
try
{
seriellerPort.addEventListener(this);
} catch (TooManyListenersException e)
{
}
seriellerPort.notifyOnDataAvailable(true);
leseThread = new Thread(this);
}
}
}
}
public String getErgebnis(String befehl)
{
this.befehl = befehl;
leseThread.start();
System.out.println("Probiere, den Befehl " + befehl + " an "
+ seriellerPort.getName() + " zu senden");
try
{
outputStream.write(befehl.getBytes());
} catch (IOException e)
{
}
byte[] readBuffer = new byte[20];
try
{
while (inputStream.available() > 0)
{
int numBytes = inputStream.read(readBuffer);
}
System.out.print(new String(readBuffer));
} catch (IOException e)
{
}
try
{
Thread.sleep(2000);
} catch (Exception e)
{
}
seriellerPort.close();
return ergebnis;
}
public void setBefehl(String befehl)
{
this.befehl = befehl;
}
public void serialEvent(SerialPortEvent event)
{
switch (event.getEventType())
{
case SerialPortEvent.BI:
case SerialPortEvent.OE:
case SerialPortEvent.FE:
case SerialPortEvent.PE:
case SerialPortEvent.CD:
case SerialPortEvent.CTS:
case SerialPortEvent.DSR:
case SerialPortEvent.RI:
case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
break;
case SerialPortEvent.DATA_AVAILABLE:
byte[] readBuffer = new byte[20];
try
{
while (inputStream.available() > 0)
{
int numBytes = inputStream.read(readBuffer);
}
System.out.println(new String(readBuffer));
} catch (IOException e)
{
}
break;
}
}
public void run()
{
try
{
Thread.sleep(2000);
} catch (InterruptedException e)
{
}
}
}
Code:
public class Test
{
public static void main(String[] args)
{
Verbindung verbindung = new Verbindung();
System.out.println(verbindung.getErgebnis(":IDNS?\n"));
}
}