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

📄 pcicard.pas

📁 由内线接电话终端
💻 PAS
📖 第 1 页 / 共 3 页
字号:
  end;


  function GetChTypeName(chtype:word):string;//取通道类型的名字
  begin
    case chtype of

   CHTYPE_DTNO1:	result:= '一号通道';
   CHTYPE_DTNO7:	result:= '七号通道';
   CHTYPE_DTDSS1:	result:= 'ISDN通道';
   CHTYPE_DTNO7ISUP:	result:= 'ISUP通道';
   CHTYPE_TB:		result:= '外线通道';
   CHTYPE_AGENT:	result:= '内线通道';
   CHTYPE_HB:		result:= '高阻通道';

   RESTYPE_VOCPCM:  result:= '语音资源';
   RESTYPE_DTMF  :  result:= 'DTMF资源';
   RESTYPE_FAX   :  result:= '传真资源';
   RESTYPE_FSK   :  result:= 'fsk资源';
   RESTYPE_MODEM :  result:= 'modem资源';
   RESTYPE_HDLC  :  result:= 'HDLC资源';
   RESTYPE_CAS   :  result:= 'cas资源';
   RESTYPE_MFC   :  result:= 'mfc资源';
   RESTYPE_CONF  :  result:= '会议室资源';
   RESTYPE_CONFCH:  result:= '会议通道资源';
   RESTYPE_ECONF  : result:= '增强会议室资源';
   RESTYPE_ECONFCH: result:= '增强会议通道资源';
  else				result:= '未知类型';
 end;
end;


  function  TMSG.GetChTypeNameStr():string;//取通道类型的名字
  begin
    result:=GetChTypeName(ChType);
  end;

  function  TMSG.GetMsgNameStr(IsUpMsg:byte):string;
  var
    S:string;
  begin

    S:=S+ GetChTypeNameStr;
    S:=S+'通道='+inttostr(ChIndex);


    S:=S+chr($d)+chr($a)+'  ';
    case MsgType of
      MSG_RELEASE:
      begin
        S:=S+'通道释放';
        case MsgFunction of
          F_R_NORMAL:S:=S+':正常释放';
          F_R_CALLOUTERR:
          begin
            S:=S+':呼出失败';
            case Msg.Param of
              P_R_NODIALTONE:S:=S+':没有检测到拨号音';
              P_R_NOANSWER:  S:=S+':没有响应';
              P_R_RINGTIMEOUT:  S:=S+':振铃超时';
              P_R_LINEUSED:  S:=S+':线路正被对方占用';
              P_R_CONGESTION:  S:=S+':设备拥塞';
              P_R_INCOMPLETE:  S:=S+':地址不全';
              P_R_FAILURE:  S:=S+':呼叫故障';
              P_R_CALLBARRING:  S:=S+':接入拒绝';
              P_R_BUSYLOCAL:  S:=S+':市话忙';
              P_R_BUSYDDD:  S:=S+':长话忙';
              P_R_NULLDN:  S:=S+':空号';
              P_R_NODIGITALPATH:  S:=S+':没有数字通路';
              else S:=S+':未知原因';
            end;
          end;
          F_R_CALLINTERM:S:=S+':呼入终止';
          else S:=S+':未知原因';
        end;
      end;

      MSG_CALL:
      begin
        S:=S+'通道呼叫';
        case MsgFunction of
          F_C_NORMAL:
          begin
            S:=S+':普通呼叫';
            if(IsUpMsg=0)  then
            case Msg.Param of
              P_C_NORMAL:S:=S+':标准呼叫';
              P_C_1:S:=S+':呼叫方式1';
              P_C_2:S:=S+':呼叫方式2';
              P_C_3:S:=S+':呼叫方式3';
              P_C_4:S:=S+':呼叫方式4';
              else S:=S+':未知呼叫';
            end
            else
              S:=S+': 参数='+inttostr(Msg.Param);


            S:=S+',被叫='+GetCalled();
            S:=S+',主叫='+GetCaller();
          end;
          F_C_OVLP:
          begin
             S:=S+':重叠呼叫';
             S:=S+',被叫='+GetCalled();
             S:=S+',主叫='+GetCaller();
          end
          else S:=S+':未知呼叫';
        end;
      end;

      MSG_CALLEDACK:
      begin
        S:=S+'被叫应答';
      end;

      MSG_FLASH:
      begin
        S:=S+'拍叉簧';
      end;

      MSG_ACM:
      begin
        S:=S+'地址收全';
      end;

      UPMSG_CALLOUTCHANNEL:
//      DOWNMSG_ROUTER
      begin
       if(IsUpMsg<>0)then
       begin
        S:=S+'分配呼出通道';
        case MsgFunction of
          F_CC_NORMAL:    S:=S+':成功';
          F_CC_NOCHANNEL:
          begin
            S:=S+':失败';
            case Msg.Param of
              P_CC_CHBUSY:S:=S+':通道使用中';
              P_CC_CHCALLMASK:S:=S+':通道呼出被禁止';   //在配置文件中通道呼出被禁止
              P_CC_CHNOTEXIST:S:=S+':通道号不存在';
              P_CC_PCMNOSYN:S:=S+':端口没有同步';//数字线端口没有同步
              P_CC_CANNOTASSIGNCH:S:=S+':不支持的呼出方式';//不支持用户设置的呼出通道指定方式
              P_CC_REMOTENOANSWER:S:=S+':对方没有响应';
              P_CC_DPCUNAVAILABLE:S:=S+':DPC不可到达';
              P_CC_ADDRESSERR    :S:=S+':号码设置错误';
              else S:=S+':未知原因';
            end;
          end;
          F_CC_HANDLE: S:=S+':呼出句柄='+inttohex(ChIndex,4);
          else S:=S+':未知结果';
        end;
       end
       else
       begin
        S:=S+'通道语音交换';
        case MsgFunction of
          F_R_SILENCE:    S:=S+':静音';
          F_R_MONITOR:    S:=S+':监听';
          F_R_TALK:       S:=S+':通话';
          F_R_TALK_RP:    S:=S+':混合通话';
          F_R_MONITOR_P:  S:=S+':连接放音资源';
          F_R_TRANSTO_CT: S:=S+':发送到CTBUS';
          F_R_MONITOR_CT: S:=S+':监听CTBUS';
          else      S:=S+':未知功能';
        end;
       end;
      end;

      MSG_CONF:
      begin
        S:=S+'电话会议';
        case MsgFunction of
          F_CF_CREATE:    S:=S+':请求会议资源';
          F_CF_CLOSE:    S:=S+':关闭会议资源';
          F_CF_LINKCH:       S:=S+':连接会议通道';//连接电话会议通道到线路通道
          F_CF_UNLINKCH:     S:=S+':断开会议通道';//断开电话会议通道到线路通道的连接
          F_CF_MONITOR:     S:=S+':旁听会议';
          else      S:=S+':未知功能';
        end;
        if(IsUpMsg<>0)then
        case Msg.Param of
          0:    S:=S+':成功';
          else      S:=S+':失败';
        end;
      end;

      MSG_ONOFF:
      begin
        S:=S+'通道开关';
        case MsgFunction of
          F_OF_OFF: S:=S+'关闭';
          F_OF_ON: S:=S+'打开';
          else S:=S+'未知功能';
        end;
      end;

      DOWNMSG_SETPARAM:   //UPMSG_PARAMERROR
      begin
       if(IsUpMsg<>0)then
       begin
        S:=S+'上传参数';
        if(MsgFunction=F_PM_SLOT) then
        begin
          S:=S+':输出到Stream='+inttostr(Msg.DataSpec)+',TimeSlot='+inttostr(LinkChIndex);
        end
        else
          S:=S+':参数错误';
       end
       else
       begin
        S:=S+'设置参数';
       end;
      end;

      UPMSG_ALARM:
      begin
       if(IsUpMsg<>0)then
       begin
        S:=S+'告警(卡号'+inttostr(Msg.DataSpec)+',时隙'+inttostr(LinkChIndex)+')';

        case MsgFunction of
          F_AM_CH	:begin //			=0;   //通道告警
            if(ChType<>CHTYPE_DTNO1)then
              exit;
            S:=S+':一号通道';
            case Msg.Param of
             P_AM_NO1_CHREOK :   S:=S+':线路正常(空闲)';
             P_AM_NO1_CHREMOTEBLOCK : S:=S+':远端闭塞';
             P_AM_NO1_CHCONFUSE:     S:=S+':呼出线路收到对方占用';
             P_AM_NO1_CHNOCONFIRM : S:=S+':呼出时对方占用证实时间太长(>200ms)';
             P_AM_NO1_CHERRORREL1:S:=S+':呼出时对方占用证实后并且在摘机前不正常地释放了线路(>2s)';
             P_AM_NO1_CHERRORREL2:S:=S+':呼出时对方摘机后不正常地释放了线路';
            end;
          end;

          F_AM_PCMSYN:begin //			    =1;   //PCM同步告警
            S:=S+'物理PCM'+inttostr(LinkChIndex div 32);
            case Msg.Param of
              P_AM_SYNOK      : S:=S+':同步正常  ';
              P_AM_SYNNOCARRY	: S:=S+':接收无载波 ';
              P_AM_SYNFAS		  : S:=S+':接收FAS同步错误   ';
              P_AM_SYNCAS			: S:=S+':接收CAS MF同步错误(只在CAS方式下) ';
              P_AM_SYNSLIP		: S:=S+':弹性缓冲区滑动 ';
              P_AM_SYNALARMA	: S:=S+':远端A位告警   ';
              P_AM_SYNALARMY	: S:=S+':远端CAS MF Y位告警(只在CAS方式下)';
              P_AM_SYNALLONE	: S:=S+':接收全1错误';
              P_AM_SYNJITTER	: S:=S+':抖动消除电路告警';
            end;
          end;
        end;
       end
       else
       begin
        S:=S+'未知消息';
       end;
      end;

      UPMSG_DAMAGE:
      begin
       if(IsUpMsg<>0)then
       begin
        S:=S+'硬件故障';
       end
       else
       begin
        S:=S+'未知消息';
       end;
      end;

      MSG_PnP:
      begin
       S:=S+'热插拔';
      end;

      MSG_USERDATA:
      begin
        S:=S+'信令消息';
      end;

      UPMSG_SYNREF:
//DOWNMSG_ADDINDEX
      begin
       if(IsUpMsg<>0)then
       begin
        S:=S+'同步告警';
       end
       else
       begin
        S:=S+'添加语音索引';
       end;
      end;

      MSG_MEDIA:
      begin
       if(IsUpMsg<>0)then
       begin
        S:=S+'多媒体事件';
       end
       else
       begin
        S:=S+'多媒体命令';
       end;

       case LinkChType of
         RESTYPE_VOCPCM:S:=S+'(VOC)';
         RESTYPE_DTMF:S:=S+'(DTMF)';
         RESTYPE_FAX:S:=S+'(FAX)';
         RESTYPE_FSK:S:=S+'(FSK)';
         RESTYPE_MODEM:S:=S+'(MODEM)';
         RESTYPE_CAS:S:=S+'(CAS)';
         else   S:=S+'(未知)';
       end;

       case MsgFunction of
         F_MEDIA_None: S:=S+':空命令';
         F_MEDIA_Tx_File: S:=S+':发送文件';
         F_MEDIA_Tx_Memory: S:=S+':发送内存';
         F_MEDIA_Tx_Index: S:=S+':发送内存索引';
         F_MEDIA_Tx_TTStr: S:=S+':发送字符串';
         F_MEDIA_Tx_TTSFile: S:=S+':发送文本文件';
         F_MEDIA_Tx_DTMF: S:=S+':发送DTMF';
         F_MEDIA_Tx_CPSign:S:=S+':播放信号音';

         F_MEDIA_Rx_File:S:=S+':接收文件';
         F_MEDIA_Rx_Memory:S:=S+':接收内存';
         F_MEDIA_Rx_Pause:S:=S+':接收暂停';
         F_MEDIA_Rx_Resume:S:=S+':接收重新开始';

         F_MEDIA_Tx_Release,F_MEDIA_Rx_Release:
         begin
           if(MsgFunction= F_MEDIA_Tx_Release) then
             S:=S+':发释放'
           else
             S:=S+':收释放';
           case Msg.Param of
              RESTOP_DTMF: S:=S+':被DTMF打断';
              RESTOP_USER: S:=S+':被程序终止';
              RESTOP_FINISH: S:=S+':成功完成';
              RESTOP_COMMERR: S:=S+':通讯错误';
              RESTOP_CHREL: S:=S+':相关线路释放';
              RESTOP_FILERR: S:=S+':写入文件时失败';
              else S:=S+':未知原因';
           end;
         end

         else
         begin
           if(Msg.Param = 0)then
             S:=S+':分配资源成功'
           else
           begin
             S:=S+':资源错误';
             case Msg.Param of
              P_MEDIA_AllocErr:S:=S+':分配失败';
              P_MEDIA_BusyErr:S:=S+':使用中';
              P_MEDIA_FullErr:S:=S+':队列满';
              P_MEDIA_TypeErr:S:=S+':类型错';
              P_MEDIA_FuncErr:S:=S+':功能错';
              P_MEDIA_FileErr:S:=S+':文件错';
              else S:=S+':未知原因';
           end;
           end;
         end;
       end;
      end;
      else
        S:='错误消息';

    end;
    result:=S;
  end;

function IsCLASS_DT(chtype:word):Boolean;
begin
  if ((chtype and CHCLASS_DT) = CHCLASS_DT)then
    result:=true
  else
    result:=false;
end;

function IsCLASS_AT(chtype:word):Boolean;
begin
  if ((chtype and CHCLASS_AT) = CHCLASS_AT)then
    result:=true
  else
    result:=false;
end;


function IsCLASS_NONE(chtype:word):Boolean;
begin
  if ((chtype and CHCLASS_NONE) = CHCLASS_NONE)then
    result:=true
  else
    result:=false;
end;

end.

⌨️ 快捷键说明

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