Скажу сразу, меня VISA устраивает более чем полностью. Из чистого любопытства копался в старых релизах

и нашёл кое что интересное. До внедрения Визы (версии

2.5 — 6.1) работа с низкоуровневыми устройствами (COM/LPT, GPIB, DAQ) выполнялась через специальные инструменты, так называемые Device Manager

, которые вызывали соответствующий "драйвер" (CIN особого типа) -
serpdrv для COM/LPT,
gpibdrv - для GPIB и т.д. (чуть подробнее
здесь). Начиная с 7-й версии с целью унификации и стандартизации эти "драйвера" выпилили из

и заменили Визой. О жизненном цикле "драйвера"
serpdrv и о том, почему ему на смену пришла VISA, можно узнать из статьи одного из участников R&D -
La Mort du Serpdrv. Ради интереса я взял serpdrv из LV 6.1 и проверил на двух системах: Win XP x32 + LV 2011 x32 и Win 7 x64 + LV 2013 x32. Удивительно, но он до сих пор работает, по крайней мере при нуль-модемной передаче по RS-232 никаких ошибок не возникало. Если так подумать, то он и должен был работать, т.к. за 50 с лишним лет стандарт RS-232 не только стал традиционным, но и морально устарел (это касается и железа, и программной части). В связи с этим фактом я решил выдернуть из LV 6.1 все

и сам
serpdrv и положить сюда - может, кому-то окажется полезным. Сам я, скорее всего, никогда этим не воспользуюсь. Что внутри "драйвера", я детально не смотрел, обратил лишь внимание, что на Windows по сути это обёртка над
Communications Functions из kernel32.

с "драйверами" под Windows, Linux и Classic Mac:
Пример простейшего сеанса приёма-передачи:
!!! Чтобы эти

заработали, нужно положить
serpdrv рядом с labview.exe (режим разработки / IDE). В режиме скомпилированного приложения / RTE
serpdrv нужно поместить рядом с
lvrt.dll, то есть в папку
C:\Program Files (x86)\National Instruments\Shared\LabVIEW Run-Time\[Ваша_версия_LV]\ (версии

начиная с 6.0 и выше), либо рядом с экзешником (версия

5.0).
Плюсы и минусы этих инструментов:
[+] Работают без инсталляции, в отличие от VISA, нужен лишь "драйвер" рядом с программой;
[+] Очень маленький размер "драйвера" (не более 25 КБ);
[-] Работают только в 32-битных версиях

;
[-] Нет поддержки терминального символа (termination char);
[-] Нет поддержки тайм-аута операций чтения/записи;
[-] Нет возможности перечисления портов для получения списка всех портов в системе;
[-] На выходе

не error cluster, а числовой код ошибки (немного усложняет построение dataflow на БД).
При наличии некоторого количества свободного времени поддержку терминатора, тайм-аута чтения/записи и кластера error in/out можно довольно легко реализовать в самом

с помощью дополнительных SubVI (см. исходники
LVSerial).
Также сам
serpdrv из LV 6.1 можно скачать
здесь, более ранние версии лежат
тут. Версия из LV 6.1 под Linux лежит
здесь. Для классического Macintosh'а
serpdrv не нужен.
IvanLis wrote:Может есть нормально работающие альтернативы VISA для Linux, более конкретно Ubuntu?
Если всё ещё актуально, как вариант, попробуйте этот
serpdrv и

из архива, у меня есть уверенность на 85%, что заработает, и всё-таки это лучше, чем городить огород из врапперов.
Собираюсь взглянуть более детально на функции девайс менеджера, если хватит времени и сил.