![]()  | 
	
		
			
  | 
	|||||||
| Мобильные модемы для сотовых сетей. 3G/GPRS/EDGE/GSM/HSCSD Программный и аппаратный ремонт модемов (USB, PCMCIA) для различных сотовых сетей (Билайн, Мегафон, МТС, TELE2, Скайлинк и т.д.), работающих в стандарте GSM/HSCSD/GPRS/EDGE/3G- UMTS, CDMA 1X, EV-DO и т.п. | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Оценить тему | Опции просмотра | 
| 
			
			 | 
		#21 | 
| 
			
			 Новичок 
			
			
			
			Регистрация: 08.03.2012 
				
				
				
					Сообщений: 15
				 
				 
	Поблагодарил: 0 
	
		
			
				Поблагодарили 4 раз за 4 сообщений
			
		
	 
				
				Репа: 0  | 
	
	
	
		
		
		
		 
			
			Работу со звуком я доделаю, у меня это был отдельный проект, только сейчас со временем плохо. Как доберусь, так объединю. 
		
		
		
		
		
		
		
	Wav файл состоит из заголовка 44 байт + данные: 52 49 46 46 xx xx xx xx 57 41 56 45 66 6D 74 20 10 00 00 00 01 00 01 00 40 1F 00 00 80 3E 00 00 02 00 10 00 64 61 74 61 yy yy yy yy .. данные .. это стандартный заголовок для наших нужд, меняться будут лишь x и y, при этом, y= размер данных в байтах, а x=y-8. Проверьте, верно ли сформирован заголовок. Или так, y=размер файла-44.  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| Следующие пользователи поблагодарили Autumnus за это сообщение: |  duser (13.03.2012)  | 
		
| 
			
			 | 
		#22 | 
| 
			
			 Новичок 
			
			
			
			Регистрация: 09.03.2012 
				
				
				
					Сообщений: 12
				 
				 
	Поблагодарил: 2 
	
		
			
				Поблагодарили 0 раз за 0 сообщений
			
		
	 
				
				Репа: 0  | 
	
	
	
		
		
		
		 
			
			Да Спасибо со звуком вроде справился, записывается в файл и с проигрыванием проблем нет, buf: string; string заменил на AnsiString и все заработало... 
		
		
		
		
		
		
		
	Скажите пожалуйста Autumnus, а можно ли записывать PCM данные с микрофона в порт?  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		#23 | 
| 
			
			 Новичок 
			
			
			
			Регистрация: 08.03.2012 
				
				
				
					Сообщений: 15
				 
				 
	Поблагодарил: 0 
	
		
			
				Поблагодарили 4 раз за 4 сообщений
			
		
	 
				
				Репа: 0  | 
	
	
	
		
		
		
		 
			
			C микрофона звук идет по такому же принципу, как и через порт. В данном случае необходимо настроить микрофон на тот же формат и брать буфер равным 320 байт, при заполнении которого пересылать данные в порт. Если память не изменяет, для получения звука я использовал компонент из DelphiX. Хотя могу и наврать ) 
		
		
		
		
		
		
		
		
			Постараюсь найти время и глянуть. ------------------------------------------------ Добавлено позже: Наврал )) Это куски кода, которые осуществляют получение звукового потока из микрофона (ну или другого выбранного устройства в микшере) WavBufLen=10; FCapture: TSoundCaptureStream; FWaveStream: TWaveStream; ShellMW.FWaveStream := TWaveFileStream.Create(ShellMW.LastFile, fmCreate); with ShellMW.FCapture.SupportedFormats[SoundFormatIndex] do ShellMW.FWaveStream.SetPCMFormat(SamplesPerSec, BitsPerSample, Channels); //здесь задаются параметры входного сигнала ShellMW.FWaveStream.Open(true); ShellMW.FCapture.BufferLength:=WavBufLen; ShellMW.FCapture.OnFilledBuffer:=ShellMW.CaptureFi lledBuffer; ShellMW.FCapture.CaptureFormat:=SoundFormatIndex; ShellMW.FCapture.Start; procedure TShellMW.CaptureFilledBuffer(Sender: TObject); var work_buffer: array [0..999] of byte; i: integer; begin Fcapture.Read(work_buffer, 200); end; процедура CaptureFilledBuffer срабатывает каждый раз при заполнении буфера наводку дал, пока много времени нет, когда напишу то выложу  
		Последний раз редактировалось Autumnus; 13.03.2012 в 18:55. Причина: Сообщения , идущие подряд, объединены.  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		#24 | 
| 
			
			 Новичок 
			
			
			
			Регистрация: 08.03.2012 
				
				
				
					Сообщений: 15
				 
				 
	Поблагодарил: 0 
	
		
			
				Поблагодарили 4 раз за 4 сообщений
			
		
	 
				
				Репа: 0  | 
	
	
	
		
		
		
		 
			
			duser, ну как, помогло?
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		#25 | 
| 
			
			 Новичок 
			
			
			
			Регистрация: 09.03.2012 
				
				
				
					Сообщений: 12
				 
				 
	Поблагодарил: 2 
	
		
			
				Поблагодарили 0 раз за 0 сообщений
			
		
	 
				
				Репа: 0  | 
	
	
	
		
		
		
		 
			
			Здравствуйте Autumnus... 
		
		
		
		
		
		
		
	Спасибо что написали! ... Да как-то со временем у меня не получилось, сегодня завтра посмотрю. И еще много вопросов возникают. ![]() 1. Прога записывает в файл без проблем (взято из Вашего кода). Вопрос: Как можно параллельно воспроизвести этот кусок RAW PCM? 2. И еще не успел проанализировать Ваш последний код (с микрофоном...) т.е. записывать PCM данные с микрофона в порт? 3. В Зависимости от условия, записывать данные в файл, в один файл, целиком и звук и данные с микрофона (т.е. тел. разговор...)??? Вот такие вопросы??? Если время будет пишите! С уважением duser...  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		#26 | 
| 
			
			 Новичок 
			
			
			
			Регистрация: 08.03.2012 
				
				
				
					Сообщений: 15
				 
				 
	Поблагодарил: 0 
	
		
			
				Поблагодарили 4 раз за 4 сообщений
			
		
	 
				
				Репа: 0  | 
	
	
	
		
		
		
		 
			
			1. В аудиоустройство данные записываются так же - потоком. Т.е. буфер записывается в файл и этот же буфер отправляем в аудиоустройство. 
		
		
		
		
		
		
		
	2.... 3. Скорее всего данные в порту будут смешиваться. Даже не придется отдельно выводить каждый поток в аудиоустройство. В общем нужно попробовать. А если не будут - то большой проблемы тоже не вижу buf_out[i]:=buf1[i]+buf2[i];  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		#27 | 
| 
			
			 Новичок 
			
			
			
			Регистрация: 09.03.2012 
				
				
				
					Сообщений: 12
				 
				 
	Поблагодарил: 2 
	
		
			
				Поблагодарили 0 раз за 0 сообщений
			
		
	 
				
				Репа: 0  | 
	
	
	
		
		
		
		 
			
			Спасибо Autumnus, попробую разобраться...
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		#28 | 
| 
			
			 Новичок 
			
			
			
			Регистрация: 09.03.2012 
				
				
				
					Сообщений: 12
				 
				 
	Поблагодарил: 2 
	
		
			
				Поблагодарили 0 раз за 0 сообщений
			
		
	 
				
				Репа: 0  | 
	
	
	
		
		
		
		 
			
			Да никак не получается с параллельным проигрыванием...  
		
		
		
		
		
		
		
		
			![]() ![]() --------------------------------------------------------------------- Здравствуйте Autumnus... Вроде бы этот код должен воспроизвести RAW PCM из буфера..., или я не правильно делаю??? procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word); ... bufStream := 'RIFF WAVEfmt '+#$10+#0+#0+#0+#01+#0+#01+#0+#$40+#$1F+#0+#0+#$80 +#$3E+#0+#0+#02+#0+#$10+#0+'data '; ApdComPort1.GetBlock(buf, Count); with TMemoryStream.Create do begin try SetSize(44 + Count); Seek(0, soFromBeginning); WriteBuffer(bufStream[1], 44); Seek(44, soFromBeginning); WriteBuffer(buf, Count); Seek(4, soFromBeginning); dk:=Count-8; WriteBuffer(dk, 4); Seek(40, soFromBeginning); WriteBuffer(Count, 4); Seek(0, soFromBeginning); PlaySound(Memory, 0, SND_MEMORY or SND_SYNC); finally Free; end; end; ... end; Последний раз редактировалось Vasilio; 19.03.2012 в 13:32. Причина: Сообщения, идущие подряд, объединены.  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		#29 | 
| 
			
			 Новичок 
			
			
			
			Регистрация: 08.03.2012 
				
				
				
					Сообщений: 15
				 
				 
	Поблагодарил: 0 
	
		
			
				Поблагодарили 4 раз за 4 сообщений
			
		
	 
				
				Репа: 0  | 
	
	
	
		
		
		
		 
			
			http://www.delphisources.ru/pages/fa...und_again.html 
		
		
		
		
		
		
		
	http://www.delphisources.ru/pages/fa...win32_api.html можно покопаться вот тут а по поводу примера - можно проигрывать данные по 320 байт, это во-первых, а во-вторых, Memory не вижу как связаны Memory и TMemoryStream думаю, лучше всё-таки порциями через waveOutWrite звук выводить  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		#30 | 
| 
			
			 Новичок 
			
			
			
			Регистрация: 09.03.2012 
				
				
				
					Сообщений: 12
				 
				 
	Поблагодарил: 2 
	
		
			
				Поблагодарили 0 раз за 0 сообщений
			
		
	 
				
				Репа: 0  | 
	
	
	
		
		
		
		 
			
			Здравствуйте Autumnus 
		
		
		
		
		
		
		
	На счет Memory (с помощью with)... with TMemoryStream.Create do begin PlaySound(Memory, 0, SND_MEMORY or SND_SYNC); end; или OutStream = TMemoryStream.Create; PlaySound(OutStream.Memory, 0, SND_MEMORY or SND_SYNC); ... В отдельные потоки передаю stream, что-то тормоз получается (не синхронно, с обрывами)... Да верно говорите, надо как-то по другому нужно воспроизвести. Суть ясна, проблема именно в реализации... ![]() Спасибо за ссылки...  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		#31 | 
| 
			
			 Новичок 
			
			
			
			Регистрация: 08.03.2012 
				
				
				
					Сообщений: 15
				 
				 
	Поблагодарил: 0 
	
		
			
				Поблагодарили 4 раз за 4 сообщений
			
		
	 
				
				Репа: 0  | 
	
	
	
		
		
		
		 
			
			Тормозит из-за того, что звук идет маленькими порциями. Можно попробовать двойную буферизацию. Т.е. два массива - из одного проигрывается, а в другой пишется. Думаю здесь это лучше реализовать через потоки.
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		#32 | 
| 
			
			 Новичок 
			
			
			
			Регистрация: 09.03.2012 
				
				
				
					Сообщений: 12
				 
				 
	Поблагодарил: 2 
	
		
			
				Поблагодарили 0 раз за 0 сообщений
			
		
	 
				
				Репа: 0  | 
	
	
	
		
		
		
		 
			
			Здравствуйте Autumnus 
		
		
		
		
		
		
		
		
			Если Вам Нетрудно!, можете привести код (пример для Нашего случая, т.е. синхронно проигрывался звук с порта.......) ![]() ... Спасибо... Последний раз редактировалось duser; 19.03.2012 в 10:23.  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		#33 | 
| 
			
			 Новичок 
			
			
			
			Регистрация: 08.03.2012 
				
				
				
					Сообщений: 15
				 
				 
	Поблагодарил: 0 
	
		
			
				Поблагодарили 4 раз за 4 сообщений
			
		
	 
				
				Репа: 0  | 
	
	|
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		#34 | 
| 
			
			 Новичок 
			
			
			
			Регистрация: 09.03.2012 
				
				
				
					Сообщений: 12
				 
				 
	Поблагодарил: 2 
	
		
			
				Поблагодарили 0 раз за 0 сообщений
			
		
	 
				
				Репа: 0  | 
	
	
	
		
		
		
		 
			
			Здравствуйте Autumnus 
		
		
		
		
		
		
		
	Я уже неделю не смотрел, как-то без базовых знаний работы со звуком, не получается, да наверно здесь в большой степени и лень мешает... А Вы можете мне помочь в реализации следующей задачи?... 1. С модемом идет родная программа, там есть весь функционал (звонилка, смс и т.д. ...) 2. Пока что для звонков буду использовать родную программу, мне нужно будет просто захватить разговор и записывать в файл. 3. Когда запускается эта программа, Мы знаем что она блокирует порт HUAWEI Mobile Connect - 3G Application Interface. ВОПРОС. Можно ли параллельно получить доступ к этому порту??? (хотя наверно нет...) 4. Если невозможно получить доступ к этому порту, как записать звук с компьютера, т.е. как понимаю с микшера (звук+микрофон...)??? Вчера скачал компоненты AudioLab, там есть компонент SystemMixer. Никак не могу понять как с этим компонентом можно захватить звук и записывать в файл???... Спасибо С Уважением duser  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		#35 | 
| 
			
			 Новичок 
			
			
			
			Регистрация: 08.03.2012 
				
				
				
					Сообщений: 15
				 
				 
	Поблагодарил: 0 
	
		
			
				Поблагодарили 4 раз за 4 сообщений
			
		
	 
				
				Репа: 0  | 
	
	
	
		
		
		
		 
			
			Здравствуйте, duser! 
		
		
		
		
		
		
		
	Подключиться к порту можно программой Advanced Serial Port Monitor. В своё время она мне здорово помогла разобраться в работе модема. Это сниффер. Можно наглядно смотреть что в порт пишется и что из него читается. Через эту программу так же хорошо видно, как идёт голосовой поток - по 320 байт туда и сюда. Удачи!  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		#36 | 
| 
			
			 Новичок 
			
			
			
			Регистрация: 09.03.2012 
				
				
				
					Сообщений: 12
				 
				 
	Поблагодарил: 2 
	
		
			
				Поблагодарили 0 раз за 0 сообщений
			
		
	 
				
				Репа: 0  | 
	
	
	
		
		
		
		 
			
			Спасибо Autumnus! 
		
		
		
		
		
		
		
		
			Вы не подскажите как можно из Delphi подключится к этому порту параллельно, т.е. когда я запускаю родную программу модема, этот порт блокируется... ------------------------------------------------------- Спасибо Autumnus! Advanced Serial Port Monitor то что нужно ... Но Есть ли готовые компоненты, или пример на Delphi, открыть порт в режиме сниффера??? Последний раз редактировалось Vasilio; 31.03.2012 в 17:31. Причина: Сообщения, идущие подряд, объединены.  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		#37 | |
| 
			
			 Новичок 
			
			
			
			Регистрация: 25.04.2012 
				
				
				
					Сообщений: 3
				 
				 
	Поблагодарил: 1 
	
		
			
				Поблагодарили 0 раз за 0 сообщений
			
		
	 
				
				Репа: 0  | 
	
	
	
		
		
		
		 Цитата: 
	
 при записи звукового файла (8000Гц, 16бит, удалил первые 44 байта) в порт, в телефоне только слышен очень короткий шум, а в программе в memo выводится "block is empty 1".  | 
|
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		#38 | |
| 
			
			 Новичок 
			
			
			
			Регистрация: 25.04.2012 
				
				
				
					Сообщений: 3
				 
				 
	Поблагодарил: 1 
	
		
			
				Поблагодарили 0 раз за 0 сообщений
			
		
	 
				
				Репа: 0  | 
	
	
	
		
		
		
		 Цитата: 
	
  | 
|
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		#39 | 
| 
			
			 Новичок 
			
			
			
			Регистрация: 08.03.2012 
				
				
				
					Сообщений: 15
				 
				 
	Поблагодарил: 0 
	
		
			
				Поблагодарили 4 раз за 4 сообщений
			
		
	 
				
				Репа: 0  | 
	
	
	
		
		
		
		 
			
			Проблема в том, что нужно подавать данные по счетчику. Т.е. не весь буффер целиком и за раз. А рассчитать сколько блоков в секунду. В исходнике эта проблема решена.
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		#40 | |
| 
			
			 Новичок 
			
			
			
			Регистрация: 25.04.2012 
				
				
				
					Сообщений: 3
				 
				 
	Поблагодарил: 1 
	
		
			
				Поблагодарили 0 раз за 0 сообщений
			
		
	 
				
				Репа: 0  | 
	
	
	
		
		
		
		 Цитата: 
	
 Меня остановила описанная выше проблема и комментарий в исходнике "но это почему-то не работает" в процедуре ApdComPort2TriggerOutbuffFree. Если исходник рабочий, попробую поискать у себя проблему.  | 
|
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		  
		
	 | 
![]()  | 
	
	
		
		
  | 
	
		
  | 
			 
			Похожие темы
		 | 
	||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение | 
| DC-Unlocker V1.00.0629 Huawei U8150 IDEOS | DB2020_Logs | DC-Unlocker | 10 | 27.04.2011 22:11 | 
| Проблема с Huawei E1550 от Киевстар | macciavelli | Мобильные модемы для сотовых сетей. 3G/GPRS/EDGE/GSM/HSCSD | 26 | 20.02.2011 10:28 | 
| HUAWEI E1550 Киевстар / Firmware 11.608.12.02.174 | Kovgan | Мобильные модемы для сотовых сетей. 3G/GPRS/EDGE/GSM/HSCSD | 45 | 03.05.2010 11:25 | 
| Разблокировка 3G модемов. Активация голоса в HUAWEI E1550 | shura | Запчасти и оборудование для ремонта телефонов | 4 | 08.01.2010 09:03 | 
| DC-unlocker client software V1.00.0376 | DB2020_Logs | DC-Unlocker | 4 | 23.12.2009 21:06 |