Page 1 of 4

питание USB

PostPosted: 13 Feb 2016, 19:45
by servk
Всем здравствуйте.
Лет 5 назад на близком форуме пытался найти возможность управления питанием USB порта в среде LabVIEW. На то время решения никто не предложил, хотя советчиков-эрудитов вокруг да около было много :) Может быть сейчас кто знает о таком решении? Подчеркиваю нужно именно средствами LabVIEW и именно выхода питания (а не просто программного отключения конфигурации). В идеале буду признателен за готовый vi лучше в версии 7.1

Re: питание USB

PostPosted: 13 Feb 2016, 20:04
by dadreamer
Программно нельзя снять +5 В с USB-порта, по крайней мере в Windows точно. Хочешь - не хочешь, а придётся использовать аппаратное реле, например, Cleware USB Connect или аналог. См. тему viewtopic.php?f=84&t=8168&p=65109&hilit=cleware#p65065

Re: питание USB

PostPosted: 13 Feb 2016, 20:18
by servk
dadreamer wrote:Программно нельзя снять +5 В с USB-порта, по крайней мере в Windows точно. Хочешь - не хочешь, а придётся использовать аппаратное реле, например, Cleware USB Connect или аналог. См. тему <!-- l --><a class="postlink-local" href="http://www.labviewportal.ru/viewtopic.php?f=84&t=8168&p=65109&hilit=cleware#p65065">viewtopic.php?f=84&t=8168&p=65109&hilit=cleware#p65065</a><!-- l -->
сходу пример http://safelyremove.com/blog/ru/usbsafe ... -4-4-final

Re: питание USB

PostPosted: 13 Feb 2016, 20:25
by Vitekkz88
пытался найти возможность управления питанием USB порта в среде LabVIEW

Это настолько ёмкий вопрос, даже не представляете. На метод, который подойдет для любой ОС, любой мат.платы и USB-контроллеров на ней можете не рассчитывать.
Отключение видимо должно поддерживаться драйвером USB-контроллера. А вот поддерживает ли ваш контроллер такую функцию - это другой вопрос.
Дать однозначную функцию типа: указали порт и питание ON/OFF "на все случаи жизни и железа" нельзя.
Можете попробовать использовать devcon.exe в случае винды. Возможно имеет смысл ввести промежуточное устройство, что-то типа USB-hub с поддержкой программного управления питанием подключенных устройств.

Re: питание USB

PostPosted: 13 Feb 2016, 20:29
by servk
вот еще пример c файлообмена : programma_dlya_otklyucheniya_napryajeniya_na_usb.rar
короче в Виндах можно стопудово, ищу решение в среде LabView. Прошу вокруг и около не предлагать для э
кономии времени. Если конечно кто знает

Re: питание USB

PostPosted: 13 Feb 2016, 20:30
by IvanLis
dadreamer wrote:Программно нельзя снять +5 В с USB-порта, по крайней мере в Windows точно.


В Linux можно, за редким исключением: http://sysadm.pp.ua/linux/usb.html

Про Windows вот что накопал, но попробовать нет возможности:
Devcon https://technet.microsoft.com/en-us/lib ... 75588.aspx
disable
The disable operation disables the specified devices.

Example 30: Disable devices by an ID pattern.
The following command disables the USB devices on the local computer. It identifies the device by a hardware ID pattern, USB*. This pattern will match an device whose hardware ID or compatible ID begins with "USB." The command includes the /r parameter, which reboots the system if it is necessary to make the disabling effective.
Caution
Before using an ID pattern to disable a device, determine which devices will be affected. To do so, use the pattern in a display command, such as devcon status USB* or devcon hwids USB*.

devcon /r disable USB*
In response, Devcon displays the instance IDs of the USB devices and reports that they are disabled. Although the command included the /r parameter, the system did not reboot because a reboot was not required to disable the devices.

Re: питание USB

PostPosted: 13 Feb 2016, 20:37
by servk
Vitekkz88 wrote:
пытался найти возможность управления питанием USB порта в среде LabVIEW

Это настолько ёмкий вопрос, даже не представляете. На метод, который подойдет для любой ОС, любой мат.платы и USB-контроллеров на ней можете не рассчитывать.
Отключение видимо должно поддерживаться драйвером USB-контроллера. А вот поддерживает ли ваш контроллер такую функцию - это другой вопрос.
Дать однозначную функцию типа: указали порт и питание ON/OFF "на все случаи жизни и железа" нельзя.
Можете попробовать использовать devcon.exe в случае винды. Возможно имеет смысл ввести промежуточное устройство, что-то типа USB-hub с поддержкой программного управления питанием подключенных устройств.


Уважаю емкость и мудрость ответа, если можете прислать рабочую vi даже для одного случая из жизни железа - буду безмерно рад. Найти железо будет моя проблема

Re: питание USB

PostPosted: 13 Feb 2016, 20:40
by dadreamer
servk, ну тогда за чем дело встало? Используйте консольный USR или стандартное извлечение. Если, конечно, у вас обычная флэшка / съемный диск.

IvanLis wrote:Про Windows вот что накопал, но попробовать нет возможности:
Devcon https://technet.microsoft.com/en-us/lib ... 75588.aspx

Devcon, по сути, тот же диспетчер устройств в Windows, ничего более он сделать не может. В частности, для USB варианты те же, что и в GUI-редакторе: отключить или удалить сам девайс (съемный диск, например), контроллер устройства, либо весь USB-концентратор. Но все эти изменения программные. Если само устройство требует физического переподключения, то единственный вариант - извлечь его и вставить обратно в порт. Это во-многом зависит от самого устройства, если для обычных флэшек можно сделать извлечение - возврат программным методом (как реализовано в USR), то для специфических чипов (как некоторые UART-мосты) такое может не прокатить (по своему опыту знаю, были устройства, которые ни devcon'ом, ни USR не возвращались к жизни, кроме как через физическое извлечение).

Re: питание USB

PostPosted: 13 Feb 2016, 20:45
by servk
коллеги, пожалейте время и электричество. Как писал в начале - ищу решение только в среде LabVIEW, советы от эрудитов как это сделать другими приемами конечно уважаю, но для конкретно моей задачи они бесполезны. Подобное многостраничное обсуждение темы уже пережил 5 лет назад. Ну как говорится на нет и суда нет

Re: питание USB

PostPosted: 13 Feb 2016, 20:55
by dadreamer
servk, так мы за рамки :labview: и не выходим. Я полагаю, вы в курсе об инструментах System Exec, CLFN, .NET/ActiveX. Для поставленной задачи подойдёт либо 1, либо 2, а нативных средств (увы) нет.

Вообще, способ с реле наиболее простой и работающий на 100% на любом :labview: . Можно при желании и на ISA/PCI-платах реализовать. Но надо было начинать с простого: что за устройство используется и в каком режиме предполагается им управлять. Отсюда уже можно понять, достаточно ли программного механизма извлечения или нет.

Re: питание USB

PostPosted: 13 Feb 2016, 21:00
by servk
dadreamer wrote:servk, так мы за рамки :labview: и не выходим. Я полагаю, вы в курсе об инструментах System Exec, CLFN, .NET/ActiveX. Для поставленной задачи подойдёт либо 1, либо 2, а нативных средств (увы) нет.

замечательно. Если Вы (в отличии от меня - чайника) все знаете и это так просто, пришлите плиз посмотреть рабочую vi (надеюсь понимаете о чем речь)

Re: питание USB

PostPosted: 13 Feb 2016, 21:10
by Vitekkz88
servk писал(а):ищу решение только в среде LabVIEW

Явного решения в виде .vi НЕТ!LabVIEW не умеет этого делать без танцев с бубном. Это хотели услышать?)
Надо либо функцию писать, оборачивать её в .dll, а затем вызывать из LabVIEW. Либо пользоваться вызовом сторонних сценариев или приложений, но в рамках LabVIEW(System Exec, CLFN, .NET/ActiveX).
Вам рекомендуют второй вариант, так как он проще. Первый тоже можно сделать - но это сложнее гораздо.
Аппаратное решение: использовать переходную железку с возможностью управления питанием подключенных устройств. И даже в этом случае чтобы протащить эту функцию в LabVIEW - придётся повозиться.

Re: питание USB

PostPosted: 13 Feb 2016, 21:13
by servk
Vitekkz88 wrote:
servk писал(а):ищу решение только в среде LabVIEW

Явного решения в виде .vi НЕТ!LabVIEW не умеет этого делать без танцев с бубном. Это хотели услышать?)
Надо либо функцию писать, оборачивать её в .dll, а затем вызывать из LabVIEW. Либо пользоваться вызовом сторонних сценариев или приложений, но в рамках LabVIEW(System Exec, CLFN, .NET/ActiveX).
Вам рекомендуют второй вариант, так как он проще. Первый тоже можно сделать - но это сложнее гораздо.
Аппаратное решение: использовать переходную железку с возможностью управления питанием подключенных устройств. И даже в этом случае чтобы протащить эту функцию в LabVIEW - придётся повозиться.

Вот это я и ожидал услышать. На нет и суда нет

Re: питание USB

PostPosted: 13 Feb 2016, 21:17
by dadreamer
servk wrote:замечательно. Если Вы (в отличии от меня - чайника) все знаете и это так просто, пришлите плиз посмотреть рабочую vi (надеюсь понимаете о чем речь)

Полагаю, USR у вас уже установлен. Если речь об обычной флэшке, то её можно извлечь так:
2016-02-13_23-11-04.jpg

Code: Select all
C:\Program Files (x86)\USB Safely Remove\usr stop -d D:

Code: Select all
C:\Program Files (x86)\USB Safely Remove\usr stop -n "UFD 2.0 Silicon-Power32G USB Device"

Здесь D: и UFD 2.0 Silicon-Power32G USB Device - это съёмный диск и имя контроллера (можно посмотреть через usr list).

Re: питание USB

PostPosted: 13 Feb 2016, 21:18
by Vitekkz88
Вот это я и ожидал услышать. На нет и суда нет

Я могу в отделе у программистов-железячников поинтерисоваться, может у них есть готовая функция в тексте. Если будет что, скину в качестве примера...
Я понял вашу логику: есть порт на мамке компа, его бы питания лишить и всего дел)А когда надо - включить. Что на порте будет висеть - без разницы.
Но и Вы поймите, не всё в руках программистов) Мать тоже играет роль, usb-контроллеры тоже.