Hi Leuts,
ich hab mir mal ein Sample von Sun umgeschrieben:
das Programm liest Daten von der seriellen Schnittstelle ein. Mein Mikrocontroller sendet immer abcdefghijklmnopqrstuvwxyz. Komischer Weise bekomme ich immer so eine Ausgabe:
abcdefgh (so Kästchen) ijklmnop (nochmal Kästchen) qrstuvwx (Kästchen) yzabcdef (Kästchen) .....usw.
Auffällig ist das wenn man jeweils einen Buchstaben Block und den darauffolgenden Kästchen Block zusammenzählt, dass es 20 Zeichen sind wie mein ReadBuffer. Bei anderen fertigen Terminalprogramm kommt das komplette Alphabet an! Kann es sein dass der InputStream immer nur 8 Zeichen lesen kann? Da es immer 8 Zeichen je Buchstabenblock sind! Ich hoffe ihr könnt mir helfen!
Gruß Michi
ich hab mir mal ein Sample von Sun umgeschrieben:
Code:
import java.io.*;
import java.util.*;
import javax.comm.*;
public class SimpleRead implements Runnable, SerialPortEventListener {
static CommPortIdentifier portId;
static Enumeration portList;
InputStream inputStream;
SerialPort serialPort;
Thread readThread;
public static void main(String[] args) {
portList = CommPortIdentifier.getPortIdentifiers();
while (portList.hasMoreElements()) {
portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
// if (portId.getName().equals("COM1")) {
if (portId.getName().equals("COM1")) {
SimpleRead reader = new SimpleRead();
}
}
}
}
public SimpleRead() {
try {
serialPort = (SerialPort) portId.open("SimpleReadApp", 2000);
} catch (PortInUseException e) {}
try {
inputStream = serialPort.getInputStream();
} catch (IOException e) {}
try {
serialPort.addEventListener(this);
} catch (TooManyListenersException e) {}
serialPort.notifyOnDataAvailable(true);
try {
serialPort.setSerialPortParams(9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
} catch (UnsupportedCommOperationException e) {}
readThread = new Thread(this);
readThread.start();
}
public void run() {
/*try {
Thread.sleep(20000);
} catch (InterruptedException e) {}*/
}
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.print(new String(readBuffer));
} catch (IOException e) {}
break;
}
}
}
das Programm liest Daten von der seriellen Schnittstelle ein. Mein Mikrocontroller sendet immer abcdefghijklmnopqrstuvwxyz. Komischer Weise bekomme ich immer so eine Ausgabe:
abcdefgh (so Kästchen) ijklmnop (nochmal Kästchen) qrstuvwx (Kästchen) yzabcdef (Kästchen) .....usw.
Auffällig ist das wenn man jeweils einen Buchstaben Block und den darauffolgenden Kästchen Block zusammenzählt, dass es 20 Zeichen sind wie mein ReadBuffer. Bei anderen fertigen Terminalprogramm kommt das komplette Alphabet an! Kann es sein dass der InputStream immer nur 8 Zeichen lesen kann? Da es immer 8 Zeichen je Buchstabenblock sind! Ich hoffe ihr könnt mir helfen!
Gruß Michi