LVserial. Одновременная работа с несколькими портами.

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы
Ответить
Юрий
leader
leader
Сообщения: 526
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

LVserial. Одновременная работа с несколькими портами.

Сообщение Юрий »

Использую LVserial. Есть программа работы с COM портом, её можно клонировать. При этом задумано, что таким образом можно будет работать параллельно с разными портами. Но, вот, возникла неожиданная проблема. Первый клон работает со своим портом правильно. При запуске второго клона, другой порт подключается правильно. При этом данные, которые на него приходят, частично попадают как на этот клон, так частично и на первый. Все LVserialьные виайки, участвующие в процессе, сделал реерансными, но не помогло. Теперь встаёт главный вопрос: "Можно ли с помощью LVserial осуществить задуманное?". Надеюсь, что я просто что то не учёл у себя в программе.
Artem.spb

Activity Автор
professor
professor
Сообщения: 3394
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: LVserial. Одновременная работа с несколькими портами.

Сообщение Artem.spb »

Параллельно точно можно. За плечами несколько проектов с параллельной работой на несколько портов одновременно, никаких проблем.
Начните с малых тестов: в одном vi несколько циклов на разные порты с примитивным чтением (если прибором не нужно управлять) - просто убедиться, что данные правильно идут.
И кстати, речь точно о разных портах, а не о разных приборах на одном порту?

Если простой тест будет удачным, наращивайте функции, пока не получите желаемое, или не столкнётесь с проблемой, и вот её (код) в студию.
Если простой тест будет неудачным, сразу его в студию.
Юрий
leader
leader
Сообщения: 526
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

Re: LVserial. Одновременная работа с несколькими портами.

Сообщение Юрий »

На скорую руку сделал такой тест. На первый взгляд работает адекватно как два цикла в одной VI, так и по одному в двух VI. Это уже легче. А что же у меня не так в основной программе пока ума не приложу, поскольку отличий с тестом пока не вижу. Утро вечера мудренее. Одно устройство - модем, другое - микроконтроллер STM.
Вложения
Тест.vi
(30.54 КБ) 140 скачиваний
Artem.spb

Activity Автор
professor
professor
Сообщения: 3394
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: LVserial. Одновременная работа с несколькими портами.

Сообщение Artem.spb »

Юрий писал(а): 06 июл 2020, 02:09 Вложения
Тест.vi
там кучи функций не хватает. И что в них происходит, неведомо.
А наличие Comm Handle настораживает
Юрий
leader
leader
Сообщения: 526
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

Re: LVserial. Одновременная работа с несколькими портами.

Сообщение Юрий »

Artem.spb писал(а): 06 июл 2020, 12:22 там кучи функций не хватает. И что в них происходит, неведомо.
А наличие Comm Handle настораживает
Так это функции библиотеки lvserial. Что то не подумал, что их надо выложить.
Выдалось немного времени и удалось выяснить, что работа с портами идёт правильно - дело не в lvserial. А всё дело в дальнейшей обработке. Принятые данные с помощью Queue Operation передаются в другой цикл и прежде, чем их вывести, ведётся довольно сложная логическая обработка. Каким образом перекрещиваются результаты между клонами надо выяснять, т.е. банально надо время. Все подпрограммы сделаны реетрансными. Когда разберусь, то отпишусь. Раз уж была упомянута Queue Operation, то задам вопрос: а с ней не может ли быть каких фокусов при реентрансном использовании?
ujin
user
user
Сообщения: 94
Зарегистрирован: 28 июл 2019, 13:16
Версия LabVIEW: 19
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

Re: LVserial. Одновременная работа с несколькими портами.

Сообщение ujin »

Юрий писал(а): 06 июл 2020, 23:34 Каким образом перекрещиваются результаты между клонами надо выяснять, т.е. банально надо время. Все подпрограммы сделаны реетрансными. Когда разберусь, то отпишусь. Раз уж была упомянута Queue Operation, то задам вопрос: а с ней не может ли быть каких фокусов при реентрансном использовании?
Одна ссылка на очередь = одна очередь. Без разницы реентрантное использование или нет. Очереди используются (по информации из курсов) 1:1 и N:1.
Для разных получателей потребуется своя очередь для каждого.
Вложения
Communication Reference Architectures.png
APIs for messaging.png
Юрий
leader
leader
Сообщения: 526
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

Re: LVserial. Одновременная работа с несколькими портами.

Сообщение Юрий »

ujin писал(а): 07 июл 2020, 06:35 Одна ссылка на очередь = одна очередь. Без разницы реентрантное использование или нет. Очереди используются (по информации из курсов) 1:1 и N:1.
Для разных получателей потребуется своя очередь для каждого.
ujin, спасибо. То есть при создании клона в функции Obtain Queue Function надо давать другое имя, уникальное по отношению ко всем другим клонам. Ну, что ж, хорошо, что так быстро решился этот вопрос.
Artem.spb

Activity Автор
professor
professor
Сообщения: 3394
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: LVserial. Одновременная работа с несколькими портами.

Сообщение Artem.spb »

Юрий писал(а): 07 июл 2020, 23:24 То есть при создании клона в функции Obtain Queue Function надо давать другое имя
не знаю, как оно у вас устроено, но при создании очереди можно вообще не давать имя ,тогда система будет каждый раз выделять новую
Юрий
leader
leader
Сообщения: 526
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

Re: LVserial. Одновременная работа с несколькими портами.

Сообщение Юрий »

Artem.spb писал(а): 08 июл 2020, 08:41 не знаю, как оно у вас устроено, но при создании очереди можно вообще не давать имя ,тогда система каждый раз выделять новую
Спасибо. Самое простое решение, заработало как ожидалось. Не было бы заморочки и не знал бы этого.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Коммуникация с приборами»