⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 djcccx.pas

📁 自己写的用delphi封装东劲板卡api.
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit DjCCCx;

interface

uses
  SysUtils, Classes,idTcpClient,DjBase,DjCBase,Controls,uSeatThread,windows
  ,Messages,Forms,unitHsMessagePub;

  {

  咱闻那西天佛祖,也不过要黄金铺地;阴司十殿,也要些楮镪营求。咱只消尽这家私广为善事,就使强奸了嫦娥,和奸了织女,拐了许飞琼,盗了西王母的女儿,也不减我泼天富贵!

  上邪,我欲与君相知,长命无绝衰。山无陵,江水为竭,冬雷震震,夏雨雪,天地合,乃敢与君绝!

  青青河畔草,郁郁园中柳。盈盈楼上女,皎皎当窗牖。娥娥红粉妆,纤纤出素手。昔为倡家女,今为荡子妇。荡子行不归,空床难独守。

  《乘兴走笔》总第732期晓薇的博客专辑

  衣香鬓影,宛若当年 
  告别清水无尘的文字,已经太久。不在夜晚的风口伫足回眸,也已经太久。浸在活色生香的日子里,每每不敢回首,害怕一些烟火气,将往昔笼罩,改变了原来的颜色。

  今夜微风轻轻吹,没有朗月清照,净手洁面,轻轻回望那年五月,知遇的季节。灯火通明,照亮一袭青衣和红红的裙裾,那一刻,有着梦幻般表情的女子怎会想到,一场盛夏的热烈注定要深入她的内心乃至骨髓,驱散她生命的荒凉。

  不舍得常常回忆。只在洗尽铅华的某一刻,打开雕花漆盒,梦幻般的表情重现,一点一滴的细节,只如夜风,吹开山间溪边的那一簇蔷薇。星星点点的馨香,恍若人间最美好的牵挂,君心未改,红颜不老。

  人世所有的热闹,不过是一场虚无的盛宴。我们好好地上演着我们的世俗,尽力尽责,华丽或朴素地活着,那是上帝分派给我们的任务。而在内心,总有另一番庄严,是对知己的尊重与感激。

  夜风泠泠,环佩空归。无语的人生并非一个苍凉的手势。临镜照花,衣香鬓影,宛若当年。

 

  }

type

  TDjExceptionEvent = procedure(Sender:TObject;ErrorCode:integer;AException:Exception) of object;
  TLoginEvent = procedure(Sender:TObject;LoginResult:Integer) of object;

  TOnDialInEvent = procedure(Sender:TObject;CallType,ChnlID:word;CallerPhone,ReceiverPhone:string) of object;

  //用户自定义事件
  TUserDefEvent = procedure(Sender:TObject;EventNum:word;EventStr:array of char) of object;
  //TLoginResult =();

  TOnOtherHangEvent = procedure(Sender:TObject;OtherPhone:String) of object;


  TOnKeepEvent = procedure(Sender:TObject;KeepResult:integer) of object;

  TOnGetKeepEvent = procedure(Sender:TObject;ChnlID:integer;KeepResult:integer) of object;


  TOnRecordEvent = procedure(Sender:TObject;FileName:string) of object;


  TDjCCCx = class(TDjCBase)
  private
    { Private declarations }
    FWindowHandle: HWND;
    idTcpClient : TIdTCPClient ;
    FConnect :Boolean ;
    FHost : string;
    FPort : integer;
    ClientThread :TClentThread ;

    FOnConnect :TNotifyEvent ;            //连接成功
    FOnDisConnect :TNotifyEvent;          //断开连接
    FOnException :TDjExceptionEvent ;    //组件内部异常

    FAfterLogin :TLoginEvent;      //注册后处理
    FOnLoginOff:TLoginEvent;        //注销后处理

    FOnDialIn  :TOnDialInEvent ;     //来电
    FOnLink    :TNotifyEvent ;       //接通来电

    FOnHook  :TNotifyEvent;   //摘机
    FOffHook  :TNotifyEvent;   //挂机
    FOnCallSucess:TNotifyEvent; //呼叫成功
    FOnCallFail :TNotifyEvent;  //呼叫失败
    FOnOtherHang :TOnOtherHangEvent;  //对方挂机

    FOnUserDef :TUserDefEvent ; //未定义消息

    FOnKeep:TOnKeepEvent;        //保持
    FOnGetKeep:TOnGetKeepEvent;  //取保持

    FOnClearThree:TNotifyEvent ;
    FOnLinkThree:TNotifyEvent ;

    FOnRecord : TOnRecordEvent;

    FOnPlayBegin : TNotifyEvent;
    FOnPlayEnd : TNotifyEvent ;

    FChannelID:word;
    procedure SetHost(aHost :string);
    procedure SetPort(aport :integer);
    procedure SetConnect(aConnect :Boolean);
    procedure WndProc(var Msg: TMessage);
    procedure TestProc;
    procedure MsgManager;
    procedure LoginSucess(HsMsg:PHsMessage);
    procedure ErrorMsgManager(HsMsg:PHsMessage);
    procedure UserDefMsgManager(HsMsg:PHsMessage);
    procedure CallIn(HsMsg:PHsMessage);

    procedure idTcpClientOnConnect(Sender:TObject);
    procedure idTcpClientOnDisConnect(Sender:TObject);

    procedure SendMsgToSvr(aHsMsg:THsMessage);

  protected
    { Protected declarations }
  public
    { Public declarations }
    constructor create(AOwner:TComponent);override;
    destructor Destroy;override;
    procedure SetAppConfig(Host:string;Port:integer);
    procedure Login(ChannelID:word;StaffID:string;SeatType :word =0;ExpType1 :word =0;
      ExpType2 :word =0;ExpType3 :word =0;ExpType4 :word =0;ExpType5 :word =0);
    procedure LoginOut;
    procedure HangUp;  ///挂机
    procedure ActiveHookUp;  //主动摘机坐席
    procedure PassiveHookUp; //被动摘机坐席(振铃摘机)
    procedure CallOut(ChnlID:word);overload;
    procedure CallOut(Caller,Dailer:string);overload;
    procedure CallOut(Dailer:string);overload;
    procedure Keep;   //保持来电
    procedure GetKeep(CallerPhone:string);  //取保持来电
    procedure LinkThree(CallerPhone:String);overload;
    procedure ClearThree(CallerPhone:String);overload;
    procedure LinkThree(ChnlID:integer);overload;
    procedure ClearThree(ChnlID:integer);overload;
    procedure Enjoy(PlayFile:string);
    procedure StopEnjoy;
    //procedure CallOut(CHnlID:word;Dailer:string);overlaod;

  published
    { Published declarations }
    property Host :string read FHost write SetHost;
    property Port :integer read FPort write SetPort ;
    property Connect :Boolean read FConnect write SetConnect ;
    property OnConnected :TNotifyEvent read FOnConnect write FOnConnect;
    property OnDisConnected :TNotifyEvent read FOnDisConnect write FOnDisConnect;
    property OnException :TDjExceptionEvent read FOnException write FOnException ;
    property AfterLogin :TLoginEvent read FAfterLogin write FAfterLogin ;
    property OnDialIn :TOnDialInEvent read FOnDialIn write FOnDialIn ;
    property OnLink   :TNotifyEvent read FOnLink write FOnLink ;
    property OnHook:TNotifyEvent read FOnHook write FOnHook ;
    property OffHook :TNotifyEvent read FOffHook write FOffHook ;
    property OnCallSucess :TNotifyEvent read FOnCallSucess write FOnCallSucess;
    property OnCallFail:TNotifyEvent read FOnCallFail write FOnCallFail ;
    property OnLoginOff:TLoginEvent read FOnLoginOff write FOnLoginOff;
    property OnOtherHang:TOnOtherHangEvent read FOnOtherHang write FOnOtherHang ;

    property OnUserDef:TUserDefEvent read FOnUserDef write FOnUserDef;
    property OnKeep:TOnKeepEvent read FOnKeep write FOnKeep ;
    property OnGetKeep:TOnGetKeepEvent read FOnGetKeep write FOnGetKeep ;

    property OnLinkThree:TNotifyEvent read FOnLinkThree write FOnLinkThree;
    property OnClearThree:TNotifyEvent read FOnClearThree write FOnClearThree;

    property OnRecord:TOnRecordEvent read FOnRecord write FOnRecord ;

    property OnPlayBegin:TNotifyEvent read FOnPlayBegin write FOnPlayBegin ;
    property OnPlayEnd:TNotifyEvent read FOnPlayEnd write FOnPlayEnd;
  end;

procedure Register;

implementation

uses unitWriteLogThread, uSysStr;

procedure Register;
begin
  RegisterComponents('DjBK', [TDjCCCx]);
end;

{ TDjCCCx }
procedure TDjCCCx.CallIn(HsMsg: PHsMessage);
var
  CallInStruct:pCallInStruct ;
begin
  CallInStruct := @(HsMsg.m_pMessage);
  if Assigned(FOnDialin) then
  begin
    FOnDialIn(Self,CallInStruct.CallType,CallInStruct.ChnlID
      ,CallInStruct.CallerPhone,CallInStruct.ReceiverPhone);
  end;
end;

constructor TDjCCCx.create(AOwner: TComponent);
begin
  inherited create(AOwner);
  FConnect := false ;
  FHost := '';
  FPort := 0 ;
  InitCS;
  FWindowHandle := Classes.AllocateHWnd(WndProc);
  if not (csDesigning in ComponentState) then
  begin
    idTcpClient := TIdTCPClient.Create(self);
    ClientThread :=  TClentThread.create(FWindowHandle,idTcpClient);
    AddLogToListB('开始运行','客户端',LogError);
    idTcpClient.OnConnected := idTcpClientOnConnect ;
    idTcpClient.OnDisconnected := idTcpClientOnDisConnect ;
  end;
  MsgList := TMsgList.Create;
end;

destructor TDjCCCx.Destroy;
begin
  Classes.DeallocateHWnd(FWindowHandle);
  idTcpClient.Free;
  AddLogToListB('结束运行','客户端',LogError);
  DeleteCS;
  inherited;
end;

procedure TDjCCCx.ErrorMsgManager(HsMsg:PHsMessage);
var
  ErrorStruct:pErrorStruct;
begin
  ErrorStruct := @(HsMsg.m_pMessage);
  case TMsgType(ErrorStruct.SeatId) of
    U_MSG_LOGON:
    begin
      if Assigned(FAfterLogin) then
      begin
        FAfterLogin(self,ErrorStruct.ErrorID);
      end;
    end;
    D_MSG_ERROR:
    begin
      if Assigned(FOnException) then
      begin
        FOnException(self,E_THREADTOSERVER,Exception.Create(ErrorStruct.ErrorStr));
      end;
      idTcpClient.Disconnect;
    end;
    else
    begin
      AddLogToList('收到错误消息','');
    end;
  end;
end;

{-------------------------------------------------------------------------------
  过程名:    TDjCCCx.HangUp
  作者:      fengfan
  日期:      2006.09.08
  参数:      无
  返回值:    无
-------------------------------------------------------------------------------}
procedure TDjCCCx.HangUp;
begin
  SendMsgToSvr(AssembleMessage_Up_HangOn(FChannelID));
end;

procedure TDjCCCx.idTcpClientOnConnect(Sender: TObject);
begin
  FConnect := idTcpClient.Connected ;
  if Assigned(FOnConnect) then FOnConnect(self);
end;

procedure TDjCCCx.idTcpClientOnDisConnect(Sender: TObject);
var
  i:Integer ;
begin
  FConnect := idTcpClient.Connected ;
  i:=0 ;
  while not ClientThread.Suspended do
  begin

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -