LVserial. Одновременная работа с несколькими портами.
-
- leader
- Сообщения: 526
- Зарегистрирован: 28 фев 2010, 18:04
- Версия LabVIEW: LV2018
- Благодарил (а): 10 раз
- Поблагодарили: 18 раз
- Контактная информация:
LVserial. Одновременная работа с несколькими портами.
Использую LVserial. Есть программа работы с COM портом, её можно клонировать. При этом задумано, что таким образом можно будет работать параллельно с разными портами. Но, вот, возникла неожиданная проблема. Первый клон работает со своим портом правильно. При запуске второго клона, другой порт подключается правильно. При этом данные, которые на него приходят, частично попадают как на этот клон, так частично и на первый. Все LVserialьные виайки, участвующие в процессе, сделал реерансными, но не помогло. Теперь встаёт главный вопрос: "Можно ли с помощью LVserial осуществить задуманное?". Надеюсь, что я просто что то не учёл у себя в программе.
-
- professor
- Сообщения: 3394
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: LVserial. Одновременная работа с несколькими портами.
Параллельно точно можно. За плечами несколько проектов с параллельной работой на несколько портов одновременно, никаких проблем.
Начните с малых тестов: в одном vi несколько циклов на разные порты с примитивным чтением (если прибором не нужно управлять) - просто убедиться, что данные правильно идут.
И кстати, речь точно о разных портах, а не о разных приборах на одном порту?
Если простой тест будет удачным, наращивайте функции, пока не получите желаемое, или не столкнётесь с проблемой, и вот её (код) в студию.
Если простой тест будет неудачным, сразу его в студию.
Начните с малых тестов: в одном vi несколько циклов на разные порты с примитивным чтением (если прибором не нужно управлять) - просто убедиться, что данные правильно идут.
И кстати, речь точно о разных портах, а не о разных приборах на одном порту?
Если простой тест будет удачным, наращивайте функции, пока не получите желаемое, или не столкнётесь с проблемой, и вот её (код) в студию.
Если простой тест будет неудачным, сразу его в студию.
-
- leader
- Сообщения: 526
- Зарегистрирован: 28 фев 2010, 18:04
- Версия LabVIEW: LV2018
- Благодарил (а): 10 раз
- Поблагодарили: 18 раз
- Контактная информация:
Re: LVserial. Одновременная работа с несколькими портами.
На скорую руку сделал такой тест. На первый взгляд работает адекватно как два цикла в одной VI, так и по одному в двух VI. Это уже легче. А что же у меня не так в основной программе пока ума не приложу, поскольку отличий с тестом пока не вижу. Утро вечера мудренее. Одно устройство - модем, другое - микроконтроллер STM.
- Вложения
-
- Тест.vi
- (30.54 КБ) 140 скачиваний
-
- professor
- Сообщения: 3394
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: LVserial. Одновременная работа с несколькими портами.
там кучи функций не хватает. И что в них происходит, неведомо.
А наличие Comm Handle настораживает
-
- leader
- Сообщения: 526
- Зарегистрирован: 28 фев 2010, 18:04
- Версия LabVIEW: LV2018
- Благодарил (а): 10 раз
- Поблагодарили: 18 раз
- Контактная информация:
Re: LVserial. Одновременная работа с несколькими портами.
Так это функции библиотеки lvserial. Что то не подумал, что их надо выложить.
Выдалось немного времени и удалось выяснить, что работа с портами идёт правильно - дело не в lvserial. А всё дело в дальнейшей обработке. Принятые данные с помощью Queue Operation передаются в другой цикл и прежде, чем их вывести, ведётся довольно сложная логическая обработка. Каким образом перекрещиваются результаты между клонами надо выяснять, т.е. банально надо время. Все подпрограммы сделаны реетрансными. Когда разберусь, то отпишусь. Раз уж была упомянута Queue Operation, то задам вопрос: а с ней не может ли быть каких фокусов при реентрансном использовании?
-
- user
- Сообщения: 94
- Зарегистрирован: 28 июл 2019, 13:16
- Версия LabVIEW: 19
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Re: LVserial. Одновременная работа с несколькими портами.
Одна ссылка на очередь = одна очередь. Без разницы реентрантное использование или нет. Очереди используются (по информации из курсов) 1:1 и N:1.Юрий писал(а): ↑06 июл 2020, 23:34 Каким образом перекрещиваются результаты между клонами надо выяснять, т.е. банально надо время. Все подпрограммы сделаны реетрансными. Когда разберусь, то отпишусь. Раз уж была упомянута Queue Operation, то задам вопрос: а с ней не может ли быть каких фокусов при реентрансном использовании?
Для разных получателей потребуется своя очередь для каждого.
-
- leader
- Сообщения: 526
- Зарегистрирован: 28 фев 2010, 18:04
- Версия LabVIEW: LV2018
- Благодарил (а): 10 раз
- Поблагодарили: 18 раз
- Контактная информация:
Re: LVserial. Одновременная работа с несколькими портами.
ujin, спасибо. То есть при создании клона в функции Obtain Queue Function надо давать другое имя, уникальное по отношению ко всем другим клонам. Ну, что ж, хорошо, что так быстро решился этот вопрос.
-
- professor
- Сообщения: 3394
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: LVserial. Одновременная работа с несколькими портами.
не знаю, как оно у вас устроено, но при создании очереди можно вообще не давать имя ,тогда система будет каждый раз выделять новую
-
- leader
- Сообщения: 526
- Зарегистрирован: 28 фев 2010, 18:04
- Версия LabVIEW: LV2018
- Благодарил (а): 10 раз
- Поблагодарили: 18 раз
- Контактная информация:
Re: LVserial. Одновременная работа с несколькими портами.
Спасибо. Самое простое решение, заработало как ожидалось. Не было бы заморочки и не знал бы этого.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 13 Ответы
- 2497 Просмотры
-
Последнее сообщение Artem.spb
-
- 16 Ответы
- 3229 Просмотры
-
Последнее сообщение Artem.spb
-
- 4 Ответы
- 204 Просмотры
-
Последнее сообщение Andrew Lunev