Seite 4 von 4

Verfasst: Di, 28. Nov 2006 19:24
von olaf870
Hallo,

ist ja richtig "Bedarf" nach so etwas da!

(Klar: Supi-Sache, wenn bei einem Anruf schon Kontaktdatensatz aufgerufen wird und man schon während man den Höhrer abhebt, die Kontakt-Historie sehen kann.)

Wie ich erfahren habe läßt sich (auf einem sauberen Rechner) das VC-Projekt nicht bauen, weil wohl leider ein noch paar include-Dateien fehlen.

Habt also noch ein wenig Geduld, ich werde das erstmal für Euch beheben. Denn nix nervt mehr als fremder Code, der sich nicht bauen läßt, oder? Mir fällt da nur eine Sache ein, die das noch toppt: Fremdcode, der sich erst nach viel Mühe und Aufwand zwar bauen läßt aber dann nicht funktioniert. (.. es soll gelegentlich ja solche Leute geben, die einem so etwas zu schicken.)

Dazu muß ich aber erst mal einen unbelasteten Rechner finden.

Zwischenzeitlich bitte ich Euch, mir eine Mail mit dem Betreff "TAPI3 Sourcen" an "mail chr(64) c o m b i f i n a n z chr( 46) d e"
zu schicken, damit ich mir die Sucherei hier im Forum nach euren Mail-Adressen sparen kann (die Mailfunktion im Forum erlaubt ja keine Anhänge!?).

Wer den Code (VC-Projekt) mal bei sich probebauen will/kann, melde sich auch.

Gruß
Olaf870

Verfasst: Mi, 07. Feb 2007 18:45
von Wolfgang Ciriack
Hallo Olaf,
bist du mit deiner Tapi-Schnittstelle schon weiter gekommen ?

Verfasst: Mi, 21. Feb 2007 12:54
von olaf870
Hallo,

meine TAPI hat noch ein Problem: Man kann das Ding nicht in eine DLL einbauen. Wenn man es doch tut, dann geschieht unberechenbares.

Ein C++-Spezi sagte, es fehlen wohl noch paar Zeilen Code, will sich aber erst darum richtig kümmern, wenn er seine Arbeit abrechnen darf. Wie er meinte, wird er es wohl in 4 Stunden schaffen. Bisher hat er keinen Auftrag von mir bekommen.

Hat jemand Lust sich zu beteiligen?

Gruß
Olaf

Toptapi

Verfasst: Fr, 20. Feb 2009 9:48
von Schubi
Hallo Thomas,

beim rumtesten mit Toptapi bin ich auf Deinen Beitrag gestossen:
thomas hat geschrieben:
Die Funktionen LP_MYCALLBACK, _MYLOOP, _MYLOOP_QUIT, _PTR_TO_STR sind in C++
geschrieben und im Projekt als Objectdatei hinzugelinkt.
Wo hast Du diese C-Routinen her bzw. kannst Du mir hier weiterhelfen?
Bei mir liefert TapiLineInitEx immer Null, d.h. kein Erfolg.
Habe aber auch keinen Schimmer, wie ich diese Callbackprozedur hinbekomme.
Noch eine Frage: Ruft man die Dll-Functions mit STDCALL oder mit CDECL auf?

Re: Tapi

Verfasst: Fr, 20. Feb 2009 10:12
von brandelh
Hallo,

meistens nutzt man STDCALL, das könnte aber natürlich hier anders sein ... im C Quellcode sollte aber ein ähnlicher Parameter angegeben sein.

Xbase++ unterstützt selbst keine CALLBACK Prozeduren, aber von Pablo Botela gibt es "The XppCbk.exe callback compiler", mit dem man eine OBJ aus einer Xbase++ Funktion erstellen kann, die dann den Code der CALLBACK Funktion enthält.
Ich selbst habe sowas noch nicht genutzt, aber unter diesem Link solltest du nähere Infos finden:

http://www.xbwin.com/ot4xbXHlp/ unter Tutorial.

XppCbk.EXE müsste dort eigentlich auch zu finden sein ... oder bei Alaska im Downloadbereich ... so über google habe ich dies gefunden (ganz unten):

http://www.xbwin.com/_main_/docs_and_resources.html

Auf http://www.xbwin.com ist der Aufruf ganz rechts oben versteckt ;-)

TopTapi und Callback

Verfasst: Mo, 23. Feb 2009 9:00
von thomas
Hallo Steffen,

hier findest du das Bespiel zur TopTapi mit Callback.
BEISPIEL.PRG
(5.93 KiB) 439-mal heruntergeladen
Die C++ Routinen _LP_MyCallBack, _MyLoop, _MyLoopQuit und _PTR_To_STR sind bereit in Call11p.obj
übersetzt.

Viele Grüße
Thomas

Re: Tapi

Verfasst: Di, 24. Feb 2009 21:45
von Pablo Botella
Schubi hat geschrieben:Hallo Thomas,

beim rumtesten mit Toptapi bin ich auf Deinen Beitrag gestossen:
thomas hat geschrieben:
Die Funktionen LP_MYCALLBACK, _MYLOOP, _MYLOOP_QUIT, _PTR_TO_STR sind in C++
geschrieben und im Projekt als Objectdatei hinzugelinkt.
Wo hast Du diese C-Routinen her bzw. kannst Du mir hier weiterhelfen?
Bei mir liefert TapiLineInitEx immer Null, d.h. kein Erfolg.
Habe aber auch keinen Schimmer, wie ich diese Callbackprozedur hinbekomme.
Noch eine Frage: Ruft man die Dll-Functions mit STDCALL oder mit CDECL auf?
Ich war Thomas helfen, dieses C-Funktionen für den Einsatz mit lineInitialize () aber das Lesen docs habe ich entdeckt, dass nicht erforderlich, da TAPI-V 2.0 als neue TAPI-Funktion LineInitializeEx () erlaubt die Wahl zwischen 3 Modi

LINEINITIALIZEEXOPTION_USEHIDDENWINDOW
Dies ist die alte Methode mit einem versteckten Fenster in einem separaten Thread, das war der Grund dafür, dass der Rückruf wurde in einer nicht Xbase + + Threads, so war zu delegieren alle Veranstaltungen zu einem Thread von Xbase + +

LINEINITIALIZEEXOPTION_USEEVENT
LINEINITIALIZEEXOPTION_USECOMPLETIONPORT

Ich denke, die Verwendung TAPI mit Xbase + + am besten geeignet ist LINEINITIALIZEEXOPTION_USEEVENT ( 2 )

Code: Alles auswählen

#include "ot4xb.ch"
// ---------------------------------------------------------------------------
proc main()
local nDeviceId   := 9  // change this value for your device ID
local hLineApp    := 0
local nDevCnt     := 0
local nVersion    := 0x20000
local aLineParams := {24,0,0,2,0,0}
local result      := @tapi32:lineInitializeExA(@hLineApp,AppInstance(),0,;
                     "Test",@nDevCnt,@nVersion,@aLineParams)
local hLine       := 0         
local conCargo    := 0 // _var2con( XbaseArrayCodeblockOrObjectVariable )

if result == 0
   ? "lineInitializeEx() -> OK"
   Thread():New():Start({|| LineEventsProc( aLineParams[5] , hLineApp)} )
   result := @tapi32:lineOpenA(hLineApp,nDeviceId,@hLine,;
                               nVersion,0,conCargo,2,0x12,0)

   if result == 0
      ? "lineOpen() -> OK"
      while inkey(0) != 27 ; end
      @tapi32:lineClose( hLine )
   else
      ? "lineOpen() -> FAIL"
   end               
   @tapi32:lineShutdown( hLineApp )
else
   ? "lineInitializeEx() -> FAIL"
end
if conCargo != 0 ; _conRelease( conCargo ) ; end   
? "Press a key to exit .... "
inkey(0)
return
// ---------------------------------------------------------------------------
function LineEventsProc(hEvent,hLineApp)
local aMsg := AFill(Array(6),0)
? "------  LineEventsProc() ENTER ----- "
while( @kernel32:WaitForSingleObject(hEvent,-1) != -1 )
   while( @tapi32:lineGetMessage(hLineApp,@aMsg,0) == 0 )
      ? "------  LineEventsProc() ----- "
      ? cPrintf( "hDevice     : 0x%08X" , aMsg[1] )
      ? cPrintf( "dwMessageId : 0x%08X" , aMsg[2] )
      ?          "cargo       : " , _con2var( aMsg[3] )
      ? cPrintf( "dwParam1    : 0x%08X" , aMsg[4] )
      ? cPrintf( "dwParam2    : 0x%08X" , aMsg[5] )
      ? cPrintf( "dwParam3    : 0x%08X" , aMsg[6] )
      ? "------------------------------ "
   end
end
? "------  LineEventsProc() EXIT ----- "
return NIL
// ---------------------------------------------------------------------------


Grüße,
Pablo Botella

Re: Tapi

Verfasst: Mo, 02. Mär 2009 10:39
von Schubi
Danke Euch allen.
Inzwischen läuft meine Tapi-Schnittstelle.

Re: Tapi

Verfasst: Mi, 14. Okt 2009 14:39
von Koverhage
Hallo,

ich sollte eine folgendes in eine Xbase++ Anwendung einbauen:

Telekom Telefonanlage
wenn Anruf kommt, in dbf nachsehen ob es die Nummer gibt.
wenn ja, Name bzw. Historie anzeigen.

Hat das jemand schon gemacht ?

Für den Anfang würde ich gerne eine Wählhilfe erstellen, z.B. beim ausgewählten Kunden auf Tel. klicken und der Wahlvorgang startet dann.

Würde mich über Beispiele freuen, aber auch über Angebote zur Realisierung, allerdings sollte bei Angeboten Erfahrung mit
Tapi, etc. vorhanden sein.

Re: Tapi

Verfasst: Mi, 14. Okt 2009 15:10
von Tom
Hallo, Klaus.

Anrufe auslösen geht mit TapiRequestMakeCall() ganz simpel. Und für den Rest (Leitungsüberwachung) findest Du alles nötige eigentlich auch in diesem Thread.

Re: Tapi

Verfasst: Mi, 14. Okt 2009 17:30
von Koverhage
Hallo Tom,

danke, habe das mal eingebaut, aber
fehler.jpg
fehler.jpg (17.98 KiB) 7813 mal betrachtet
Wenn ich z.B. über das ComCenter Fon gehe, wird die Nummer gewählt.

Muss ich sonst noch was machen ?

Gruß
Klaus

Re: Tapi

Verfasst: Mi, 14. Okt 2009 17:33
von Tom
Möglicherweise musst Du eine Leitung holen ("0" oder "0," vor die anzurufende Nummer setzen).

Re: Tapi

Verfasst: Do, 15. Okt 2009 7:49
von Koverhage
Tom,

egal ob ich im Xbase++ Programm oder in der Wählhilfe selbst wählen lasse kommt die
Fehlermeldung.
Hingegen kann ich ja über ComCenter Fon wählen.
Werde das mal im Auge behalten.

Re: Tapi

Verfasst: Do, 22. Okt 2009 2:53
von olaf870
EIne fertige Tapilösung mit Xbase++-Sourcecode zur Leitungsüberwachung und Meldung der Anrufernummer in das Xbase Programm gibt es hier: http://www.combifinanz.de/tools/.
Mittlerweile kann das ganze auch in eine DLL eingebunden werden und funktioniert auch mit Internet-Telefonie.
Grüße
Olaf870