2015-10-01 2 views
1

Я пытаюсь получить некоторые данные из 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-порт, полученные данные увеличиваются.

Если есть что-то непонятное или вам нужно больше кода, пожалуйста, свяжитесь с помощью комментариев.

Благодарим вас.

+0

Всегда проверяйте настройки вашего коммуникационного порта. Baud, бит данных, четность и т. Д. Затем убедитесь, что вы отправляете команду, которая фактически генерирует ответ от цели. –

+0

Я контролировал открывшийся COM-порт, чтобы узнать, отправляю ли я некоторые данные. В конце концов, я это делаю, поскольку всякий раз, когда я запускаю 'echo message> COM #' (помните, что # обозначает номер COM-порта), он показывает, что байты проходят. Я тоже это сделал в Java-коде, и подтвердил, что я отправляю данные. Точная проблема заключается в том, что я не могу понять, что во второй части кода, которую я отправил. Поскольку он всегда считывает 0 из ввода (тип InputStream, созданный как 'input = port.getInputStream()' Также, я получил скорость в 9600, данные на 8 без контроля четности и получили 1 стопбит. –

ответ

0

После нескольких попыток, я пробовал одну и ту же операцию с jSSC и смог написать снова. Однако я все еще не мог читать. Затем я заметил, что создаю пары COM-портов. Итак, я просто начал писать на один порт и получил данные из другого порта пары. Оно работало завораживающе. Я не уверен, что эта же идея применима для библиотек rxtx, а потому, что документы jSSC являются наглядными, и поскольку они просты в использовании, я переключился на нее и так, как я работал. Вы можете найти подробное объяснение того, как я это сделал, без кода.

PreStep> У меня были COM6 и COM7, когда я начал это.

Step1> Открытый оба порта через методы jSSC. Я построил их как SerialPort, а затем установил их параметры (BaudRate, DataBits и т. Д.).

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

Step3> Каждый раз, когда я нажать «Enter», чтобы отправить вход, я бы вызвать метод чтения из объекта COM7, и он будет посылать массив байтов в консоли (Via Arrays.toString (байт [ ])).

Я не знаю, почему я не могу читать из того же порта, что и я, но, увы, моя проблема решена. Спасибо за ваше время, чтобы прочитать этот ответ.Если у вас есть какие-либо вопросы, отправьте их в соответствии с этим в качестве комментария.

 Смежные вопросы

  • Нет связанных вопросов^_^