Не возвращаются данные с контроллера

240
13 марта 2017, 09:18

Есть контроллер st link, с него надо вытащить массив измерений. Суть заключается в поэтапной отправке команд контроллеру. Сначала нам надо отправить цифру 4 и получить в ответ цифру 7, затем отправить цифру 5 и после отправить набор цифр 1,100,5. Первый этап проходит влёт. Контроллер получает 4-ку и возвращает 7-ку, но на этом всё. Дальше ничего не происходит. Для связи с портом использую библиотеку jSSC. Ниже представлен код.

public class COMPort {  /*Класс чтения из порта*/
   private static final SerialPort  serialPort           = new SerialPort ("COM12");
   private static final String      CORRECT_CONNECTION   = "4";
   private static final String      ALL_RIGHT            = "5";
   private static final String      INPUT_PARAMS         = "1,100,5";
   private static       boolean     flag                 = false;
   public static void main (String[] args) {  
        try {
            serialPort.openPort();
            serialPort.setParams(SerialPort.BAUDRATE_256000, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
            serialPort.addEventListener(new EventListener(), SerialPort.MASK_RXCHAR);
            run(CORRECT_CONNECTION);
            run(ALL_RIGHT);
            run(INPUT_PARAMS);
        } catch (SerialPortException ex) {
           Logger.getLogger(COMPort.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
   /**
    * @param param значение, которое мы посылаем контроллеру
    * @serialPort.writeString(0) нажимаем ENTER 
    */
    public static void run(String param) {
        try{
            serialPort.writeString(param);
            serialPort.writeInt(0);
            serialPort.writeInt(0);
            serialPort.writeInt(0);
        }catch (SerialPortException ex) {
            System.out.println (ex);
        }
    }
   static class EventListener implements SerialPortEventListener { /*Слушатель срабатывающий по появлению данных на COM-порте*/
        public void serialEvent (SerialPortEvent event) {
            if (event.isRXCHAR () && event.getEventValue() > 0){ /*Если происходит событие установленной маски и количество байтов в буфере более 0*/
                try {
                    byte[] out = serialPort.readBytes();
                    System.out.println(new String(out));
                    }catch (SerialPortException ex) {
                        System.out.println (ex);
                    }
            }
        } 
    }
}

Результатом должны быть 2560 измерений и их нужно поместить в файл, но к сожалению ничего не приходит. Кстати говоря, в программе PuTTY всё работает. Заранее, спасибо

READ ALSO
Запись ArrayList в ObjectOutputStream

Запись ArrayList в ObjectOutputStream

Можно ли передавать в ObjectOutpurStream ArrayList? И если да, как потом корректно прочитать его с помощью ObjectInputStream?

262
RegEx ошибка при компиляции Illegal repetition

RegEx ошибка при компиляции Illegal repetition

Вижу вот это при компиляции:

378
В чем отличие service locator от ioc-container?

В чем отличие service locator от ioc-container?

Хотелось бы примеры реализации на java, примеров реализации service locators полно, а вот ioc-containers не нашёлВсе ведет на готове реализации ioc, как правило...

323
Обьединить результаты обработки фильтром Собеля на Java без OpenCV

Обьединить результаты обработки фильтром Собеля на Java без OpenCV

ЗдравствуйтеПишу программу обработки отпечатка пальца на языке Java без OpenCV

266