Re: Альтернатива VISA для работы с последовательным портом
Добавлено: 07 мар 2011, 21:06
а как их из этой библиотеки вытащить, SubVI делать?
LabVIEW Portal, Forum, Chat, Tutorials
https://labviewportal.org/
Kvanto писал(а):а как их из этой библиотеки вытащить, SubVI делать?
Jakob Brontfeyn писал(а):Я с VISA никогда не работаю,
вот есть альтернативные VI
Если всё ещё актуально, как вариант, попробуйте этот serpdrv и из архива, у меня есть уверенность на 85%, что заработает, и всё-таки это лучше, чем городить огород из врапперов.[b][color=#008000]IvanLis[/color][/b] писал(а):Может есть нормально работающие альтернативы VISA для Linux, более конкретно Ubuntu?
Категорически не советую. Тем более, что произвольных посылок у производителей автоматизации НЕ БЫВАЕТ. Каждая посылка сопровождается кодом начала, кодом завершения, а также содержит идентификатор типа посылке, на основании которых производится прием. В случае с посылкой в формате ASCII присутствует код начала посылки и ЕДИНЫЙ код конца посылки (т.н. терминальный символ). Этот принцип БАЗОВО поддержан в и в любом низкоуровневом драйвере для ЛЮБОЙ платформы. Будь то Windows, будь то ассемблер. Эта реализация начинается на уровне микросхемы драйвера последовательного порта. Для приема устанавливается код терминального символа. Последующее чтение производится вызовом функции "VISA Read" с указанием максимально возможного размера посылки. При чтении АВТОМАТИЧЕСКИ будет считана вся посылка до терминального символа. Никаких дополнительных операций производить НЕ НАДО. Требуется проверить результат на таймаут (в случае таймаута нет конца посылки - устройство выключено) и на присутствие кода начала посылки (в противном случае посылка принята не с начала, обычно бывает при первом чтении, при постоянной работе быть не должно). Этого достаточно для надежного приема.Для приема произвольных посылок, рекомендую применить этот алгоритм:
viewtopic.php?f=21&t=8250&p=65850#p65830
В функционале Windows API нет ничего для указания терминального символа:Borjomy_1 писал(а):Этот принцип БАЗОВО поддержан в и в любом низкоуровневом драйвере для ЛЮБОЙ платформы. Будь то Windows, будь то ассемблер. Эта реализация начинается на уровне микросхемы драйвера последовательного порта.
Если вы о парсинге строки, то он выполняется при вызове VISA Read. Цепочка вызовов такова: VISA Read -> visa32.dll -> NiViAsrl -> ReadFile -> парсинг строки и обрезка по терминатору -> выдача готовой строки наверхBorjomy_1 писал(а):В какой момент происходит сравнение?