Прием запроса данных из COM port с Visa
-
- assistant
- Сообщения: 122
- Зарегистрирован: 24 апр 2017, 22:27
- Версия LabVIEW: 2016
- Благодарил (а): 1 раз
- Поблагодарили: 1 раз
- Контактная информация:
Прием запроса данных из COM port с Visa
Доброго времени,форумчане! Столкнулся с проблемой приема данных по команде.Мое устройство на контроллере принимает команду по UART и начинает собирает массив данных состоящих из двух двухбайтовых значений,в общем это понятно в приатаченном коде .Проблема заключается в том,что я принимаю предыдущие значения массива,а не те которые запросил.Не могу понять в чем проблема,буду благодарен за помощь или совет.
- Вложения
-
- ProbeDataLog.vi
- (28.87 КБ) 95 скачиваний
-
IvanLis
- guru
- Сообщения: 5540
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 32 раза
- Поблагодарили: 103 раза
Re: Прием запроса данных из COM port с Visa
А как Вы это определяете?
Скорее всего вы вычитываете из порта данные которые не дочитали после последнего запроса.
Вообще более правильно использовать в качестве признака окончания посылки "терминатор", возможно за 1с не успевает передать все данные.
Вы должны быть уверены, что получили все данные, которые запросили.
Я бы порекомендовал изменить логику.
Ответ должен состоять из двух посылок:
1. U16 (2 byte) - размер информационной посылки. Ну или сами определите каким числом определить размер.
2. Непосредственно информация - количество byte переданных в п.1.
Вы же на передаче всегда знаете сколько будете передавать, вот и сообщите приемнику размер данных.
Тогда не нужно дергать Bytes at Port Property и гарантированно Вы получите то, что нужно.
Ну и перед началом работы, неплохо было бы почистить буфер.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- assistant
- Сообщения: 122
- Зарегистрирован: 24 апр 2017, 22:27
- Версия LabVIEW: 2016
- Благодарил (а): 1 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: Прием запроса данных из COM port с Visa
Да я конечно знаю размер посылки,она 4000 байт,логическим анализатором я проверял пакет,который передаю,он точно передан,указал размер на входе,вродебы стало работать,еще хотел спросить как в LV правильно очистить буфер и в какое время лучше это делать?IvanLis писал(а): ↑09 сен 2024, 14:30А как Вы это определяете?
Скорее всего вы вычитываете из порта данные которые не дочитали после последнего запроса.
Вообще более правильно использовать в качестве признака окончания посылки "терминатор", возможно за 1с не успевает передать все данные.
Вы должны быть уверены, что получили все данные, которые запросили.
Я бы порекомендовал изменить логику.
Ответ должен состоять из двух посылок:
1. U16 (2 byte) - размер информационной посылки. Ну или сами определите каким числом определить размер.
2. Непосредственно информация - количество byte переданных в п.1.
Вы же на передаче всегда знаете сколько будете передавать, вот и сообщите приемнику размер данных.
Тогда не нужно дергать Bytes at Port Property и гарантированно Вы получите то, что нужно.
Ну и перед началом работы, неплохо было бы почистить буфер.
-
IvanLis
- guru
- Сообщения: 5540
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 32 раза
- Поблагодарили: 103 раза
Re: Прием запроса данных из COM port с Visa
Для очистки буфера используется VISA Clear
Если протокол отлажен и нет потери пакетов, то достаточно один раз очистить после инициализации порта.
Если пакеты теряются, то можно перед подачей команды на чтение. Но сами понимаете, что это экстренный вариант и говорит о том, что вы не прочитали все, что запросили на предыдущем шаге.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 21 Ответы
- 3666 Просмотры
-
Последнее сообщение Borjomy_1
-
- 4 Ответы
- 1748 Просмотры
-
Последнее сообщение Embedder74
-
- 2 Ответы
- 1046 Просмотры
-
Последнее сообщение Sergey Puzanov
-
- 5 Ответы
- 1128 Просмотры
-
Последнее сообщение IvanLis
-
- 8 Ответы
- 207 Просмотры
-
Последнее сообщение Artem.spb