- 最新FAQ合辑:
-
Q:一个流程模块如何打开多个程序?
A:在调用XMS_acsOpenStream(ACSHandle_t * acsHandle, ServerID_t *serverID,DJ_U8 u8AppID,DJ_U32 u32SendQSize, DJ_U32 u32RecvQSize,DJ_S32 s32DebugOn, PrivateData_t * privateData)函数时,两个程序的u8AppID设为不同的值即可,但是这种方式其中一个程序打开的资源另一个程序不可以再打开。
-
Q:当发现keygoe流程日志中有模块断开时,如何确认是哪个模块断开?
A:在默认安装路径C:\DJKeygoe\Inc文件夹下有ITPGUID.h,里面有模块对应字符。
再与日志中断开MOD的值对照可知哪个模块断开。
#define MODULE_TYPE_PROXY 0x00 //Proxy模块
#define MODULE_TYPE_DSP 0x01 //DSP功能模块
#define MODULE_TYPE_MEDIA 0x02 //媒体处理模块
#define MODULE_TYPE_SS7 0x03 //七号处理模块
#define MODULE_TYPE_CFG 0x04 //配置模块
#define MODULE_TYPE_MONITOR 0x05 //监控模块
#define MODULE_TYPE_FLOW 0x06 //流程模块
#define MODULE_TYPE_PRI 0x07 //ISDN信令模块
#define MODULE_TYPE_USER 0x08 //用户模块
#define MODULE_TYPE_INTERFACE 0x09 //界面模块
#define MODULE_TYPE_VOIP 0x0A //VoIP模块
#define MODULE_TYPE_3G324M 0x0B //3G-324M模块
#define MODULE_TYPE_MEDIAEX 0x0C //媒体编解码模块
#define MODULE_TYPE_FAXTIFF 0x0E //FAXTIFF模块
#define MODULE_TYPE_ACS 0x0F //API模块
#define MODULE_TYPE_SIGMON 0x10 //信令监控模块
#define MODULE_TYPE_CTXM 0x11 //交换矩阵模块
-
Q: 使用KEYGOE交换机时,同一机箱运行多个流程模块时,时钟源造成通话杂音如何解决?
A: 需要其中一个流程启用自动管理模式,其他流程启用人工管理模式并且不指定主从时钟参考源即可避免时钟冲突情况。
-
Q: 为什么XMS_acsOpenStream为何连不上流程模块?
A: 应用程序连不上流程模块有以下几种可能:
(1)serverID参数指定的不是流程执行模块的IP和端口。
(2)serverID参数中指定的用户名和密码不正确。
(3)流程执行模块没有启动。
-
Q: 为什么应用程序只能打开一部分通道,比如语音通道、接口通道等?
A: 流程执行模块的“流程通道设置”里设置的对应流程个数太少,增加个数即可。
-
Q: 事件进入事件队列的顺序是按照怎样一种算法规律?
A: 事件的产生的顺序与API调用顺序不存在必然关系,而是跟事件的产生先后有关系。
举个明显的例子:先调用XMS_ctsSetDevTimer()设置一个10秒钟的定时时间,然后调用XMS_ctsPlay()函数播放一个只有5秒长的语音文件,则先返回“放音完成事件/XMS_EVT_PLAY”事件,然后再返回“定时器到期/XMS_EVT_DEV_TIMER”事件。
-
Q: 程序打开多个流程,在事件中如何判断设备是哪个流程上报的?
A: 调用XMS_acsOpenStream ( &g_acsHandle, &cfg_ServerID,g_u8UnitID, 32,32,fg_s32DebugOn, NULL); 返回的句柄 acsHandle,和事件中返回的句柄pAcsEvt->m_s32AcsHandle,可以判断这两个句柄是否相等,如果相等则说明这个设备是此流程上报的。
-
Q: 应用程序中怎样进行设备超时控制?
A: 应用程序通过调用XMS_ctsSetDevTimer实现设备超时处理。定时器到期后应用程序会收到相应的定时器事件。
-
Q: 重启所有keygoe服务后再启动程序,导致程序不能正常外呼?
A: 可能程序打开设备之后没有对设备进行reset操作,程序打开设备之后需要对设备reset下,使设备的各种参数能复位
查看程序在打开设备后,是否调用XMS_ctsResetDevice函数,没有则添加上即可
-
Q: 使用keygoe自带的例子程序打不开资源通道,如何处理?
A:第一步检测是否有其他设备连接这个DSP,具体操作是DSP模块->状态信息->socket link status。
第二步如果是3U,5U,11U,检查DSP的机框号是否正确,具体操作在流程模块->模块配置参数->CTBus资源配置项[0]的机箱ID。
第三步查看E1端口类型的语音通道是否使能,具体操作在DSP模块->运行配置->内部全局参数->数字接口类型->是否语音使能。
-
Q: 程序里如何获取DSP的MAC地址?
A:需要调用 XMS_ctsGetParam(ACSHandle_t acsHandle,DeviceID_t * deviceID,DJ_U16 u16ParamCmdType,DJ_U16 u16ParamDataSize,ParamData_Head_t * paramData);第一个参数为句柄,第二个参数为你要查询的DSP设备,第三个参数为BOARD_PARAM_GETBOARDINFO,第四个参数为0,
第五个参数为NULL;调用后提取返回事件XMS_EVT_GETPARAM里的Acs_ParamData_UserReadXmsBoardInfo结构,结构里的m_u8MacAddr[6]参数就是MAC地址的值,值的大小是10进制数,需要你将其转为16进制。
-
Q:如何获取KEYGOE交换机的LINKBROKEN状态?
A:通过解析XMS_EVT_UNIFAILURE通用失败事件,获取Acs_UniFailure_Data.m_s32AcsEvtErrCode的值,当值为7的时候,即为LINKBROKEN状态。