Ayuda con TAPI!!

Estado
Cerrado para nuevas respuestas.

Peke

Lanero Regular
1 Dic 2003
10
Hola Laneros:

Estoy programando en Visual Basic Net y tengo que realizar una conexión a través del módem para enviar y recibir datos y me han recomendado que utilice las TAPI y la verdad es que estoy bastante verde. He mirado por la red y he encontrado algunas cosas pero no lo tengo muy claro:

Donde puedo encontrar las cabeceras de las funciones, las estructuras y las constantes?

Donde le indico la velocidad, paridad, longitud de palabra .. a través de la estructura linecallparam?

Cuales son las funciones para poder enviar y recibir los datos?

Bueno .. como podeis ver voy bastante perdido ... si alguien me puede dar una ayudita!!!

Muchas gracias de antemano.
 

Peke

Lanero Regular
1 Dic 2003
10
Si que he buscado, pero no he encontrado como definir las cabeceras de las funciones en un módulo de mi aplicación.
Si que he encontrado algunos ejemplos por la red pero sólo inicializar el tapi, encontrar las líneas activas y hacer la llamada y son de la versión 1.4 más o menos .. no se si valdrán para la 3.0.

Estoy intentando programar esta parte en Visual Basic.Net a ver si esto me funciona al menos .. aunq tengo algunas dudillas sobre todo esto y sobre que estructuras son las que realmente debo usar y que parámetros debo modificar.

Alguien sabe como pasar la dirección de una función como parámetro? Estoy probando lo del addressof y lo de delegate pero no me funciona.
 

Gaenya

Lanero Reconocido
2 Dic 2003
483
Peke en el msdn esta como trabajar con TAPI3, no tenes que definir ninguna cabecera porque se ya viene con controles ActiveX para eso, lo que no estoy seguro es si los controles estan para win9x o solo para Win2000 y XP.
Lo que si es que para envio de datos no he encontrado ningun ejemplo....
 

atk_pantera

Lanero Regular
11 Ago 2003
85
Pues yo pienso que usar directamente TAPI esta como dificil ademas que te toca tener mas control de los dispositivos, en cambio si usas sockets podes obtener el mismo resultado con menor esfuerzo, con los sockets cuando abris la conexion le podes decir que pregunte para marcar el telefono y todo el cuento.
 

Peke

Lanero Regular
1 Dic 2003
10
Varios amigos me habían aconsejado utilizar el control MSComm pues dicen que es más sencillo que el Tapi, pero en el trabajo me dijeron que lo hiciera con esto y tengo la espinita de ver si puedo sacarlo adelante utilizando el tapi.

Con las funciones del tapi 3.0 no he encontrado ningún ejemplo para ver que pasos seguir aunq imagino que será similar a los de las versiones anteriores. Si teneis algo para que pueda guiarme un poco os agradeceria que me lo pasarais.

He hecho algunas pruebecillas utilizando las funciones que he encontrado en los ejemplos y pasándolas a vb.net:

Utilizo esta línea de código para inicializar la línea:

rc = lineInitialize(hLineApp, hInst, AddressOf LineCallBackProc, "Tapi App", numLines)

Debería devolverme en "numlines" los dispositivos que tengo conectados, es decir los modems, pero me muestra 6 dispositivos cuando solo tengo un módem conectado, sé cuál es el módem porque coincide el maxrate(velocidad máx) con la del módem que tengo instalado, pero no se si es normal que aparezcan los 6 dispositivos, y si es así cuál es la forma de saber cuál tiene el módem.

Las versiones de tapi para cada línea con la función:
rc = lineNegotiateAPIVersion(hLineApp, line, LowAPI, HiAPI, APIversions(line), lxid)

me dice que es la 1.3 para un dispositivo y la 1.4 para el resto, esto tampoco lo acabo de entender.

Al obtener las características de cada dispositivo con la función:

rc = lineGetDevCaps(hLineApp, CurLineID, APIversions(CurLineID), 0, linecaps)

donde linecaps es una estructura linedevcaps, me dice que el número de terminales conectados dwnumTerminals es 0 en todos los dispositivos, no se si esto es correcto.

Bueno ... os he comentado un poco lo que he ido probando y los problemas con los que me estoy topando ... a ver si alguien me puede hacer algun comentario al respecto y dar una ayudita.

Gracias

Ahh, Gaenya ... hay algunas funciones en el msdn para el envío de datos aunq no he encontrado ningún ejemplete, a ver si puedo aclarar primero la conexión al otro módem y luego ya realizaré el envio y recepción aunq no puedo encantarme. Gracias de todas formas ... si encuentras algo no dudes en avisarme.
 

Gaenya

Lanero Reconocido
2 Dic 2003
483
Yo en estos momentos estoy intentando trabajar con TAPI3 pero en VB6, lo que he podido ver es lo siguiente:
lineInitialize te dice que hay 6 dispositivos porque el cuenta todos los tsp(Tapi Service Provider) que tengas en la maquinba por ejemplo el H323, esto lo puedes mirar creando un objeto address en el que puedes llevar cada objeto de la coleccion addresses del objeto tapi que inizialisaste.
Dea uerdo al tsp que tomes tienes diferentes linedevcaps, y pr consiguiente diferentes Terminals, por eso se me ocurre que puede ser que en algunos no tengas terminales.
El objeto address tiene la funcion connect con la que creas la conección con la maquina cliente.
Hasta ahora esto es lo que tengo, tal vez esto te sirva y apartir de ahi nos podamos ayudar mas.

Public vTapi As TAPI3Lib.TAPI
Public vAddress As TAPI3Lib.ITAddress
Public vVar As TAPI3Lib.ITAddressCapabilities
Public vMedia As TAPI3Lib.ITMediaSupport
Public vCControl As TAPI3Lib.ITBasicCallControl
Public vTerminal As TAPI3Lib.ITTerminal
Public vTerminalSupport As TAPI3Lib.ITTerminalSupport
Public vSControl As TAPI3Lib.ITStreamControl
Public vStream As TAPI3Lib.ITStream
Public vColStreams As TAPI3Lib.ITCollection

Private Sub Form_Load()
Dim vRet As Long
Dim lngIndice As Long
Set vTapi = New TAPI3Lib.TAPI
vTapi.Initialize
For Each vAddress In vTapi.Addresses
Set vMedia = vAddress
Set vVar = vAddress
MsgBox vAddress.ServiceProviderName
If Trim(UCase(vAddress.ServiceProviderName)) = "H323.TSP" Or Trim(UCase(vAddress.ServiceProviderName)) = "NBXTSP.TSP" Then
Set vCControl = vAddress.CreateCall("10.235.235.67", LINEADDRESSTYPE_IPADDRESS, TAPIMEDIATYPE_AUDIO)
vCControl.Connect True
Dim objDialedCallInfo As ITCallInfo
Set objDialedCallInfo = vCControl
Set vTerminalSupport = vAddress
Set vTerminal = vTerminalSupport.GetDefaultStaticTerminal(TAPIMEDIATYPE_AUDIO, TD_RENDER)
Set vSControl = vCControl
Set vColStreams = vSControl.Streams

For lngIndice = 1 To vColStreams.Count
Set vStream = vColStreams(lngIndice)
Call vStream.SelectTerminal(vTerminal)
vStream.StartStream
MsgBox vStream.Name
Next
vStream.SelectTerminal vTerminal
MsgBox vTerminal.MediaType

vCControl.Disconnect DC_NORMAL
End If
Next
End Sub

En este codigo lo que yo estoy intentando es utilizar la tajeta de sonido para reproducir sonido enviado a travez de la conexion, aunque aun no lo logro pero esto talvez te sirva de inicio.
 
  • Me gusta
Reacciones: 2 personas

Peke

Lanero Regular
1 Dic 2003
10
El tema es que para los 6 tsp's el linecaps.dwnumterminals es "0", no se porque ... por ahora he seguido un ejemplo y cargo en un combo los tsp's y selecciono uno manulamente aunq tendré que hacerlo automáticamente más adelante, entonces no se como seleccionar el correcto.

Voy a mirar el código que me has pasado y seguir probando...
 

Gaenya

Lanero Reconocido
2 Dic 2003
483
Me interesaria ese ejemplo que te conseguiste para mirarlo y ver que puedo saccar de ahi, si puedes dame la direccion.
 
  • Me gusta
Reacciones: 2 personas

Peke

Lanero Regular
1 Dic 2003
10
No recuerdo de donde lo bajé pero aquí te lo dejo adjunto.

Un saludo
 

Archivos adjuntos

  • tapi_src.zip
    37.7 KB · Visitas: 333
  • Me gusta
Reacciones: 2 personas
Estado
Cerrado para nuevas respuestas.

Tus temas seguidos