Ein freundliches Hallo an alle,
nach Schwierigkeiten mit der Tapi versuche ich zunächst mal einen Weg über die Capi zu finden, vielleicht bringt das ja neue Ideen. Nach Lektüre der CAPI-Beschreibung, ersten Programmierversuchen und Internetsuche mußte ich feststellen, dass viele Links auf Infos zu CAPI auf nicht mehr existierende Seiten zeigen. Ich hoffe es hat vielleicht noch jemand ein paar Infos oder gar Programmschnipsel, die mir weiter helfen können.
Da ich die "Capi2032.dll" nicht importieren konnte habe ich die Schnittstelle und Daten per Deklaration beschrieben. Bei meinen Versuchen erscheinen Fehlercodierungen, die ich nirgens finden konnte. Kann sein das ich irgend eine Datenbeschreibung falsch interpretiert habe. Jedenfalls stehe ich nach diversen Versuchen im Nebel. Ich hoffe jemand mach etwas Wind.
Die Daten:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| Type Connect_Req = Record Command : Byte ; Subcommand : Byte ; Controller : Longword; CIP : Word ; CalledNumberTyp : Byte ; CalledNumber : PChar ; CallingNumberTyp : Byte ; CallingNumberTyp1 : Byte ; CallingNumber : PChar ; CalledSubTyp : Byte ; CalledSub : PChar ; CallingSubTyp : Byte ; CallingSub : Byte ; BProt : Word ; BC : Byte ; LLC : Byte ; HLC : Byte ; AdditionalInfo : Byte ; end; |
Die Methoden:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| Function CAPI_REGISTER ( D_MessageBuffersize : Integer; D_maxLogicalConnection : Integer; D_maxBDataBlocks : Integer; D_maxBDataLen : Integer; Var D_AppID : Integer ): Integer; stdcall; external 'Capi2032.dll'; Function CAPI_RELEASE ( D_AppID : Longint ): Longint; stdcall; external 'Capi2032.dll'; Function CAPI_WAIT_FOR_SIGNAL( D_AppID : Longint ): Longint; stdcall; external 'Capi2032.dll'; Function CAPI_PUT_MESSAGE ( D_AppID : Longint; pcapimessage : Pointer ): Longint; stdcall; external 'Capi2032.dll'; Function CAPI_GET_MESSAGE ( D_AppID : Longint; Var lpCapiBuffer : Longint ): Longint; stdcall; external 'Capi2032.dll'; |
Put Message:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| ConRq.Command := CAPI_CONNECT; ConRq.Subcommand := CAPI_REQ; ConRq.Controller := $1; ConRq.CIP := 1; ConRq.CalledNumberTyp := $80; ConRq.CalledNumber := PChar( Edit1.Text ); ConRq.CalledSubTyp := $80; ConRq.CallingSub := $0; ConRq.CallingNumberTyp := $0; ConRq.CallingNumberTyp1 := $80; ConRq.CallingNumber := PChar( Edit2.Text ); ConRq.CalledSubTyp := $80; ConRq.CalledSub := $0; ConRq.BProt := $1; ConRq.BC := $04; ConRq.LLC := $0; ConRq.HLC := $0; ConRq.AdditionalInfo := $0;
Res := CAPI_PUT_MESSAGE( AppID, @ConRq ); |
"CAPI_REGISTER" funktioniert und liefert eine ID. Nach Aufruf von "CAPI_PUT_MESSAGE" hat "
Res" den Wert '4360' oder '$1108'. Ich vermute das entweder die Datenstruktur nicht stimmt oder Parameter falsch sind. Da ich den Fehlercode aber nirgens finde hoffe ich, dass jemand den Fehler sieht oder sogar etwas hat, das funktioniert.
Grüße von der nicht mehr verregneten Nordsee
Peter