Я пытаюсь получить некоторые данные из COM-порта, тот же, на который я пишу данные, но это трудно читать. Мне удалось найти простую часть кода, чтобы прочитать ее, но теперь я только читаю нули. Что может быть причиной?Пытается писать и читать из того же COM-порта, успешно написанного, но не читающего. Ват?
Я отправляю свой код ниже с объяснением их предполагаемого использования.
private void ReadFromComPortActionPerformed(java.awt.event.ActionEvent evt) {
try {
String text = EmulatorInput.getText();
sendData(text, "COM4");
String out_Text = Arrays.toString(read());
EmulatorOutput.setText(out_Text);
System.out.println(out_Text);
} catch (IOException ex) {
Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
}
}
Это имя и параметр метода JButton, созданный NetBeans. Сначала код получает текст из панели ввода в виде строки, отправляет его с именем com-порта, подключается к этому порту и открывает потоки ввода-вывода, а затем записывает строку, взятую с панели ввода, в OutputStream. Затем я создаю новую строку с именем out_Text
и использую метод read()
для чтения данных из порта.
Это метод чтения;
private byte[] read() throws IOException {
byte[] buffer = new byte[16];
int total = 0, read = 0;
while (total <= 16 && (read = input.read(buffer, total, 16-total)) > 0) {
total += read;
}
return buffer;
}
После того, как первый метод, который я отправил использует read()
сходиться в строку, что я могу напечатать в виде массива байтов, я в конечном итоге только один байт нулей.
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Я очень смущен этим, потому что я уверен, что я пишу в порт. Я даже отслеживал, что я пишу, и вижу, что, когда я использую программу для записи данных в COM-порт, полученные данные увеличиваются.
Если есть что-то непонятное или вам нужно больше кода, пожалуйста, свяжитесь с помощью комментариев.
Благодарим вас.
Всегда проверяйте настройки вашего коммуникационного порта. Baud, бит данных, четность и т. Д. Затем убедитесь, что вы отправляете команду, которая фактически генерирует ответ от цели. –
Я контролировал открывшийся COM-порт, чтобы узнать, отправляю ли я некоторые данные. В конце концов, я это делаю, поскольку всякий раз, когда я запускаю 'echo message> COM #' (помните, что # обозначает номер COM-порта), он показывает, что байты проходят. Я тоже это сделал в Java-коде, и подтвердил, что я отправляю данные. Точная проблема заключается в том, что я не могу понять, что во второй части кода, которую я отправил. Поскольку он всегда считывает 0 из ввода (тип InputStream, созданный как 'input = port.getInputStream()' Также, я получил скорость в 9600, данные на 8 без контроля четности и получили 1 стопбит. –