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

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

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

Postby dadreamer on 27 Dec 2016, 18:13

Atom wrote:По интеловской приблуде так и не понял что это и зачем ей виртуальный СОМ порт организованный на шине PCI.

https://ru.wikipedia.org/wiki/Active_Ma ... Technology
https://habrahabr.ru/company/intel/blog/247699/
https://software.intel.com/en-us/articl ... he-fullest
VID=04D8, PID=000A эти параметры по умолчанию у всех PIC-ов с USB. Нет можно конечно отправить запрос на получение собственного VendorID / ProductID через usb.org и гордо прилепить соответствующий шильдик, но эта наклейка не дешевая.

Ну, вы же не собираетесь включать несколько таких устройств в одну машину одновременно? Я к тому, что на один сеанс работы будет всегда приходиться один девайс с указанными VID/PID. И поэтому его можно однозначно обнаружить в системе.
А стринга все таки вещь более уникальная (в рамках моей фантазии). Или я не прав?

Скорее всего да, так как вы вправе менять её, как захотите. Хоть свой серийник сгенерить. Ну раз так, то проще будет на самом деле использовать обычный запрос WMI в cmd.
Atom wrote:И еще насколько корректно использование готового кода LCP (его ведь кто-то придумал) в моем проекте.

Это открытая и свободно распространяемая инфа. Плюс к тому, код там простейший. Подобный код можно найти в массе мест в сети. Например, вот скрипт на PowerShell:
Code: Select all
$colItems = get-wmiobject -class "Win32_PnPEntity" -namespace "root\CIMV2" -computername "."
foreach ($objItem in $colItems) {
  if ( $objItem.Name -like "*COM*" ) {
      write-host "Name: -" $objItem.Name "-"
      write-host "PNP Device ID: " $objItem.PNPDeviceID
      write-host
   }     
}

Делает почти то же самое, что и LCP. Можете запустить, проверить.
И вообще в чем различие этих двух подходов. Ты ранее писал что VISA F работает медленно. Но для меня это не страшно, т. к. эта функция выполняется только при запуске программы один раз, либо один раз при каждом разрыве соединения (но юзер не будет же целенаправленно со скоростью +100500 колебаний с секунду дергать шнурок по разъемам).

Принципиальное различие: способ через VISA Find требует открытия порта для его идентификации, в то время как способ перечисления портов средствами ОС не требует какого-либо взаимодействия с портом. Раз так, имеем 100%-ную точность попадания в "наш" порт и отсутствие лишних операций.
User avatar
dadreamer
professor
professor
 
Posts: 3085
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 776
I/O VIP vision internet

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

Postby Atom on 27 Dec 2016, 18:54

dadreamer wrote:Ну, вы же не собираетесь включать несколько таких устройств в одну машину одновременно? Я к тому, что на один сеанс работы будет всегда приходиться один девайс с указанными VID/PID. И поэтому его можно однозначно обнаружить в системе.

Я про то и говорю, что чисто гипотетически у юзера может УЖЕ иметься "USB кофеварка" :) построенная на PIC-ке и плюс он приобрел мой девайс "USB взбивалку молока" тоже на PIC-ке и готовит себе капучино. Что кофеварка, что взбивалка не имеют собственных VID/PID, а используют дефолтные значения от микрочипа.
Atom
advanced
advanced
 
Posts: 196
Joined: 01 Nov 2009, 23:18
Location: Москва
LabVIEW Version: 2010
Karma: 0

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

Postby Atom on 27 Dec 2016, 19:13

dadreamer wrote:
Atom wrote:По интеловской приблуде так и не понял что это и зачем ей виртуальный СОМ порт организованный на шине PCI.

https://ru.wikipedia.org/wiki/Active_Ma ... Technology
https://habrahabr.ru/company/intel/blog/247699/
https://software.intel.com/en-us/articl ... he-fullest

Спасибо. Ознакомился. Причем у всех она по умолчанию стоит на COM 3. Я конечно могу в траблшутах по установке своего девайса прописать чтобы юзер отправлял эту i-АМТ на свободный (допустим СОМ 2) порт. Но скорее всего помимо i-АМТ найдется еще какая нибудь девайсина которая поведет себя так-же допустим на порте СОМ 4 или СОМ 5 ...... Почему винда позволяет поставить мое железо на СОМ 3 когда он занят. Ладно если устройство отключено или от этой i-АМТ нет отклика, но на тестах выше мы видим что отклик от порта 3 ( i-АМТ ) получаем. :cantbe:
Atom
advanced
advanced
 
Posts: 196
Joined: 01 Nov 2009, 23:18
Location: Москва
LabVIEW Version: 2010
Karma: 0

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

Postby Atom on 27 Dec 2016, 19:26

dadreamer wrote:Принципиальное различие: способ через VISA Find требует открытия порта для его идентификации, в то время как способ перечисления портов средствами ОС не требует какого-либо взаимодействия с портом. Раз так, имеем 100%-ную точность попадания в "наш" порт и отсутствие лишних операций.

Вот это уже нормальный плюс. Дабы не стучаться не просто в присутствующие в системе порты, а в порты которые сейчас используются другими девайсами. А то не ровен час поломаем их моим проектищем. :wink:
Глупый (для чайника) конечно вопрос. Я так понял что эта LCP альтернатива "квадратику" VISA F. Я к тому, как мне ее прикрутить к моей SubVI-ке (скрин ранее в посте) с учетом, что мы определились проверять порт на корректность стринги. Скорее всего нужно убирать цикл и структуру (на скрине не видно что в структуре по событию false стоит "голая" VISA Close).
Atom
advanced
advanced
 
Posts: 196
Joined: 01 Nov 2009, 23:18
Location: Москва
LabVIEW Version: 2010
Karma: 0

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

Postby Blackman on 27 Dec 2016, 19:53

dadreamer wrote:Принципиальное различие: способ через VISA Find требует открытия порта для его идентификации, в то время как способ перечисления портов средствами ОС не требует какого-либо взаимодействия с портом. Раз так, имеем 100%-ную точность попадания в "наш" порт и отсутствие лишних операций.

Для идентификации ресурса с требуемыми атрибутами (свойствами) VISA Find не требуется открытие сессии к самому ресурсу (порту).
На рис простой пример поиска всех ресурсов со скоростью передачи 9600 бод
NI-VISA Help хороший источник)
Upd: Из VISA Вы никогда не сможете получить доступ (чтение- запись-изменение атрибутов) к ресурсу (порту) занятому другим приложением.
Attachments
VISA Find Log.PNG
Blackman
leader
leader
 
Posts: 729
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 189

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

Postby Atom on 27 Dec 2016, 20:46

А истина где-то в серединке :drink:
Atom
advanced
advanced
 
Posts: 196
Joined: 01 Nov 2009, 23:18
Location: Москва
LabVIEW Version: 2010
Karma: 0

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

Postby dadreamer on 27 Dec 2016, 21:09

Atom wrote:Глупый (для чайника) конечно вопрос. Я так понял что эта LCP альтернатива "квадратику" VISA F. Я к тому, как мне ее прикрутить к моей SubVI-ке (скрин ранее в посте) с учетом, что мы определились проверять порт на корректность стринги. Скорее всего нужно убирать цикл и структуру (на скрине не видно что в структуре по событию false стоит "голая" VISA Close).

Ну, вот посмотрите вот такую :vi: :
List Com Ports (WMI).vi
lv2009
(10.62 KiB) Downloaded 48 times
На входе задаём имя порта, который требуется найти, и :vi: возвращает номер порта вида "COM №". Номер далее можно послать на VISA Open для открытия. Если подойдёт, то можете прямо так и вставить к себе.
У этого подхода есть один минус - не возвращает виртуальные порты (только железячные). Чтобы все порты возвращались, надо там кое что допиливать. Ну, в вашем случае должно работать (судя по картинкам).
Blackman wrote:Для идентификации ресурса с требуемыми атрибутами (свойствами) VISA Find не требуется открытие сессии к самому ресурсу (порту).

Прочтите тему внимательнее. Требуется получить не названия нативных Визовских атрибутов, а имена портов, как они представлены в Диспетчере устройств Windows. Или покажите, как можно с помощью VISA Find, не открывая сессию, получить эти имена, вкупе с именем порта в виде "COM №".
Last edited by dadreamer on 27 Dec 2016, 21:19, edited 1 time in total.
User avatar
dadreamer
professor
professor
 
Posts: 3085
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 776
I/O VIP vision internet

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

Postby Blackman on 27 Dec 2016, 21:19

dadreamer wrote:Прочтите тему внимательнее. Требуется получить не названия нативных Визовских атрибутов, а имена портов, как они представлены в Диспетчере устройств Windows. Или покажите, как можно с помощью VISA Find, не открывая сессию, получить эти имена, вкупе с именем порта в виде "COM №".

LabVIEW Help VISA Find Resource Function :super:
Blackman
leader
leader
 
Posts: 729
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 189

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

Postby dadreamer on 27 Dec 2016, 21:30

Blackman wrote:
dadreamer wrote:Прочтите тему внимательнее. Требуется получить не названия нативных Визовских атрибутов, а имена портов, как они представлены в Диспетчере устройств Windows. Или покажите, как можно с помощью VISA Find, не открывая сессию, получить эти имена, вкупе с именем порта в виде "COM №".

LabVIEW Help VISA Find Resource Function :super:

Возвращает либо ASRL#::INSTR, либо COM#. А где имя порта?..
Attachments
2016-12-27_23-31-20.jpg
2016-12-27_23-31-20.jpg (25.5 KiB) Viewed 3871 times
User avatar
dadreamer
professor
professor
 
Posts: 3085
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 776
I/O VIP vision internet

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

Postby Blackman on 27 Dec 2016, 21:41

Что такое имя порта? Interface Information:Interface Description?
Udp: Так это оно и есть)
Blackman
leader
leader
 
Posts: 729
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 189

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

Postby dadreamer on 27 Dec 2016, 21:52

Blackman wrote:Что такое имя порта? Interface Information:Interface Description?
Udp: Так это оно и есть)

Да. Но даже сам узел Property Node открывает порт. Если предварительно в терминале занять порт, то узел возвращает ошибку. Что косвенно говорит о том, что Визе нужно открыть сессию, чтобы получить свойство. А через VISA Find не получается у меня. Прописываю, скажем VI_ATTR_INTF_INST_NAME == "Последовательный порт", выдаёт ошибку.
User avatar
dadreamer
professor
professor
 
Posts: 3085
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 776
I/O VIP vision internet

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

Postby Atom on 27 Dec 2016, 22:18

Попробую вмешаться на "кухонном" языке.
Я так понял, что VISA Find собирает в СТРОКОВЫЙ МАССИВ дескрипторы (стринги) всех портов (по умолчанию СОМ) из например диспетчера устройств (или wmi это не суть) и выдает его из себя вместе с размером (количеством найденных дескрипторов). При этом в нем только дискрипторы портов, но не ресурсные значения.
А вот дальше для того чтобы получить нужный нам ресурс (resource name) нам нужно принудительно открывать сессию через VISA Open и сравнивать требуемую строковую константу с теми дескрипторами которые получили в массиве из VISA Find. И делать это столько раз сколько дескрипторов содержится в массиве (выход размера массива из VISA Find). Ну и в случае отрицательного результата (не совпадении требуемого дескриптора с эталонным) не забывать каждый раз закрывать сессию.
От сюда я делаю заключение что сама VISA Find не должна открывать сессию, но для получения Resource Name нам САМИМ НЕОБХОДИМО открыть сессию с помощью VISA Open.
Надеюсь понятно изложил.
Или я не прав? Подтвердите или опровергните плиз.
Last edited by Atom on 27 Dec 2016, 22:27, edited 2 times in total.
Atom
advanced
advanced
 
Posts: 196
Joined: 01 Nov 2009, 23:18
Location: Москва
LabVIEW Version: 2010
Karma: 0

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

Postby dadreamer on 27 Dec 2016, 22:24

Atom wrote:Или я не прав? Подтвердите или опровергните плиз.

Вроде так. Если мы хотим остаться только на инструментарии VISA.
User avatar
dadreamer
professor
professor
 
Posts: 3085
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 776
I/O VIP vision internet

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

Postby Atom on 27 Dec 2016, 22:34

dadreamer wrote:Вроде так. Если мы хотим остаться только на инструментарии VISA.

Глубоко филосовское заключение.
Мнеж потом с определенным (конкретным ресурсом) портом в программе работать. Отправлять и получать данные, управлять режимами работы моей железки и т. д. Я далее в программе плотно использую VISA R / VISA W. Или я уже не в тренде?
Atom
advanced
advanced
 
Posts: 196
Joined: 01 Nov 2009, 23:18
Location: Москва
LabVIEW Version: 2010
Karma: 0

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

Postby Blackman on 27 Dec 2016, 22:42

1. VISA Interface Information:Interface Description выдает строку отличающуюся от строки в диспетчере.
2. Однако в MAXе все выглядит почти как в диспетчере.
3. Find cо строкой от VISA выдает ошибку "Invalid expression specified for search".
Upd: Кроме коллизии с двумя и более Вашими интерфейсами в системе все у Вас хорошо). Нормально все сделано. Добавите диалог выбора ресурса для 2 и более приборов и все дела)
Upd2: В каком то мануале от NI было предупреждение не использовать Interface Information:Interface Description атрибут для парсинга ресурса, так как его реализация может изменяться от версии к версии.
Last edited by Blackman on 27 Dec 2016, 22:57, edited 2 times in total.
Blackman
leader
leader
 
Posts: 729
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 189

PreviousNext

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

Who is online

Users browsing this forum: No registered users and 1 guest

cron