PDA

Ver la Versión Completa : UDP Ayuda.


Descendents
28-10-2003, 10:25:37
procedure TForm1.WaveIn1Data(data: Pointer; size: Integer);
begin
UDPC.Sendbuffer(data,size);
end;

esto de aqui arriba me da error.No se si lo hago mal o que pasa.
me da error en la linea: UDPC.Sendbuffer(data,size);

Utilizo las Indy UDPCLIENT, UDPSERVER.

Igual es que lo hago mal, y un pointer no se envia asi.No se.

Agradeceria ayuda porfavor
Muchas gracias
Un saludo.

jachguate
29-10-2003, 01:06:42
Hey amigo. Ya llevas 30 mensajes, y me parece extraño que aún no completes la información que podria ayudar a ayudarte. El hecho es que no indicas ni el mensaje de error, ni si este ocurre en tiempo de ejecución o en tiempo de compilación....

Te recomiendo que leas la guia de estilo (http://www.clubdelphi.com/foros/guiaestilo.php).

Hasta luego.

;)

Descendents
29-10-2003, 18:49:31
SI Quizas tienes razón.
Bueno mi problema es el siguiente.
Quiero enviar Por UDPClient ( el componente de las INDY), la siguiente informacion:

UDPC.SendBuffer(data^,size);

//EVENTO DE CUANDO HABLO
procedure TForm1.ACMWaveIn1Data(data: Pointer; size: Integer);
begin
UDPC.SendBuffer(data^,size);
end;

este es un evento que me recoje la voz cuando hablo por el micro.
Pues bien yo quiero enviar como ya he dicho antes el data:Pointer y el size:integer.

Diria que con ^ ya lo he conseguido, (porque antes hacia
UDPC.SendBuffer(data,size) y me daba error ahora envio UDPC.SendBuffer(data^,size) y ya no me da error ).

Pero ahora me encuentro que al recibir el UDPSERVER (de las indy), me llega un adata:Tstream;

// EVENTO DE CUANDO RECIBO
procedure TForm1.UDPSUDPRead(Sender: TObject; AData:TStream; ABinding: TIdSocketHandle);

Y la funcion que me reproduce el sonido es la siguiente:
ACMWaveOut1.PlayBack(data:Pointer,size:Integer);

Necesito poder reproducir lo que me llega pasandolo por la funcion ACMWaveOut1.PlayBack .Pasar el Tstream a pointer o algo asi.


Haber si alguien puede ayudarme.
En definitiva es voz por IP.que no se como enviarlo y reproducirlo correctamente.

Muchas gracias

jachguate
30-10-2003, 16:05:12
No se si tu componente de audio pueda leer datos desde un Stream... que sería lo mas indicado.

Si necesitas un buffer, podes leer los datos desde el stream a un área de memoria para el efecto, y luego pasarsela a tu componente.

Algo como:


procedure TForm1.UDPSUDPRead(Sender: TObject; AData:TStream; ABinding: TIdSocketHandle);

Var
Buffer : Array of Byte;
Tamano : Integer;

Begin
Tamano := AData.Size;
SetLength(Buffer, Tamano - 1);
AData.Read(Buffer[0], Tamano);
ACMWaveOut1.PlayBack(@Buffer[0],Tamano);
SetLength(Buffer, 0);
End;


No lo he probado, ni lo haré... asi que puede contener errores, pero con esa idea debiera funcionar.

(Espero al menos, un par de chelas!!... jejeje).

Hasta luego.

;)

pd. por cierto, te recomiendo el uso de las etiquetas [ code] y [ /code] cuando escribas trozos de código... miras la diferencia?

Descendents
30-10-2003, 20:22:48
Buenas de nuevo
Pues mira antes de esto que tu me has dicho, habia hecho algo parecido, y me funcionaba, pero me funcionaba un poco mal.

Pero lo que tu me has pasado mucho mejor, i funciona perfectamente.

Solo he cambiado el (-) por un (+), y muy bien.

jachguate
30-10-2003, 20:28:44
guenisimo!

Espero mis chelas... ;)