외부 장치와 시리얼 포트 통신을 위해 jssc 라이브러리를 사용하는 Java 응용 프로그램을 개발 중입니다. 나는 명령을 보낼 필요가 있고 즉시 응답을 다시 읽는다. 내가 직면 한 문제는 쓰기와 읽기 명령 사이에 200ms 지연이 없으면 응답이 비어 있다는 것입니다. 파이썬을 사용하여 유사한 기능을 개발했으며 파이썬에서는 완벽하게 작동하지만 Java에서 200 밀리 초 지연 때문에 통신 속도가 매우 느립니다. 빨리 할 수있는 가능성이 있는지 묻고 싶습니다. 나는 노력하고 있었고, 개통 항구를 폐쇄하고 있었다. 그러나 어떤 성공도하지 않고 있었다. 당신의 도움에 미리 감사드립니다. 당신은 내가 JSSC이 javax의 통신 API를 javax.comm을 기반으로 생각하는 내 코드자바를 사용하여 쓰기와 읽기 작업 사이에 큰 지연이 발생 함 시리얼 통신 jssc 라이브러리
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();
좋아 200 밀리로 설정되어 기본적으로 ... 직렬 포트를 얻을 때 데이터가 도착할 때까지 당신이 기다리는 시간을 설정할 수 javax.comms를 사용하여 나를 위해 그것을 해결 뭔가를 (발견 너무 많은 것 같아요) 당신이 원하는 값으로 설정할 수 있습니다 ...하지만 데이터가 도착하기 전에 미리 읽으십시오. JSSC를 통해이 속성을 사용할 수 있는지는 모르겠지만 한 번 살펴보고 알려주십시오. – Mjkhajl
재산을 잊어 버렸습니다 : – Mjkhajl
javax.comm.SerialPort.enableReceiveTimeout받는 값은 밀리 초입니다. – Mjkhajl