Альтернатива VISA для работы с последовательным портом

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы

Re: Альтернатива VISA для работы с последовательным портом

Postby Borjomy_1 on 16 Sep 2015, 13:21

Если вы о парсинге строки, то он выполняется при вызове VISA Read.
Это понятно, что при вызове. Непонятно, в какой момент строка поступает, при выполнении каких условий.
Borjomy_1
expert
expert
 
Posts: 1908
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 332
VIP

Re: Альтернатива VISA для работы с последовательным портом

Postby dadreamer on 16 Sep 2015, 13:36

Куда поступает? Может, я не догоняю... берёт строку из буфера драйвера порта (serial.sys на Windows), ниже уже просто ничего нет. А после этого строка лежит себе в оперативной памяти. С ней работают, как ни в чём ни бывало.
User avatar
dadreamer
professor
professor
 
Posts: 3418
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 858
I/O VIP vision internet

Re: Альтернатива VISA для работы с последовательным портом

Postby Borjomy_1 on 16 Sep 2015, 13:47

Объясню на пальцах...
В порт идет посылка. До начала посылки или во время передачи посылки вызывается VISA Read с приемом по терминальному байту и заказанным размером заведомо большим, чем посылка. В какой-то момент драйвер передает часть посылки наверх, где производится парсинг на терминальный байт. Он ведь не телепат и не знает, когда посылка закончится. Вопрос в том, как драйвер понимает, что надо строку отдать?
Borjomy_1
expert
expert
 
Posts: 1908
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 332
VIP

Re: Альтернатива VISA для работы с последовательным портом

Postby dadreamer on 16 Sep 2015, 13:51

Объясню на пальцах...
В порт идет посылка. До начала посылки или во время передачи посылки вызывается VISA Read с приемом по терминальному байту и заказанным размером заведомо большим, чем посылка. В какой-то момент драйвер передает часть посылки наверх, где производится парсинг на терминальный байт. Он ведь не телепат и не знает, когда посылка закончится. Вопрос в том, как драйвер понимает, что надо строку отдать?
Я выполнял VISA Read, когда строка уже целиком лежала в буфере драйвера Windows. Делал так: взял два компа, соединил нуль-модемным кабелем, на одном запустил терминал, на другом программу в :labview: . В терминале печатал строку, в :labview: нажимал кнопку чтения VISA Read.
User avatar
dadreamer
professor
professor
 
Posts: 3418
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 858
I/O VIP vision internet

Re: Альтернатива VISA для работы с последовательным портом

Postby Borjomy_1 on 16 Sep 2015, 13:56

Ну это понятно. Когда все известно (в смысле, посылка уже есть), естественно, все просто выглядит. Самое интересное это реализация генерации события - и по принятому числу байт, по терминальному символу и таймауту. Сдается мне, что вычитка из буфера уже принятых данных (пусть даже с парсингом) и прием в реальном времени с контролем на размер буфера, терминальный символ и таймаут - это совершенно разные процедуры.
Borjomy_1
expert
expert
 
Posts: 1908
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 332
VIP

Re: Альтернатива VISA для работы с последовательным портом

Postby dadreamer on 16 Sep 2015, 14:26

Ну, я думаю, делается так. Замеряется время перед чтением с помощью . Затем вызывается ReadFile в одном из двух режимов (синхронный/асинхронный). Замеряется время после вызова ReadFile или после вызова события. Анализируется разница времён относительно таймаута, в случае превышения пишется ошибка. Терминатор парсится в любом случае, раз это WinAPI. А размер буфера задаётся при инициализации порта ().
Я проверял работу в синхронном режиме:
2015-09-16_16-23-14.jpg
2015-09-16_16-23-14.jpg (64.64 KiB) Viewed 14806 times

В асинхронном будет вызываться viReadAsync, а не viRead. Документация на функции VISA лежит или , можете почитать. Если есть желание, ставьте бряк на функцию и смотрите, что там происходит. Мне пока не до этого...
User avatar
dadreamer
professor
professor
 
Posts: 3418
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 858
I/O VIP vision internet

Re: Альтернатива VISA для работы с последовательным портом

Postby dadreamer on 17 Sep 2015, 10:43

Я с VISA никогда не работаю,
вот есть альтернативные VI
Прошу прощения за археологию, но на какой версии :labview: вы используете эти :vi: ? Если на 7.1 и более поздних, то тогда это никакая не альтернатива Визе, так как все :vi: в \LabVIEW xxxx\vi.lib\Instr\serial.llb и в _sersup.llb содержат стандартные блоки VISA. Если речь о 6.1 и более ранних, то да, некоторый смысл есть, наверное. Сравните сами:
Attachments
2015-09-17_12-35-44.jpg
Open Serial Driver.vi (LV ≥ 7.1)
2015-09-17_12-37-27.jpg
Open Serial Driver.vi (LV ≤ 6.1)
User avatar
dadreamer
professor
professor
 
Posts: 3418
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 858
I/O VIP vision internet

Re: Альтернатива VISA для работы с последовательным портом

Postby Borjomy_1 on 17 Sep 2015, 11:25

Хм.. Вы на дату сообщения смотрели? 4 года уже прошло. Может, технический прогресс его уже догнал.
Borjomy_1
expert
expert
 
Posts: 1908
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 332
VIP

Re: Альтернатива VISA для работы с последовательным портом

Postby dadreamer on 17 Sep 2015, 11:30

Вы на дату сообщения смотрели?
Прошу прощения за археологию
Может, технический прогресс его уже догнал.
В профиле версия :labview: не указана :dntknw:
Ну, и это навело на мысли: viewtopic.php?p=65897#p65897
User avatar
dadreamer
professor
professor
 
Posts: 3418
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 858
I/O VIP vision internet

Re: Альтернатива VISA для работы с последовательным портом

Postby Borjomy_1 on 17 Sep 2015, 11:42

Мдя.. в таком случае, вы правы. С этим следует смириться....
Borjomy_1
expert
expert
 
Posts: 1908
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 332
VIP

Re: Альтернатива VISA для работы с последовательным портом

Postby dadreamer on 18 Sep 2015, 21:34

User avatar
dadreamer
professor
professor
 
Posts: 3418
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 858
I/O VIP vision internet

Re: Альтернатива VISA для работы с последовательным портом

Postby dadreamer on 08 Jul 2016, 15:14

User avatar
dadreamer
professor
professor
 
Posts: 3418
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 858
I/O VIP vision internet

Re: Альтернатива VISA для работы с последовательным портом

Postby IvanLis on 06 Nov 2016, 20:58

Знание нескольких принципов освобождает от знания многих фактов!




User avatar
IvanLis
professor
professor
 
Posts: 4863
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2015, 2016
Karma: 787
hardware VIP bloggers teachers

Re: Альтернатива VISA для работы с последовательным портом

Postby dadreamer on 06 Nov 2016, 21:22

Last edited by dadreamer on 06 Nov 2016, 21:28, edited 1 time in total.
User avatar
dadreamer
professor
professor
 
Posts: 3418
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 858
I/O VIP vision internet

Re: Альтернатива VISA для работы с последовательным портом

Postby IvanLis on 06 Nov 2016, 21:28

По дефолту serpdrv заточен на работу с устройствами ttySN, где N - номер порта, начиная с 0. Возможно, что в конфиге :labview: нужно прописать другое наименование порта перед тем, как работать с ним.
:dntknw:
В конфигах самого :labview: (/home/$USER/natinst/.config/LabVIEW-2010/labview.conf) ничего дополнительно прописывать не нужно.

Это врятли, конфиг я так понимаю необходим для сопоставления реального порта и его названия в VISA.
У меня например в конфиге вообще о портах информации нет.
Знание нескольких принципов освобождает от знания многих фактов!




User avatar
IvanLis
professor
professor
 
Posts: 4863
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2015, 2016
Karma: 787
hardware VIP bloggers teachers

PreviousNext

Return to Коммуникация с приборами

Who is online

Users browsing this forum: No registered users and 7 guests

cron