📄 pcicard.pas
字号:
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 + -