Foros del Web » Programación para mayores de 30 ;) » Programación General »

Utilizar el modem...

Estas en el tema de Utilizar el modem... en el foro de Programación General en Foros del Web. Hola a todos. Alguien sabe, en vb6, como, luego de conectarse al modem, enviar un mensaje o sonido por la linea telefónica. Saludos a todos....
  #1 (permalink)  
Antiguo 12/11/2004, 19:40
 
Fecha de Ingreso: febrero-2003
Ubicación: Costa Rica
Mensajes: 133
Antigüedad: 21 años, 2 meses
Puntos: 0
Pregunta Utilizar el modem...

Hola a todos.
Alguien sabe, en vb6, como, luego de conectarse al modem, enviar un mensaje o sonido por la linea telefónica.

Saludos a todos.
  #2 (permalink)  
Antiguo 13/11/2004, 22:38
Avatar de scorpion25acv  
Fecha de Ingreso: junio-2004
Ubicación: Costa Rica
Mensajes: 11
Antigüedad: 19 años, 10 meses
Puntos: 0
Posible solucion ;)

Puedes utilizar un componente (ocx) denominado MSComm, que lo puedes ubicar en el menú Proyecto >> Componentes... (Microsoft Comm Control 6.0) o inclusive ver 5.0 dependiendo de la version de VB.
Ahora, si bien creo que para lo anterior (y como es la unica manera desde VB que conosco) debes estar usandolo, xq si no lo haces me cuentas como !, pero bueno... este componente tiene un evento llamado OnComm, donde registra a nivel de modem, puedes consultar ya sea por medio de un select eventos : el estado de la linea, del mismo modem, de la trasmision, de los buffers de Entrada/salida , todo esto , por ejemplo..

Select Case MSComm1.CommEvent

Case comEvSend ' ENVIAR
Case comEvReceive ' RECIBIR
Case comEvCTS ' Clear to send
Case comEvDSR 'Conjunto de datos preparado
Case comEvCD 'Detecta portadora
Case comEvRing ' Llamando / timbrando
Case comEvEOF ' Fin de archivo
...

Sobre todo esto buscas en la ayuda (MSDN) para las propiedades, constantes, eventos, y si necesitas un ejemplo, yo baje uno de ...

http://www.lawebdelprogramador.com/temas/mscomm1.php

talves lo comprendas y te sirva de ayuda!!!

Pillate esta otra, por si acaso...

http://www.programacion.com/foros/32/msg/142238/

Última edición por scorpion25acv; 13/11/2004 a las 22:45
  #3 (permalink)  
Antiguo 15/11/2004, 14:05
 
Fecha de Ingreso: febrero-2003
Ubicación: Costa Rica
Mensajes: 133
Antigüedad: 21 años, 2 meses
Puntos: 0
De acuerdo gracias por responder... y otros comentarios.

Antes que nada te agradezco que me hayas respondido tan rápido.

Como decís, si utilizo el mscomm.
El ejemplo que me aconsejas analice, utiliza el susodicho componente para conectar dos maquinas, interesante.
Sucede que como te digo, todo eso lo puedo hacer sin problemas, manejo los eventos también sin problema, logro la comunicación, puedo transmitir datos y todo eso, pero no puedo hacer que se emita un sonido.

Trato de utilizar esa línea abierta y conectada, para que por ella no se transmitan datos, solo se emita un sonido, como un pito o un mensaje.

He pensado que si pudiese lograr averiguar cual es el manejador (handle) del puerto abierto o del mscomm, quizás lo pueda poner en el uDevideID de estas funciones, porque el hMidiout se debe referir al dispositivo que reproduce el sonido, supongo...

Public Declare Function midiOutClose Lib "winmm.dll" _
(ByVal hMidiOut As Long) As Long

Public Declare Function midiOutOpen Lib "winmm.dll" _
(lphMidiOut As Long, _
ByVal uDeviceID As Long, _
ByVal dwCallback As Long, _
ByVal dwInstance As Long, _
ByVal dwFlags As Long) As Long

Public Declare Function midiOutShortMsg Lib "winmm.dll" _
(ByVal hMidiOut As Long, _
ByVal dwMsg As Long) As Lo


En dwMsg pondria el mensaje o el conjunto de sonidos a emitir con una estructura así

midiOutShortMsg hMidiOut, 6537277 por ejemplo..


La gente del KPDteam me da esta explicación de estas funciones pero no logro interpretarlas correctamente (debido a mi bajo nivel de ingles supongo...)

• lphmo
Address of an HMIDIOUT handle. This location is filled with a handle identifying the opened MIDI output device. The handle is used to identify the device in calls to other MIDI output functions.

• uDeviceID
Identifier of the MIDI output device that is to be opened.

• dwCallback
Address of a callback function, an event handle, a thread identifier, or a handle of a window or thread called during MIDI playback to process messages related to the progress of the playback. If no callback is desired, specify NULL for this parameter. For more information on the callback function, see MidiOutProc.

• dwCallbackInstance
User instance data passed to the callback. This parameter is not used with window callbacks or threads.

• dwFlags
Callback flag for opening the device. It can be the following values:
CALLBACK_EVENT
The dwCallback parameter is an event handle. This callback mechanism is for output only.
CALLBACK_FUNCTION
The dwCallback parameter is a callback function address.
CALLBACK_NULL
There is no callback mechanism. This value is the default setting.
CALLBACK_THREAD
The dwCallback parameter is a thread identifier.
CALLBACK_WINDOW
The dwCallback parameter is a window handle.

Quizás a ti te resulte mas claro y tengas algún comentario al respecto, te agradeceré…

‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
Otra alternativa que estoy probando es la tapiRequestMakeCall

The tapiRequestMakeCall function requests the establishment of a voice call. A call-manager application is responsible for establishing the call on behalf of the requesting application, which is then controlled by the user's call-manager application.

Según lo que entiendo, la funcion solicita el establecimiento una llamada de vos

(de traducción por altavista sorry)
La función del tapiRequestMakeCall solicita el establecimiento de una llamada de voz. Un uso del llamar-encargado es responsable de establecer el favor del invitar del uso de petición, que entonces es controlado por el uso del llamar-encargado de user's.

cuya estructura es la siguiente:

Declare Function tapiRequestMakeCall Lib "TAPI32.DLL" (ByVal Dest As String, ByVal AppName As String, ByVal CalledParty As String, ByVal Comment As String) As Long

en donde

• lpszDestAddress
A pointer to a memory location where the null-terminated destination address of the call request is located. The address can use the canonical address format. Validity of the specified address is not checked by this operation. The maximum length of the address is TAPIMAXDESTADDRESSSIZE characters, which includes the NULL terminator.

• lpszAppName
A pointer to a memory location where the null-terminated user-friendly application name of the call request is located. This pointer can be left NULL if the application does not supply an application name. The maximum length of the address is TAPIMAXAPPNAMESIZE characters, which includes the NULL terminator. Longer strings are truncated.

• lpszCalledParty
A pointer to a memory location where the null-terminated called party name for the called party of the call is located. This pointer can be left NULL if the application does not wish to supply this information. The maximum length of the string is TAPIMAXCALLEDPARTYSIZE characters, which includes the NULL terminator. Longer strings are truncated.

• lpszComment
A pointer to a memory location where the null-terminated comment about the call is located. This pointer can be left NULL if the application does not supply a comment. The maximum length of the address is TAPIMAXCOMMENTSIZE characters, which includes the NULL terminator. Longer strings are truncated.


el ejemplo que pone nuestros amigos del mismo team es el siguiente:

'Example by Joacim Andersson ([email protected]) 'Author comments: I often get asked the question "How can 'I dial a phone number from VB?". Well, you can add 'the MSCOMM32.OCX control to a form but that isn't necessary 'if you just want to dial a phone number.
Private Declare Function tapiRequestMakeCall Lib "TAPI32.DLL" (ByVal Dest As String, ByVal AppName As String, ByVal CalledParty As String, ByVal Comment As String) As Long
Private Sub PhoneCall(sNumber As String, sName As String) Dim lRetVal As Long lRetVal = tapiRequestMakeCall(Trim$(sNumber), App.Title, Trim$(sName), "") If lRetVal <> 0 Then 'Couldn't make the call. 'Take appropriate action End If End Sub
Private Sub Form_Load() PhoneCall "123456", "TheName" End Sub
(y esta es la forma que utilizaría para llamar sin el mscomm…)

Y para explicar sus parámetros (siguiendo con altavista)

DestAddress
una posición de memoria en donde la dirección de destinación nulo-terminada de la petición de la llamada se localiza. La dirección puede utilizar el formato de dirección canónico. La validez de la dirección especificada no es comprobada por esta operación

AppName
una posición de memoria en donde el nombre de uso fácil nulo-terminado del uso de la petición de la llamada se localiza. Este indicador puede ser dejado NULO si el uso no provee un nombre del uso

CalledParty
una posición de memoria en donde el nombre llamado nulo-terminado del partido para el partido llamado de la llamada se localiza. Este indicador puede ser dejado NULO si el uso no desea proveer esta información.

Comment
una posición de memoria en donde el comentario nulo-terminado sobre la llamada se localiza. Este indicador puede ser dejado NULO si el uso no provee un comentario.

Aparentemente, esta función, llama y pretende que uno levante el fono para hablar, por ello, si luego de efectuar la llamada emito un sonido por los parlantes del equipo, es posible que se escuche desde el otro lado si tengo el micrófono abierto, pero me parece una perrogullada (léase situación no muy católica que digamos…)
Bueno, hasta aquí llegue, espero no aburrirte con este tema y me parece que me he extendido mucho porque fuiste la única persona que alguna vez me ha respondido en toda mi vida en este foro. Quizás porque mis consultas no fueron muy elocuentes o interesantes o no se por que, pero desde ya gracias por contestarme.

Si tenes algún comentario a lo escrito, esperare tu respuesta. Saludos cordiales.
  #4 (permalink)  
Antiguo 16/11/2004, 04:30
Avatar de scorpion25acv  
Fecha de Ingreso: junio-2004
Ubicación: Costa Rica
Mensajes: 11
Antigüedad: 19 años, 10 meses
Puntos: 0
Incognita???

A ver si entiendo, deseas establecer la comunicacion entre las 2 pc's, pero despues de esto simular como "que hablen entre ellas " sonidos van , sonidos vienen... pero hay un pequeño detalle, y es el caso comun de "levantar el telefono " mientras: conectas a internet via telefonica, envias un fax, inicias una sesion remota en hyperterminal, por ejemplo, entonces... como quitar el ruido de la portadora? la conmutacion que realiza el modem para estos casos no lo entiendo aún muy bien, no es lo mismo que realizar una llamada telefonica, usando la pc y tu kit multimedia para escuchar y hablar... aunque te pueden servir tratar de manejarlo usando talves la dll que mencionabas (winmm.dll), esta libreria es utilizada segun vi por muchas aplicaciones multi-media de windows, jeje será por el nombre... pero por el manejo de la misma me llevaría tiempo entenderla, ya que usando librerias y api¿s , estoy comenzando, pero si encuentro algo, pues por ahi te aviso...

Suerte..
P.D. te podria contactar, proximamente, para tratar el tema de envio de archivos usando el MSComm, enfaticamente el caso de enviar , por ejemplo : un archivo llamado test.exe ( .dat, .txt, .doc, etc, no me interesa la extension) de una pc a otra... tengo mis dudas al respecto, pero para no invadir el tema, me dices y creo uno nuevo...
  #5 (permalink)  
Antiguo 17/11/2004, 11:58
 
Fecha de Ingreso: febrero-2003
Ubicación: Costa Rica
Mensajes: 133
Antigüedad: 21 años, 2 meses
Puntos: 0
Hola scorpion, lo que basicamente estoy buscando es, aunque parezca simple, no conectar dos pc, que de ello existen muchisimos ejemplos, solo quiero hacer una llamada a un teléfono común (que no este conectado a una pc) y romperle el oido con un pito...
No, no es en serio, quiero como por ejemplo lo hace el BitWare (creo que se escribe asi) mandar un mensaje pregrabado, como un saludo o un sonido, luego de que el telefono haya contestado. Solo eso, simple no?? Saludos cordiales.
  #6 (permalink)  
Antiguo 23/11/2004, 00:11
Avatar de scorpion25acv  
Fecha de Ingreso: junio-2004
Ubicación: Costa Rica
Mensajes: 11
Antigüedad: 19 años, 10 meses
Puntos: 0
Hola, compatriota, creo q hay otro componente en VB6, donde se te puede facilitar tu idea, pero dame algun tiempo mientras lo ubico y termino con un proyecto de graduacion que realizo, a ver si me graduo.. por ahi te aviso, o me contactas al MSN, [email protected]
  #7 (permalink)  
Antiguo 24/11/2004, 08:02
Avatar de lic_dahool  
Fecha de Ingreso: noviembre-2003
Mensajes: 418
Antigüedad: 20 años, 5 meses
Puntos: 0
En esta página http://www.tapiex.com/download.htm tienes unos controles para hacer lo que quieres, parece que son trial, pero no los he probado.

Saludos.
__________________
La cantidad total de inteligencia del planeta permanece constante.
La población, sin embargo, sigue aumentando.

COLE


:cool: Los ordenadores no resuelven problemas ... ejecutan soluciones.
Laurent Gasser


Tienes alguna duda :pensando: ? >>> www.google.com :aplauso: <<<
  #8 (permalink)  
Antiguo 24/11/2004, 18:21
 
Fecha de Ingreso: febrero-2003
Ubicación: Costa Rica
Mensajes: 133
Antigüedad: 21 años, 2 meses
Puntos: 0
De acuerdo Muy buena la TAPIEx... Gracias.

Muchas gracias lic_dahool, hace mas o menos un año que estoy buscando esto...

Es exactamente lo que necesito, pero parecería que la alegria no puede ser completa. Esta buena gente vende ese componente en (no me acuerdo cuanto)... $ y sucede que no estoy en condiciones de pagarlo, sobre todo que se trata de un proyecto personal mas que nada con fines de aprendizaje.
Su prospera, quien sabe, pero por ahora...

Baje dos versiones, la 3.3.7 y una libreria de prueba. Las dos funcionan muy bien, pero con el inconveniente que te comento ($$$). Entonces busca que te busca en funcion de tu recomendacion, encontre unos programitas para abrir las versiones 2.7, 2.7.5, 2.7.6 y la 3.3.6.28, y ninguna funciona con la 3.3.7 o con la dll de la libreria de prueba.

Bueno, cualquier comentario al respecto o solución, seràn vienvenidas. Desde ya muchas gracias.

Saludos Cordiales.
  #9 (permalink)  
Antiguo 16/01/2009, 20:59
 
Fecha de Ingreso: enero-2009
Mensajes: 1
Antigüedad: 15 años, 3 meses
Puntos: 0
De acuerdo duda sobre el tema

Yo tambien tengo el mismo problema, estoy creando un contador de llamadas pro no se como hacer que al descolgar el telefono y marcar el numero se registre en una base de datos, si saben por favor me dice

nos vemos.

Última edición por EAGLECORP; 16/01/2009 a las 21:07
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 20:56.