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

📄 djcccx.pas

📁 自己写的用delphi封装东劲板卡api.
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    Sleep(1000);
    inc(i);
    if i>5 then
    begin
      break;
    end;
  end;
  if Assigned(FOnDisConnect) then FOnDisConnect(self);
end;

procedure TDjCCCx.Login(ChannelID: word; StaffID: string; SeatType,
  ExpType1, ExpType2, ExpType3, ExpType4, ExpType5: word);
begin
  FChannelID := ChannelID ;
  SendMsgToSvr(AssembleMessage_Logon_Exp(StaffID,ChannelID,SeatType,
    ExpType1,ExpType2,ExpType3,ExpType4,ExpType5));
end;

procedure TDjCCCx.LoginOut;
begin
  SendMsgToSvr(AssembleMessage_Up_LOGOFF(FChannelID));
end;

procedure TDjCCCx.LoginSucess(HsMsg: PHsMessage);
begin
  if Assigned(FAfterLogin) then
  begin
    FAfterLogin(Self,0);
  end;
end;

procedure TDjCCCx.MsgManager;
var
  HsMsg:PHsMessage;
begin
  HsMsg := MsgList.RemoveData;
  while Assigned(HsMsg) do
  begin
    case TMsgType(HsMsg.m_nMessageId) of
      D_MSG_LOGON:LoginSucess(HsMsg);   //登陆
      D_MSG_ERROR:ErrorMsgManager(HsMsg); //错误
      D_MSG_CALLIN:CallIn(HsMsg);        //电话呼入
      D_MSG_CONNECT:if Assigned(FOnLink) then FOnLink(self); //接通来话
      D_MSG_OFFHOOK:if Assigned(FOffHook) then FOffHook(self);
      D_MSG_ONHOOK: if Assigned(FOnHook) then FOnHook(Self);
  
      D_MSG_LOGOFF:if Assigned(FOnLoginOff) then FOnLoginOff(self,0); //登出成功
      D_MSG_CANCELDIAL :if Assigned(FOnCallFail) then FOnCallFail(Self); //呼出失败
      D_MSG_DIALING: if assigned(FOnCallSucess) then FOnCallSucess(self); //呼出成功
      D_MSG_KEEP:if Assigned(FOnKeep) then FOnKeep(Self,0);
      D_MSG_GETKEEPSUCCESS:if Assigned(FOnGetKeep) then FOnGetKeep(Self,0,0);
      D_MSG_GETKEEPFAIlED:if Assigned(FOnGetKeep) then FOnGetKeep(Self,0,1);
      D_MSG_USERDEF:UserDefMsgManager(HsMsg);
      D_MSG_BEGINPLAY:if Assigned(self.FOnPlayBegin) then FOnPlayBegin(self);
      D_MSG_PLAYEND:if Assigned(self.FOnPlayEnd) then FOnPlayEnd(self);
      //D_MSG_
      else
        if Assigned(FOnUserDef) then
        begin
          //move(HsMsg.m_pMessage[2],HsMsg.m_pMessage[0],20);
          FOnUserDef(self,HsMsg.m_nMessageId,HsMsg.m_pMessage);
        end;
    end;
    MsgList.AddPool(HsMsg);
    HsMsg := MsgList.RemoveData ;
  end;
end;

procedure TDjCCCx.SetAppConfig(Host: string; Port: integer);
begin
  SetHost(Host);
  SetPort(Port);
end;

procedure TDjCCCx.SetConnect(aConnect: Boolean);
begin
  if FConnect <> aConnect then
  begin
    if aConnect then
    begin
      try
        if idTcpClient.Connected then raise Exception.Create('连接已经建立!');
        idTcpClient.Host:= Host;
        idTcpClient.Port := Port;
        idTcpClient.Connect;
        Sleep(100);
        ClientThread.IsRun := true ;
        ClientThread.Resume ;
      except
        on e:exception do
        begin
          if Assigned(FOnException) then
            FOnException(self,E_CONNECTTOSERVER,Exception.Create(e.Message));
        end;
      end;
    end
    else
    begin
      ClientThread.IsRun := false ;
      while not ClientThread.Suspended do Sleep(100);
      if idTcpClient.Connected then idTcpClient.Disconnect ;
    end;
  end;
end;

procedure TDjCCCx.SetHost(aHost: string);
begin
  if (FHost <> aHost) then
  begin
    FHost :=  aHost;
    SetConnect(false);
  end;
end;

procedure TDjCCCx.SetPort(aPort: integer);
begin
  if (FPort <> aPort) then
  begin
    FPort := aPort ;
    SetConnect(false);
  end;
end;

procedure TDjCCCx.TestProc;
begin
  AddLogToListB('ceshi消息','sdf',LogError);
  ShowLog;
end;

procedure TDjCCCx.UserDefMsgManager(HsMsg: PHsMessage);
var
  UserDefStruct :pUserDefStruct ;
begin
  UserDefStruct := @(HsMsg.m_pMessage);
  case UserDefStruct.EventNum of
    Event_OtherHang:if Assigned(FOnOtherHang) then FOnOtherHang(self,UserDefStruct.EventStr) ;//else HangUp;
    Event_Clearthree:if Assigned(FOnClearThree) then FOnClearThree(self);
    Event_LinkThree:if Assigned(FOnLinkThree) then FOnLinkThree(self);
    Event_Record:if Assigned(FOnRecord) then FOnRecord(self,UserDefStruct.EventStr);
    else
      if Assigned(FOnUserDef) then
      begin
        move(HsMsg.m_pMessage[2],HsMsg.m_pMessage[0],20);
        FOnUserDef(self,UserDefStruct.EventNum,HsMsg.m_pMessage);
      end;
  end;
end;

procedure TDjCCCx.WndProc(var Msg: TMessage);
begin
  try
    case Msg.Msg of
      WM_ReceiveMessage:MsgManager;
      WM_Test:TestProc;

    end;
  except
    Application.HandleException(self);
  end;
  if not (Msg.Msg - WM_USER - 500 in [WM_ReceiveMessage - WM_USER - 500 ,
    WM_TEST - WM_USER - 500]) then
  begin
    Msg.Result := DefWindowProc(FWindowHandle, Msg.Msg, msg.wParam, msg.lParam);
  end;
end;

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

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

{-------------------------------------------------------------------------------
  过程名:    TDjCCCx.CallOut
  作者:      fengfan
  日期:      2006.09.08
  参数:      ChnlID: word
  返回值:    无
-------------------------------------------------------------------------------}
procedure TDjCCCx.CallOut(ChnlID: word);
begin
  SendMsgToSvr(AssembleMessage_Up_CallOut(FChannelID,2,ChnlID));
end;

procedure TDjCCCx.CallOut(Caller, Dailer: string);
begin
  SendMsgToSvr(AssembleMessage_Up_CallOut(FChannelID,1,-2,Caller,Dailer));
end;

procedure TDjCCCx.CallOut(Dailer: string);
begin
  SendMsgToSvr(AssembleMessage_Up_CallOut(FChannelID,1,-1,'',Dailer));
end;

procedure TDjCCCx.SendMsgToSvr(aHsMsg: THsMessage);
var
  HsMsg :PHSMessage ;
begin
  HsMsg := MsgList.RemovePool ;
  if idTcpClient.Connected then
  begin
    move(aHsMsg,HsMsg^,sizeof(aHsMsg));
    MsgList.AddSend(HsMsg);
  end
  else
  begin
    if Assigned(FOnException) then
      FOnException(self,1,Exception.Create('服务器没有连接'));
    MsgList.AddPool(HsMsg);
  end;
end;


procedure TDjCCCx.GetKeep(CallerPhone: string);
begin
  SendMsgToSvr(AssembleMessage_Up_GetKeep(FChannelID,1,0,CallerPhone));
end;

procedure TDjCCCx.Keep;
begin
  SendMsgToSvr(AssembelMessage_Up_Keep(FChannelID));
end;

procedure TDjCCCx.ClearThree(CallerPhone: String);
begin
  SendMsgToSvr(AssembleMessage_Up_EndThreeCall(FChannelID,2,0,CallerPhone));
end;

procedure TDjCCCx.ClearThree(ChnlID: integer);
begin
  SendMsgToSvr(AssembleMessage_Up_EndThreeCall(FChannelID,1,ChnlID));
end;

procedure TDjCCCx.LinKThree(ChnlID: integer);
begin
  SendMsgToSvr(AssembleMessage_Up_BeginThreeCall(FChannelID,1,ChnlID));
end;

procedure TDjCCCx.LinkThree(CallerPhone: String);
begin
  SendMsgToSvr(AssembleMessage_Up_BeginThreeCall(FChannelID,2,0,CallerPhone));
end;

procedure TDjCCCx.Enjoy(PlayFile: string);
begin
  SendMsgToSvr(AssembleMessage_Up_ENJOY(FChannelID,PlayFile));
end;

procedure TDjCCCx.StopEnjoy;
begin
  SendMsgToSvr(AssembleMessage_Up_StopEnjoy(FChannelID));
end;

end.
 

⌨️ 快捷键说明

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