Как сделать: ардуина, подключенная к ПК по УСБ, дёргает ногой по какому-нибудь системному событию?

runaway
Offline
Зарегистрирован: 25.09.2012

Событие - любое из списка системных (либо событий прикладных программ), которому пользователь может назначить тот или иной звук (Панель Управления, раздел "Звуки"). Т.е. хочу сделать так, чтобы не в колонках "былым-былым", а чтобы УСБ-подключенная ардуина клацала релюшкой и включалась лампочка (к примеру).

b707
Offline
Зарегистрирован: 26.05.2017

это вопрос не про ардуину, а про системное программирование на ПК. Если очень в общем - надо написать резидентную программу, которая перехватывала бы обращение к динамику и посылала команду ардуине по последовательному порту.

runaway
Offline
Зарегистрирован: 25.09.2012

Спасибо за ответ. Насколько объёмна задача? Если без пользовательского интерфейса, просто исполняемый файл? Т.е. конкретное событие и соотв. команда прописаны в тексте, и могут быть изменены только в тексте? Насколько универсальной получится такая программа (10-ка, 7-ка и т.п.)?

b707
Offline
Зарегистрирован: 26.05.2017

runaway пишет:

Спасибо за ответ. Насколько объёмна задача? Если без пользовательского интерфейса, просто исполняемый файл? Т.е. конкретное событие и соотв. команда прописаны в тексте, и могут быть изменены только в тексте? Насколько универсальной получится такая программа (10-ка, 7-ка и т.п.)?

это вам лучше на форумах по системному программированию винды спрашивать. Насколько я знаю, написание резидентов - это не для новичков, требует уровень программирования выше среднего. Но тут не моя область - ни разу не сталкивался.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

читать про хуки (Hooks dll) 

runaway
Offline
Зарегистрирован: 25.09.2012

Ещё раз большое спасибо.

runaway
Offline
Зарегистрирован: 25.09.2012

DetSimen пишет:

читать про хуки (Hooks dll) 

Отдельное большое спасибо. Кажется, именно то, что нужно. Хотя бы буду знать, о чём просить.

ELITE
ELITE аватар
Offline
Зарегистрирован: 11.01.2018

не пугайте человека так!

на видне стандартный планировщий отлично все может делать!

просто указали в запуске то событие, какое надо обработать - по нему он запускает батник - в которок уже прописано отправка на СОМ порт нужного пакета данных

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ELITE пишет:

просто указали в запуске то событие, какое надо обработать - по нему он запускает батник - в которок уже прописано отправка на СОМ порт нужного пакета данных

Это нихрена не хардкор, а читерство.  Вот с хуками потрах..., вот это даааа. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

читать про хуки (Hooks dll) 

А если человеку не ошибки надо обрабатывать? перехватчик 21 прерывания наше всё )))

ELITE
ELITE аватар
Offline
Зарегистрирован: 11.01.2018

хардкор на асемблере писать и в досе сидеть

хуки - это для садомазо для линуксойдов

а виндоводам командная строка и планировщик вполне норм

 

b707
Offline
Зарегистрирован: 26.05.2017

ELITE пишет:

не пугайте человека так!

на видне стандартный планировщий отлично все может делать!

просто указали в запуске то событие, какое надо обработать - по нему он запускает батник - в которок уже прописано отправка на СОМ порт нужного пакета данных

вполне возможно, что давно сущесвуют высокоуровневые средства для этого. Я ж написал, что не моя область.

Вот так всегда - коли суешься отвечать во все ветки - обязательно впросак попадешь.  Пойду лучше поработаю :)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ELITE пишет:

а виндоводам командная строка и планировщик вполне норм

Это тока тем, кто 20 языков на уровне выше университетского знает. А нам - грешным ... приходится с хуками трахаться :(

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Есть еще AutoIt. Ловит всё, что не попадя, умеет совать байты в COM-порт. Сложить эти A и Б, да обработать на стороне ардуины что-то из UART...

runaway
Offline
Зарегистрирован: 25.09.2012

Ага... Планировщик либо AutoIT. Планировщик - уже встроен, как я понимаю...

СОВСЕМ большое спасибо. Круг сужается!

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Какой резидент? Какое 21-е прерывание? Вы все еще под ДОС программируете и для ИСА-шины?

ТС же просил УСБ (Управление Собственной Безопасности?).

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

ELITE пишет:

а виндоводам командная строка и планировщик вполне норм

Это тока тем, кто 20 языков на уровне выше университетского знает. А нам - грешным ... приходится с хуками трахаться :(

Это как? Хук с правой, хук с левой ))))

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

runaway пишет:

Событие - любое из списка системных (либо событий прикладных программ), которому пользователь может назначить тот или иной звук (Панель Управления, раздел "Звуки"). Т.е. хочу сделать так, чтобы не в колонках "былым-былым", а чтобы УСБ-подключенная ардуина клацала релюшкой и включалась лампочка (к примеру).

Если под винду, то как вариант - смотреть в сторону WMI, там много всякого есть, в том числе события.

arduino328
Offline
Зарегистрирован: 01.09.2016

Когда-то LPT-порт на компьютере использовал для управления реле (8 релюшек можно подключить).

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

ua6em пишет:
перехватчик 21 прерывания наше всё )))

DOS мертва, и это не обсуждается.

Афтар, вам правильно подсказали, либо хук (во всех открытых окнах, либо в своём невидимом окне), либо рыться в "инструментарии управления виндовс".

"не в колонках блымдзынь а реле щёлкнуть" - это слишком нечёткая формулировка, конкретизируйте задачу пожалуйста. Что конкретно вы хотите узнать от системы?

UPD. Если это действительно про именно звуки виндовс, вообще не понимаю зачем. Лично я сразу по окончании установки системы их отключаю. На своих компьютерах, на не своих - примерно такой диалог:

- Так, ща я только быстренько ей рот заткну, а то меня напрягают щелчки когда я в проводнике по каталогам хожу.

- Вау, а чё так можно было? Блин, спасибо, три года с компом работаю и три года меня бесила эта хрень, потому что никто мне не говорил что это отключается.

SLKH
Offline
Зарегистрирован: 17.08.2015

runaway пишет:

Событие - любое из списка системных (либо событий прикладных программ), которому пользователь может назначить тот или иной звук (Панель Управления, раздел "Звуки"). Т.е. хочу сделать так, чтобы не в колонках "былым-былым", а чтобы УСБ-подключенная ардуина клацала релюшкой и включалась лампочка (к примеру).

DTMF.

runaway
Offline
Зарегистрирован: 25.09.2012

"Звуки" - я имел в виду СОБЫТИЯ из вкладки "Звуки", т.е. ивенты, которые более-менее часто происходят на протяжение рабочего сеанса пользователя ПК. Сами звуки-щелчки-звонки в колонках, естественно, НЕ нужны. Подойдут и другие события, не только из вкладки "Звуки" - главное чтобы их можно было перехватить ПРОСТЫМИ (по возможности) средствами:

- Каждый круглый час на системных часах, например 12:00, 13:00 и т.д.
- Алерт какой-нибудь (на ноль поделили в Экселе например, или открытое окно открываем, или ещё что) - более предпочтительно

- Пришло сообщение в аську или в скайп (слишком часто, но на худой конец можно и это событие попробовать)

Был бы признателен, если бы какая добрая душа выложила скрин-видео с настройкой Планировщика, если Планировщик действительно может помочь в описанном случае. Скрипты я не умею написать, т.е. WMI отпадает.

 

runaway
Offline
Зарегистрирован: 25.09.2012

Или просто отсылать команду в СОМ каждый круглый час по системным часам. Можно ли настроить Планировщик таким образом, чтобы каждый круглый системный час он отбивал команду в СОМ?

Каждое сотое (двухсотое, и т.п.) нажатие клавши на клавиатуре, каждый сотый клик мышкой, каждый сотый метр её траектории?.. Уж не знаю, что ещё придумать, наверное это мой топ.

SLKH
Offline
Зарегистрирован: 17.08.2015

runaway пишет:

"Звуки" - я имел в виду СОБЫТИЯ из вкладки "Звуки", т.е. ивенты, которые более-менее часто происходят на протяжение рабочего сеанса пользователя ПК. Сами звуки-щелчки-звонки в колонках, естественно, НЕ нужны. Подойдут и другие события, не только из вкладки "Звуки" - главное чтобы их можно было перехватить ПРОСТЫМИ (по возможности) средствами:

- Каждый круглый час на системных часах, например 12:00, 13:00 и т.д.
- Алерт какой-нибудь (на ноль поделили в Экселе например, или открытое окно открываем, или ещё что) - более предпочтительно

- Пришло сообщение в аську или в скайп (слишком часто, но на худой конец можно и это событие попробовать)

Был бы признателен, если бы какая добрая душа выложила скрин-видео с настройкой Планировщика, если Планировщик действительно может помочь в описанном случае. Скрипты я не умею написать, т.е. WMI отпадает.

 

ардуину (с предварительным детектором/формирователем) подключить к звуковому выходу компа.

в звуковой схеме винды насвистеть себе в wav'ки тональных сигналов.

ни в какие дебри программизма и в потроха винды лезть не надо.

runaway
Offline
Зарегистрирован: 25.09.2012

Два недостатка:

1. Ардуинское устройство, подключенное по УСБ, И питание получает ардуинское, И сигнал (команду). А звуковуха может выдать только сигнал. В моей затее это большой недостаток, там весь цимес в простоте подключения гаджета - воткнул фишку в УСБ, и всё! Всё питается от УСБ, там большой мощности не надо совсем, УСБ с головой хватит. А со звуковухой придётся ещё и адаптер в розетку вставлять (которую ещё надо иметь, свободную).

2. Куда девать звуки? Выход звуковухи передаёт через себя И звуки медиа, И все эти ненавистные любым адекватным пользователем щелчки-перезвоны-завывания. Невозможно отсеять одно от другого. Или возможно?

3. Ну и в конце концов - тупо это уж совсем... Я вообще люблю, когда тупо и просто, однако ж тут перебор имхо. Да и научиться хочется чему-то новому. Другое дело, что если это действительно сложно - ну что же, тогда на "нет" и суда нет...

kalapanga
Offline
Зарегистрирован: 23.10.2016

runaway пишет:

Был бы признателен, если бы какая добрая душа выложила скрин-видео с настройкой Планировщика, если Планировщик действительно может помочь в описанном случае.

Планировщик выполняет действия по триггерам. Триггером может быть, например, наступление определённого времени. Вам похоже предложили использовать триггер "При записи в журнал указанного события". Соответственно, Вам нужно знать в какой журнал Ваше событие пишется и какой его код (выяснить хотя бы экспериментально). Задача создаётся с помощью мастера. Планировщик, "Создать простую задачу" и поехали всё последовательно заполнять.

Совсем уж ничего не программировать не получится. Нужен будет командный файл или программка которые отправят необходимые данные в ком-порт.

runaway
Offline
Зарегистрирован: 25.09.2012

Примерно так, как вы описали, я себе в голове всё и уложил... 

Очистить Ивент Вьюер, чтобы по максимуму убрать всё текущее из его журнала (потому что в ПК постоянно происходит куча текущих каких-то событий, как я уже понял) - и пока журнал Вьюера опять не засрался этой рутиной, побыстрее вызвать нужное мне "звуковое событие". Например, какой-нибудь алерт (ну не знаю - на ноль поделить в Экселе, например). По МОЕЙ идее Ивент Вьюер должен зафиксировать это событие в своём Журнале, и я смогу его там увидеть, и посмотреть все его хар-ки: его ID, правильное название и т.п. Более того - пишут, что из Вьюера его можно тупо вставить в Планировщик банальной ПКМ... 

Но вы пишете, что у Ивент Вьюера МНОЖЕСТВО журналов, и нужный надо ещё найти... Было бы здорово, если бы кто-то, кто уже занимался настройкой Планировщика, выложил бы сюда скрин-видео по его настройке. Пусть не точную мою задачу - хотя бы приблизительно! Потому что то, что вы описали, я (плюс / минус) уже пробовал делать, но мои потуги были больше похожи на торканья слепого щенка в поисках сиськи... Очень много развилок, много непонятностей.

Более того, я пошёл к программистам (которые сеть-бухгалтерию у нас на предприятии крутят), с этим вопросом. Так вот у них слёту тоже как-то с Планировщиком не очень получилось, именно по СОБЫТИЯМ. Выдали мне резюме, что, дескть, "Планировщик - это больше всё-таки По ВРЕМЕНИ, чем по событиям"... В общем, понятно, что Планировщик в данном случае ни при чём, просто во-первых они были как всегда очень заняты и очень торопились, а во-вторых этой своей задачей мне их увлечь не получилось, и пришлось быстренько всё свернуть, сказать "большое спасибо" и ретироваться...

runaway
Offline
Зарегистрирован: 25.09.2012

Ну а потом (когда получится выцепить нужное событие из потока) и настроить его Триггером, можно будет заставить Планировщик запускать программу SerialSend.exe, в аргументе которой (в Планировщике есть такое поле для заполнения), наверное, нужно будет написать команду, которую она должна будет отослать в нужный CОМ?

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Ну вот посмотрите, что происходит: люди специально для вас Гугл сделали, стотыщмильёнов программисто/часов на это потратили, другие люди статьи в журналы пишут, картинки делают, переводят. Несчетный объем работы проделан. А итог какой? НИ-КА-КОЙ. Всё равно вы пришли на форум и просите кого-то сделать типовую задачу в триллиардный раз, разжевать ее, положить вам в рот и еще челюсти руками подвигать.

Наверное если я даже дам вам две ссылки, вы будете спрашивать "а где море?"

https://www.google.ru/search?ie=UTF-8&hl=ru&q=планировщик%20windows%20по%20событиям

https://yandex.ru/search/?text=%D0%BF%D0%BB%D0%B0%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D1%89%D0%B8%D0%BA%20windows%20%D0%BF%D0%BE%20%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F%D0%BC

Напишу, пожалуй, Брину - пусть нахер закрывает свой бессмысленный сервис. Чего зря лепестричество переводить. 

runaway
Offline
Зарегистрирован: 25.09.2012

Сурово, но справедливо! Тронут до глубины души. Спасибо, друг!

SLKH
Offline
Зарегистрирован: 17.08.2015

runaway пишет:

Два недостатка:

1. Ардуинское устройство, подключенное по УСБ, И питание получает ардуинское, И сигнал (команду). А звуковуха может выдать только сигнал. В моей затее это большой недостаток, там весь цимес в простоте подключения гаджета - воткнул фишку в УСБ, и всё! Всё питается от УСБ, там большой мощности не надо совсем, УСБ с головой хватит. А со звуковухой придётся ещё и адаптер в розетку вставлять (которую ещё надо иметь, свободную).

какой адаптер? добавится шнур со штеккером в выходное гнездо звуковой карты. По исходному описанию устройство вроде бы должно быть стационарным, всего трудов - один раз шнурок приткнуть..

Цитата:
2. Куда девать звуки?
дык в ардуину же. а она молча всё это терпеть будет.

Цитата:
Выход звуковухи передаёт через себя И звуки медиа, И все эти ненавистные любым адекватным пользователем щелчки-перезвоны-завывания. Невозможно отсеять одно от другого. Или возможно?
да прекрасно всё отсеется. На запрограммированные сигналы чем-то клацать, неопознанные шумы игнорировать.

 

Цитата:
3. Ну и в конце концов - тупо это уж совсем... Я вообще люблю, когда тупо и просто,
в большинстве случаев при этом и надежно получается.

Цитата:
однако ж тут перебор имхо. Да и научиться хочется чему-то новому. Другое дело, что если это действительно сложно - ну что же, тогда на "нет" и суда нет...

в исходном тексте была задачка, я предложил простое решение с небольшим отклонением от условий.

теперь оказывается, что клацать уже не надо, а хочется чего-то другого...

 

arduino328
Offline
Зарегистрирован: 01.09.2016

SLKH пишет:

runaway пишет:

"Звуки" - я имел в виду СОБЫТИЯ из вкладки "Звуки", т.е. ивенты, которые более-менее часто происходят на протяжение рабочего сеанса пользователя ПК. Сами звуки-щелчки-звонки в колонках, естественно, НЕ нужны.

ардуину (с предварительным детектором/формирователем) подключить к звуковому выходу компа.
в звуковой схеме винды насвистеть себе в wav'ки тональных сигналов.
ни в какие дебри программизма и в потроха винды лезть не надо.

Очень неплохая идея. Только зачем тональный сигнал (ТС звуки не нужны)? Запихать в wav'ки прямоугольные импульсы, и пусть их Ардуина обрабатывает: считает количество или длительность между ними (а можно и то и другое).

SLKH
Offline
Зарегистрирован: 17.08.2015

arduino328 пишет:

Очень неплохая идея. Только зачем тональный сигнал (ТС звуки не нужны)? Запихать в wav'ки прямоугольные импульсы, и пусть их Ардуина обрабатывает: считает количество или длительность между ними (а можно и то и другое).

Не взлетит.

На выходе звуковухи не будет ничего похожего на прямоугольные импульсы.

 

arduino328
Offline
Зарегистрирован: 01.09.2016

SLKH пишет:

arduino328 пишет:

Очень неплохая идея. Только зачем тональный сигнал (ТС звуки не нужны)? Запихать в wav'ки прямоугольные импульсы, и пусть их Ардуина обрабатывает: считает количество или длительность между ними (а можно и то и другое).

Не взлетит.
На выходе звуковухи не будет ничего похожего на прямоугольные импульсы.

Для реализации и не нужны строго прямоугольные импульсы. Главное, чтобы Ардуина отличала высокий уровень импульсов от низкого.

runaway
Offline
Зарегистрирован: 25.09.2012

Дело в том, что выход звуковухи бытового ПК обычно бывает стационарным образом подключен к колонкам. Есть, конечно, пользователи, которые смотрят-слушают медиа исключительно на специализированных устройствах типа больших колонок и дом. кинотеатров.

Но мой случай - рабоче-развлекательный, гаражно-присутственный вариант, т.е. большие активные колонки на постое висят на выходе звуковухи. МУЗЫКОЙ я пожертвовать не могу, ибо это очевидная жопа. Равно как и слушать целыми днями винду.

Идея интересная, не спорю. Почти не сомневаюсь, что она найдёт своё применение. Но, к сожалению, это не мой случай.

runaway
Offline
Зарегистрирован: 25.09.2012

Обнаружил несколько импортных роликов на ЮТ, по Планировщику и Ивент Вьюеру, т.е. именно в разрезе настройки СОБЫТИЙНЫХ триггеров. Пытаюсь вкурить это дело. Пока не радует.

runaway
Offline
Зарегистрирован: 25.09.2012

Может вообще всё решить на основе ГСЧ, а по УСБ только получать питание? Если уж ТАКИЕ сложности с настройкой событий... Только вот насколько "качественным" будет такой "генератор случайностей"?

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Так вы определитесь - вам нужна предсказуемая реакция на события Windows или сумасшедшее клацанье релюшкой и прысканье в обескураженного клиента сладкой водой?

kalapanga
Offline
Зарегистрирован: 23.10.2016

runaway пишет:

Обнаружил несколько импортных роликов на ЮТ, по Планировщику и Ивент Вьюеру, т.е. именно в разрезе настройки СОБЫТИЙНЫХ триггеров. Пытаюсь вкурить это дело. Пока не радует.

Проблема не в настройке задачи, она-то ничем не отличается от настройки выполнения по времени. Проблема в самих событиях. Для начала, далеко не все события в системе пишутся в журнал. Возможно Вам лучше не зацикливаться на планировщике, а идти от событий. Сейчас Вы говорите о событиях вообще, мол какое-нибудь хочу. Выберите что-нибудь конкретное и гуглите - можно ли отлавливать это событие в системе и какими способами. Далее о другом событии. А потом уж и решите, какой из способов реализовать. К ардуино этот вопрос вообще слабо относящийся. Тут Вам скорее программисты-системщики помогут.

runaway
Offline
Зарегистрирован: 25.09.2012

Друзья, большое спасибо за обсуждение, за высказанные мысли и советы! Реально очень помогло. ПОНЯЛ, наконец, чего я хочу. Достиг просветления. Можно начинать пилить! )) Всех благ!

SLKH
Offline
Зарегистрирован: 17.08.2015

arduino328 пишет:

SLKH пишет:

arduino328 пишет:

Очень неплохая идея. Только зачем тональный сигнал (ТС звуки не нужны)? Запихать в wav'ки прямоугольные импульсы, и пусть их Ардуина обрабатывает: считает количество или длительность между ними (а можно и то и другое).

Не взлетит.
На выходе звуковухи не будет ничего похожего на прямоугольные импульсы.

Для реализации и не нужны строго прямоугольные импульсы. Главное, чтобы Ардуина отличала высокий уровень импульсов от низкого.

не будет на звуковом выходе ни высокого уровня, ни низкого. там будет или ничего, или переменка.