Всем привет,
покритикуйте пожалуйста мой код в целом, видимая проблема в задержке при закрытии
Задержка при закрытии vi
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Задержка при закрытии vi
На мой взгляд проблема не только в этом, но и в неоднозначной последовательности записи и чтения.Select писал(а):видимая проблема в задержке при закрытии
Что касается задержки, то ...
чтение окончится по одному из трех тригеров:
1. timeout (10sec)
2. набрано в буфер 1000 byte
3. принят termination char
например у Вас устройство не отвечает, 2 и 3 отбрасываем
остается задержка 10 сек
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
- Select
- developer
- Сообщения: 281
- Зарегистрирован: 12 дек 2017, 23:56
- Версия LabVIEW: 18
- Откуда: Врата надежды.
- Поблагодарили: 2 раза
Re: Задержка при закрытии vi
Логика заключается в передаче из стринга из п.2, что открывает в устройстве команду на передачу данных - считывание в буфер.Select писал(а):Всем привет,
покритикуйте пожалуйста мой код в целом, видимая проблема в задержке при закрытии
Насколько верно я понял совет:
LabView 14,18
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Задержка при закрытии vi
Неправильно. Использование Bytes at Port это как использование goto в C.
Во-первых. при инициализации вы указали по умолчанию терминальный символ. Он там действительно есть?
Во-вторых. если при вычислении Bytes at Port, еще не пришла вся посылка, то вы некорректно ее примете. И дальше будет ерунда. Вам это надо???
Если используется терминальный символ, то для Visa Read указывается максимальный размер строки. Но приоритет за терминальным символом. Т.е функция читает строками и предварительно смотреть размер принятой посылки нет никакой необходимости. Просто указываете максимально возможный размер плюс запас, тогда гарантировано будет возвращена строка до терминального символа.
Во-первых. при инициализации вы указали по умолчанию терминальный символ. Он там действительно есть?
Во-вторых. если при вычислении Bytes at Port, еще не пришла вся посылка, то вы некорректно ее примете. И дальше будет ерунда. Вам это надо???
Если используется терминальный символ, то для Visa Read указывается максимальный размер строки. Но приоритет за терминальным символом. Т.е функция читает строками и предварительно смотреть размер принятой посылки нет никакой необходимости. Просто указываете максимально возможный размер плюс запас, тогда гарантировано будет возвращена строка до терминального символа.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 23 Ответы
- 4628 Просмотры
-
Последнее сообщение maxim_MA
-
- 6 Ответы
- 1646 Просмотры
-
Последнее сообщение ladik
-
- 38 Ответы
- 13307 Просмотры
-
Последнее сообщение AndreyDmitriev
-
- 2 Ответы
- 271 Просмотры
-
Последнее сообщение Optoelectronics
-
- 4 Ответы
- 1670 Просмотры
-
Последнее сообщение Borjomy_1