Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2010, 17:30   #31
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Код:
var k: tmemorystream;
    TempHeader : PWaveHdr;
    Data           : Pointer;
begin
  k:= Tmemorystream.Create; k.Clear;
  nmudp.ReadStream(k);
  getmem(Data, k.size);
  move(k.memory^, Data^, k.size);

 //
 GetMem(TempHeader, SizeOf(TWaveHDR));
  with TempHeader^ do begin
    lpData := Data;
    dwBufferLength := Size;
    dwBytesRecorded :=0; 
    dwUser := 0;
    dwFlags := 0;
    dwLoops := 1;
  end;

 WaveOutPrepareHeader(FWaveOutHandle,TempHeader,SizeOf(TWaveHDR));
 WaveOutWrite(FWaveOutHandle, TempHeader, SizeOf(TWaveHDR));
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 09.04.2010, 18:25   #32
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

У меня на приеме данных все в порядке со стороны UDPserver'a, дело в том, что после write в стрим, клиент не передает данные потока. может быть я выложу исходник? и ещё, у меня нет компонентов Fastnet.
Вложения
Тип файла: zip ZvukLan.zip (321.4 Кб, 51 просмотров)
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Старый 09.04.2010, 20:26   #33
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

nmudp из fastnet можно поставить под любой версией delphi... исходники найти трудно, так как старый набор компонентов уже оф.не поддерживается, но можно...
Вложения
Тип файла: zip fastnet_nmudp.zip (73.0 Кб, 39 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 09.04.2010, 20:36   #34
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Спасибо я поставлю их, ну а что вы можете сказать по вот той проьлеме, что возникает, когда я записываю в поток данные? У меня есть предположение, что данные не записываются потому что их нет и при сообщении WIM_DATA количество записанных байтов обнуляется, следовательнонечего передавать на сервер, но тогда феномен! Ведь бинарный поток, переводится в HEX! Стало быть, что какие-то данные там есть, но сокет не передает их!
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Старый 10.04.2010, 00:25   #35
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Скажите пожалуйста, а куда писать код из поста #31? И где мне найти компонент, установленный из fastnet? А то я его только описал, а куда он данные отправляет - неизвестно.
"Тебе то может на меня и насрать, но твои глаза меня обожают!"

Последний раз редактировалось ImmortalAlexSan; 10.04.2010 в 00:29.
ImmortalAlexSan вне форума Ответить с цитированием
Старый 10.04.2010, 00:36   #36
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...код писать в событие приема ...найти куда ставится компонент, можно заглянув в его генофонд и поискав процедуру - Register ...посылает, что значит куда, а куда ваш udpsocket отправляет, как настроите его свойства, туда и отправляет.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 10.04.2010, 00:49   #37
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Написано что в Cons_Palette_Inet ставится (это я открыл файл NMUDP.pas и там нашел registre) Однако, когда захожу в component -> configure palette и там ищу его, его нет=(
P.S. Нашел.
Это получается клиент и сервер в одном компоненте?
И ещё одно... можете привести пример события приема и как его вызвать? (Просто много информации за 5 дней изучения по WIN API, и не все понимаю). И я наверное отстану со своими глупыми вопросами...
"Тебе то может на меня и насрать, но твои глаза меня обожают!"

Последний раз редактировалось ImmortalAlexSan; 10.04.2010 в 00:55.
ImmortalAlexSan вне форума Ответить с цитированием
Старый 10.04.2010, 01:08   #38
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

да... это замечательный компонент во всех отношениях
Код:
procedure Tipt.nmDataReceived(Sender: TComponent; NumberBytes: integer;
  FromIP: string; Port: integer);
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 10.04.2010, 15:55   #39
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Итак, я сделал передачу звука с клиента на сервер, но с помощью компонентов ACMIn, ACMOut, ACMDlg, idUDPClient, idUDSocket, все работает, все замечательно. Но в целях изучения, хочу попробывать в ручную задать параметры компонентов ACMIn, ACMOut, ACMDlg, вот код:
Код:
procedure TForm1.ParamAcmDlg(dlg:TACMdlg);
begin
With dlg do
begin
nChannels:=1;
wFormatTag:=1;
nSamplesPerSec:=44100;
nBitsPerSample:=16;
Device:=0;
WaveDataLength:=nSamplesPerSec*nChannels*nBitsPerSample div 8;
WaveDataLength:=(WaveDataLength div 2);
nBlockAlign:=nChannels*nBitsPerSample div 8;
nAvgBytesPerSec:=nSamplesPerSec*nChannels*nBitsPerSample div 8;
cbSize:=0;
end;
end;

procedure TForm1.ParamAcmIn(inn:TACMIn);
begin
with inn do
begin
BufferSize:=wavedatalength;
DeviceID:=inn.DeviceID;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ParamAcmDlg(ACMDlg1);
ParamAcmIn(ACMIn1);
IdUDPClient1.BufferSize:=WaveDataLength;
IdUDPClient1.Active:=false;
IdUDPClient1.Port:=10090;
IdUDPClient1.Active:=true;
ACMIn1.Active:=true;
end;

procedure TForm1.ACMIn1Data(Sender: TACMComponent; aDataPtr: Pointer;
  aDataSize: Cardinal);
begin
IdUDPClient1.SendBuffer(aDataPtr^,aDataSize);
end;
Первые две процедуры я сам написал, только вот теперь проблема, при нажатии на кнопку выскакивает отладчик, и ошибка. Что я не так сделал или что недописал? Если можете подсказать - подскажите пожалуйста.
P.S. Это клиентская часть.
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Старый 10.04.2010, 22:52   #40
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Почему на сервере я не могу воспроизвести звук с помощью WAveOut? Я устал биться над этим уже. Посмотрите пожалуйста код сервера. Отправить нормально получается с WaveIn с клиента, и принять могу на сервере с помощью компонентов ACM, но вот с помощью WAveOut не получается...
Код:
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
  Var buf:Pointer;
begin
GetMem(buf, Adata.size);
move(adata,buf,Adata.size);
with WaveHdrOut do
begin
dwBufferLength := Adata.Size;
dwBytesRecorded :=0;
dwUser := 0;
dwFlags := 0;
dwLoops := 1;
end;
waveOutPrepareHeader(WaveOut,buf,sizeof(TwaveHdr));
waveOutWrite(WaveOut,buf,sizeof(TwaveHdr));
end;
Ваши все вышепредложенные способы тоже не работают, либо шипение в колонках, либо ничего не принимается, либо ошибка и отладчик. Помогите добить пожалуйста...
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WEB - программист. Временный сотрудник - работа дому. Julia G Фриланс 2 23.03.2010 21:45
Как найти временный файл bakabul JavaScript, Ajax 1 01.11.2008 09:44
Временный проект по DirectX (Москва) _HR Фриланс 1 19.02.2008 13:14
Запись в буфер Delphi & Asm SteelRat Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 14 27.02.2007 22:49