Форум АО "ВЗЛЕТ"

Приборы ЗАО "Взлет" => Отдел программистов => Тема начата: AlekseyL от 06.03.2019, 10:36:33



Название: Опрос ТСРВ-026М
Отправлено: AlekseyL от 06.03.2019, 10:36:33
Добрый день, опрашиваю 14 параметров устройства. Возникает проблема после получения ответа на первый запрос. Посылаю второй запрос и никакого ответа не поступает, ниже приведен фрагмент рабочего кода. Я посылаю запрос, жду секунду, получаю ответ. Но мне нужно избавиться о засыпания потока, при отсутствии засыпания возникает вышеописанная проблема. Вопрос в том, почему не приходит ответа на второй и последующие запросы без засыпания?
Код:
for (TSRVCommands026M command : commands) {
                BuilderMessageTSRV builder = new BuilderMessageTSRV();
                builder.append(address);
                builder.append(TSRVCommands026M.request);
                builder.append(command.getMemoryAddress());
                builder.checkCRC();

                byte[] request = builder.build();
                byte[] responce = new byte[20];
                connector.write(request);
                Thread.sleep(1000);//спасает только эта остановка потока, но от неё нужно избавиться
                connector.read(responce);


Название: Re:Опрос ТСРВ-026М
Отправлено: Дмитрий Пархоменко от 06.03.2019, 13:50:33
Здравствуйте!

Откуда кому либо, кроме конечно Вас, знать Ваше окружение и библиотеки с которыми Вы работаете?
Да и не факт что Вы, во-первых отправляете запрос, во-вторых что прибор Вам не отвечает.
Все инструменты разные и единого подхода не существует.

Изучите для начала описание используемого Вами метода connector.read(responce). Да и вообще работу Вашего класса connector.


Название: Re:Опрос ТСРВ-026М
Отправлено: AlekseyL от 07.03.2019, 13:17:32
Дело в том, что при отправке запроса без задержки мне устройство ничего не отвечает. Приложил отправляемые запросы и получаемые ответы