Español
Foro

TAPI-Problema

 

Matthias
Arlt
¡Hola en el Runde

Yo habe mich veces en el Netz umgesehen y me de algunos VB- y Delphi-Codes folgende TAPI-Rutina zusammengebastelt. El funktioniert soweit auch. Beim Aufruf de linemakecall se el Verbindung auch korrekt aufgebaut. Aunque knallts entonces con el bekannten Meldung Anwendungsfehler: Exception....... Yo habe ya Verschiedenes durchprobiert, aber sin positives Ergebnis. Und bevor Yo mich hier irgendwie verrenne, hoffe Yo muy en Eure hilfreichen Ideen.
Hier veces el Code:
Def LineInit(5) !tapi32,lineInitialize
Def LineInitEx(7) !tapi32,lineInitializeExA
Def LineNegotiateAPIVersion(6) !tapi32,lineNegotiateAPIVersion
Def LineGetDevCaps(5) !tapi32,lineGetDevCaps
Def LineOpen(9) !tapi32,lineOpenA
Def LineSetStatusMessages(3) !tapi32,lineSetStatusMessages
Def LineMakeCall(5) !tapi32,lineMakeCall
Def LineShutdown(1) !tapi32,lineShutdown
declarar TapiHdl#,TapiHdl&,TapiNumDevs#,TapiCallBack#,TapiVer#,extID#,ghLine#,ghCall#
declarar TapiLineDevCaps#,LineCallParams#,TapiReturn&,TapiDevs&,ChooseDev&,DialNumber$
DialNumber$=123456 fiktive Telefonnummer

proc MakeTapiCall

    dim TapiHdl#,4
    dim TapiCallBack#,4
    dim TapiNumDevs#,4
    dim extID#,16
    dim ghLine#,4
    dim ghCall#,4
    dim TapiVer#,4
    long TapiVer#,0=$00020000	dwTapiVersion
    dim TapiLineDevCaps#,270
    long TapiLineDevCaps#,0=270     dwTotalSize
    dim LineCallParams#,236
    long LineCallParams#,0=236      dwTotalSize
    long LineCallParams#,4=1        dwBearerMode = LINEBEARERMODE_VOICE
    long LineCallParams#,16=4       dwMediaMode = LINEMEDIAMODE_INTERACTIVEVOICE
    long LineCallParams#,4=8        dwBearerMode = LINEBEARERMODE_DATA
    long LineCallParams#,16=16      dwMediaMode = LINEMEDIAMODE_DATAMODEM
    long LineCallParams#,20=2       dwCallParamFlags = LINECALLPARAMFLAGS_IDLE
    long LineCallParams#,24=1       dwAddressMode = LINEADDRESSMODE_ADDRESSID
    long LineCallParams#,28=0       dwAddressID
    TAPI inicializar:
    TapiReturn&=LineInit(TapiHdl#,%hInstance,TapiCallBack#,0,TapiNumDevs#)
    TapiReturn&=LineInitEx(TapiHdl#,%hInstance,TapiCallBack#,0,TapiNumDevs#,TapiVer#,0)
    imprimir LineInitEx +str$(TapiReturn&)
    TapiHdl&=long(TapiHdl#,0)
    TapiDevs&=long(TapiNumDevs#,0)
    imprimir TapiNumDevs +str$(long(TapiNumDevs#,0))
    todos Tapi-Devices abfragen a Modem gefunden...
    ChooseDev&=0

    whileloop TapiDevs&

        ChooseDev& = &bucle - 1
        lokal a verwendende API-Versión aushandeln:
        TapiReturn&=LineNegotiateAPIVersion(TapiHdl&,ChooseDev&,$00020000,$00030000,TapiVer#,extID#)
        imprimir NegotiateAPI +str$(TapiReturn&)
        imprimir LocalAPI $000+hex$(long(TapiVer#,0))

        if TapiReturn& = 0

            Device-Parámetro abfragen:
            TapiReturn&=LineGetDevCaps(TapiHdl&,ChooseDev&,long(TapiVer#,0),0,TapiLineDevCaps#)
            imprimir GetDevCaps +str$(TapiReturn&)
            imprimir dwBearerModes +str$(long(TapiLineDevCaps#,52))
            imprimir dwMaxRate +str$(long(TapiLineDevCaps#,56))
            imprimir dwMediaModes +str$(long(TapiLineDevCaps#,60))

            if TapiReturn& = 0

                si Modem gefunden...

                ifnot (long(TapiLineDevCaps#,52)=1) and (long(TapiLineDevCaps#,56)>=9600) and (long(TapiLineDevCaps#,60)=16)

                    if (long(TapiLineDevCaps#,52)=1) or (long(TapiLineDevCaps#,56)>=9600) or (long(TapiLineDevCaps#,60)=16)

                        clear ghLine#
                        TapiReturn&=LineOpen(TapiHdl&,ChooseDev&,ghLine#,long(TapiVer#,0),0,0,1,0,0)
                        imprimir LineOpen +str$(TapiReturn&)

                        if TapiReturn& = 0

                            TapiReturn&=LineSetStatusMessages(long(ghLine#,0),$2+$4+$8+$80+$100+$400+$40000,1)
                            imprimir SetStatusMessages +str$(TapiReturn&)

                            if TapiReturn& = 0

                                imprimir Anwahl de +DialNumber$+  con Gerät +str$(ChooseDev&)
                                clear ghCall#
                                TapiReturn&=LineMakeCall(long(ghLine#,0),ghCall#,addr(DialNumber$),0,LineCallParams#)
                                imprimir MakeCall +str$(TapiReturn&)
                                messagebox(Anwahl erfolgreich !,,0)
                                imprimir Anwahl erfolgreich !
                                caso TapiHdl& <> 0 : LineShutdown(TapiHdl&)
                                romper

                            endif

                        endif

                        caso TapiHdl& <> 0 : LineShutdown(TapiHdl&)

                    endif

                endif

            endif

        endif

    wend

    disponer TapiHdl#
    disponer TapiNumDevs#
    disponer extID#
    disponer ghLine#
    disponer ghCall#
    disponer TapiCallBack#
    disponer TapiVer#
    disponer TapiLineDevCaps#
    disponer LineCallParams#

ENDPROC

cls
MakeTapiCall
waitinput

Matthias
 
WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia
23.01.2008  
 



En beiden Profanversionen (Profano 7 ff. / 9.1sh) Choque a selber Punto?

Leider Yo kein tapifähiges Gerät en lo wirklich testen a puede...

PS: Codes no en
pero en [CODE]
 
23.01.2008  
 




Matthias
Arlt
¡Hola IF
Sí, Choque a gleicher Punto. Mit el Diferencia, daß en Profano 7 el Verbindung a para Wegklicken el Fehlermeldung bestehen restos y en XProfan inmediatamente, also todavía während des Wahlvorgangs abbricht. Bin por lo tanto algo ratlos...

In CODE en lugar de en BOX: Sí, eigentlich klar. Yo habe momentan testweise una kleineren Monitor en Gebrauch con sólo 800x600. Como läßt el XProfan-Página algo schwierig handhaben. Und como passiert el ya veces...
 
WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia
23.01.2008  
 



Könntest Usted veces un directorio c:p00x invertir y folgenden Code ausführen?
proc __xpse__endofprogram__

    REM {{SOMEEXTRAENDCOMMAND}}
    end

ENDPROC

DECLARE TAPIHDL#,TAPIHDL&,TAPINUMDEVS#,TAPICALLBACK#,TAPIVER#,EXTID#,GHLINE#,GHCALL#,TAPILINEDEVCAPS#,LINECALLPARAMS#,TAPIRETURN&,TAPIDEVS&,CHOOSEDEV&,DIALNUMBER$
declarar __gallog__%
__gallog__%=0

proc __log__

    parámetros u$,s$
    assign #89,C:P00X	api.debug
    append #89
    imprimir #89,mkstr$(chr$(9),__gallog__%)+s$
    close #89
    volver u$

ENDPROC

assign #89,C:P00X	api.debug
rewrite #89
close #89
__log__ @$(0), DEF LINEINIT(5) !*tapi32*,*lineInitialize*
DEF LINEINIT(5) !tapi32,lineInitialize
__log__ @$(0), DEF LINEINITEX(7) !*tapi32*,*lineInitializeExA*
DEF LINEINITEX(7) !tapi32,lineInitializeExA
__log__ @$(0), DEF LINENEGOTIATEAPIVERSION(6) !*tapi32*,*lineNegotiateAPIVersion*
DEF LINENEGOTIATEAPIVERSION(6) !tapi32,lineNegotiateAPIVersion
__log__ @$(0), DEF LINEGETDEVCAPS(5) !*tapi32*,*lineGetDevCaps*
DEF LINEGETDEVCAPS(5) !tapi32,lineGetDevCaps
__log__ @$(0), DEF LINEOPEN(9) !*tapi32*,*lineOpenA*
DEF LINEOPEN(9) !tapi32,lineOpenA
__log__ @$(0), DEF LINESETSTATUSMESSAGES(3) !*tapi32*,*lineSetStatusMessages*
DEF LINESETSTATUSMESSAGES(3) !tapi32,lineSetStatusMessages
__log__ @$(0), DEF LINEMAKECALL(5) !*tapi32*,*lineMakeCall*
DEF LINEMAKECALL(5) !tapi32,lineMakeCall
__log__ @$(0), DEF LINESHUTDOWN(1) !*tapi32*,*lineShutdown*
DEF LINESHUTDOWN(1) !tapi32,lineShutdown
__log__ @$(0), DIALNUMBER$=*725372*
DIALNUMBER$=725372
__log__ @$(0), #DEFINE PROCEDURE { proc MAKETAPICALL }/* LINE:12
proc MAKETAPICALL
__log__ @$(0), PROCEED PROCEDURE { proc MAKETAPICALL } /* LINE:12 {
inc __gallog__%
__log__ @$(0), DIM TAPIHDL#,4
DIM TAPIHDL#,4
__log__ @$(0), DIM TAPICALLBACK#,4
DIM TAPICALLBACK#,4
__log__ @$(0), DIM TAPINUMDEVS#,4
DIM TAPINUMDEVS#,4
__log__ @$(0), DIM EXTID#,16
DIM EXTID#,16
__log__ @$(0), DIM GHLINE#,4
DIM GHLINE#,4
__log__ @$(0), DIM GHCALL#,4
DIM GHCALL#,4
__log__ @$(0), DIM TAPIVER#,4
DIM TAPIVER#,4
__log__ @$(0), LONG TAPIVER#,0=$00020000
LONG TAPIVER#,0=$00020000
__log__ @$(0), DIM TAPILINEDEVCAPS#,270
DIM TAPILINEDEVCAPS#,270
__log__ @$(0), LONG TAPILINEDEVCAPS#,0=270
LONG TAPILINEDEVCAPS#,0=270
__log__ @$(0), DIM LINECALLPARAMS#,236
DIM LINECALLPARAMS#,236
__log__ @$(0), LONG LINECALLPARAMS#,0=236
LONG LINECALLPARAMS#,0=236
__log__ @$(0), LONG LINECALLPARAMS#,4=1
LONG LINECALLPARAMS#,4=1
__log__ @$(0), LONG LINECALLPARAMS#,16=16
LONG LINECALLPARAMS#,16=16
__log__ @$(0), LONG LINECALLPARAMS#,20=2
LONG LINECALLPARAMS#,20=2
__log__ @$(0), LONG LINECALLPARAMS#,24=1
LONG LINECALLPARAMS#,24=1
__log__ @$(0), LONG LINECALLPARAMS#,28=0
LONG LINECALLPARAMS#,28=0
__log__ @$(0), TAPIRETURN&=LINEINIT(TAPIHDL#,%HINSTANCE,TAPICALLBACK#,0,TAPINUMDEVS#)
TAPIRETURN&=LINEINIT(TAPIHDL#,%HINSTANCE,TAPICALLBACK#,0,TAPINUMDEVS#)
__log__ @$(0), PRINT *LineInitEx *+STR$(TAPIRETURN&)
PRINT LineInitEx +STR$(TAPIRETURN&)
__log__ @$(0), TAPIHDL&=LONG(TAPIHDL#,0)
TAPIHDL&=LONG(TAPIHDL#,0)
__log__ @$(0), TAPIDEVS&=LONG(TAPINUMDEVS#,0)
TAPIDEVS&=LONG(TAPINUMDEVS#,0)
__log__ @$(0), PRINT *TapiNumDevs *+STR$(LONG(TAPINUMDEVS#,0))
PRINT TapiNumDevs +STR$(LONG(TAPINUMDEVS#,0))
__log__ @$(0), CHOOSEDEV&=0
CHOOSEDEV&=0
__log__ @$(0), WHILELOOP { WHILELOOP TAPIDEVS& } /* LINE:36 {
WHILELOOP TAPIDEVS&
__log__ @$(0), CHOOSEDEV&=&LOOP - 1
CHOOSEDEV&=&LOOP - 1
__log__ @$(0), TAPIRETURN&=LINENEGOTIATEAPIVERSION(TAPIHDL&,CHOOSEDEV&,$00020000,$00030000,TAPIVER#,EXTID#)
TAPIRETURN&=LINENEGOTIATEAPIVERSION(TAPIHDL&,CHOOSEDEV&,$00020000,$00030000,TAPIVER#,EXTID#)
__log__ @$(0), PRINT *NegotiateAPI *+STR$(TAPIRETURN&)
PRINT NegotiateAPI +STR$(TAPIRETURN&)
__log__ @$(0), PRINT *LocalAPI $000*+HEX$(LONG(TAPIVER#,0))
PRINT LocalAPI $000+HEX$(LONG(TAPIVER#,0))
__log__ @$(0), IF { IF TAPIRETURN&=0 } /* LINE:41 {
IF TAPIRETURN&=0
__log__ @$(0), TAPIRETURN&=LINEGETDEVCAPS(TAPIHDL&,CHOOSEDEV&,LONG(TAPIVER#,0),0,TAPILINEDEVCAPS#)
TAPIRETURN&=LINEGETDEVCAPS(TAPIHDL&,CHOOSEDEV&,LONG(TAPIVER#,0),0,TAPILINEDEVCAPS#)
__log__ @$(0), PRINT *GetDevCaps *+STR$(TAPIRETURN&)
PRINT GetDevCaps +STR$(TAPIRETURN&)
__log__ @$(0), PRINT *dwBearerModes *+STR$(LONG(TAPILINEDEVCAPS#,52))
PRINT dwBearerModes +STR$(LONG(TAPILINEDEVCAPS#,52))
__log__ @$(0), PRINT *dwMaxRate *+STR$(LONG(TAPILINEDEVCAPS#,56))
PRINT dwMaxRate +STR$(LONG(TAPILINEDEVCAPS#,56))
__log__ @$(0), PRINT *dwMediaModes *+STR$(LONG(TAPILINEDEVCAPS#,60))
PRINT dwMediaModes +STR$(LONG(TAPILINEDEVCAPS#,60))
__log__ @$(0), IF { IF TAPIRETURN&=0 } /* LINE:47 {
IF TAPIRETURN&=0
__log__ @$(0), IFNOT { IFNOT (LONG(TAPILINEDEVCAPS#,52)=1) AND (LONG(TAPILINEDEVCAPS#,56)>=9600) AND (LONG(TAPILINEDEVCAPS#,60)=16) } /* LINE:48 {
IFNOT (LONG(TAPILINEDEVCAPS#,52)=1) AND (LONG(TAPILINEDEVCAPS#,56)>=9600) AND (LONG(TAPILINEDEVCAPS#,60)=16)
__log__ @$(0), IF { IF (LONG(TAPILINEDEVCAPS#,52)=1) O (LONG(TAPILINEDEVCAPS#,56)>=9600) O (LONG(TAPILINEDEVCAPS#,60)=16) } /* LINE:49 {
IF (LONG(TAPILINEDEVCAPS#,52)=1) O (LONG(TAPILINEDEVCAPS#,56)>=9600) O (LONG(TAPILINEDEVCAPS#,60)=16)
__log__ @$(0), CLEAR GHLINE#
CLEAR GHLINE#
__log__ @$(0), TAPIRETURN&=LINEOPEN(TAPIHDL&,CHOOSEDEV&,GHLINE#,LONG(TAPIVER#,0),0,0,1,0,0)
TAPIRETURN&=LINEOPEN(TAPIHDL&,CHOOSEDEV&,GHLINE#,LONG(TAPIVER#,0),0,0,1,0,0)
__log__ @$(0), PRINT *LineOpen *+STR$(TAPIRETURN&)
PRINT LineOpen +STR$(TAPIRETURN&)
__log__ @$(0), IF { IF TAPIRETURN&=0 } /* LINE:53 {
IF TAPIRETURN&=0
__log__ @$(0), TAPIRETURN&=LINESETSTATUSMESSAGES(LONG(GHLINE#,0),$2+$4+$8+$80+$100+$400+$40000,1)
TAPIRETURN&=LINESETSTATUSMESSAGES(LONG(GHLINE#,0),$2+$4+$8+$80+$100+$400+$40000,1)
__log__ @$(0), PRINT *SetStatusMessages *+STR$(TAPIRETURN&)
PRINT SetStatusMessages +STR$(TAPIRETURN&)
__log__ @$(0), IF { IF TAPIRETURN&=0 } /* LINE:56 {
IF TAPIRETURN&=0
__log__ @$(0), PRINT *Anwahl de *+DIALNUMBER$+* con Gerät *+STR$(CHOOSEDEV&)
PRINT Anwahl de +DIALNUMBER$+ con Gerät +STR$(CHOOSEDEV&)
__log__ @$(0), CLEAR GHCALL#
CLEAR GHCALL#
__log__ @$(0), TAPIRETURN&=LINEMAKECALL(LONG(GHLINE#,0),GHCALL#,ADDR(DIALNUMBER$),0,LINECALLPARAMS#)
TAPIRETURN&=LINEMAKECALL(LONG(GHLINE#,0),GHCALL#,ADDR(DIALNUMBER$),0,LINECALLPARAMS#)
__log__ @$(0), PRINT *MakeCall *+STR$(TAPIRETURN&)
PRINT MakeCall +STR$(TAPIRETURN&)
__log__ @$(0), MESSAGEBOX(*Anwahl erfolgreich !*,**,0)
MESSAGEBOX(Anwahl erfolgreich !,,0)
__log__ @$(0), IF { IF TAPIHDL& <> 0 } /* LINE:62 {
IF TAPIHDL& <> 0
__log__ @$(0), LINESHUTDOWN(TAPIHDL&)
LINESHUTDOWN(TAPIHDL&)
ENDIF
__log__ @$(0), }
__log__ @$(0), BREAK
BREAK
ENDIF
__log__ @$(0), }
ENDIF
__log__ @$(0), }
__log__ @$(0), IF { IF TAPIHDL& <> 0 } /* LINE:68 {
IF TAPIHDL& <> 0
__log__ @$(0), LINESHUTDOWN(TAPIHDL&)
LINESHUTDOWN(TAPIHDL&)
ENDIF
__log__ @$(0), }
ENDIF
__log__ @$(0), }
ENDIF
__log__ @$(0), }
ENDIF
__log__ @$(0), }
ENDIF
__log__ @$(0), }
ENDWHILE
__log__ @$(0), }
__log__ @$(0), DISPOSE TAPIHDL#
DISPOSE TAPIHDL#
__log__ @$(0), DISPOSE TAPINUMDEVS#
DISPOSE TAPINUMDEVS#
__log__ @$(0), DISPOSE EXTID#
DISPOSE EXTID#
__log__ @$(0), DISPOSE GHLINE#
DISPOSE GHLINE#
__log__ @$(0), DISPOSE GHCALL#
DISPOSE GHCALL#
__log__ @$(0), DISPOSE TAPICALLBACK#
DISPOSE TAPICALLBACK#
__log__ @$(0), DISPOSE TAPIVER#
DISPOSE TAPIVER#
__log__ @$(0), DISPOSE TAPILINEDEVCAPS#
DISPOSE TAPILINEDEVCAPS#
__log__ @$(0), DISPOSE LINECALLPARAMS#
DISPOSE LINECALLPARAMS#
dec __gallog__%
__log__ @$(0), }
ENDPROC
__log__ @$(0), CLS
CLS
__log__ @$(0), MAKETAPICALL
MAKETAPICALL
__log__ @$(0), WAITINPUT
WAITINPUT
__log__ @$(0), REM ---ENDOFFILE---
REM ---ENDOFFILE---
__xpse__endofprogram__

...y anschließend el c:p00xapi.debug hier puesto?
 
23.01.2008  
 




Matthias
Arlt
Schon hecho ! Debug-Expediente en el Anhang.

3 kB
Hochgeladen:23.01.2008
Ladeanzahl316
Descargar
 
WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia
23.01.2008  
 



El Messagebox Anwahl erfolgreich ! erscheint y restos a Usted esta schließt?

Unausreichende Bereichsdimensionierung oder una Callbackproblem - aber el es rein spekulativ.
 
23.01.2008  
 




Matthias
Arlt
Sí, el Messagebox restos a para Schließen. El Bereichsdimensionierung Tuve auch zuerst en Verdacht, habe aber ya probehalber el Werte vervielfacht. Leider no Änderung...
 
WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia
23.01.2008  
 



lpfnCallback, Dritter Param lineInitializeEx debería una Largo ser, el Adresse uno Procedimiento welche con procAddr a beziehen es. Es No en el Fall - teste veces...
 
23.01.2008  
 




Matthias
Arlt
Das CallBack... Stimmt, el wäre o ne- Möglichkeit. Yo voluntad lo testen. Muß mich aber, lo que el Verwendung de CallBacks en Profano angeht, primero einlesen. Desde que vorwiegend Profano7 con bien funcionamiento y schnellen Workarrounds verwende y alles Übrige con Ensamblador-Dlls löse, bin Yo así eigtl. garnicht vertraut...

Und überhaupt: Übrigens primero Gracias IF, para Su Unterstützung. Yo muß ahora primero abbrechen. Morgen gehts más...

Matthias
 
WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia
23.01.2008  
 




Matthias
Arlt
IF, Usted había bastante. Lo lag tatsächlich al CallBack. Ist ahora zwar con uno völlig leeren Procedimiento sólo una Art Dummy, pero funktioniert immerhin.

Gracias nochmals
 
WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia
24.01.2008  
 



Gern.

[offtopic]@Roland: *erinner*procAddrStack* - entonces ginge auch korrekte wProc[/offtopic]
 
24.01.2008  
 



Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

7.837 Views

Untitledvor 0 min.
Axel Berse10.06.2023
rquindt23.05.2016
Helmut12.01.2013

Themeninformationen

Dieses Thema ha 2 subscriber:

Matthias Arlt (6x)
iF (5x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie