Ардуино - запись звука

Обсуждаем контроллеры компании Atmel.
Ответить
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

Изображение

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

Код: Выделить всё

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
	The type javax.swing.JComponent cannot be resolved. It is indirectly referenced from required .class files
	The method setBackground(Color) is undefined for the type JTextArea
	The method setForeground(Color) is undefined for the type JTextArea
	The constructor JScrollPane(JTextArea) is undefined
	The method setBounds(int, int, int, int) is undefined for the type JScrollPane
	The method add(Component) in the type Container is not applicable for the arguments (JScrollPane)
Изображение

Добавлено after 4 minutes:
заходил я в building path, но так и не разорбрался че там надо.
Реклама
Друг Кота
Сообщения: 9242
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

пишет что проблемы с окном... javax.swing - это окно.
показывай кресты...
а вообще первым делом закомментируй кресты... на которые он ругается))
если и дальше ругается... тогда закомментируй всё окно )) будет работать без окна... потом нарисуем... делов то))
программа блочная... можно включить/отключить любой блок))
у тебя Java 1.8... у меня Java 1.7... хотя должно быть без разницы))
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

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

Добавлено after 1 hour 7 minutes 18 seconds:
Изображение

Поставил абсолютно новый Эклипс с офсайта, но поначала все равно что бы шло все не так. Потом почитал issue На stackoverflow и в итого все заработало.

Добавлено after 3 minutes 46 seconds:
пришли чистые данные в Хексе

Я посылал строку "Hello from Android" - 18 байт

Так и пришло 18 байт

Добавлено after 1 minute 27 seconds:
Все понятно, фигова что в яве я ни бум-бум , еще один Иде на мою слабую голову.

Добавлено after 17 minutes 23 seconds:
вот этого не хватало что бы все заработало

Изображение
взято отсюда:

https://stackoverflow.com/questions/571 ... d-how-do-i

Добавлено after 3 minutes 54 seconds:
Теперь эти байты можно сложить в буфер секунды на 2 и заряжать в плейер какой-то самописный?
Друг Кота
Сообщения: 9242
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

olegue писал(а):вот этого не хватало что бы все заработало
первый раз такое слышу...))
я давал ссылки на свой Java
https://disk.yandex.ru/d/gT4Vn7Y_Xo5e4w
и Эклипс
https://disk.yandex.ru/d/sI0Aa-SjNqjRzA
всё рабочее.
а ты полез по сайтам... в поисках приключений))
olegue писал(а):Я посылал строку "Hello from Android" - 18 байт
ну добавь тогда ещё и ASCII ))
Win-1251-cvavr-java.png
(41.04 КБ) 43 скачивания
будет переводить автоматом))
Udp.txt
(11.27 КБ) 45 скачиваний
а компилирует нормально ?
[uquote="olegue",url="/forum/viewtopic.php?p=4319058#p4319058"]Теперь эти байты можно сложить в буфер секунды на 2 и заряжать в плейер какой-то самописный?[/uquote]
можно
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

roman.com писал(а):а компилирует нормально ?

да, вообще без вопросов
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

ок, теперь можно подумать как отправить данные с ардуино через sim800. Думаю использовать тот же скеч что здесь делали, только вот уже sdfat, eeprom, rtc1307 - все эти библиотеки можно отключить и освободить место. А значит буфер можно будет увеличить и минимум будет 2 по 512 или даже больше. Попробую испльзовать ту же схему что и при сбросе данных на sd карту. Только по данным из буфера буду формировать пакеты и отправлять в сеть. Тут бы мне пригодился модуль Ethernet для отладки, надо заказать на всякий случай.
Реклама
Друг Кота
Сообщения: 9242
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

в java есть плеер_wav...
сам плеер_wav особенностей не имеет)) принцип простой
1. пакеты прилетают в буфер socket // UDP: MIN=18; MAX=1472.
2. после фильтрации пакеты попадают в буфер плеер_wav
3. всё что попадает в буфер плеер_wav мы слышим в динамике))
Udp.txt
(14.41 КБ) 78 скачиваний
основная сложность работы со звуком - это синхронизация приёмника и передатчика.
надо понимать что звук это не просто данные а поток.
для синхронизации потока в заводском и самодельном скайпе используется заголовок.
вначале каждого пакета добавляется заголовок... типа... частота битрейт... частота семплирование... скорость воспроизведения... и т.д.
плеер_wav должен читать заголовок и подстраиваться под передатчик...
тогда всё работает чётко))
всё это реализовано в самодельном скайпе))
:tea:

Добавлено after 17 minutes 13 seconds:
[uquote="olegue",url="/forum/viewtopic.php?p=4319390#p4319390"]Ethernet для отладки, надо заказать на всякий случай.[/uquote]
надо
потому что самодельный Ethernet всё ещё находится в разработке))
схема.jpg
(95.43 КБ) 46 скачиваний
Добавлено after 1 hour 22 minutes 31 second:
звук так же можно записать на комп... например в файл "D:/Java.txt"
и прослушать позже))
Udp.txt
(17.4 КБ) 66 скачиваний
а можно записать на комп... например в файл "D:/Java.wav"...
и добавить wav заголовок...
тогда можно слушать на компе в любом проигрывателе))
и т.д. и т.п.
:tea:
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

Скидывал буфер на сериал 115200 , вот такая шляпа получилась . Там файлик приложил. Это сырец из программы CoolTerm. Я его распознал с помощью Sound Forge и сохранил. Сэмплрейт -8000кгц. Но прослушитьвать пришлось на 10000кгц. Почему так я не знаю.

Код: Выделить всё

 
 if (recByteCount % 256 == 128 ) //&& recPressed == 1) 
  {
    //rec.write(buf00, 128);  // save buf01 to card
  
    Serial.write(buf00, 128);  
  
    recByteSaved += 128;
  }


 if (recByteCount % 256 == 0)// && recPressed == 1) 
  {
    //rec.write(buf01, 128);  // save buf02 to card

    Serial.write(buf01, 128);
  
    recByteSaved += 128;
  }


//    }
Вложения
CoolTerm Capture 2022-11-14 01-17-51.rar
(669.68 КБ) 54 скачивания
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

Итак, Роман, установил яву, которыую выложили и эклипс. Все завелось с 1 раз. поставил последний код, где запись в файл возможно.
Запустил sim800 в прозрачном режиме и настроил на прием в Яве. Отправляю по одному байту. Код прерывания таймера ниже привел. Таймер -8кгц

настойка таймера и АдС

Код: Выделить всё

void Setup_timer2() {
  TCCR2B = _BV(CS21);  // Timer2 Clock Prescaler to : 8
  TCCR2A = _BV(WGM21); // Interupt frequency  = 16MHz / (8 x 125 + 1) = 16000Hz
  //OCR2A = 125; // Compare Match register set to 125 (было 90) Перешл на 16кгц
  OCR2A = 250; // Compare Match register set to 250 (было 90) Перешл на 8кгц
}
void Setup_ADC() {
  ADMUX = 0x60; // set ADC to read pin A0, ADLAR to 1 (left adjust)
  cbi(ADCSRA, ADPS2); // set prescaler to 8 / ADC clock = 2MHz
  sbi(ADCSRA, ADPS1);
  sbi(ADCSRA, ADPS0);
}
Так вот когда только запускаешь программа, первые 1-1.5 сек вроде как хороший звук,а дальеш пошли затыки и ничего не разобрать. Если бы в программе на яве где то был буфер секунда 5, тогда наверно вы бы было хорошо

Код: Выделить всё

ISR(TIMER2_COMPA_vect) { 
//ADMUX = 0x60; // set ADC to read pin A0, ADLAR to 1 (left adjust)
  sbi(ADCSRA, ADSC); // start ADC sample
  while (bit_is_set(ADCSRA, ADSC)); // wait until ADSC bit goes low = new sample ready

myGsm.write(ADCH); 
 
}

пробовал отправялть сразу буфером, менял размеры буфера 128,256, 512 - существенно улучшений нет

myGsm.write(buf00, 512);

Добавлено after 8 minutes 45 seconds:
вот прикладываю сырой файл 8кгц, 8бит беззнаковый. В самой начале все хорошо видно.
Вложения
Java.txt
(135.47 КБ) 91 скачивание
Java.txt
это сырой файл 8кгц, 8бит , бесзнаковый
(135.47 КБ) 37 скачиваний
Друг Кота
Сообщения: 9242
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

olegue писал(а):Отправляю по одному байту.
:roll:
Отправляю по одному байту...
1.jpg
(55.75 КБ) 44 скачивания
нифига не разобрать )) плеер в ява не успевает обрабатывать по одному байту...

а по два ?
2.jpg
(55.45 КБ) 44 скачивания
нифига не разобрать ))

а по 10 ?
10.jpg
(67.4 КБ) 47 скачиваний
несколько секунд играет нормально)) потом бульканье...

а по 100 ?
100.jpg
(123.6 КБ) 43 скачивания
по 100 уже нормально.

вывод: надо отправлять не меньше 100 байт в одном пакете...
:tea:

Добавлено after 3 minutes 8 seconds:
а по 512 ?
512.jpg
(159.22 КБ) 39 скачиваний
совсем хорошо))

а по 1472 ? максимальный размер пакета...
1472_MAX.jpg
(167.86 КБ) 45 скачиваний
совсем замечательно))

вывод: надо отправлять нормальные пакеты... не меньше 100 байт в одном пакете...

в заводском скайпе 100...200 байт в одном пакете...

а вообще... чем больше тем лучше))
:tea:

Добавлено after 33 minutes 43 seconds:
olegue писал(а):Так вот когда только запускаешь программа, первые 1-1.5 сек вроде как хороший звук,а дальеш пошли затыки и ничего не разобрать.
далее... самое главное))
roman.com писал(а):основная сложность работы со звуком - это синхронизация приёмника и передатчика.
надо понимать что звук это не просто данные а поток.
ключевое слово - поток)) нужен непрерывный поток.

вот моя запись... видно непрерывный поток....
фон с микрофона 50 герц... но в данном случае это не важно... главное что на записи видим непрерывный поток.
мой_1.jpg
(233.59 КБ) 42 скачивания
и далее...
мой_2.jpg
(235.85 КБ) 50 скачиваний
и далее...
мой_3.jpg
(224.5 КБ) 38 скачиваний
и далее...

а у тебя что ?
olegue писал(а):вот прикладываю сырой файл 8кгц, 8бит беззнаковый.
вот твоя запись... видно что поток прерывается....
твой_1.jpg
(181.87 КБ) 45 скачиваний
и далее...
твой_2.jpg
(185.73 КБ) 43 скачивания
и далее...
твой_3.jpg
(185.34 КБ) 42 скачивания
и далее...

такое ощущение... что в момент отправки данных...
myGsm.write(ADCH);

таймер не работает)) и ничего не цифрует))
ISR(TIMER2_COMPA_vect) {
//ADMUX = 0x60; // set ADC to read pin A0, ADLAR to 1 (left adjust)
sbi(ADCSRA, ADSC); // start ADC sample
while (bit_is_set(ADCSRA, ADSC)); // wait until ADSC bit goes low = new sample ready
}

в итоге: получаем рваный поток ))
разорванный в клочья))
:)))

ты все данные получаешь ? ощущения что не все... ))
:tea:
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

дело в том что когда Sim800 работает в прозрачном режиме, т.е в режиме без подтверждение отправки, то байты отправляются как бы в буфер и на приемной стороне они выглядят в виде пакетов по 1024 байт
TX_IP X.XXX.XXX.82 | len 1024 | port 9666 |
7A 7A 7A 7A 7A 7A 7B 7B 7A 7A 7A 7B 7A 7A 7A 7B 7A 7A 7A 7B 7A 7A 7B 7B 79 79 7A 7A 79 79 7A 7B 7A 79 79 7A 7A 79 79 7A 7A 79 7A 7A 7A 79 7A 7A 7B 79 7A 7A 7A 7A 7A 7A 7B 7A 79 7A 7A 79 7B 7B 7A 79 79 7A 7B 79 79 79 7A 7A 79 7A 7A 7B 7A 79 7B 79 79 79 7A 7B 7A 7A 7B 7A 7A 7A 7B 7B 7A 7A 7B 7B 79 79 7B 7B 79 79 79 7B 7A 79 7A 7A 7A 79 7A 7B 7A 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 79 7A 7B 7B 79 79 7B 7B 79 7A 7A 7B 7A 79 7A 7B 7A 7A 7B 7B 7A 7A 7A 7B 7B 7A 7B 7B 7B 7A 7A 7B 7A 7A 7A 7B 7B 79 79 7B 7B 79 79 7A 7B 79 79 7A 7A 7A 79 7A 7A 7A 7A 7A 7B 7A 79 7A 7B 7A 7A 7A 7A 7A 7A 7A 7B 7A 79 7A 7B 7B 7A 79 7B 79 79 79 79 79 79 79 7A 7A 79 79 7A 7A 7A 7A 7A 7B 7A 79 7A 7B 7A 7A 7B 7B 7A 7A 7A 7B 7A 7A 7A 7B 7A 79 79 7B 7B 79 7B 7B 79 79 7A 7A 7A 7A 7B 7A 7B 7A 7A 7A 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7A 7B 7A 7A 7B 7B 7A 7A 7A 7B 7B 79 7B 7B 7B 79 7A 7A 7A 79 7A 7A 7B 7A 7B 7B 7B 7A 7B 7B 7A 7A 7A 7B 7A 7A 7A 7B 7B 7A 7B 7B 7A 7A 79 7B 7B 79 79 7A 7B 7B 79 7A 7A 7A 79 7A 7A 7A 79 7A 7A 7A 7A 7A 7A 7A 7A 7A 7A 7B 7A 7A 7A 7B 7A 7A 7A 7B 79 7B 7B 79 7A 79 7A 7A 79 79 79 7A 7A 79 79 7A 7A 7A 7A 7B 7A 79 7A 7B 7A 7A 79 7A 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7B 7B 7B 7A 79 7B 7B 79 79 7A 7A 7A 79 7A 7B 7A 7A 7A 7B 7A 7A 7A 7B 7B 7A 7A 7B 7B 7A 7B 7B 7B 7A 7A 7B 7B 79 7A 79 7B 79 79 7B 7B 79 79 7A 7A 7A 7A 7A 7B 7A 7A 7B 7B 7A 7A 7A 7B 7A 7A 7A 7B 7A 79 7A 7B 7A 79 7A 7B 7A 79 7B 7B 7A 79 7A 7B 7A 79 79 7A 7A 79 7A 7A 7A 79 7A 7A 7A 79 7A 7A 7B 7A 7A 7A 7B 79 7A 7B 7B 7A 7A 7A 7A 7A 79 7B 7B 79 7A 79 7B 79 7A 7A 7A 7A 7A 7A 7A 7A 7A 7A 7B 7A 79 7A 7B 7A 79 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7B 79 7B 79 79 7B 7B 79 79 7A 7A 7A 7A 7A 7B 7A 7A 7B 7B 7A 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 79 7B 79 79 79 7B 7A 79 79 7A 7B 7A 7A 7A 7B 7A 7A 7A 7B 7A 7A 7A 7B 7B 7A 7A 7B 7B 7B 7A 7A 7B 7A 7A 7B 7B 79 7A 7B 7B 7A 7B 7A 7B 79 79 7A 7A 7A 79 7A 7B 7A 7A 7A 7A 7A 79 7A 7B 7A 7A 7A 7A 7A 7A 7A 7B 7A 7A 7A 7A 7B 79 7A 7B 7B 79 7A 7B 7B 79 79 79 7A 79 79 7A 7A 7A 79 7A 7B 79 79 7A 7B 7A 79 7A 7B 7A 7A 7A 7B 7A 79 7A 7B 7A 7B 7A 7B 79 79 79 7A 7B 79 7A 7A 7B 7A 79 7A 7B 7A 7A 7A 7B 7A 79 7A 7B 7A 7A 7A 7B 7B 7A 7B 7B 7B 7A 7B 7B 7B 79 7A 7B 7B 79 7B 7B 79 79 7A 7A 7B 7A 79 7A 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7B 7A 7A 7B 7B 7A 7B 7B 7B 79 79 7B 7B 79 79 79 7B 79 79 7A 7A 7A 79 7A 7A 7A 7A 7B 7A 7A 79 7A 7B 79 79 7A 7B 79 7A 7B 7B 7A 79 7A 7B 7B 79 7B 7B 7B 79 79 7B 79 7A 79 7A 7A 79 79 7A 7A 7A 7A 7A 7A 79 79 7A 7A 79 79 7A 7A 7A 7A 7A 7A 7A 79 7A 7B 7A 7A 7A 7B 7A 7A 7A 7B 7A 79 7A 7B 7A 7A 7A 7B 7B 7A 7B 7A 7B 7A 7A 7B 7B 7B 7A 7B 7B 7B 7A 7B 7B 7A 7A 7B 7B 79 7A 7B 7B 79 79 7A 7B 79 7A 7A 79 7A 7A 7A 7B 7A 7A 7A 7B 7A 7A 7A 7B 7A 7A 7A 7B 7B 7A 7B 7B 7B 7A 7B 7B 7A 7A 79 7B 79 7A 7A 79 7B 79 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 79 7A 7B 79 7A 7A 7B 7A 79 7A 7B 79 79 7A 7B 7A 79 7B 7B 7A 79 7A 7B 7A 79 7A 7A 7A 79 79 7A 7A 79 7A 7A 79 79 79 7A 7B 79 7A 7A 7B 7A 7A 7A 7A 7A 7A 7A 7A 7A 79 7A 7A 79 79
Последний раз редактировалось olegue Пн ноя 14, 2022 19:15:06, всего редактировалось 1 раз.
Друг Кота
Сообщения: 9242
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

не важно в каком режиме работает Sim800...
важно что таймер цифрует со скоростью 8к и всё что нацифрует таймер должно быть доставлено в яву))

таймер выдаёт 8000 байт в секунду.
и все 8000 байт (не важно по частям или все сразу) должны быть доставлены яве.
и все байты (8000 байт в секунду) ява записывает в файл.

а у тебя такое впечатление что не все 8000 байт доставляются в яву...

твой таймер цифрует то 7998 байт в секунду... то 7999 байт в секунду... то 8000 байт в секунду...

иначе откуда в записанном файле пробелы ?
твой_4.jpg
(186.15 КБ) 45 скачиваний
если бы таймер чётко цифровал 8000 байт в секунду... то на записи было бы видно один сплошной непрерывный поток байт !
а мы такого не видим...

для проверки непрерывности потока можешь пронумеровать все байты в своей ардуине... ))
0,1,2,3,4,5,6,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,8,9,0,1,2,3,4,5,6,7,8,9...
в такой же последовательности ты их увидишь в записи...
0,1,2,3,4,5,6,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,8,9,0,1,2,3,4,5,6,7,8,9...

если будут пропущенные байты в потоке...
0,1,2,3,6,7,8,9,0,1,2,3,4,5,7,8,9,0,2,3,4,5,6,0,1,2,3,4,5,6,7,8,9...
значит... выкинь свою ардуину)) или Sim800... ))

Добавлено after 1 hour 59 seconds:
для проверки звукозаписывающей аппаратуры обычно используют генераторы стандартных сигналов (ГСС).
ГСС.jpg
(49.5 КБ) 37 скачиваний
но под рукой ГСС у меня нет...
:)))
поэтому сделаем по другому... вместо ГСС используем таймер ардуины...

вот я для проверки вместо звука передаю просто пронумерованные батый...
0,1,2,3,4,5,6,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,8,9,0,1,2,3,4,5,6,7,8,9...
по 100 байт в пакете
проверка.jpg
(120.9 КБ) 38 скачиваний
чётко видно что каждый пакет заканчивается 9... а начинается 0...
ни одного пропущенного байта у меня нет))

в записи тоже самое...
запись.jpg
(122.1 КБ) 37 скачиваний
запись_2.jpg
(156.31 КБ) 41 скачивание
у меня непрерывный поток 8000 байт в секунду.
:tea:
в наушниках я слышу непрерывный тон 1 кгц. (8000/10=1 кгц)
:music:
это значит что таймер ардуины (на ATmega328) работает с частотой ровно 8 кгц (частота прерывания таймера).
ISR(TIMER2_COMPA_vect) {
//ADMUX = 0x60; // set ADC to read pin A0, ADLAR to 1 (left adjust)
sbi(ADCSRA, ADSC); // start ADC sample
while (bit_is_set(ADCSRA, ADSC)); // wait until ADSC bit goes low = new sample ready
}
ардуина.jpg
(50.75 КБ) 39 скачиваний
:)
вот такие занимательные эксперименты можно проводить со звуком... ардуиной... и явой))
:)))

а может у тебя просто пакеты теряются ? проверял ?
:o
на такое наш плеер не рассчитан...
Друг Кота
Сообщения: 9242
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

[uquote="olegue",url="/forum/viewtopic.php?p=4320170#p4320170"]Так вот когда только запускаешь программа, первые 1-1.5 сек вроде как хороший звук,а дальеш пошли затыки и ничего не разобрать. Если бы в программе на яве где то был буфер секунда 5, тогда наверно вы бы было хорошо[/uquote]
ещё раз... разберём подробно))

пункт 1. - буфер.
в яве 2 буфера.

-первый буфер сокета.
DatagramSocket socket = new DatagramSocket(80);
по умолчанию размер буфера сокета 8 килобайт (или 8192 байт).
размер буфера сокета можно менять командой
//socket.setReceiveBufferSize(1); // размер буфера RX Ethernet
но мы этого пока делать не будем... оставим по умолчанию 8 килобайт (8192 байт).

-второй буфер плеера.
static byte[] din_byte_wavr = new byte[1472];
размер буфера плеера мы устанавливаем сами... какой захотим ))

Как это работает ?
1. все пакеты Ethernet прилетаю на комп и записываются в буфер сокета по умолчанию 8 килобайт (8192 байт).
2. плеер берёт пакеты из буфера сокета и переносит их в свой буфер.
RX_line.write(din_byte_wavr, 0, RX_len);//RX_len
при этом буфер плеера подстаивается под размер пакета Ethernet.

в итоге у нас в яве двойная буферизация)) что это даёт ?
а то что наш плеер в яве не чувствительный к задержкам (джиттер) передачи пакетов Ethernet.

вот анализатор пакетов заводского скайпа... обрати внимание что прилетело два пакета подряд... но благодаря двойной буферизации на работу скайпа это не влияет))
Skype_.jpg
(168.54 КБ) 44 скачивания
а вот анализатор пакетов самодельного скайпа... обрати внимание что прилетело два пакета подряд... но благодаря двойной буферизации на работу скайпа это не влияет))
Skype_ (1).jpg
(192.63 КБ) 47 скачиваний
благодаря двойной буферизации можно передавать пакеты по одному.
1024.........1024.........1024.........1024.........
а можно передавать пакеты по несколько штук за раз... пачками))
......1024.1024.1024.1024.........

на работу плеера это не влияет... потому что все пакеты сначала попадают в буфер сокета.
1024.1024.1024.1024.
а плеер забирает пакеты из буфера сокета и передаёт в свой буфер по одному пакету.
1024.........1024.........1024.........1024.........
в динамике мы слышим равномерный непрерывный поток)) никаких затыков нет !
:music:

добавление ещё одного буфера в программу на секунд 5... ничего не даст))
просто в динамике мы услышим звук с задержкой на 5 секунд.

Вывод:
в яве буфера и так хорошо работают. Их трогать не надо))
:tea:

пункт 2. - поток.
чтобы плеер играл без затыков надо чтоб ардуина цифровала и передавала ровно 8000 байт в секунду.
тогда передатчик (ардуина) и приёмник (ява) будут работать синхронно.
передатчик (ардуина) - цифрует и передавала ровно 8000 байт в секунду.
приёмник (ява) - принимает и играет ровно 8000 байт в секунду.
всё синхронизировано)) никаких затыков нет !
:music:

у тебя (судя по записям) теряются байты в пакетах... или теряются сами пакеты... до конца пока не ясно))
:dont_know:

как проверить не теряются ли байты в пакетах ?
точнее нас интересуют не теряется ли порядок байт в пакетах...
проверить очень просто - достаточно их пронумеровать))
мы передаём 1024 байт это 00-FF... 00-FF... 00-FF... 00-FF... (или 256 + 256 + 256 +256)
смотрим...
байты.jpg
(161.68 КБ) 35 скачиваний
запись.jpg
(219.15 КБ) 36 скачиваний
все байты пришли строго по порядку... 00-FF... 00-FF... 00-FF... 00-FF... (или 256 + 256 + 256 +256)
всё хорошо))
:tea:

ещё бывает что скайп зависает... особенно часто если скайп работает по радио... и при слабом сигнале...))
это теряются пакеты.
как проверить не теряются ли пакеты ?
проверить очень просто - достаточно их пронумеровать))
00-FF... (или 256)
смотрим...
счёт.jpg
(161.29 КБ) 45 скачиваний
все пакеты пришли без потерь)) строго по порядку... 00-FF... (или 256)
всё хорошо))
:tea:
Udp.txt
(17.68 КБ) 57 скачиваний
:tea:

к слову... пакеты Ethernet изначально уже пронумерованы))
в заголовке IP пакета есть поле "Идентификатор"
https://ru.wikipedia.org/wiki/IP#Версия_4_(IPv4)
идентификатор.jpg
(60.5 КБ) 42 скачивания
если откроем анализатор то увидим что комп уже изначально пронумеровал все Ethernet пакеты))
анализатор.jpg
(67.54 КБ) 43 скачивания
:tea:
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

Код: Выделить всё

if ((micros()-timerHour)>125){  /// 8 КГЦ
myGsm.write(char(1));
myGsm.write(char(2));
myGsm.write(char(3));
myGsm.write(char(4));
myGsm.write(char(5));
myGsm.write(char(6));
myGsm.write(char(7));
myGsm.write(char(9));
myGsm.write(char(0));
    timerHour=micros();
    }

зарядил таймер на 8кгц и отправил нумерованный данные

результат файле

Добавлено after 3 minutes 19 seconds:
счас тока увидел пропустил "8" при отправке - это нужно учесть при просмотре
Вложения
ПАКЕТЫ И БАЙТЫ ПО ПОРЯДКУ.txt
(146.8 КБ) 57 скачиваний
Друг Кота
Сообщения: 9242
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

1.jpg
(235.37 КБ) 39 скачиваний
хорошо))
радио модуль передаёт нормально.

теперь передаём звук...
у меня при передачи звука непрерывный поток...
мой_1.jpg
(233.59 КБ) 39 скачиваний
у тебя при передачи звука поток прерывается...
твой_2.jpg
(189.48 КБ) 47 скачиваний
у тебя какие то проблемы в модуле оцифровки...
:dont_know:
Последний раз редактировалось roman.com Ср ноя 16, 2022 16:43:31, всего редактировалось 1 раз.
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

второй файл поинтереснее, короче вывод такой что приходят байты в целом нормально
Вложения
ПАКЕТЫ И БАЙТЫ ПО ПОРЯДКУ2.txt
(189.56 КБ) 65 скачиваний
Друг Кота
Сообщения: 9242
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

olegue писал(а):приходят байты в целом нормально
"в целом нормально" тут неуместно))
мы делаем цифровую связь... а не пирожки лепим))

на второй записи видим потерю байт...
потеря_1_2_3_4.jpg
(223.89 КБ) 37 скачиваний
потеря_2_3_4_5_6.jpg
(237.6 КБ) 38 скачиваний
потеря_4.jpg
(223.81 КБ) 35 скачиваний
из-за этого происходи прерывание потока...
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

пустил на вход сигнал 1000 гц. Записал поток. Вначале 1.5 секунды нормально. Потом пошли прерывы. Но в файле это не слышно если слушаь как сырой в SOUND FORGE

Добавлено after 4 minutes 22 seconds:
СПЕКТР JAVA.TXT
Вложения
Screenshot_1_SOUNDFORGE_1000ГЦ.png
(38.51 КБ) 33 скачивания
Java.txt
(85.94 КБ) 56 скачиваний
Друг Кота
Сообщения: 9242
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

1000 гц много... нифига не видно)) поменьше пускай... 50 гц...

и на спектре видно чётко наложение...

короче фигово у тебя передаётся звук)) с потерей байт...

а ещё и скорость скорее всего плавает... рассинхронизация.

всё надо настраивать последовательно. Начиная с проверки целостности байт))

к слову...
скайп (заводской и самодельный) проверяет контрольные суммы каждого пакета...
при потери байт... наш скайп выдаст ошибку.
такую фигню... он вообще воспроизводить не будет))
:tea:
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

50 гц

Добавлено after 1 minute 51 second:
может просто не пролазит в в канал UART 115200+ GPRS?
Вложения
Java.txt
(107 КБ) 38 скачиваний
Screenshot_1_50 гц.png
(36.16 КБ) 41 скачивание
Ответить

Вернуться в «AVR»