У меня была похожая проблема при разработке программного обеспечения, которое должно было считывать последовательный порт.
На моей рабочей станции не было серийных номеров (это была виртуализированная машина), поэтому я прибегнул к созданию виртуальных последовательных портов с 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();
}