Geschwindigkeit RXTX JAVA

Status
Nicht offen für weitere Antworten.
M

mgiaco

Gast
Hallo ich habe mal eine Frage zu java und RS232. Ich möchte über die Serielle Schnittstelle jede 40msec ca. 60 Bytes versenden vielleicht auch noch 10 mehr oder so. Nur habe ich das Problem das ich diese Geschwindigkeit nicht erreiche. Ich verwende RXTX weil es ja die ComAPI von Sun für Windows nicht mehr gibt.

Kann es sien das diese Geschwindigkeit nicht möglich ist ? Was mache ich falsch??

Wenn ich mit dem Oszilloskop messe wird jede msec nur 1 Byte gesendet. Geht es wirklich nicht schneller?


Hier mein code.

Ich rufe in einem Thread immer wirte(data) auf.


public class RS232 implements SerialPortEventListener {

final byte LF = 0x0A, CR = 0x0D;

private SerialPort serialPort;
private InputStream inputStream;

private OutputStream outputStream;
private PrintWriter outPrint;
private java.io.BufferedOutputStream buffout;

private boolean STATUS;

public RS232(String comPort, int baudRate) {

Enumeration portList = CommPortIdentifier.getPortIdentifiers();
CommPortIdentifier portId = null;
boolean portFound = false;

while (portList.hasMoreElements()) {
portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
if (portId.getName().equals(comPort)) {
System.out.println("Found port: " + comPort);
portFound = true;
break;
}
}
}

if (!portFound) {
if(RS232Config.DEBUG) System.out.println("port " + comPort + " not found.");
STATUS = false;
}

else if(portFound)
{
try {
serialPort = (SerialPort) portId.open("COMPORT", 2000);
} catch (PortInUseException e) {
e.printStackTrace();
//System.exit(1);
}
try {
inputStream = serialPort.getInputStream();
outputStream = serialPort.getOutputStream();
outPrint = new PrintWriter(outputStream);
buffout = new BufferedOutputStream(outputStream);

} catch (IOException e) {
e.printStackTrace();
}

try {
serialPort.addEventListener(this);
} catch (TooManyListenersException e) {
e.printStackTrace();
}

serialPort.notifyOnDataAvailable(true);

try {
serialPort.setSerialPortParams(baudRate, SerialPort.DATABITS_8,
SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);
} catch (UnsupportedCommOperationException e) {
e.printStackTrace();
}

STATUS = true;
}
}

public boolean getSTATUS()
{
return this.STATUS;
}


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:
//while(this.availableToRec()>0)
//System.out.print(this.read());
break;
}
}

public void write(byte[] byteArray) {

outPrint.print(byteArray);
outPrint.flush();

}

/*public int availableToSend() {
return 128;
}*/

public void write(byte b) {

//outPrint.print((byte)b);
//outPrint.flush();
try {
buffout.write(b);
buffout.flush();
} catch (IOException e) {
e.printStackTrace();
}
}

public void write(int b) {

outPrint.print(b);
outPrint.flush();

}

public void write(String b) {

outPrint.print(b);
outPrint.flush();

}

public int availableToRec() {
try {
return inputStream.available();
} catch (IOException e) {
e.printStackTrace();
return 0;
}
}

public int read() {
try {
return inputStream.read();
} catch (IOException e) {
e.printStackTrace();
return -1;
}
}

public int read(byte[] b) {
try {
return inputStream.read(b);
} catch (IOException e) {
e.printStackTrace();
return 0;
}
}

public void close()
{
this.serialPort.close();
}

public static String[] getPorts() {

Enumeration portIdentifiers = CommPortIdentifier.getPortIdentifiers();
LinkedList<String> portList = new LinkedList<String>();
CommPortIdentifier portId = null;

while (portIdentifiers.hasMoreElements()) {
portId = (CommPortIdentifier) portIdentifiers.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
portList.addLast(portId.getName());
if(RS232Config.DEBUG) System.out.println(portId.getName());
}
}

return ((String[])portList.toArray(new String[1]));
}
}



Besten Dank im Voraus

mfg mathias g.
 

0xdeadbeef

Top Contributor
Naja, für 60 Zeichen alle 60ms brauchst Du unter Berücksichtigung von Start- und Stoppbit mindestens 10kBaud. Besser etwas mehr. Soweit ich mich erinnere, war das mit der allen API von Sun kein Thema und die war nicht sonderlich performant.
 
G

Guest

Gast
Hallo so jetzt ist es schneller. Das Problem war das ich die wirte(Byte b) so geschrieben habe.

public void write(byte b) {
try {
buffout.write(b);
buffout.flush();
} catch (IOException e) {
e.printStackTrace();
}
}



buffout.flush(); => Hier habe ich nach jedem Byte gesagt senden. Jetzt habe ich es so gemacht das ich immer 10Byte gleichzeitig sende:


public void write(byte b) {

try {

buffout.write(b);
numberOfBytes++;

if(numberOfBytes >= 10)
{
buffout.flush();
numberOfBytes = 0;
}

} catch (IOException e) {
e.printStackTrace();
}
}

Es ist jetzt schneller geworden, aber noch nicht so wie ich es gerne hätte.

Eingestellt habe ich 115200 Baud da müsste doch alle 60ms 60Byte kein Problem sein oder?

Sollte ich das Senden in einen eigenen Thread auslagern?


mfg mathias g.
 

0xdeadbeef

Top Contributor
Du solltest in jedem Fall erst dann flushen, wenn alle zu sendenden Bytes im Puffer sind. Im Zweifesfall einfach den zu gesamten sendenden Byte-Array übergeben - das gibt's doch sicher eine entsprechende Send-Funktion, oder?
Danach erst flushen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
O RXTX Geschwindigkeit? Codebeispiel dabei. Allgemeine Java-Themen 21
B Input/Output Programm zum Auslesen/Beschreiben von Textdateien, wie Geschwindigkeit erhöhen? Allgemeine Java-Themen 18
T Geschwindigkeit beim Generieren erhöhen? Allgemeine Java-Themen 7
S Geschwindigkeit HashMap oder .getParent Allgemeine Java-Themen 5
byte JMockit - Geschwindigkeit Allgemeine Java-Themen 7
B Verzeichnis durchsuchen geschwindigkeit optimieren Allgemeine Java-Themen 6
R Parser: Datei auslesen, Datei erstellen - Geschwindigkeit Allgemeine Java-Themen 16
G java spiel (geschwindigkeit) Allgemeine Java-Themen 37
F Geschwindigkeit messen Allgemeine Java-Themen 7
E Geschwindigkeit static Allgemeine Java-Themen 6
P Geschwindigkeit von Java GUIs Allgemeine Java-Themen 45
J Http/Https Geschwindigkeit Allgemeine Java-Themen 14
B java geschwindigkeit Allgemeine Java-Themen 16
O Geschwindigkeit Fortran und Java Allgemeine Java-Themen 11
J JCopy & Geschwindigkeit? Allgemeine Java-Themen 4
A Geschwindigkeit Java unter Linux Allgemeine Java-Themen 9
N Performance-Test (Geschwindigkeit von Methoden vergleichen)? Allgemeine Java-Themen 4
P Geschwindigkeit und Genauigkeit bei Zeitmessung Allgemeine Java-Themen 13
T Geschwindigkeit bei Polygonen und BufferedImage Allgemeine Java-Themen 9
R Geschwindigkeit herausfinden Allgemeine Java-Themen 2
M RXTX Details auslesen Allgemeine Java-Themen 6
F rxtx library mit virtuellem Comport Allgemeine Java-Themen 2
T Outputstream write() gets blocked using RXTX to communicate with HC-05 BT Module Allgemeine Java-Themen 10
H RXTX String verarbeiten Allgemeine Java-Themen 1
S RxTx - langsame Port suche Allgemeine Java-Themen 3
L Software-Design: Kommunikation mit SerialPort (RXTX) Allgemeine Java-Themen 2
R Virtuelle Serielle Schnittstellen mit RXTX Allgemeine Java-Themen 2
G RXTX native library unter Linux in jar build angeben Allgemeine Java-Themen 4
M rxtx OutputStream sendet falsche werte Allgemeine Java-Themen 3
M problem mit rxtx Allgemeine Java-Themen 9
G RXTX in proprietärer Software nutzen?! Allgemeine Java-Themen 10
S RXTX library in Jar einbinden Allgemeine Java-Themen 5
T [RXTX] GPS-Maus (Comport) effizient auslesen Allgemeine Java-Themen 6
T RXTX und 64bit Allgemeine Java-Themen 1
R RXTX Versions Info abschalten Allgemeine Java-Themen 6
T Frage zu Schönheitsfehler bei RXTX Allgemeine Java-Themen 2
C RXTX Treiber einbinden für Linux Allgemeine Java-Themen 6
G RXTX library braucht sehr lange zum laden. Ist das normal? Allgemeine Java-Themen 8
B RXTX sendet immer mit 9600Baud Allgemeine Java-Themen 4
E Erfahrung mit RXTX sowie Windows und Linux Allgemeine Java-Themen 9
G RXTX verschicken einzelener Bytes Allgemeine Java-Themen 8
E javax.comm: Suche eine open source Alternative zu rxtx Allgemeine Java-Themen 8
B RXTX und close Allgemeine Java-Themen 12
L Exception auslösen, um while Schlaufe zu verlassen(rxtx.org) Allgemeine Java-Themen 6
foobar Rxtx vs javax.comm Allgemeine Java-Themen 2
OnDemand Java Deployment Vaadin Allgemeine Java-Themen 3
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
N LlaMA, KI, java-llama.cpp Allgemeine Java-Themen 39
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
M java: unexpected type Allgemeine Java-Themen 2
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
B Java Discord bot auf ein Root Server? Allgemeine Java-Themen 1
BetziTheRealOne Java PKIX path building failed as non Admin Allgemeine Java-Themen 15
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
KonradN Java 21 Release Allgemeine Java-Themen 5
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
G java.io.listFiles() Allgemeine Java-Themen 3
8u3631984 Frage zu Java Streams min / max Allgemeine Java-Themen 17
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
K Java-Projekt Allgemeine Java-Themen 11
K Java-Projekt Allgemeine Java-Themen 0
ruutaiokwu Welcher Browser unterstützt heutzutage noch Java Applets? Allgemeine Java-Themen 5
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
rode45e Java Threads Allgemeine Java-Themen 4
G java.io.listFiles() Allgemeine Java-Themen 2
N Java Dynamic Proxy Allgemeine Java-Themen 3
N Leichte Java Gegner Ki Allgemeine Java-Themen 10
A Java modul Problem Allgemeine Java-Themen 4
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
V Funktionale Schnittstelle in Java Allgemeine Java-Themen 3
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
KonradN Java 20 am 21. März Allgemeine Java-Themen 1
O Java Website Stock Bot Allgemeine Java-Themen 3
J Front-/Backend in Java Allgemeine Java-Themen 14
doopexxx JAVA Google Webcrawler Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2
lalex1491 Java Aktienkurse nachfragen Allgemeine Java-Themen 4
J Class to link Java Allgemeine Java-Themen 4
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
mrStudent Inferenz JAVA Allgemeine Java-Themen 6
U URI Rechner (Java Script) Allgemeine Java-Themen 7
TheSkyRider Java Geburtsdatum Textfeld Allgemeine Java-Themen 7
mihe7 Java 19 JavaDocs: Browserintegration Allgemeine Java-Themen 0
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
H Java Rechner Programmierung der Mathematik Allgemeine Java-Themen 33
Lennox Schinkel Java Kara Auf einen Java Host laufen lassen Allgemeine Java-Themen 17
C Fußnoten von DocX mit Java Allgemeine Java-Themen 2
C Fußnoten in DocX mit Java Allgemeine Java-Themen 1
M Aussagenlogik in Java Programmieren Allgemeine Java-Themen 22
B Per Java Word Dokument schreiben? Allgemeine Java-Themen 8
krgewb Java-Bibliothek für ONVIF Allgemeine Java-Themen 1
KonradN Oracle übergibt (Java Teile der) GraalVM Community Edition an OpenJDK Community Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben