2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3  След.
 
 Re: Приём телефонных звонков на 3G роутер
Сообщение03.07.2019, 15:48 
Заслуженный участник


20/08/14
11177
Россия, Москва
Может байты местами перепутаны? Тогда как раз будет колебания около нуля. И искажение речи будет довольно специфическим.

 Профиль  
                  
 
 Re: Приём телефонных звонков на 3G роутер
Сообщение03.07.2019, 16:57 


07/10/15

2400
Я об этом думал. Даже пробовал менять местами байты (читал как char, потом один умножал на 255 и складывал), но тогда ничего хорошего не вышло. Там ещё, то ли signed то ли нет - так я и не разобрался. Потом уже стал сразу читать как int32 из порта, но какой там порядок получается - не известно. Надо будет ещё раз все варианты перепроверить.

-- 03.07.2019, 18:04 --

Была ещё идея - сменить порядок байтов, выбросив 1 первый байт в массиве. Пробовал - никакой особой разницы от этого нет.

 Профиль  
                  
 
 Re: Приём телефонных звонков на 3G роутер
Сообщение03.07.2019, 17:04 
Аватара пользователя


11/12/16
13309
уездный город Н
Dmitriy40
была такая мысль, но пока сложно утверждать
Если байты переставлены, то $-3$ превращается в $-513$ и наоборот.
А и то, и другое встречается в потоке, даже рядом.

Пока похоже на какие-то ошибки в канале связи.

 Профиль  
                  
 
 Re: Приём телефонных звонков на 3G роутер
Сообщение03.07.2019, 17:06 


07/10/15

2400
EUgeneUS в сообщении #1402971 писал(а):
Пока похоже на какие-то ошибки в канале связи

это хуже всего

 Профиль  
                  
 
 Re: Приём телефонных звонков на 3G роутер
Сообщение03.07.2019, 17:07 
Аватара пользователя


11/12/16
13309
уездный город Н
Andrey_Kireew
У Вас как модем и внешний USB-хаб подключены? Насколько длинными\короткими и насколько качественными шнурками?

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

-- 03.07.2019, 17:12 --

Andrey_Kireew в сообщении #1402972 писал(а):
это хуже всего

С другой стороны, максимальные выбросы $768$, в процентах от максимума это немного.
Было бы интересно:
1. собрать 50 пакетов по 320 байт. Это одна секунда.
2. Упятерить, например. Чтобы длительность увеличить
3. каким-нибудь звуковым редактором упаковать в wav.
4. послушать на обычном компе.

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

 Профиль  
                  
 
 Re: Приём телефонных звонков на 3G роутер
Сообщение03.07.2019, 18:30 


07/10/15

2400
EUgeneUS в сообщении #1402973 писал(а):
Было бы интересно:

А Вы думаете каким образом получены вышеприведённые графики. Всё это уже сделано, в wav я упаковывал, слышно точно то же что и до этого. Шум и всякая трескотня. Абонент начинает говорить - шипение усиливается. Если этот модем работает с программой Huawei то никакого шума нет, связь нормальная. Так, что сам модем в порядке. На счёт потери данных в канале связи - не знаю. Интернет работает без особых проблем, выдаёт 2 Мб/с, а скорость звукового потока получается 120 кб/с. По идее должно хватать.

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

 Профиль  
                  
 
 Re: Приём телефонных звонков на 3G роутер
Сообщение03.07.2019, 19:14 
Аватара пользователя


11/12/16
13309
уездный город Н
Andrey_Kireew в сообщении #1402992 писал(а):
Если этот модем работает с программой Huawei то никакого шума нет, связь нормальная


Это на том же компе/рутере, где проблемы наблюдаются, или на другом?

 Профиль  
                  
 
 Re: Приём телефонных звонков на 3G роутер
Сообщение04.07.2019, 00:29 


07/10/15

2400
EUgeneUS в сообщении #1403003 писал(а):
Это на том же компе/рутере, где проблемы наблюдаются, или на другом?

Та программа под windows, а на роутере OpenWrt (это урезанный Linux), никак она на нём не пойдёт. С роутером, я работаю сейчас удалённо, чеиез picocom других вариантов просто нет. Думаю понятно, что первоначальная идея просто воткнуть в роутер звуковую карту с соответствующим драйвером, оказалась наивной. Нужен управляющий софт. В сети пишут, что для этой цели используется программа asterix - это программа АТС для VoIP. Но у меня объём памяти не позволяет её установить, да и не требуется весь этот функционал. А другого, готового ничего нет.

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

 Профиль  
                  
 
 Re: Приём телефонных звонков на 3G роутер
Сообщение04.07.2019, 06:14 


07/10/15

2400
Посмотрел я на данные, как они есть, в двоичном виде:
Изображение
Это фрагмент тишины. Видно, что байты следуют парами. Все нули - это ноль, все единицы - минус единица в дополнительном коде и т.д. Младший байт сначала, старший - потом. Так как тишина, числа маленькие. Всё согласуется. Но,начиная с некоторого момента появляются аномальные числа 256, 255 и т.д. Есть предположение, что никакие это не 255, а просто пропущен один байт данных, вот всё и съехало.

 Профиль  
                  
 
 Re: Приём телефонных звонков на 3G роутер
Сообщение04.07.2019, 07:43 
Аватара пользователя


11/12/16
13309
уездный город Н
Andrey_Kireew в сообщении #1403078 писал(а):
Та программа под windows, а на роутере OpenWrt (это урезанный Linux), никак она на нём не пойдёт. С роутером, я работаю сейчас удалённо, чеиез picocom других вариантов просто нет. Думаю понятно, что первоначальная идея просто воткнуть в роутер звуковую карту с соответствующим драйвером, оказалась наивной. Нужен управляющий софт.


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

Andrey_Kireew в сообщении #1403078 писал(а):
В сети пишут, что для этой цели используется программа asterix - это программа АТС для VoIP.

Для Ваших целей Астерикс - это оверинжениринг :-), тем более в рутер не влезет.

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

Andrey_Kireew в сообщении #1403094 писал(а):
Есть предположение, что никакие это не 255, а просто пропущен один байт данных, вот всё и съехало.


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

Вот что пишут:
Цитата:
Изохронный канал позволяет доставлять пакеты без гарантии доставки и без ответов/подтверждений, но с гарантированной скоростью доставки в N пакетов на один период шины (1 кГц у low и full speed, 8 кГц у high speed). Используется для передачи аудио- и видеоинформации.


Цитата:
Пакеты типа DATA содержат поле данных и поле контроля целостности данных CRC16. Стандарт ограничивает максимальную разрешённую длину данных: 8 байт для несконфигурированных устройств, 64 байта для устройств Low Speed, 1023 байта для устройств Full Speed и 1024 байта для устройств High Speed. Устройство может установить свою максимальную длину данных, меньшую разрешённой. Хост обязан поддерживать максимальную разрешённую длину данных.


Если теряются пакеты целиком (а не просто искажаются, что контролируются CRC16), при этом в пакете нечетное количество байт, например 1. То будет наблюдаться что-то похожее. Но выглядит маловероятным такая короткая или нечетная длина данных в пакете.

1. Я бы проверил, какой поток данных идет из модема на компе, где он "работает хорошо". В двух вариантах: а) без USB-хаба, б) с USB-хабом (который на рутере используется).
2. Можно попробовать (если рутер будет успевать) читать данные по-байтно и писать их в файл с метками времени с точностью до миллисекунд. Должна наблюдаться такая картина:
а) куча байт с примерно одним временем.
б) пауза 5-15 мс.
И посмотреть, сколько байт читается между паузами. Должно быть ровно 320.

 Профиль  
                  
 
 Re: Приём телефонных звонков на 3G роутер
Сообщение04.07.2019, 14:00 
Аватара пользователя


11/12/16
13309
уездный город Н
Andrey_Kireew
А не может быть так, что у Вас все старшие байты потерялись? Кстати.

 Профиль  
                  
 
 Re: Приём телефонных звонков на 3G роутер
Сообщение04.07.2019, 15:39 


07/10/15

2400
EUgeneUS в сообщении #1403163 писал(а):
А не может быть так, что у Вас все старшие байты потерялись?

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

Я тут стал проверять программу, на предмет объёма считываемых блоков. Оказалось они не фиксированные. Может быть 320, а может быть 1012, или 648. В общем считывается как попало. Вполне возможно, что потери происходят когда считывание происходит непосредственно в момент заполнения буфера модемом. Надо попробовать как то всё это дело синхронизировать.

 Профиль  
                  
 
 Re: Приём телефонных звонков на 3G роутер
Сообщение05.07.2019, 08:52 
Аватара пользователя


11/12/16
13309
уездный город Н
Andrey_Kireew в сообщении #1403187 писал(а):
Я тут стал проверять программу, на предмет объёма считываемых блоков.


А как Вы это проверяли?

Andrey_Kireew в сообщении #1403187 писал(а):
Может быть 320, а может быть 1012, или 648.

1012 - это похоже на три раза по 320 минус потери.
648 - это похоже на два раза по 320 полюс(!) откуда-то взяли еще восемь байт.

 Профиль  
                  
 
 Re: Приём телефонных звонков на 3G роутер
Сообщение05.07.2019, 09:24 


07/10/15

2400
EUgeneUS в сообщении #1403320 писал(а):
А как Вы это проверяли?

Во втором посте есть программа на С++. В общем функция возвращает число считанных байт, я вывожу это число на экран, так и смотрю. Да, там разные числа появляются. Иногда бывают и точно 320, но это редко. Считывание идёт просто в бесконечном цикле, без синхронизации. Наверное поэтому не попадает в нужный момент. Сейчас пробую переписать код.

 Профиль  
                  
 
 Re: Приём телефонных звонков на 3G роутер
Сообщение05.07.2019, 10:22 
Аватара пользователя


11/12/16
13309
уездный город Н
Andrey_Kireew в сообщении #1403324 писал(а):
Иногда бывают и точно 320, но это редко.


Было бы интересно "словить", когда прочитает ровно 320, а потом посмотреть - есть ли там значения меньше $-3$ и больше $3$, которые (предположительно) соответствуют потере байта.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 34 ]  На страницу Пред.  1, 2, 3  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group