Страница 1 из 1
Задержка при закрытии vi
Добавлено: 02 авг 2019, 23:06
Select
Всем привет,
покритикуйте пожалуйста мой код в целом, видимая проблема в задержке при закрытии
Re: Задержка при закрытии vi
Добавлено: 03 авг 2019, 00:03
IvanLis
Select писал(а):видимая проблема в задержке при закрытии
На мой взгляд проблема не только в этом, но и в неоднозначной последовательности записи и чтения.
Что касается задержки, то ...
чтение окончится по одному из трех тригеров:
1. timeout (10sec)
2. набрано в буфер 1000 byte
3. принят termination char
например у Вас устройство не отвечает, 2 и 3 отбрасываем
остается задержка 10 сек
Re: Задержка при закрытии vi
Добавлено: 03 авг 2019, 12:51
Select
Select писал(а):Всем привет,
покритикуйте пожалуйста мой код в целом, видимая проблема в задержке при закрытии
Логика заключается в передаче из стринга из п.2, что открывает в устройстве команду на передачу данных - считывание в буфер.
Насколько верно я понял совет:
Re: Задержка при закрытии vi
Добавлено: 04 авг 2019, 11:32
Select
В принципе разобрался
Re: Задержка при закрытии vi
Добавлено: 12 авг 2019, 22:47
Borjomy_1
Неправильно. Использование Bytes at Port это как использование goto в C.
Во-первых. при инициализации вы указали по умолчанию терминальный символ. Он там действительно есть?
Во-вторых. если при вычислении Bytes at Port, еще не пришла вся посылка, то вы некорректно ее примете. И дальше будет ерунда. Вам это надо???
Если используется терминальный символ, то для Visa Read указывается максимальный размер строки. Но приоритет за терминальным символом. Т.е функция читает строками и предварительно смотреть размер принятой посылки нет никакой необходимости. Просто указываете максимально возможный размер плюс запас, тогда гарантировано будет возвращена строка до терминального символа.