Разрывается связь с СОМ портом

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

Re: Разрывается связь с СОМ портом

Postby Blackman on 29 Dec 2016, 10:17

Atom wrote:... Пытался на протяжении ШЕСТИ часов попасть на форум. ...

У меня вчера гугла вообще не находил вход на сайт.

Atom wrote:А если в диспетчере во вкладке "Вид" поставить галку на "Показать скрытые устройства" - он где нибудь покажется? Может даже не обязательно в разделе портов.

Порт находится в группе модемы.
Добавил :vi: поиска. Блок диаграмму показывал выше.
А теперь ситуация: В один прекрасный день Вы получите в списке более одного ресурса с Вашей "Волшебной строкой "). Что делать дальше? Где кофемолка, а где кофеварка?))
Attachments
Blackman--VISA_Find by Interface Name10.vi
(13.52 KiB) Downloaded 15 times
Blackman
leader
leader
 
Posts: 548
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 116

Re: Разрывается связь с СОМ портом

Postby Atom on 29 Dec 2016, 11:40

Blackman wrote:Где кофемолка, а где кофеварка?))

1. Я никогда не знаю в какой разъем юзер воткнет мою железку (и как следствие я не знаю какой номер СОМ порта винда присвоит этому разъему).
2. По VID /PID я тоже привязываться не могу т.к. кофемолка и кофеварка могут быть сделаны на одинаковом МК с дефолтными VID /PID (описывал ранее).
3. А вот строковый дескриптор это мое УНИКАЛЬНОЕ название железяки (кофеМОЛКА - кофеВАРКА или кофемолка "1" - кофемолка "2"). По нему я точно могу определить что это моя железка. Мало того эту строку я могу менять по своему усмотрению в зависимости от версий и функциональности моей железяки ("кофеварка_Lite_version" или "кофеварка_Full_version").
Atom
advanced
advanced
 
Posts: 182
Joined: 01 Nov 2009, 23:18
Location: Москва
LabVIEW Version: 2010
Karma: 0

Re: Разрывается связь с СОМ портом

Postby Blackman on 29 Dec 2016, 12:11

Atom wrote:3. А вот строковый дескриптор это мое УНИКАЛЬНОЕ название железяки (кофеМОЛКА - кофеВАРКА или кофемолка "1" - кофемолка "2"). По нему я точно могу определить что это моя железка. Мало того эту строку я могу менять по своему усмотрению в зависимости от версий и функциональности моей железяки ("кофеварка_Lite_version" или "кофеварка_Full_version").

Я имел в виду, что к компу будет подключено две "железяки" с одинаковым описанием интерфейса например - "кофеварка_Lite_version".
Blackman
leader
leader
 
Posts: 548
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 116

Re: Разрывается связь с СОМ портом

Postby dadreamer on 29 Dec 2016, 12:13

Blackman wrote:VISA это делает без всяких условий. Исходная тема уже давно трансформировалась в тему о способах (технике, алгоритме, стиле ...) программного поиска требуемых ресурсов, а какой он - физический, виртуальный или "призрак" уже второе дело.
Вы тут маленько путаете "красное" и "горячее". С помощью SetupDi... мы получаем информацию о классе устройств, таких как класс модемов, класс последовательных портов и так далее. Ваш подход (VISA Find - VISA Open - VISA Close) сваливает все девайсы в одну кучу. По крайней мере по той диаграмме, что вы привели, это так работает. Не спорю, можно это дело и улучшить - сделать анализ атрибутов сессии на тип устройства и т.п. А вот те :vi: , что я выше выкладывал, выдают список портов заданного класса: List COMs.vi - класс COM-портов, List COMs - 2.vi - класс последовательных интерфейсов, List COMs (Modems).vi - класс модемов. Всё это хозяйство, в первую очередь, предназначено решить задачу автора темы. Если было бы нужно, я бы объединил инфу по нескольким классам устройств в одном :vi:

Как я сказал уже по поводу "призрачного" порта - его можно перечислить, указав класс модемов для GetClassDevs. Посмотрите List COMs (Modems).vi. Он способен вернуть инфу по присутствующему в системе модему с вкладки "Сведения" диспетчера устройств. Номер порта, к сожалению, не возвращается через функции Setup API. Здесь нужно применить несколько иной подход: http://forum.sources.ru/index.php?showt ... ew=showall Используя арсенал TAPI, можем без труда запросить у модема имя и порт, на котором он "сидит":

2016-12-29_13-51-40.jpg

Честно, с Сей на :labview: эти сорцы мне перегонять лень. Если остро встанет задача получения номера порта модема, то можно будет повозиться. А пока... Я вижу, вы целиком и полностью довольны Визой и своим подходом. :wink: Так что ни к чему лишние хлопоты.

Кроме прочего, я вижу, что VISA Find возвращает номер порта без friendly name. По крайней мере у меня в MAX'е имя порта нигде совсем не пишется (хотя, как видите, модем имеет своё наименование). У вас на картинке какое-то имя порта возвращается, но оно совсем не совпадает с тем, что указано в диспетчере устройств. Я это к чему... Сдаётся мне, что VISA Find использует стандартый "брутфорс"-приём через CreateFile. Сейчас у меня нет времени это проверять, но если так, то это увеличивает шанс на блокировку работающего устройства. Собираюсь проверить позднее.
Atom wrote:А если в диспетчере во вкладке "Вид" поставить галку на "Показать скрытые устройства" - он где нибудь покажется? Может даже не обязательно в разделе портов.
Нет, не покажется никаким образом. Как бы получше сказать... Модем и есть COM-порт. Это как "котопёс": с одной стороны модем, с другой - COM-порт. Так что это одно целое. :crazy:
Blackman wrote:А теперь ситуация: В один прекрасный день Вы получите в списке более одного ресурса с Вашей "Волшебной строкой "). Что делать дальше? Где кофемолка, а где кофеварка?))
ТС может задать такой ID, что он никогда не совпадёт ни с каким другим ID какого-либо из существующих устройств. Может вообще сгенерить уникальный хэш своего прибора, который у каждого прибора будет разным (это к слову о двух одинаковых "железках").
Attachments
enum_modems.rar
список модемов через TAPI
(32.14 KiB) Downloaded 9 times
User avatar
dadreamer
doctor
doctor
 
Posts: 2598
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2016
Karma: 657
I/O VIP vision internet

Re: Разрывается связь с СОМ портом

Postby Atom on 29 Dec 2016, 12:59

dadreamer wrote:Но даже сам узел Property Node открывает порт.

Вот те на.
Atom
advanced
advanced
 
Posts: 182
Joined: 01 Nov 2009, 23:18
Location: Москва
LabVIEW Version: 2010
Karma: 0

Re: Разрывается связь с СОМ портом

Postby Atom on 29 Dec 2016, 13:09

В приведенном ранее примере мне не нравится, что мы открываем сессию со ВСЕМИ (по очереди) портами пока не найдем НУЖНЫЙ.

Допустим в диспетчере мы видим:
Вася (СОМ 1)
Петя (СОМ 2)
Света (СОМ 3)
TestMyProject (СОМ 4)
.....
Сначала мы физически "беспокоим" (в смысле вежливо спрашиваем, а не в глаз:) Васю (открываем с ним сессию и тут-же закрываем), затем "Петю" и т.д.
А хочется не беспокоя всех определить где "TestMyProject" и открыть сессию.
Attachments
ComPortSearch.png
ComPortSearch.png (8.63 KiB) Viewed 258 times
Last edited by Atom on 29 Dec 2016, 17:22, edited 1 time in total.
Atom
advanced
advanced
 
Posts: 182
Joined: 01 Nov 2009, 23:18
Location: Москва
LabVIEW Version: 2010
Karma: 0

Re: Разрывается связь с СОМ портом

Postby Blackman on 29 Dec 2016, 14:53

Может NI-VISA help внесет ясность в суть проблемы?)
http://www.ni.com/pdf/manuals/370131r.zip
Blackman
leader
leader
 
Posts: 548
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 116

Re: Разрывается связь с СОМ портом

Postby Atom on 29 Dec 2016, 15:11

Намек понят, что надо сворачиваться. :cry:
Atom
advanced
advanced
 
Posts: 182
Joined: 01 Nov 2009, 23:18
Location: Москва
LabVIEW Version: 2010
Karma: 0

Re: Разрывается связь с СОМ портом

Postby dadreamer on 29 Dec 2016, 16:08

dadreamer wrote:Сдаётся мне, что VISA Find использует стандартый "брутфорс"-приём через CreateFile. Сейчас у меня нет времени это проверять, но если так, то это увеличивает шанс на блокировку работающего устройства. Собираюсь проверить позднее.

VISA Find сам по себе абсолютно безвреден. В процессе вызова запрашивает обновление файла C:\ProgramData\National Instruments\NIvisa\visaconf.ini и читает его. В нём содержится список всех устройств и их алиасов. К слову, сам файл обновляет системная служба (драйвер от NI) с некоторым не очень большим интервалом. Если успеть внести изменения "ручками" в файл и вызвать VISA Find, то вернёт исправленные значения. Очевидно, что такой подход содержит в себе ещё один недостаток - задержку операций чтения/записи файловой системы (драйвер обновляет файл -> :labview: файл читает, формируя список).

А вот VISA Open - VISA Close в цикле, как и ожидалось, дёргают CreateFile:
2016-12-29_17-45-31.jpg

Так что можно сделать соответствующие выводы.

Atom wrote:Намек понят, что надо сворачиваться.

И правда. :) Что-то ходите вокруг, да около. Вам тут на 5 страниц советов и программ надавали. :D Бери - не хочу!
User avatar
dadreamer
doctor
doctor
 
Posts: 2598
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2016
Karma: 657
I/O VIP vision internet

Re: Разрывается связь с СОМ портом

Postby Atom on 29 Dec 2016, 17:18

Отсюда делаем вывод, что для моей задачи та VI-ка которая есть является наиболее ОПТИМАЛЬНЫМ и КОМПАКТНЫМ вариантом.
Будем стучаться ко всем соседям и спрашивать у них имена, т.к. как видно что без VISA O и т.п. не обойтись.

Ребята, СПАСИБО ОГРОМНОЕ и прошу прощения за отнятое у Вас время, но с другой стороны мы конкретно обсосали тему и возможно наши изыски помогут многим коллегам. Еще раз Спасибо. :bye:

Всех с наступающим Новым Годом, счастья, здоровья, удачи. :drink:
Atom
advanced
advanced
 
Posts: 182
Joined: 01 Nov 2009, 23:18
Location: Москва
LabVIEW Version: 2010
Karma: 0

Re: Разрывается связь с СОМ портом

Postby dadreamer on 29 Dec 2016, 18:29

Atom wrote:Отсюда делаем вывод, что для моей задачи та VI-ка которая есть является наиболее ОПТИМАЛЬНЫМ и КОМПАКТНЫМ вариантом.
Будем стучаться ко всем соседям и спрашивать у них имена, т.к. как видно что без VISA O и т.п. не обойтись.

Интересные у вас выводы :D
Atom, я вам предоставил 5 недостатков подхода "VISA Find -> VISA Open -> VISA Close". Но вы всё ходили вокруг, да около, как кот вокруг миски со сметаной. И под конец вот это:
Atom wrote:Отсюда делаем вывод, что для моей задачи та VI-ка которая есть является наиболее ОПТИМАЛЬНЫМ и КОМПАКТНЫМ вариантом.
Будем стучаться ко всем соседям и спрашивать у них имена, т.к. как видно что без VISA O и т.п. не обойтись.

То ли вы аки матёрый тролль, провоцировали меня на всю эту писанину... То ли на самом деле так и не поняли того, что я пытался донести до вас.

В любом случае, мне жаль. Разбирайтесь сами со своими проблемами с железом.

Мне эта тема уже порядком...
User avatar
dadreamer
doctor
doctor
 
Posts: 2598
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2016
Karma: 657
I/O VIP vision internet

Re: Разрывается связь с СОМ портом

Postby Atom on 09 Jan 2017, 15:21

dadreamer wrote:То ли вы аки матёрый тролль, провоцировали меня на всю эту писанину... То ли на самом деле так и не поняли того, что я пытался донести до вас.В любом случае, мне жаль. Разбирайтесь сами со своими проблемами с железом

Дорогой Dadreamer. Я не в коем разе не являюсь троллем, и никого не провоцирую. Я просто спросил совета как правильнее и КОРРЕКТНЕЕ сделать обращение к НУЖНОМУ мне порту (я никогда не знаю к какому порту подключено мое железо, я лишь знаю как оно называется). Возможно я действительно не понял ваших объяснений. И плюс в последних постах мы все равно пришли к VISA O (и подобным).
Т. К. по примерам мы из ОС берем ресурс нэйм портов, а описание (стрингу) мы получаем посредством обращения к ним.
В чем здесь троллинг, если я действительно не понял. Может Вы уважаемый не поняли о чем я спрашиваю.
Повторюсь:
Допустим в диспетчере мы видим:
Вася (СОМ 1)
Петя (СОМ 2)
Света (СОМ 3)
TestMyProject (СОМ 4)
.....
Сначала мы физически "беспокоим" Васю (открываем с ним сессию, спрашиваем - ты "TestMyProject", нет, и тут-же закрываем), затем "Петю" и т.д.
А хочется не беспокоя всех определить где "TestMyProject" и открыть сессию.
Atom
advanced
advanced
 
Posts: 182
Joined: 01 Nov 2009, 23:18
Location: Москва
LabVIEW Version: 2010
Karma: 0

Re: Разрывается связь с СОМ портом

Postby dadreamer on 09 Jan 2017, 15:33

Atom, обычно на большинстве подобных форумов (и я считаю это нормальным явлением) никогда не дают "рыбу", а только лишь "удочку", чтоб автор темы мог сам попробовать предлагаемые ему вещи и проверить, как это работает в его "окружении". Так же и здесь. Кроме того, железка находится у вас и проверить, как она работает, можете лишь вы. Так что вам и карты в руки. :vi: были выложены, а мы ждали от вас результатов примерно в таком виде: "вот эта :vi: не работает, это работает через раз, тут так, тут этак". На основании этих экспериментов можно было скорректировать :vi: и подобрать оптимальный алгоритм поиска вашего устройства. Вы, почему-то, проигнорили все предлагаемые :vi: , даже не попробовав. Что в такой ситуации делают обычно?.. :wink: Оставляют всё, как есть (темы мы тут не закрываем) - работает через VISA Find, ок, пусть будет так.
Atom wrote:Повторюсь:

Это можно не описывать, итак понятно уже. Image
User avatar
dadreamer
doctor
doctor
 
Posts: 2598
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2016
Karma: 657
I/O VIP vision internet

Re: Разрывается связь с СОМ портом

Postby Atom on 09 Jan 2017, 15:46

Все :vi: были проверены и все они работают (с моим железом) так как были задуманы.
Кроме того я интегрировал (адаптировал) их как частично, так и целиком (в зависимости от самих :vi: ) в мой проект.
Но все равно для решения задачи без VISA Open (и подобным) ко всем портам в списке не обойтись пока не найдем нужный и отвечающий критериям поиска.
Atom
advanced
advanced
 
Posts: 182
Joined: 01 Nov 2009, 23:18
Location: Москва
LabVIEW Version: 2010
Karma: 0

Re: Разрывается связь с СОМ портом

Postby dadreamer on 09 Jan 2017, 16:20

Atom wrote:Но все равно для решения задачи без VISA Open (и подобным) ко всем портам в списке не обойтись пока не найдем нужный и отвечающий критериям поиска.

Так соль в том, чтобы выкинуть VISA Find и цикл перебора всех портов, а сделать сразу так: List Com Ports -> парсинг массива/списка портов и получение строки с именем порта (например, COM1) -> VISA Open (для COM1) -> операции VISA Read/VISA Write согласно алгоритму программы -> VISA Close. Итак, мы вызываем VISA Open - ... - VISA Close один раз на нашем порте, как и дожно быть.

VISA Open я не предлагал выкидывать. Более того, это нецелесообразно - придётся тогда использовать какую-то иную библиотеку для работы с последовательным интерфейсом. Зачем, когда есть универсальный API в виде VISA...
User avatar
dadreamer
doctor
doctor
 
Posts: 2598
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2016
Karma: 657
I/O VIP vision internet

PreviousNext

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

Who is online

Users browsing this forum: No registered users and 8 guests

cron