LINUX.ORG.RU

Можно ли заставить компьютер обрабатывать нажатия кнопок на телефонной гарнитуре?

 


0

2

Допустим, есть телефонная 3.5 мм гарнитура с кнопками ответа и громкости. И компьютер с 3.5 мм. гнездом для гарнитуры. Можно ли научить компьютер обрабатывать нажатия кнопок на гарнитуре?

Ответ на: комментарий от te111011010

В гарнитурах как правило просто коммутируются доп резисторы определённых номиналов. Погугли: «гарнитура громкость схема».

anonymous
()
Ответ на: комментарий от te111011010

Шунтированием микрофона, похоже, — вот на моей «ответ» — накоротко, «громкость+» — примерно 300 Ом, «громкость-» — примерно 600 Ом.

olegkrutov ★★
()

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

anonymous
()
Ответ на: комментарий от te111011010

И это сопротивление нельзя замерить при помощи alsa?

Нельзя. Сопротивления совместно с сопротивлением в звуковой карте образуют делитель напряжения. По напряжению и определяется какая кнопка нажата. А звуковой сигнал идет через разделительный конденсатор, т.ч. до «alsa» доходит только звуковой сигнал.

https://s9.postimg.org/fbrk90uwv/2018-01-31_18-40-30.png

nvl ★★★
()

Теоретически можно. Только вам надо замерять чем-то уровень сигнала. Логика примерна такая - подаете кратковременно тестовый сигнал с выхода на вход через гарнитуру (можно высокочастотный, чтобы не сильно мешал). В зависимости от нажатых кнопок уровень будет отличаться. Хлопотно, но реализуемо.

vaddd ★☆
()
Ответ на: комментарий от vaddd

Логика примерна такая - подаете кратковременно тестовый сигнал с выхода на вход через гарнитуру

Какую-то муть написал, нихрена не понятно. Тестовый сигнал откуда? С выхода чего? Что значит «на вход через гарнитуру»? И почему кратковременно, ведь нажатия должны детектироваться в любой момент?

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

anonymous
()

Ой, не прошло и пяти лет, как мой вопрос повторили. Ждем, лет через 100 может кто и допетрит сделать наконец-то универсальную обратную связь с гарнитур.

targitaj ★★★★★
()
Ответ на: комментарий от te111011010

Может в линию микрофона какой особый сигнал подаёт?

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

anonymous
()
Ответ на: комментарий от anonymous

Ну дык ты линию микрофона запиши и посмотри

Хоспади, собрались два дауна искать особый сигнал в линии микрофона. Жгите, я подпишусь на тему.

anonymous
()
Ответ на: комментарий от anonymous

Для анонимусов: если на входе звуковухи включен конденсатор, то стандартный способ определения нажатия кнопки по параметрам постоянного тока не проходит. Это очевидно? Поэтому единственная возможность как-то определить подключение резистора параллельно входу - изменение параметров переменного сигнала. Один вариант - диагностировать скачкообразное изменение уровня шума с микрофона. Другой вариант - периодически подавать некий тестовый переменный сигнал, для которого правда нужно создать отдельную цепь со входа на выход (напр через конденсатор малой емкости - в гарнитуре или в звуковухе) Тестовый сигнал подается по типу сканирования нажатия кнопок, например раз в 100мс. Если он приходит на вход с неким номинальным уровнем - кнопки не нажата, если меньше номинального уровня - нажаты.

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

vaddd ★☆
()

из юзерспейса нет, а вот из ядра наверное можно, зависит от фич аудиочипа и как к нему входы/выходы подведены

Harald ★★★★★
()
Ответ на: комментарий от vaddd

отдельную цепь со входа на выход

Скудная фантазия, если уж прелагаешь ему что перепаивать.

Если он приходит на вход с неким номинальным уровнем.

А то, что уровень с микрофона может быть не «номинальным», ты не учитываешь? Или в микрофон нужно подавать строго " номинальный" уровень звуковых колебаний?

anonymous
()
Ответ на: комментарий от anonymous

Скудная фантазия, если уж прелагаешь ему что перепаивать.

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

А то, что уровень с микрофона может быть не «номинальным», ты не учитываешь? Или в микрофон нужно подавать строго " номинальный" уровень звуковых колебаний?

Не может. Тестовый сигнал идет через доп цепь со стабильными параметрами. Сигнал предварительно пропускается через фильтр, настроенный на частоту тестового сигнала. Естественно фирмировать сигнал надо не в виде белого шума )

А вообще первый вариант мне нравится гораздо больше. И паяться не надо, и тестовых сигналов не надо. Одна гольная математика достаточно высокого полета и некоторое знание теории сигналов. Могу даже подсказать хинт - любой внешний звуковой сигнал, прошедший через микрофон, имеет «реальный» фронт нарастания огибающей, отличающийся от скачкообразного изменения огибающей при нажатии кнопки и подключения резистора в параллель. Ку?

vaddd ★☆
()
Ответ на: комментарий от vaddd

Предлагай свои варианты, не стесняйся.

_Если уж вмешиваться, то первое что в голову приходит, это измерение напряжения до конденсатора с помощью adruino и посылка стандартного кода ( volume up/dowm) на внутренний usb как с hig клавиатуры.

anonymous
()

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

klokik
()

3,5 мм это просто разъём. Есть вход и выход. Соответственно микрофон и колонки.

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

Ответ да, но с некоторой погрешностью. И микрофонный вход будет занят всё время.

Можно вообще без разъёма обойтись, т. к. щелчок кнопки гарнитуры и так прекрасно слышен и его можно определить.

anonymous
()
Ответ на: комментарий от vaddd

отдельная цепь ненужно.

достаточно поставить частоту дискретизации повыше (96-192), и вдуть в линию синус/прямоугольник частотой повыше. волоски проводов гарнитуры экранировки не имеют, и на ура наводка с выхода на вход пролезет.

хотя есть вариант и номер два - по размаху импульса смотреть. там ток питания микрофона где-то 1-2 мА, т.е. разница между импульсом при нажатии кнопки «отбой» и импульсом при нажатии кнопки «громкость» будет сотни милливольт.

NiTr0 ★★★★★
()
Ответ на: комментарий от anonymous

3.5 — это как минимум 3 вида разьёмов (2,3 и 4 контакта), при этом 4 контакта как-то нечасто встречаются в не-телефонах, насколько я знаю. Соответственно и возможности отслеживать что-то связанное с гарнитурой в аудиочипе, который ничего не знает, что они вообще бывают, невелики. Но я б на месте ТС изучил вопрос, как отслеживается подключение и тип устройств при hotplug в ALSA, например, и что там ещё может отслеживаться.

olegkrutov ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.