Ich entwickle eine Java-Anwendung, die JSSC-Bibliothek für die serielle Schnittstelle Kommunikation mit externen Gerät verwendet. Ich muss einen Befehl senden und dann sofort die Antwort zurück lesen. Das Problem, dem ich gegenüberstehe, ist, dass ohne eine Verzögerung von 200 ms zwischen Schreib- und Lesebefehl die Antwort leer ist. Ich habe ähnliche Funktionalität mit Python entwickelt und in Python funktioniert es perfekt, aber in Java aufgrund von 200 ms Verzögerung ist die Kommunikation sehr langsam. Ich würde gerne fragen, ob es irgendeine Möglichkeit gibt, es schneller zu machen? Ich habe versucht, Ang ang öffnenden Port zwischen Betrieb, Purge-Port zu schließen, aber ohne Erfolg. Vielen Dank im Voraus für Ihre Hilfe. Bellow Sie können meinen CodeGroße Verzögerung zwischen schreiben und lesen Betrieb mit Java Serielle Kommunikation jssc Bibliothek
serialPort = new SerialPort(getPortName());
if (false == serialPort.isOpened()) {
try {
logger.debug("Opening serial port: " + getPortName());
// Open port
serialPort.openPort();
// We expose the settings. You can also use this line - serialPort.setParams(9600, 8, 1, 0);
serialPort.setParams(SerialPort.BAUDRATE_115200, SerialPort.DATABITS_8, SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
} catch (SerialPortException ex) {
logger.error("Exceptiion during opening port: " + ex);
}
}
serialPort.writeBytes(cmd);
logger.debug("command sended=" + javax.xml.bind.DatatypeConverter.printHexBinary(cmd));
// delay added because java didn`t read data at once
Thread.sleep(200);
answer = serialPort.readBytes();
Ok etwas gefunden, dass es für mich gelöst javax.comms verwenden, wenn Sie die serielle Schnittstelle erhalten können Sie die Zeit einstellen, dass es wartet auf Daten ... standardmäßig ankommen wird auf 200 ms (zu viel ich denke) Sie können es auf den Wert setzen, den Sie wollen ... aber Sie riskieren zu lesen, bevor Daten ankommen, wissen nicht, ob diese Eigenschaft durch JSSC verfügbar ist, aber werfen Sie einen Blick und lassen Sie es uns wissen. – Mjkhajl
Forgot das Eigentum: – Mjkhajl
javax.comm.SerialPort.enableReceiveTimeout der Wert, den es empfängt, ist in Millisekunden, beste Grüße !!! – Mjkhajl