Как запустить код компорта в Java, не имея его физически в системе Linux - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть проект в Java, который использует Comport для общения.И с помощью компорта 1 и 2 числа.Но моя система Linux не может иметь com-порт.Я хочу запустить код и хочу прослушать данные, отправленные на comport.но когда я запускаю код, он выдает ошибку.Как мне следовать.

Мой код утилиты comport выглядит примерно так

import com.fazecast.jSerialComm.SerialPort;

public class ComPortUtil {
private static SerialPort comPort;
private static SerialPort relayPort;

static {
    SerialPort[] serialPorts = SerialPort.getCommPorts();
    comPort = serialPorts[3];
    comPort.setBaudRate(115200);
    comPort.setParity(SerialPort.NO_PARITY);
    comPort.setNumDataBits(8);
    comPort.setNumStopBits(SerialPort.ONE_STOP_BIT);
    relayPort = serialPorts[1];
    relayPort.setBaudRate(115200);
    relayPort.setParity(SerialPort.NO_PARITY);
    relayPort.setNumDataBits(8);
    relayPort.setNumStopBits(SerialPort.ONE_STOP_BIT);
}

public static SerialPort getPOSPort() {
    return comPort;
}

public static SerialPort getRelayPort() {
    return relayPort;
}

}

1 Ответ

0 голосов
/ 27 ноября 2018

У меня была похожая проблема при разработке программного обеспечения, которое должно было считывать последовательный порт.

На моей рабочей станции не было серийных номеров (это была виртуализированная машина), поэтому я прибегнул к созданию виртуальных последовательных портов с com0com .

Он может создавать 2 виртуальных com-порта с перекрестными связями (вход одного является выходом другого).

Я настроил один для использования моим приложениеми я создал небольшую программу, используя другую для отправки ввода для тестирования приложения.

Это пример тестовой записи на виртуальном COM-порту, когда приложение прослушивает свой сшитый COM.

static SerialPort commPort = null;

@BeforeClass
public static void setUpClass(){
    commPort = SerialPort.getCommPort("CNCB0");
    commPort.openPort();
}


@Test
public void showControl(){
    shortWait();
    send(commPort, "S421803171");
    // ...
    // A delay of few millis ...
    shortWait();
    String value = lookup("#fldFicheBarcode").queryAs(TextField.class).getText();
    // ...
    assertEquals("S421803171", value);
}

protected static void send(final SerialPort commPort, final String _txt) {
    ForkJoinPool.commonPool().submit(()->{
        final String txt = !_txt.endsWith(CRLF)?_txt+CRLF:_txt;
        byte[] bytes = txt.getBytes();
        int writeBytes = commPort.writeBytes(bytes, bytes.length);
        logger.debug("Written bytes:"+writeBytes);
    }).join();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...