Как сделать: ардуина, подключенная к ПК по УСБ, дёргает ногой по какому-нибудь системному событию?
- Войдите на сайт для отправки комментариев
Пт, 02/02/2018 - 12:45
Событие - любое из списка системных (либо событий прикладных программ), которому пользователь может назначить тот или иной звук (Панель Управления, раздел "Звуки"). Т.е. хочу сделать так, чтобы не в колонках "былым-былым", а чтобы УСБ-подключенная ардуина клацала релюшкой и включалась лампочка (к примеру).
это вопрос не про ардуину, а про системное программирование на ПК. Если очень в общем - надо написать резидентную программу, которая перехватывала бы обращение к динамику и посылала команду ардуине по последовательному порту.
Спасибо за ответ. Насколько объёмна задача? Если без пользовательского интерфейса, просто исполняемый файл? Т.е. конкретное событие и соотв. команда прописаны в тексте, и могут быть изменены только в тексте? Насколько универсальной получится такая программа (10-ка, 7-ка и т.п.)?
Спасибо за ответ. Насколько объёмна задача? Если без пользовательского интерфейса, просто исполняемый файл? Т.е. конкретное событие и соотв. команда прописаны в тексте, и могут быть изменены только в тексте? Насколько универсальной получится такая программа (10-ка, 7-ка и т.п.)?
это вам лучше на форумах по системному программированию винды спрашивать. Насколько я знаю, написание резидентов - это не для новичков, требует уровень программирования выше среднего. Но тут не моя область - ни разу не сталкивался.
читать про хуки (Hooks dll)
Ещё раз большое спасибо.
читать про хуки (Hooks dll)
Отдельное большое спасибо. Кажется, именно то, что нужно. Хотя бы буду знать, о чём просить.
не пугайте человека так!
на видне стандартный планировщий отлично все может делать!
просто указали в запуске то событие, какое надо обработать - по нему он запускает батник - в которок уже прописано отправка на СОМ порт нужного пакета данных
просто указали в запуске то событие, какое надо обработать - по нему он запускает батник - в которок уже прописано отправка на СОМ порт нужного пакета данных
Это нихрена не хардкор, а читерство. Вот с хуками потрах..., вот это даааа.
читать про хуки (Hooks dll)
А если человеку не ошибки надо обрабатывать? перехватчик 21 прерывания наше всё )))
хардкор на асемблере писать и в досе сидеть
хуки - это для садомазо для линуксойдов
а виндоводам командная строка и планировщик вполне норм
не пугайте человека так!
на видне стандартный планировщий отлично все может делать!
просто указали в запуске то событие, какое надо обработать - по нему он запускает батник - в которок уже прописано отправка на СОМ порт нужного пакета данных
вполне возможно, что давно сущесвуют высокоуровневые средства для этого. Я ж написал, что не моя область.
Вот так всегда - коли суешься отвечать во все ветки - обязательно впросак попадешь. Пойду лучше поработаю :)
а виндоводам командная строка и планировщик вполне норм
Это тока тем, кто 20 языков на уровне выше университетского знает. А нам - грешным ... приходится с хуками трахаться :(
Есть еще AutoIt. Ловит всё, что не попадя, умеет совать байты в COM-порт. Сложить эти A и Б, да обработать на стороне ардуины что-то из UART...
Ага... Планировщик либо AutoIT. Планировщик - уже встроен, как я понимаю...
СОВСЕМ большое спасибо. Круг сужается!
Какой резидент? Какое 21-е прерывание? Вы все еще под ДОС программируете и для ИСА-шины?
ТС же просил УСБ (Управление Собственной Безопасности?).
а виндоводам командная строка и планировщик вполне норм
Это тока тем, кто 20 языков на уровне выше университетского знает. А нам - грешным ... приходится с хуками трахаться :(
Это как? Хук с правой, хук с левой ))))
Событие - любое из списка системных (либо событий прикладных программ), которому пользователь может назначить тот или иной звук (Панель Управления, раздел "Звуки"). Т.е. хочу сделать так, чтобы не в колонках "былым-былым", а чтобы УСБ-подключенная ардуина клацала релюшкой и включалась лампочка (к примеру).
Если под винду, то как вариант - смотреть в сторону WMI, там много всякого есть, в том числе события.
Когда-то LPT-порт на компьютере использовал для управления реле (8 релюшек можно подключить).
DOS мертва, и это не обсуждается.
Афтар, вам правильно подсказали, либо хук (во всех открытых окнах, либо в своём невидимом окне), либо рыться в "инструментарии управления виндовс".
"не в колонках блымдзынь а реле щёлкнуть" - это слишком нечёткая формулировка, конкретизируйте задачу пожалуйста. Что конкретно вы хотите узнать от системы?
UPD. Если это действительно про именно звуки виндовс, вообще не понимаю зачем. Лично я сразу по окончании установки системы их отключаю. На своих компьютерах, на не своих - примерно такой диалог:
- Так, ща я только быстренько ей рот заткну, а то меня напрягают щелчки когда я в проводнике по каталогам хожу.
- Вау, а чё так можно было? Блин, спасибо, три года с компом работаю и три года меня бесила эта хрень, потому что никто мне не говорил что это отключается.
Событие - любое из списка системных (либо событий прикладных программ), которому пользователь может назначить тот или иной звук (Панель Управления, раздел "Звуки"). Т.е. хочу сделать так, чтобы не в колонках "былым-былым", а чтобы УСБ-подключенная ардуина клацала релюшкой и включалась лампочка (к примеру).
DTMF.
"Звуки" - я имел в виду СОБЫТИЯ из вкладки "Звуки", т.е. ивенты, которые более-менее часто происходят на протяжение рабочего сеанса пользователя ПК. Сами звуки-щелчки-звонки в колонках, естественно, НЕ нужны. Подойдут и другие события, не только из вкладки "Звуки" - главное чтобы их можно было перехватить ПРОСТЫМИ (по возможности) средствами:
- Каждый круглый час на системных часах, например 12:00, 13:00 и т.д.
- Алерт какой-нибудь (на ноль поделили в Экселе например, или открытое окно открываем, или ещё что) - более предпочтительно
- Пришло сообщение в аську или в скайп (слишком часто, но на худой конец можно и это событие попробовать)
Был бы признателен, если бы какая добрая душа выложила скрин-видео с настройкой Планировщика, если Планировщик действительно может помочь в описанном случае. Скрипты я не умею написать, т.е. WMI отпадает.
Или просто отсылать команду в СОМ каждый круглый час по системным часам. Можно ли настроить Планировщик таким образом, чтобы каждый круглый системный час он отбивал команду в СОМ?
Каждое сотое (двухсотое, и т.п.) нажатие клавши на клавиатуре, каждый сотый клик мышкой, каждый сотый метр её траектории?.. Уж не знаю, что ещё придумать, наверное это мой топ.
"Звуки" - я имел в виду СОБЫТИЯ из вкладки "Звуки", т.е. ивенты, которые более-менее часто происходят на протяжение рабочего сеанса пользователя ПК. Сами звуки-щелчки-звонки в колонках, естественно, НЕ нужны. Подойдут и другие события, не только из вкладки "Звуки" - главное чтобы их можно было перехватить ПРОСТЫМИ (по возможности) средствами:
- Каждый круглый час на системных часах, например 12:00, 13:00 и т.д.
- Алерт какой-нибудь (на ноль поделили в Экселе например, или открытое окно открываем, или ещё что) - более предпочтительно
- Пришло сообщение в аську или в скайп (слишком часто, но на худой конец можно и это событие попробовать)
Был бы признателен, если бы какая добрая душа выложила скрин-видео с настройкой Планировщика, если Планировщик действительно может помочь в описанном случае. Скрипты я не умею написать, т.е. WMI отпадает.
ардуину (с предварительным детектором/формирователем) подключить к звуковому выходу компа.
в звуковой схеме винды насвистеть себе в wav'ки тональных сигналов.
ни в какие дебри программизма и в потроха винды лезть не надо.
Два недостатка:
1. Ардуинское устройство, подключенное по УСБ, И питание получает ардуинское, И сигнал (команду). А звуковуха может выдать только сигнал. В моей затее это большой недостаток, там весь цимес в простоте подключения гаджета - воткнул фишку в УСБ, и всё! Всё питается от УСБ, там большой мощности не надо совсем, УСБ с головой хватит. А со звуковухой придётся ещё и адаптер в розетку вставлять (которую ещё надо иметь, свободную).
2. Куда девать звуки? Выход звуковухи передаёт через себя И звуки медиа, И все эти ненавистные любым адекватным пользователем щелчки-перезвоны-завывания. Невозможно отсеять одно от другого. Или возможно?
3. Ну и в конце концов - тупо это уж совсем... Я вообще люблю, когда тупо и просто, однако ж тут перебор имхо. Да и научиться хочется чему-то новому. Другое дело, что если это действительно сложно - ну что же, тогда на "нет" и суда нет...
Был бы признателен, если бы какая добрая душа выложила скрин-видео с настройкой Планировщика, если Планировщик действительно может помочь в описанном случае.
Планировщик выполняет действия по триггерам. Триггером может быть, например, наступление определённого времени. Вам похоже предложили использовать триггер "При записи в журнал указанного события". Соответственно, Вам нужно знать в какой журнал Ваше событие пишется и какой его код (выяснить хотя бы экспериментально). Задача создаётся с помощью мастера. Планировщик, "Создать простую задачу" и поехали всё последовательно заполнять.
Совсем уж ничего не программировать не получится. Нужен будет командный файл или программка которые отправят необходимые данные в ком-порт.
Примерно так, как вы описали, я себе в голове всё и уложил...
Очистить Ивент Вьюер, чтобы по максимуму убрать всё текущее из его журнала (потому что в ПК постоянно происходит куча текущих каких-то событий, как я уже понял) - и пока журнал Вьюера опять не засрался этой рутиной, побыстрее вызвать нужное мне "звуковое событие". Например, какой-нибудь алерт (ну не знаю - на ноль поделить в Экселе, например). По МОЕЙ идее Ивент Вьюер должен зафиксировать это событие в своём Журнале, и я смогу его там увидеть, и посмотреть все его хар-ки: его ID, правильное название и т.п. Более того - пишут, что из Вьюера его можно тупо вставить в Планировщик банальной ПКМ...
Но вы пишете, что у Ивент Вьюера МНОЖЕСТВО журналов, и нужный надо ещё найти... Было бы здорово, если бы кто-то, кто уже занимался настройкой Планировщика, выложил бы сюда скрин-видео по его настройке. Пусть не точную мою задачу - хотя бы приблизительно! Потому что то, что вы описали, я (плюс / минус) уже пробовал делать, но мои потуги были больше похожи на торканья слепого щенка в поисках сиськи... Очень много развилок, много непонятностей.
Более того, я пошёл к программистам (которые сеть-бухгалтерию у нас на предприятии крутят), с этим вопросом. Так вот у них слёту тоже как-то с Планировщиком не очень получилось, именно по СОБЫТИЯМ. Выдали мне резюме, что, дескть, "Планировщик - это больше всё-таки По ВРЕМЕНИ, чем по событиям"... В общем, понятно, что Планировщик в данном случае ни при чём, просто во-первых они были как всегда очень заняты и очень торопились, а во-вторых этой своей задачей мне их увлечь не получилось, и пришлось быстренько всё свернуть, сказать "большое спасибо" и ретироваться...
Ну а потом (когда получится выцепить нужное событие из потока) и настроить его Триггером, можно будет заставить Планировщик запускать программу SerialSend.exe, в аргументе которой (в Планировщике есть такое поле для заполнения), наверное, нужно будет написать команду, которую она должна будет отослать в нужный CОМ?
Ну вот посмотрите, что происходит: люди специально для вас Гугл сделали, стотыщмильёнов программисто/часов на это потратили, другие люди статьи в журналы пишут, картинки делают, переводят. Несчетный объем работы проделан. А итог какой? НИ-КА-КОЙ. Всё равно вы пришли на форум и просите кого-то сделать типовую задачу в триллиардный раз, разжевать ее, положить вам в рот и еще челюсти руками подвигать.
Наверное если я даже дам вам две ссылки, вы будете спрашивать "а где море?"
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
Напишу, пожалуй, Брину - пусть нахер закрывает свой бессмысленный сервис. Чего зря лепестричество переводить.
Сурово, но справедливо! Тронут до глубины души. Спасибо, друг!
Два недостатка:
1. Ардуинское устройство, подключенное по УСБ, И питание получает ардуинское, И сигнал (команду). А звуковуха может выдать только сигнал. В моей затее это большой недостаток, там весь цимес в простоте подключения гаджета - воткнул фишку в УСБ, и всё! Всё питается от УСБ, там большой мощности не надо совсем, УСБ с головой хватит. А со звуковухой придётся ещё и адаптер в розетку вставлять (которую ещё надо иметь, свободную).
в исходном тексте была задачка, я предложил простое решение с небольшим отклонением от условий.
теперь оказывается, что клацать уже не надо, а хочется чего-то другого...
"Звуки" - я имел в виду СОБЫТИЯ из вкладки "Звуки", т.е. ивенты, которые более-менее часто происходят на протяжение рабочего сеанса пользователя ПК. Сами звуки-щелчки-звонки в колонках, естественно, НЕ нужны.
ардуину (с предварительным детектором/формирователем) подключить к звуковому выходу компа.
в звуковой схеме винды насвистеть себе в wav'ки тональных сигналов.
ни в какие дебри программизма и в потроха винды лезть не надо.
Очень неплохая идея. Только зачем тональный сигнал (ТС звуки не нужны)? Запихать в wav'ки прямоугольные импульсы, и пусть их Ардуина обрабатывает: считает количество или длительность между ними (а можно и то и другое).
Очень неплохая идея. Только зачем тональный сигнал (ТС звуки не нужны)? Запихать в wav'ки прямоугольные импульсы, и пусть их Ардуина обрабатывает: считает количество или длительность между ними (а можно и то и другое).
На выходе звуковухи не будет ничего похожего на прямоугольные импульсы.
Очень неплохая идея. Только зачем тональный сигнал (ТС звуки не нужны)? Запихать в wav'ки прямоугольные импульсы, и пусть их Ардуина обрабатывает: считает количество или длительность между ними (а можно и то и другое).
Не взлетит.
На выходе звуковухи не будет ничего похожего на прямоугольные импульсы.
Для реализации и не нужны строго прямоугольные импульсы. Главное, чтобы Ардуина отличала высокий уровень импульсов от низкого.
Дело в том, что выход звуковухи бытового ПК обычно бывает стационарным образом подключен к колонкам. Есть, конечно, пользователи, которые смотрят-слушают медиа исключительно на специализированных устройствах типа больших колонок и дом. кинотеатров.
Но мой случай - рабоче-развлекательный, гаражно-присутственный вариант, т.е. большие активные колонки на постое висят на выходе звуковухи. МУЗЫКОЙ я пожертвовать не могу, ибо это очевидная жопа. Равно как и слушать целыми днями винду.
Идея интересная, не спорю. Почти не сомневаюсь, что она найдёт своё применение. Но, к сожалению, это не мой случай.
Обнаружил несколько импортных роликов на ЮТ, по Планировщику и Ивент Вьюеру, т.е. именно в разрезе настройки СОБЫТИЙНЫХ триггеров. Пытаюсь вкурить это дело. Пока не радует.
Может вообще всё решить на основе ГСЧ, а по УСБ только получать питание? Если уж ТАКИЕ сложности с настройкой событий... Только вот насколько "качественным" будет такой "генератор случайностей"?
Так вы определитесь - вам нужна предсказуемая реакция на события Windows или сумасшедшее клацанье релюшкой и прысканье в обескураженного клиента сладкой водой?
Обнаружил несколько импортных роликов на ЮТ, по Планировщику и Ивент Вьюеру, т.е. именно в разрезе настройки СОБЫТИЙНЫХ триггеров. Пытаюсь вкурить это дело. Пока не радует.
Проблема не в настройке задачи, она-то ничем не отличается от настройки выполнения по времени. Проблема в самих событиях. Для начала, далеко не все события в системе пишутся в журнал. Возможно Вам лучше не зацикливаться на планировщике, а идти от событий. Сейчас Вы говорите о событиях вообще, мол какое-нибудь хочу. Выберите что-нибудь конкретное и гуглите - можно ли отлавливать это событие в системе и какими способами. Далее о другом событии. А потом уж и решите, какой из способов реализовать. К ардуино этот вопрос вообще слабо относящийся. Тут Вам скорее программисты-системщики помогут.
Друзья, большое спасибо за обсуждение, за высказанные мысли и советы! Реально очень помогло. ПОНЯЛ, наконец, чего я хочу. Достиг просветления. Можно начинать пилить! )) Всех благ!
Очень неплохая идея. Только зачем тональный сигнал (ТС звуки не нужны)? Запихать в wav'ки прямоугольные импульсы, и пусть их Ардуина обрабатывает: считает количество или длительность между ними (а можно и то и другое).
Не взлетит.
На выходе звуковухи не будет ничего похожего на прямоугольные импульсы.
Для реализации и не нужны строго прямоугольные импульсы. Главное, чтобы Ардуина отличала высокий уровень импульсов от низкого.
не будет на звуковом выходе ни высокого уровня, ни низкого. там будет или ничего, или переменка.