Hallo
Ich habe folgenden Code.
Dieser schreibt und liest vom seriellen Port. Funktioniert auch fast einwandfrei. Wenn etwas von einem externen Gerät auf den seriellen Port geschrieben wird, kommt die Ausgabe aber so: z.b. für Zeichen k
k und dann 119 Quadrate.
Wenn ich jetzt diese Zeile kopieren will und irgenwo einfügen, kommt nur das k. Beim System.out.println kommen aber auch die Quadrate.
Wenn ich eine textbox x habe und x.append() mache, wird auch nur das k geschrieben.
Hier der Code. Ich versten nicht ganz, was er bei
und bei
Hier der ganze Code:
Ich habe folgenden Code.
Dieser schreibt und liest vom seriellen Port. Funktioniert auch fast einwandfrei. Wenn etwas von einem externen Gerät auf den seriellen Port geschrieben wird, kommt die Ausgabe aber so: z.b. für Zeichen k
k und dann 119 Quadrate.
Wenn ich jetzt diese Zeile kopieren will und irgenwo einfügen, kommt nur das k. Beim System.out.println kommen aber auch die Quadrate.
Wenn ich eine textbox x habe und x.append() mache, wird auch nur das k geschrieben.
Hier der Code. Ich versten nicht ganz, was er bei
Code:
try {
if(ins.available() > 0){
byte[] temp = new byte[900];
//System.out.println("in av");
ins.read(temp);
}
} catch (IOException e) {System.out.println("Fehler: "+e);}
und bei
Code:
public void serialEvent(SerialPortEvent event) {
if(event.getEventType()==SerialPortEvent.DATA_AVAILABLE){
String sNachricht = "";
byte[] readBuffer = new byte[120];
try {
//System.out.println("in SerialEvent");
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);
}
}
}
Hier der ganze Code:
Code:
import java.io.*;
import javax.comm.*;
public class Kommunikation {
static CommPortIdentifier portID;
InputStream ins;
OutputStream out;
static SerialPort serss;
/** Creates a new instance of RobotCom */
public Kommunikation(int comPort, int iBaudRate) {
//Comport öffnen
openCom(comPort);
//Eventlistener hinzufügen
addEventlistener(); //Eventlistener hinzufügen
serss.notifyOnDataAvailable(true);
//Baudrate setzen
setBaudRate(iBaudRate);
}
private void openCom(int comPort)
{
try{
//Gewünschter Port wird gewählt
switch(comPort) {
case 1:
portID = CommPortIdentifier.getPortIdentifier("COM1");
break;
case 2:
portID = CommPortIdentifier.getPortIdentifier("COM2");
break;
case 3:
portID = CommPortIdentifier.getPortIdentifier("COM3");
break;
case 4:
portID = CommPortIdentifier.getPortIdentifier("COM4");
break;
case 5:
portID = CommPortIdentifier.getPortIdentifier("COM5");
break;
case 6:
portID = CommPortIdentifier.getPortIdentifier("COM6");
break;
case 7:
portID = CommPortIdentifier.getPortIdentifier("COM7");
break;
case 8:
portID = CommPortIdentifier.getPortIdentifier("COM8");
break;
default:
portID = CommPortIdentifier.getPortIdentifier("COM1");
break;
} //Switch
//Objekt portID wird in eine Serielle Schnittstelle verwandelt die int zahl steht für den Timeout
serss = (SerialPort) portID.open("Robot",50);
}
catch(Exception exc) {
System.out.println("Fehler :"+exc);
}
}
private void addEventlistener()
{
try {
//System.out.println("in eventListener");
ins = serss.getInputStream();
out = serss.getOutputStream();
serss.addEventListener(new ComListener());
}
catch (Exception e) { System.out.println("Fehler: "+e);}
try {
if(ins.available() > 0){
byte[] temp = new byte[900];
//System.out.println("in av");
ins.read(temp);
}
} catch (IOException e) {System.out.println("Fehler: "+e);}
}
public class ComListener implements SerialPortEventListener{
public ComListener()
{
}
public void serialEvent(SerialPortEvent event) {
if(event.getEventType()==SerialPortEvent.DATA_AVAILABLE){
String sNachricht = "";
byte[] readBuffer = new byte[120];
try {
//System.out.println("in SerialEvent");
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);
}
}
}
}
private void setBaudRate(int iBaudRate)
{
try {
serss.setSerialPortParams(iBaudRate,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
serss.setDTR(true); //
serss.setRTS(false); //Ready to send auf Null
}
catch (UnsupportedCommOperationException e) {
System.out.println("Fehler beim Setzen der ComPort Parameter");
}
}
public void senden(int wert)
{
try {
out.write((int)wert);
out.flush();
out.close();
} catch(Exception e) {System.out.println("Fehler: " + e); }
//System.out.println("Test: " + (int)cPosition);
}
public void close()
{
serss.close();
}
}
Gruss und danke