#java #serial-port
#java #последовательный порт
Вопрос:
Я получаю нежелательные значения от последовательного порта, используя serialPort.readBytes(int values)
.
serialPort.openPort();
serialPort.setParams(9600, 8, 1, 0);
byte[] buffer = null;
buffer = serialPort.readBytes(20);
if (null != buffer) {
String employee_id_var = "";
String no = new String(buffer);
no = no.replaceAll("[^a-zA-Z0-9] ", ""); //removing garbage values comming from scaner serial input
//for getting employee id
if(no.length() > 6 amp;amp; no.length() < 10){
no = no.substring(0, 6);
System.out.println("EMPLOYEE NO- " no);
}
}
Мне нужна четкая строка, которая была отсканирована сканером, но здесь я управляю ею, вызывая no.replaceAll("[^a-zA-Z0-9] ", "")
для удаления нежелательных значений.
Это неосуществимое решение для моего варианта использования. Могу ли я получить чистую строку отсканированных данных из serialPort.readBytes(20)
?
Комментарии:
1. Вам нужно объяснить, каков формат данных, поступающих со сканера, и почему реализованное вами решение не работает.
2. Иногда данные, поступающие от сканера, имеют вид 72A4G6 ^-!-^ p * . таким образом, в этом случае p не удаляется из строки (на no.replaceAll(«[^a-zA-Z0-9] «, «»)) таким образом, конечный результат выглядит как 72A4G6 p, где 72A4G6 — это мой фактический результат сканирования, а ‘p’ — нежелательные данные.
3. Включен ли CRC или контрольная сумма в данные со сканера? Если нет, то вам будет сложно получить правильные данные, если вы получаете случайные символы от сканера. Если неверные символы всегда являются суффиксом к правильным данным, возможно, вы можете использовать этот факт. Вам нужно подробнее рассказать о характеристиках данных и шуме. Вам также необходимо поговорить с производителем сканера — возможно, в нем неисправность.
4. Нет, в данные из сканера не включен CRC или контрольная сумма. Могу ли я использовать другие методы (SerialPort.readHexString(20) вместо SerialPort.readBytes (20)) для получения данных сканера для уменьшения шума или удаления нежелательных данных (специальных символов).
5. Что вы знаете о формате данных, которые вы получаете? Если это определенная длина, то, возможно, вы можете игнорировать конечные символы. Если это только верхний регистр, то вы можете игнорировать символы нижнего регистра. Но, в конечном счете, у вас неисправное оборудование, и вы не можете определить, являются ли полученные вами данные действительными — это невозможно исправить программным обеспечением. Поговорите с поставщиком вашего сканера и попросите его исправить это.