Как отследить исходящий сигнал USB

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
Родился
Сообщения: 17
Зарегистрирован: Ср окт 29, 2014 18:25:20

Сообщение АлексейКр »

Всем привет!!!
Великие Гуру, прошу помощи! Я радиолюбитель, и у меня давно появилась идея снять сигнал включения радиостанции с внешней USB звуковой карты.

Суть идеи такова:
Когда на USB звуковую карту выводится аудио сигнал, должен загореться светодиод. Пропал сигнал – потух диод. При активации микрофона на этой же USB звуковой карте диод гореть не должен. Собственно это всё реализовано http://24dx.ru/forum/viewtopic.php?f=16&t=749 , но работает только с ОС Win XP. При работе этого «анализатора» в ОС Win 7 и Android, после окончания аудио сигнала диод горит ещё в течении 2х – 3х секунд. Посмотрев простейшим осциллографом сигнал на «D-» USB шины увидел, что пакеты битов идут после окончания аудио сигнала 2 -3 секунды, а на выходе звуковой карты полнейшая тишина!

Собственно вопрос:
Возможно ли как-то отследить окончание аудио сигнала и отключить светодиод? Т.е. что бы не считывались последние «пустые» биты. В идеале конечно построить схему с цифровым «анализатором», а не с аналоговым как у меня. Возможно ли отследить именно исходящие из компьютера биты аудио сигнала и только при этом условии зажечь светодиод, а «пустые», информационные, микрофонные (входящие), и прочие биты отсечь? На них светодиод реагировать не должен.
Реклама
As
Модератор
Аватара пользователя
Сообщения: 46898
Зарегистрирован: Пт янв 23, 2009 19:20:05

Сообщение As »

Как всё сложно... :)) А раньше решалось схемкой "на паре транзисторов", называлось это VOX, если память не изменяет... :dont_know:
Реклама
Родился
Сообщения: 17
Зарегистрирован: Ср окт 29, 2014 18:25:20

Сообщение АлексейКр »

VOX и на транзисторах и на компараторах делал. Надо "цифровой VOX" ибо "аналоговый" не отследит сигнал с очень низкой амплитудой. К примеру, если включим микрофон и будем молчать, то "аналоговый" отключится. А в цифровом виде, даже фон окружающей обстановки это уже выборки в двоичном коде. А если добиться очень высокой чувствительности "аналогового VOX", то он начнёт реагировать на всё, даже на злектробритву соседа, не говоря уже о передающей в этот момент радиостанции. Экраны и фильтры не помогут - проверено.
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

нихера непонятно, при чем тут светодиод усб звуковухи :facepalm:
у радиостанций есть вход ррт, который реализуется на лпт или ком порту даже через усб переходник, если на нем выведены все сигналы ком порта
у всех станций с гарнитурой есть этот вход, если вокс выключен
у любой современной пукалки вокс настраивается по чутью в меню и непонятно, зачем лепить какие-то быдлосхемы
АлексейКр писал(а): Собственно это всё реализовано
идиот подключился на шину усб :shock: :facepalm:
Последний раз редактировалось aen Чт окт 30, 2014 13:15:02, всего редактировалось 1 раз.
Причина: Нарушение Правил форума п. 2.3
тематические ответы только в форуме, в приват не пишите
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 17
Зарегистрирован: Ср окт 29, 2014 18:25:20

Сообщение АлексейКр »

kalobyte, Вы не выспались?
1.Светодиод не НА ЗВУКОВУХЕ, светодиод на схеме анализатора. С него уже как фантазия позволит, так и можно организовать РТТ.
2.Включите воспроизведение файла на компьютере в любом плеере, у Вас что, сразу с СОМ или LTP порта сигнал выходит?
3.VOX как не настраивай не будет корректно работать, проходили на десятке станций разных производителей.
4.Та "быдлосхема" работает, и работает лучше и чётче VOX.
5.Вы зачем тут отписались, пооскорблять? Или может самоутвердиться? На работе проблемы, в семье?
Реклама
Родился
Сообщения: 17
Зарегистрирован: Ср окт 29, 2014 18:25:20

Сообщение АлексейКр »

Требуется именно в цифровом виде, сев на шину USB, отловить коды обмена, выявить из них исходящие, и выдать сигнал "единица". На счёт последних "пустых" 2х - 3х секунд, можно в пакетах "Data" проанализировать повтор одинаковых пакетов (к примеру повторение в течении 50ти раз, это 50мс задержки) и произвести отключение сигнала "единица".
Если честно, я примерно представляю как организовать логику, но так далеко в электронике я ещё не заходил. И сдаётся мне, что без контроллера тут не обойтись, тактовая частота 12 Мгц и величина одной посылки до 1024 байт, которую надо записать и сравнивать с последующими. Возможно понадобится цифровой компаратор, т.к. значения выборок "пустых" битов могут разниться на небольшое значение. И то что попадает в "вилочку" компараторов считать "пустотой".
Реклама
As
Модератор
Аватара пользователя
Сообщения: 46898
Зарегистрирован: Пт янв 23, 2009 19:20:05

Сообщение As »

Не там ловите... Сигнал окончания воспроизведения должна выдать программа-плеер, вот его и нужно использовать! (через любой интерфейс...) USB-звуковуха может получать что то от "микшера Виндоуз" даже тогда, когда собственно воспроизведение закончилось... Опять же, комбинация из "нулей" никак не соотносится с нулевым сигналом на выходе звуковой карты... :dont_know: (0 - это максимальное отрицательное значение сигнала, 65535 - максимальное положительное, для 16-битного представления...
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Да, вы двигаетесь не в том направлении. USB разительно отличается от всех остальных шин - для нее четко определен протокол, и он достаточно заморочен. Потому надо либо делать честный сниффер USB, что здесь явно оверкилл, либо все же делать анализ собственно аналогового звукового сигнала (разумный и реальный вариант), либо действительно отлавливать в софте.
я примерно представляю как организовать логику
Боюсь нет, вы не представляете. Для начала почитайте краткий обзор того, как USB работает.

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

Ваша схема, приведенная в первом посте, работает только по удачному стечению обстоятельств. Если вдруг контроллер USB вздумает послать данные на endpoint 0, например, чего ему никто не запрещает, она даст ложное срабатывание. По сути, это просто индикатор активности на шине. Причем плохой индикатор - этой схемой вы творите непонятно что с импедансом линии, которая, вообще говоря, дифференциальная и согласованная. То, что при таком разбалансе шина еще работает, говорит только о том, что она невероятно надежна.
Опять же, комбинация из "нулей" никак не соотносится с нулевым сигналом на выходе звуковой карты...
Более того, при таком наивном подходе данные на шине USB вообще слабо соотносятся с аудиоданными. :)
К примеру, если включим микрофон и будем молчать, то "аналоговый" отключится. А в цифровом виде, даже фон окружающей обстановки это уже выборки в двоичном коде.
Так эти выборки берутся из аналога. :) Просто спроектируйте нормальный усилитель, и будет вам счастье.
Экраны и фильтры не помогут - проверено.
Помогут, если правильно спроектировать.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Родился
Сообщения: 17
Зарегистрирован: Ср окт 29, 2014 18:25:20

Сообщение АлексейКр »

Ура, получилось!!!! С помощью простой логики, счётчиков, дешифраторов и ждущего мультивибратора, отследил я последние пакеты с "тишиной". Счётчик, посаженный на шину D+, в последние секунды показал максимальное количество спадов по фронту. Как показал анализ в программе Advanced USB Port Monitor, так и оказалось, в конце одни нолики. А раз нолики, то и количество спадов равно количеству тактов. Сброс счётчика происходил по сигналу ЕОР, это когда обе линии D+ и D- в нуле. Если проще, то светодиод загорается по окончании воспроизведения и горит, пока не закончатся "пустые" пакеты. Если в течении этих двух секунд с "пустыми пакетами" начать воспроизведение, то светодиод гас.
Осталось сделать анализатор длин пакетов, чтобы различать пакеты идущие на наушники (длинные) от пакетов входящих с микрофона (короткие) и связать всё в кучу.
Микросхемы использовал К555 серии.
Работу проверял на ОС Win7 32бит, Android 4.0 (Микрокомпьютер МК802) - всё работает четко!
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Ура, получилось!
А теперь попробуйте другую звуковую карту...
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Родился
Сообщения: 17
Зарегистрирован: Ср окт 29, 2014 18:25:20

Сообщение АлексейКр »

У меня их несколько, двух типов http://krsk.24au.ru/2760773/ и http://krsk.24au.ru/4321839/ со всеми схема работает чётко.
Они Плуг и Плей, специально драйвера не надо устанавливать. Вставляешь и они работают.
Программа Advanced USB Port Monitor, показала что она USB1.1 12Mbps. Если бы было USB2.0 480Mbps, я бы даже не думал что либо создать, частота запредельная! А эти карточки за 100р самое то для экспериментов и создания линков.
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Это больше напоминает шаманство. То что данные прекращают "поступать" в порт говорит только об одном - программа закрывает обмен данными с аудиоустройством. Пауза тишины при этом добавляется чтобы предотвратить характерный щелчок если сигнал закончился резко и не на нулевом значении.
Правильней было бы сигналы эти формировать в самом софте... а так у вас получается чистое шаманство - шаг в строну и схему можно выкидывать как не выполняющую свою функцию. А придумают драйвер в очередном обновлении(с отключенным режимом энергосбережения) и поток данных на устройство прекращаться не будет.

Да вообще можно было обойтись примитивным пилот-тоном, как это делается в радиостанциях - передается с полезным сигналом частота 50-150Гц которая своим наличием открывает шумоподавитель и делов. На выходе она фильтруется ВФЧ.
С той же целью можно использовать пилот-тон в 20кГц, и при его наличии включать светодиод.
Контактная информация:
Родился
Сообщения: 17
Зарегистрирован: Ср окт 29, 2014 18:25:20

Сообщение АлексейКр »

Схема уже анализирует не только "тишину" но и отделяет пакеты идущие с микрофона, от пакетов идущих на наушники. Ещё немножко и свяжу всё в кучу. Всё заработает, главное верить!
Родился
Сообщения: 17
Зарегистрирован: Ср окт 29, 2014 18:25:20

Сообщение АлексейКр »

Ну всё, девайс получился и работает!!! http://24dx.ru/forum/viewtopic.php?f=16&t=749
Всем не пессимистам спасибо!
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

В принципе я, конечно, за вас рад - звезды встали удачно для вас. Но в целом решение чисто любительское - "как работает шина не понимаю, но если вот так воткнуть, получается желаемый результат". :)
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Родился
Сообщения: 17
Зарегистрирован: Ср окт 29, 2014 18:25:20

Сообщение АлексейКр »

YS, что значит "звезды встали удачно"? Или вы возразите на счёт сигнала EOP(End-of-Packet)? Или я неправильно понял как организована "1" и "0" в сигнале USB? А про "защитный" и он же несчитываемый "0" после подряд идущих шести "1", тоже случайность? И про длины пакетов Data, тоже моя выдумка?
Вы бы лучше на начальном этапе оказали помощь, а не в конце отпускали колкости, когда проект успешно реализован, обкатан и безупречно работает на ТРЁХ операционных системах. :))
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

схема люто доставила
в программировании это называют быдлокод, а тут даже слова подходящего не найти
у меня бы мозги лопнули от такого
АлексейКр писал(а):а не в конце отпускали колкости, когда проект успешно реализован
он тебе как бы намекает, что в программировании таких "успешно" реализованных проектов куча и оно вроде как работает
до поры до времени :)))

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

стоит тебе сменить звуковуху и ничего не будет работать
тематические ответы только в форуме, в приват не пишите
Родился
Сообщения: 17
Зарегистрирован: Ср окт 29, 2014 18:25:20

Сообщение АлексейКр »

Вроде уже 2015й наступил, а ничего не меняется. Быдлосхемы, быдлокод, танкисты...
По делу одно лишь замечание "стоит тебе сменить звуковуху и ничего не будет работать". На это я уже отвечал несколькими постами выше.
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 306
Зарегистрирован: Сб мар 17, 2012 20:31:44
Откуда: Нью Йорк

Сообщение A. Fig Lee »

Решение в стиле: "если стемнело, значит сейчас 6 часов вечера".
"А что, я проверял - работает".

Ужас, ужас, ужас..
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Решение похоже на метод тыка.
АлексейКр, рекомендую изучить работу шины USB и тогда вы придете в ужас от своей схемы. Если схема и работает, это не значит что она не даст сбой в самый неподходящий момент, т. к. сделано очень криво, без учета передаваемых данных.
Ответить

Вернуться в «Интеграция с ПК»