为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

[IT/计算机]USB电话语音盒编程接口函数

2017-11-12 50页 doc 180KB 18阅读

用户头像

is_079973

暂无简介

举报
[IT/计算机]USB电话语音盒编程接口函数[IT/计算机]USB电话语音盒编程接口函数 5.4 USB电话语音盒编程接口函数 在Windows系统平台,USB语音盒的所有接口函数名称和所需参数基本上与PCI语音 卡是一致的,除非特别说明,两者函数兼容。 USB语音盒提供的编程接口函数如下: 初始化和关闭系统接口函数包括: unsigned short GX_InitializeSystem(void); unsigned short GX_CloseSystem(void); 获取系统参数接口函数 unsigned long GX_GetCardSer...
[IT/计算机]USB电话语音盒编程接口函数
[IT/计算机]USB电话语音盒编程接口函数 5.4 USB电话语音盒编程接口函数 在Windows系统平台,USB语音盒的所有接口函数名称和所需参数基本上与PCI语音 卡是一致的,除非特别说明,两者函数兼容。 USB语音盒提供的编程接口函数如下: 初始化和关闭系统接口函数包括: unsigned short GX_InitializeSystem(void); unsigned short GX_CloseSystem(void); 获取系统参数接口函数 unsigned long GX_GetCardSerialNo(unsigned short CardNo); unsigned short GX_GetTotalCardCount(void); unsigned short GX_GetCardStatus(unsigned short CardNo); unsigned short GX_GetTotalChannelCount(void); unsigned short GX_GetTotalVoiceChannel(void); unsigned short GX_GetChannelType(unsigned short ChannelNo); unsigned short GX_GetChannelStatus(unsigned short ChannelNo); unsigned short GX_UsbWorkStatus(); unsigned short GX_SetBugMsg(unsigned short Type); 设置压缩函数 unsigned short GX_SetVoiceCompress(unsigned short CompressType) 打开关闭语音通道接口函数 unsigned short GX_OpenChannel(unsigned short ChannelNo); unsigned short GX_CloseChannel(unsigned short ChannelNo); 获取事件接口函数 unsigned short GX_GetMessageForWindows(unsigned short WaitTime, PGX_MESSAGE_INFO pMessageBuffer); unsigned short CheckMessageForWindows(unsigned short WaitTime, PGX_MESSAGE_INFO pMessageBuffer); 两线模拟中继模块操作接口函数包括: unsigned short GX_TrunkHookOff(unsigned short ChannelNo); unsigned short GX_TrunkHookOn(unsigned short ChannelNo); unsigned short GX_StartDetectTrunkPolarity(unsigned short ChannelNo); unsigned short GX_StopDetectTrunkPolarity(unsigned short ChannelNo); unsigned short GX_StartTrunkPickUp(unsigned short ChannelNo, unsigned short TimeByMicroSecond); unsigned short GX_StopTrunkPickUp(unsigned short ChannelNo); 用户模块操作接口函数 unsigned short GX_UserRingOn(unsigned short ChannelNo, unsigned short RingOnTime,unsigned short RingOffTime, unsigned short TotalTimes); unsigned short GX_UserRingOff(unsigned short ChannelNo); unsigned short GX_SetUserPickUpTime(unsigned short TimeByMicroSecond); 侦听通道接口函数 unsigned short GX_ListenChannel(unsigned short ChannelNo,unsigned short SourceChannel); unsigned short GX_UnListenChannel(unsigned short ChannelNo); unsigned short GX_SetLink(unsigned short ChannelNo, unsigned short OtherChannel); unsigned short GX_ClearLink(unsigned short ChannelNo, unsigned short OtherChannel); 声卡监听/放音接口函数 unsigned short GX_StartPlaySound(char *FileName, unsigned long Offset,unsigned long Length,BOOL bWav); unsigned short GX_StopPlaySound(); unsigned short GX_StartMonitorSound(unsigned short ChannelNo); unsigned short GX_StopMonitorSound(); 信号音识别接口函数 unsigned short GX_StartDetectDialTone(unsigned short ChannelNo); unsigned short GX_StopDetectDialTone(unsigned short ChannelNo); unsigned short GX_StartDetectBackTone(unsigned short ChannelNo); unsigned short GX_StopDetectBackTone(unsigned short ChannelNo); unsigned short GX_StartDetectBusyTone(unsigned short ChannelNo); unsigned short GX_StopDetectBusyTone(unsigned short ChannelNo); unsigned short GX_StartDetectToneData(unsigned short ChannelNo); unsigned short GX_StopDetectToneData(unsigned short ChannelNo); unsigned short GX_SetToneFrequency(unsigned short ChannelNo, unsigned short Frequency); unsigned short GX_GetToneInfo(unsigned short ChannelNo, PGX_TONE_INFO ToneInfo); unsigned short GX_SetToneInfo(unsigned short ChannelNo, PGX_TONE_INFO ToneInfo); unsigned short GX_SetSpecialSignalFrequency(unsigned short ChannelNo, unsigned short Frequency); unsigned short GX_StartDetectSpecialSignal(unsigned short ChannelNo, unsigned short TimeByMilliSecond); unsigned short GX_StopDetectSpecialSignal(unsigned short ChannelNo); 信号音产生接口函数 unsigned short GX_StartGenerateSignal(unsigned short ChannelNo, unsigned short Frequency0, unsigned short Frequency1, unsigned short OnTime, unsigned short OffTime, unsigned short TotalTimes,char StopChar); unsigned short GX_StopGenerateSignal(unsigned short ChannelNo); unsigned short GX_StartPlaySignal(unsigned short ChannelNo, unsigned short Type,unsigned short TotalTimes,char StopChar); unsigned short GX_StopPlaySignal(unsigned short ChannelNo); DTMF按键产生和识别接口函数 unsigned short GX_StartDetectDTMF(unsigned short ChannelNo, unsigned short SmartLevel); unsigned short GX_StopDetectDTMF(unsigned short ChannelNo); unsigned short GX_ClearDTMFBuffer(unsigned short ChannelNo); unsigned short GX_GetDTMFKey(unsigned short ChannelNo, unsigned short DTMFCount,char *DTMFKey); unsigned short GX_GenerateDTMFString(unsigned short ChannelNo, char *DTMFString); unsigned short GX_AutoDialOut(unsigned short ChannelNo, char *DTMFString); 录音接口函数 unsigned short GX_StartRecordFile(unsigned short ChannelNo, char *FileName,unsigned long Offset,unsigned long Length, char StopChar); unsigned short GX_StartRecordWaveFile(unsigned short ChannelNo, char *FileName,unsigned long Offset,unsigned long Length, char StopChar); unsigned short GX_StartRecordBuffer(unsigned short ChannelNo, char *Buffer,unsigned long Offset,unsigned long Length, char StopChar); unsigned short GX_StopRecordVoice(unsigned short ChannelNo); unsigned short GX_GetRecordLength(unsigned short ChannelNo, unsigned long *RecordLength); 放音接口函数 unsigned short GX_StartPlayFile(unsigned short ChannelNo,char *FileName, unsigned long Offset,unsigned long Length,char StopChar); unsigned short GX_StartPlayWavFile(unsigned short ChannelNo, char *FileName,unsigned long Offset,unsigned long Length, char StopChar); unsigned short GX_StartPlayBuffer(unsigned short ChannelNo,char *Buffer, unsigned long Offset,unsigned long Length,char StopChar); unsigned short GX_StopPlayVoice(unsigned short ChannelNo); unsigned short GX_GetPlayLength(unsigned short ChannelNo, unsigned long *PlayLength); unsigned short GX_InitPlayIndexFile(unsigned short ChannelNo); unsigned short GX_AddPlayIndexFile(unsigned short ChannelNo, char *FileName); unsigned short GX_StartPlayIndexFile(unsigned short ChannelNo, char StopChar) unsigned short GX_InitPlayIndexBuffer(void) unsigned short GX_AddPlayIndexBuffer(char *Buffer,unsigned long Length) unsigned short GX_StartPlayIndexBuffer(unsigned short ChannelNo, unsigned short *IndexTable, unsigned short IndexCount, char StopChar) 循环录放音接口函数 unsigned short GX_StartPlayCircleBuffer(unsigned short ChannelNo, char *Buffer,unsigned long TotalLength,char StopChar) unsigned short GX_StartRecordCircleBuffer(unsigned short ChannelNo, char *Buffer,unsigned long TotalLength,char StopChar) 语音/静音识别接口函数 unsigned short GX_StartDetectHelloVoice(unsigned short ChannelNo, unsigned short ThresholdValue); unsigned short GX_StopDetectHelloVoice(unsigned short ChannelNo); unsigned short GX_StartDetectBackToneHalt(unsigned short ChannelNo, unsigned short HaltTimeByMs); unsigned short GX_StopDetectBackToneHalt(unsigned short ChannelNo); unsigned short GX_StartDetectSilence(unsigned short ChannelNo, unsigned short ThresholdValue) unsigned short GX_StopDetectSilence(unsigned short ChannelNo) 超时设置接口函数 unsigned short GX_StartTimeOutForWindows(unsigned short ChannelNo, unsigned short TimeBySecond) unsigned short GX_StopTimeOutForWindows (unsigned short ChannelNo) unsigned short GX_SetTimeOutValueForWindows (unsigned short ChannelNo, unsigned short TimeBySecond) 主叫识别接口函数 unsigned short GX_StartDetectCallerID(unsigned short ChannelNo) unsigned short GX_StopDetectCallerID(unsigned short ChannelNo) unsigned short GX_GetRawFskCallerID(unsigned short ChannelNo, char *CallerIDString) unsigned short GX_GetFskCallerID(unsigned short ChannelNo, char *DateTime,char *TelNo,char *Name) unsigned short GX_GetDTMFCallerID(unsigned short ChannelNo, char *CallerIDString) 停止语音通道所有操作接口函数 unsigned short GX_StopAllOperate(unsigned short ChannelNo) TTS接口函数 unsigned short GX_InitTTS(void) unsigned short GX_CloseTTS(void) unsigned short GX_TTSFileToFile(char *TextFileName, char *VoiceFileName) unsigned short GX_TTSBufferToBuffer(char *TextBuffer, unsigned long TextCount,char *VoiceBuffer, unsigned long *VoiceCount) unsigned short GX_TTSBufferToFile(char *TextBuffer, unsigned long TextCount,char *VoiceFileName) 语音转换接口函数 unsigned short GX_AlawToWave(char *AlawFileName, char *WaveFileName) unsigned short GX_WaveToAlaw(char *WaveFileName, char *AlawFileName) unsigned short GX_AlawToAdpcm(char *AlawFileName, char *AdpcmFileName) unsigned short GX_AdpcmToAlaw(char *AdpcmFileName, char *AlawFileName) unsigned short GX_AlawAGC(char *SourceFileName, char *TargetFileName) unsigned short GX_AlawToWaveAGC(char *AlawFileName, char *WaveFileName) unsigned short GX_WaveToAlawAGC(char *WaveFileName, char *AlawFileName) unsigned short GX_WavAlawToGsm(char *AlawFileName, char *GsmFileName) unsigned short GX_WavGsmToAlaw(char *GsmFileName, char *AlawFileName) 5.4.1 初始化和关闭函数 ? GX_InitializeSystem 函数原型: unsigned short GX_InitializeSystem(void) 功 能: 该函数初始化USB语音盒的驱动程序参数,所以在使用任何USB语 音盒提供的接口函数前,一定要先调用该函数。 参 数: 无 返 回: 如果函数成功,返回0;否则返回错误码。错误码如下: 代号 数值 含义 GX_OK / GX_NO_ERROR 0 没有错误 GX_ERROR 0xFFFF 一般性错误 GX_ERROR_LOAD_PROGRAM 0xFFFE 装载程序错误 GX_ERROR_OPEN_DRIVER 0xFFFD 打开设备错误 注 释: 只有该函数返回0,语音卡才能正常操作;否则,调用失败。如果该 函数调用失败,请依据错误类型来检查语音盒的硬件和软件设置 ? GX_CloseSystem 函数原型: unsigned short GX_CloseSystem(void) 功 能: 该函数释放USB语音盒的驱动程序所申请的系统资源,所以当停止 USB语音盒操作时,应该调用该函数。 参 数: 无 返 回: 如果函数成功,返回0;否则返回错误码。 注 释: 如果调用过该函数之后,需要再次使用语音卡,需要再次调用函数 GX_InitializeSystem来初始化语音卡 5.4.2 获取系统参数接口函数 ? GX_GetCardSerialNo 函数原型: unsigned long GX_GetCardSerialNo(unsigned short CardNo) 功 能: 该函数取得插入计算机中的USB语音盒的序列号,可用于加密。 参 数: CardNo 插入计算机中的第几个语音盒 返 回: 函数返回插入计算机中指定语音盒的序列号 注 释: USB返回一般是8位数字 ? GX_GetTotalCardCount 函数原型: unsigned short GX_GetTotalCardCount(void) 功 能: 该函数取得插入计算机中的USB语音盒的数量 参 数: 无 返 回: 函数返回插入计算机中的USB语音盒的数量 注 释: 无 ? GX_GetCardStatus 函数原型: unsigned short GX_GetCardStatus(unsigned short CardNo) 功 能: 该函数取得插入计算机中的某个USB语音盒出错的错误号码。 该函数主要检测插入机器中的语音卡是否都正常。 参 数: CardNo 卡号,取值从0开始,最大值是插入语音卡的数量减一。 返 回: 函数返回值如下: 代号 数值 含义 GX OK / GX_NO_ERROR 0 没有错误 GX_ERROR 0xFFFF 一般性错误 GX_ERROR_LOAD_PROGRAM 0xFFFE 装载程序错误 注 释: 只有当相应的语音盒没有错误时,USB语音盒上的通道才能正常工 作。如果某个USB语音盒发生错误,则该个盒上的语音通道数量为0。 ? GX_GetTotalChannelCount 函数原型: unsigned short GX_GetTotalChannelCount(void) 功 能: 该函数取得插入计算机中的USB语音盒的逻辑通道总数量,包括语 音通道和传真通道 参 数: 无 返 回: 函数返回插入计算机中的USB语音盒的逻辑通道总数量 注 释: 逻辑通道数量是包括语音和传真所有通道在内的 ? GX_GetTotalVoiceChannel 函数原型: unsigned short GX_GetTotalVoiceChannel(void) 功 能: 该函数取得插入计算机中的USB语音盒的语音逻辑通道数量 参 数: 无 返 回: 函数返回插入计算机中的USB语音盒的语音逻辑通道数量 注 释: 语音逻辑通道数量是只包括语音通道,不包括传真通道在内 ? GX_GetChannelType 函数原型: unsigned short GX_GetChannelType(unsigned short ChannelNo) 功 能: 该函数获取语音逻辑通道号码为ChannelNo的通道所对应的物理通 道类型 参 数: ChannelNo 语音逻辑通道号码 返 回: 函数返回语音逻辑通道号码为ChannelNo的通道所对应的物理通道 类型 物理通道类型常量的定义如下: 代号 数值 含义 CHANNEL_TYPE_NONE 0 逻辑通道上没有任何模块 CHANNEL_TYPE_USER 1 逻辑通道上为用户模块(也叫坐席模块) CHANNEL_TYPE_TRUNK 2 逻辑通道上为外线模块(也叫中继模块) CHANNEL_TYPE_RECORD 3 逻辑通道上为录音模块(也叫高阻模块) CHANNEL_TYPE_MIX 4 逻辑通道上为混合模块 注 释: ChannelNo不能超过最大语音逻辑通道数量减一 ? GX_GetChannelStatus 函数原型: unsigned short GX_GetChannelStatus(unsigned short ChannelNo) 功 能: 该函数获取语音逻辑通道号码为ChannelNo的通道的当前状态 参 数: ChannelNo 语音逻辑通道号码,取值从0开始。 返 回: 函数返回语音逻辑通道号码为ChannelNo的通道所对应的通道状态。 通道状态往往是各种状态的组合,即下面的几个通道状态常量的或 值。 通道状态常量的定义如下: 代号 数值 含义 CHANNEL_STATUS_IDLE 0x0001 通道空闲,没有打开 CHANNEL_STATUS_OPEN 0x0002 通道已经打开 CHANNEL_STATUS_TRUNK_HOOK 0x0004 通道已经摘机 CHANNEL_STATUS_USER_RING 0x0008 通道正在振铃 CHANNEL_STATUS_PLAY 0x0010 通道正在放音 CHANNEL_STATUS_RECORD 0x0020 通道正在录音 CHANNEL_STATUS_GENERATE_DTMF 0x0040 通道正在产生DTMF CHANNEL_STATUS_SEND_FSK 0x0080 通道正在产生FSK CHANNEL_STATUS_GENERATE_SIGNAL 0x0100 通道正在产生信号音 CHANNEL_STATUS_DETECT_DTMF 0x0200 通道正在识别DTMF CHANNEL_STATUS_DETECT_CID 0x0400 通道正在识别主叫 CHANNEL_STATUS_DETECT_FSK 0x0800 通道正在识别FSK CHANNEL_STATUS_DETECT_SIGNAL 0x1000 通道正在识别信号音 CHANNEL_STATUS_SEND_FAX 0x2000 通道正在发送传真 CHANNEL_STATUS_RECEIVE_FAX 0x4000 通道正在接收传真 CHANNEL_STATUS_AUTO_DIAL_OUT 0x8000 通道正在自动拨号 注 释: ChannelNo不能超过最大语音逻辑通道数量减一。 通道的状态可以是以上几种状态的与。 ? GX_UsbWorkStatus 函数原型: unsigned short WINAPI GX_UsbWorkStatus() 功 能: 检测USB盒工作是否正常 参 数: 无 返 回: 如果调用成功,返回0 注 释: 通过不断的调用该函数检测,以确定USB盒是否拔除或USB口是否 死掉。 ? GX_SetBugMsg 函数原型: unsigned short WINAPI GX_SetBugMsg(unsigned short Type) 功 能: 生成调试信息 参 数: Type 0-不生成 1-生成 返 回: 如果调用成功,返回0 注 释: 调用该函数自动在c:\bug下生成调试信息文件,以便调试。信息文 件按日期时间分。当前的文件不能打开,关闭应用程序就可以打开。 5.4.3 设置语音压缩 ? GX_SetVoiceCompress 函数原型: unsigned short GX_SetVoiceCompress( unsigned short CompressType) 功 能: 设置压缩(初始化语音盒后调用) 参 数: CompressType 取值如下 定义 取值 含义 COMPRESS_TYPE_64KBPS 0x00 A-law格式,不压缩 COMPRESS_TYPE_32KBPS 0x01 ADPCM格式,2倍压缩 COMPRESS_TYPE_GSM 0x04 GSM格式,5倍压缩 返 回: 如果调用成功,返回0 注 释: USB语音盒录音和放音数据支持A-law、ADPCM、GSM三种格式。缺省 为A-law格式。 5.4.4 打开关闭语音通道接口函数 ? GX_OpenChannel 函数原型: unsigned short GX_OpenChannel(unsigned short ChannelNo) 功 能: 打开语音通道 参 数: ChannelNo 要打开语音通道的逻辑号码 返 回: 如果打开成功,返回0 注 释: USB语音盒上为兼容PCI接口保留该函数,可以不调用。对于PCI卡 每一个逻辑通道,只有被打开之后才能正常工作。 对于内线模块,通道打开后,GX08 PCI驱动程序给它所对应的物理 通道供电,并实时检测内线模块的摘机、挂机和拍插动作,并在内线 模块有动作时,传递相应事件给应用程序。 对于中继模块,通道打开后,GX08 PCI驱动程序实时检测中继模块 的振铃和极性信息,并在中继模块有振铃时,传递振铃事件;在模块 摘机后,开始检测极性是否反转,在有极性反转时,发送极性反转事 件,而在模块挂机后,停止极性反转检测,如果需要特殊的极性反转 检测,请使用GX_StartDetectTrunkPolarity和 GX_StopDetectTrunkPolarity函数。 对于录音模块,通道打开后,GX08 PCI驱动程序实时检测与录音模 块并接的话机的摘机和挂机动作,并在有动作时,传递相应事件给应 用程序。 特别说明: USB语音盒可以不调用该函数,初始化卡后自动启动 ? GX_CloseChannel 函数原型: unsigned short GX_CloseChannel(unsigned short ChannelNo) 功 能: 关闭语音通道 参 数: ChannelNo 要关闭语音通道的逻辑号码 返 回: 如果打开成功,返回0 注 释: USB语音盒上为兼容PCI接口保留该函数,可以不调用。PCI卡在不 再使用已经打开的某些通道时,为减少占用语音卡的板上资源,可 以关闭不再使用的通道。如果要使用某个已经被关闭的通道,必须 再调用函数GX_OpenChannel重新打开。 特别说明: USB语音盒可以不支持该函数,调用无意义 5.4.5 获取事件接口函数 ? GX_GetMessageForWindows 函数原型: unsigned short GX_GetMessageForWindows( unsigned short WaitTime,PGX_MESSAGE_INFO pMessageBuffer) 功 能: 获取USB语音盒的事件 参 数: WaitTime 无意义,保留 pMessageBuffer 指向GX_MESSAGE_INFO结构的地址指针,用于存放 返回的事件,GX_MESSAGE_INFO的结构定义如下: typedef struct _GX_MESSAGE_INFO { USHORT MessageCode; USHORT ChannelNo; USHORT Parameter[6]; } GX_MESSAGE_INFO, *PGX_MESSAGE_INFO; 如果该函数返回0,则表示有事件发生,事件类型以及其它指 示存于上面结构中。GX_MESSAGE_INFO结构中的各项含义如下: MessageCode 指示事件的类型,取值如下: 代号 数值 含义 MESSAGE_HAVE_CID_FSK 0x0000 有FSK方式的主叫事件 MESSAGE_HAVE_CID_DTMF 0x0001 有DTMF方式的主叫事件 MESSAGE_HAVE_CID_ERROR 0x0002 有主叫错误事件 MESSAGE_HAVE_DTMF 0x0003 有DTMF按键事件 MESSAGE_PLAY_VOICE_END 0x0004 放音结束事件 MESSAGE_PLAY_VOICE_EXIT 0x0005 放音中断事件 MESSAGE_RECORD_VOICE_END 0x0006 录音结束事件 MESSAGE_RECORD_VOICE_EXIT 0x0007 录音中断事件 MESSAGE_GENERATE_SIGNAL_END 0x0008 产生信号音结束事件 MESSAGE_GENERATE_SIGNAL_EXIT 0x0009 产生信号音中断事件 MESSAGE_GENERATE_DTMF_END 0x000A 产生DTMF完毕事件 MESSAGE_SEND_FSK_END 0x000B 发送FSK完毕事件 MESSAGE_HAVE_DIAL_TONE 0x000C 有拨号音事件 MESSAGE_HAVE_BUSY_TONE 0x000D 有忙音事件 MESSAGE_HAVE_BACK_TONE 0x000E 有回铃音事件 MESSAGE_HAVE_TONE_DATA 0x000F 有信号音数据事件 MESSAGE_HAVE_HELLO_VOICE 0x0010 有语音事件 MESSAGE_HAVE_SILENCE_DATA 0x0011 有静音数据事件 MESSAGE_HAVE_TIME_OUT 0x0012 有超时事件 MESSAGE_HAVE_FSK_DATA 0x0013 有收到FSK事件 MESSAGE_PLAY_CIRCLE_FIRST_END 0x0014 循环放音第一遍结束 MESSAGE_PLAY_CIRCLE_SECOND_END 0x0015循环放音第二遍结束 MESSAGE_RECORD_CIRCLE_FIRST_END 0x0016循环录音第一遍结束 MESSAGE_RECORD_CIRCLE_SECOND_END 0x0017循环录音第二遍结束 MESSAGE_AUTO_DIAL_NO_DIAL_TONE 0x0018 自动拨号无拨号音 MESSAGE_AUTO_DIAL_NONE_LISTEN 0x0019自动拨号无人接听 MESSAGE_AUTO_DIAL_HAVE_BUSY 0x001A 自动拨号有忙音事件 MESSAGE_AUTO_DIAL_HOOK_OFF 0x001B 自动拨号有摘机事件 MESSAGE_HAVE_SPECIAL_SIGNAL 0x001C 指定频率信号音事件 MESSAGE_HAVE_BACK_TONE_HALT 0x001E 无回铃音事件 MESSAGE_USER_HOOK_OFF 0x1001 用户模块摘机事件 MESSAGE_USER_HOOK_ON 0x1002 用户模块挂机事件 MESSAGE_USER_PICK_UP 0x1003 用户模块拍插事件 MESSAGE_USER_RING_END 0x1004 用户模块振铃完毕事件 MESSAGE_TRUNK_RING 0x2000 中继模块有振铃事件 MESSAGE_TRUNK_POLE 0x2001 中继模块有极性反转事件 MESSAGE_TRUNK_PICK_UP_END 0x2002 中继模块拍叉结束事件 MESSAGE_RECORD_HOOK_OFF 0x3001 录音模块有摘机事件 MESSAGE_RECORD_HOOK_ON 0x3002 录音模块有挂机事件 MESSAGE_RECORD_RING 0x3003 录音模块震铃事件 MESSAGE_RECORD_OPEN_CIRCLE 0x3004 录音模块接线事件 MESSAGE_RECORD_NO_OPEN_CIRCLE 0x3005录音模块断线事件 MESSAGE_SEND_FAX_OK 0x6000 发送传真成功事件 MESSAGE_SEND_FAX_ERROR 0x6001发送传真失败事件 MESSAGE_RECEIVE_FAX_OK 0x6002接收传真成功事件 MESSAGE_RECEIVE_FAX_ERROR 0x6003接收传真失败事件 MESSAGE_FAX_HAVE_REMOTE_TEL_NO 0x6004 有对方传真号码事件 MESSAGE_FAX_HAVE_INFORMATION 0x6005 有传真信息事件 MESSAGE_PLAY_SOUND_END 0x7031 声卡放音结束事件 MESSAGE_PLAY_SOUND_EXIT 0x7032 声卡放音退出事件 ChannelNo 指示发生事件的逻辑通道号码。传真通道和语音通道独立。 Parameter与相应事件相关联的参数,不同的事件附带不同的参数,关于事件 类型及其它参数的详细解释,请参考事件类型的相关章节。 返 回: 如果有事件,返回0,相应的事件内容存于pMessageBuffer中。 注 释: 一定在本函数返回0时,pMessageBuffer中的内容才有意义。 用户应用程序需要不断的循环调用该函数,取得各个通道的事件,并 进行处理或根据实际需要发送命令,才能保证USB语音系统的正常运 行。一般情况下,在初始化USB语音盒之后,便开始循环调用该函数。 两次调用该函数的时间间隔不能大于100毫秒,否则语音不连续。 ? GX_CheckMessageForWindows 函数原型: unsigned short CheckMessageForWindows( unsigned short WaitTime, PGX_MESSAGE_INFO pMessageBuffer) 功 能: 检测语音卡的事件 参 数: ChannelNo 逻辑通道号码。 pMessageBuffer 指向PGX_MESSAGE_INFO结构的地址指针,用于存 放返回的事件,具体说明参见GX_GetMessageForWindows函数 返 回: 如果调用成功,返回0。 注 释: 调用CheckMessageForWindows函数检测语音卡是否有事件,但检测 到有事件后必须调用GX_GetMessageForWindows函数把事件取走。推 荐直接调用GX_GetMessageForWindows函数查询语音卡事件。 5.4.6 两线模拟中继模块接口函数 ? GX_TrunkHookOff 函数原型: unsigned short GX_TrunkHookOff(unsigned short ChannelNo) 功 能: 设置中继模块摘机。 参 数: ChannelNo 逻辑通道号码。 返 回: 如果调用成功,返回0。 注 释: 对于中继模块通道,当有振铃事件或需要向外拨号时,必须首先摘 机,才能进行其它操作。如在有振铃事件时,先摘机,然后进行放 音、录音或DTMF识别等操作。 ? GX_TrunkHookOn 函数原型: unsigned short GX_TrunkHookOn(unsigned short ChannelNo) 功 能: 设置中继模块挂机。 参 数: ChannelNo 逻辑通道号码。 返 回: 如果调用成功,返回0 注 释: 对于中继模块通道,当双方通话完毕或检测到对方挂机时,应该挂 机。 ? GX_StartDetectTrunkPolarity 函数原型: unsigned short GX_StartDetectTrunkPolarity( unsigned short ChannelNo) 功 能: 开始检测中继模块的极性反转,该函数主要用于在特殊情况下,需 要检测极性反转时,使用该函数如果检测到有极性反转,则送出事 件MESSAGE_TRUNK_HAVE_POLE,并停止检测极性反转;如果需要停止 检测,可以调用GX_StopDetectTrunkPolarity函数。 当用于呼出时,判定对方是否摘机的极性反转,系统自动检测,无 须调用该函数。 参 数: ChannelNo 逻辑通道号码。 返 回: 如果调用成功,返回0 注 释: 在使用本功能时,必须首先向电信公司申请极性反转功能。 ? GX_StopDetectTrunkPolarity 函数原型: unsigned short GX_StopDetectTrunkPolarity( unsigned short ChannelNo) 功 能: 停止检测中继模块的极性反转。 参 数: ChannelNo 逻辑通道号码。 返 回: 如果调用成功,返回0 注 释: ? GX_StartTrunkPickUp 函数原型: unsigned short GX_StartTrunkPickUp(unsigned short ChannelNo, unsigned short TimeByMicroSecond) 功 能: 中继模块拍叉簧。 参 数: ChannelNo 逻辑通道号码。 TimeByMicroSecond 拍叉簧动作的时间,单位毫秒。 返 回: 如果调用成功,返回0 注 释: 所谓的拍插动作,就是当模块由摘机状态转换到挂机状态,然后再回 到摘机状态的总共时间小于一定时间的动作 ? GX_StopTrunkPickUp 函数原型: unsigned short GX_StopTrunkPickUp(unsigned short ChannelNo) 功 能: 停止中继模块拍叉簧。如果 GX_StartTrunkPickUp中拍叉簧动 作的时间太长,可调用该函数终止。 参 数: ChannelNo 逻辑通道号码。 返 回: 如果调用成功,返回0 注 释: 5.4.7 用户模块接口函数 ? GX_UserRingOn 函数原型: unsigned short GX_UserRingOn( unsigned short ChannelNo,unsigned short RingOnTime, unsigned short RingOffTime, unsigned short TotalTimes) 功 能: 设置用户模块振铃。振铃信号是周期性的,每个周期由两段组成, 即有无,每一段时间均可设定,总的振铃周期数量也可以设定。在 振铃完毕时,会返回振铃结束(MESSAGE_USER_RING_END)事件,如果 在振铃期间发送停止振铃命令,则立即停止振铃,并且没有任何事 件返回。 参 数: ChannelNo 逻辑通道号码 RingOnTime 代表振铃时间,单位毫秒,取值0x0001—0xFFFF。 RingOffTime 代表不振铃时间,单位毫秒,取值0x0000—0xFFFF。 TotalTimes 代表总的振铃周期数量,取值0x0001--0xFFFF。 返 回: 如果调用成功,返回0 注 释: 送出的振铃信号波形如下: OnTime OffTime OnTime OffTime … … … 第一个振铃周期 第二个振铃周期 ? GX_UserRingOff 函数原型: unsigned short GX_UserRingOff(unsigned short ChannelNo) 功 能: 停止用户模块振铃。 参 数: ChannelNo 逻辑通道号码。 返 回: 如果调用成功,返回0 注 释: ? GX_SetUserPickUpTime 函数原型: BOOL unsigned short GX_SetUserPickUpTime(unsigned short TimeByMicroSecond) 功 能: 设置用户模块拍插时间。 参 数: TimeByMicroSecond 以毫秒为单位的时间,该缺省值为500ms。 返 回: 如果调用成功,返回0 注 释: 该函数对整个系统的所有用户模块均发生作用,当用户模块有拍插 动作时,USB语音盒发送MESSAGE_USER_PICK_UP事件。 所谓的拍插动作,就是当用户模块由摘机状态转换到挂机状态,然 后再回到摘机状态的总共时间小于一定时间的动作。 5.4.8 侦听通道接口函数 ? GX_ListenChannel 函数原型: unsigned short GX_ListenChannel( unsigned short ChannelNo,unsigned short SourceChannel) 功 能: 侦听通道,即逻辑通道号码为ChannelNo的通道侦听逻辑通道号码 为SourceChannel的通道。 参 数: ChannelNo 目的通道的逻辑号码 SourceChannel 源通道的逻辑号码 返 回: 如果调用成功,返回0 注 释: 当函数成功调用后,目的通道的信息来源于被侦听的通道,而在这 种情况下发送放音命令时,将无法正确放音。 特别说明: USB语音盒是使用声卡侦听,ChannelNo必须是0,SourceChannel 才是侦听的逻辑通道号。 ? GX_UnListenChannel 函数原型: unsigned short GX_UnListenChannel(unsigned short ChannelNo) 功 能: 停止侦听,即停止逻辑通道号码为ChannelNo的通道侦听其它通道。 参 数: ChannelNo 目的通道的逻辑号码 返 回: 如果调用成功,返回0 注 释: 特别说明: USB语音盒是使用声卡侦听,ChannelNo必须是0 ? GX_SetLink 函数原型: unsigned short GX_SetLink(unsigned short ChannelNo, unsigned short OtherChannel); 功 能: 两路连通通话。 参 数: ChannelNo 通道号一 OtherChannel 通道号二 返 回: 如果调用成功,返回0 注 释: 两路拆除连通调用GX_ClearLink。 特别说明: USB语音盒两路连通通话只能是同一个盒中的线路通话,ChannelNo 和OtherChannel是在同一盒中线路。 ? GX_ClearLink 函数原型:unsigned short GX_ClearLink(unsigned short ChannelNo, unsigned short OtherChannel) 功 能:两路拆除连通。 参 数:ChannelNo 通道号一 OtherChannel 通道号二 返 回:如果调用成功,返回0 注 释:必须在GX_SetLink两路连通不用时使用 特别说明:USB语音盒两路连通通话只能是同一个盒中的线路通话,ChannelNo和 OtherChannel是在同一盒中线路。 5.4.9 声卡监听/放音接口函数 USB语音盒的放音、监听通过电脑声卡实现,接听时把音响或耳机插头插入电脑声卡插孔即可。 ? GX_StartPlaySound 函数原型: unsigned short GX_StartPlaySound(char *FileName, unsigned long Offset,unsigned long Length,BOOL bWav); 功 能: 开始声卡放音,放音结束时发送MESSAGE_PLAY_SOUND_END事件给应 用程序。 参 数: FileName 放音文件名,含有文件存放的路径,最大长度为 MAX_FILE_NAME_NUM-1 Ofsset 指定放音文件的字节偏移长度 Length 指定放音文件的字节长度,如果设为0xFFFFFFFF,则 表示一直到文件结尾 bWav 该文件是否为Windows的WAV文件 返 回: 如果调用成功,返回0 注 释: 该函数不检测播放的文件格式,播放的文件格式与 GX_SetVoiceCompress函数设置的格式有关,如果放的音不正确,请 检查设置的语音数据格式是否正确。如果播放的是WAV文件,该函数 只支持A-Law和GSM格式,与GX_SetVoiceCompress函数也相关。 ? GX_StopPlaySound 函数原型: unsigned short GX_StopPlaySound(); 功 能: 停止声卡放音 参 数: 无 返 回: 如果调用成功,返回0 注 释: ? GX_StartMonitorSound 函数原型: unsigned short GX_StartMonitorSound( unsigned short ChannelNo); 功 能: 开始声卡监听 参 数: ChannelNo 监听的逻辑通道 返 回: 如果调用成功,返回0 注 释: ? GX_StopMonitorSound 函数原型: unsigned short GX_StopMonitorSound; 功 能: 停止声卡监听 参 数: 无 返 回: 如果调用成功,返回0 注 释: 开始声卡监听后,在不再监听或要监听其他通道后调用该函数 5.4.10 信号音识别接口函数 ? GX_StartDetectDialTone 函数原型: unsigned short GX_StartDetectDialTone( unsigned short ChannelNo) 功 能: 开始识别标准450Hz的拨号音,当识别到拨号音时,发送 MESSAGE_HAVE_DIAL_TONE(有拨号音)事件给应用程序。 参 数: ChannelNo 通道的逻辑号码 返 回: 如果调用成功,返回0 注 释: 该函数仅仅识别标准的拨号音,这个函数常常在中继模块的摘机之 后,而在拨号之前调用,以验证线路是否可以拨号。在检测到标准 拨号音后,USB语音盒继续检测标准拨号音,并不停止;如果要停止 检测,必须调用函数GX_StopDetectDialTone。 ? GX_StopDetectDialTone 函数原型: unsigned short GX_StopDetectDialTone( unsigned short ChannelNo) 功 能: 停止检测标准拨号音。 参 数: ChannelNo 通道的逻辑号码。 返 回: 如果调用成功,返回0 注 释: ? GX_StartDetectBackTone 函数原型: unsigned short GX_StartDetectBackTone( unsigned short ChannelNo) 功 能: 开始识别标准450Hz的回铃音,当识别到回铃音(2个周期)时,发送 MESSAGE_HAVE_BACK_TONE(有回铃音)事件给应用程序。 参 数: ChannelNo 通道的逻辑号码。 返 回: 如果调用成功,返回0。 注 释: 该函数仅仅识别标准的回铃音,这个函数常常在中继模块的拨号之 后调用,以验证线路是否接通。 在检测到标准回铃音后,USB语音盒继续检测标准回铃音,并不停止; 如果要停止检测,必须调用函数GX_StopDetectBackTone。 ? GX_StopDetectBackTone 函数原型: unsigned short GX_StopDetectBackTone( unsigned short ChannelNo) 功 能: 停止检测标准回铃音。 参 数: ChannelNo 通道的逻辑号码。 返 回: 如果调用成功,返回0 注 释: ? GX_StartDetectBusyTone 函数原型: unsigned short GX_StartDetectBusyTone( unsigned short ChannelNo) 功 能: 开始识别标准450Hz的忙音,当识别到,个忙音周期时(350/700), 发送MESSAGE_HAVE_BUSY_TONE(有忙音)事件给应用程序。 参 数: ChannelNo 通道的逻辑号码。 返 回: 如果调用成功,返回0 注 释: 该函数仅仅识别标准的忙音,这个函数常常在中继模块拨号之后调 用,以验证线路是否接通;或在双方通话之中调用,以检测对方是 否挂机。在检测到标准忙音后,USB语音盒继续检测标准忙音,并不 停止;如果要停止检测,必须调用函数GX_StopDetectBusyTone。 ? GX_StopDetectBusyTone 函数原型: unsigned short GX_StopDetectBusyTone( unsigned short ChannelNo) 功 能: 停止检测标准忙音。 参 数: ChannelNo 通道的逻辑号码。 返 回: 如果调用成功,返回0 注 释: ? GX_StartDetectToneData 函数原型: unsigned short GX_StartDetectToneData( unsigned short ChannelNo) 功 能: 识别450Hz频率的声音,定时(每个204ms)送出识别的结果数据事 件(MESSAGE_HAVE_Tone_DATA)。识别结果数据由16位的一个字表 示,这个字的每一位的1或0分别代表有要识别的语音和没有要识 别的语音。祥细说明参见GX_StartDetectSilence函数。 参 数: ChannelNo 通道的逻辑号码。 返 回: 如果调用成功,返回0 注 释: USB语音盒上为兼容PCI接口保留该函数。要停止识别,必须调用函 数GX_StopDetectToneData。 特别说明: USB语音盒不支持该函数,调用后无意义。 ? GX_StopDetectToneData 函数原型: unsigned short GX_StopDetectToneData( unsigned short ChannelNo) 功 能: 停止识别信号音数据 参 数: ChannelNo 通道的逻辑号码 返 回: 如果调用成功,返回0 注 释: USB语音盒上为兼容PCI接口保留该函数。 特别说明: USB语音盒不支持该函数,调用后无意义。 ? GX_SetToneFrequency 函数原型: unsigned short GX_SetToneFrequency(unsigned short ChannelNo, unsigned short Frequency) 功 能: 设置识别信号音数据的频率。该函数设置语音卡检测拨号音、回铃 音、忙音的频率。 参 数: ChannelNo 通道的逻辑号码 Frequency 检测信号音的频率,单位Hz(赫兹) 返 回: 如果调用成功,返回0 注 释: USB语音盒上为兼容PCI接口保留该函数。语音卡缺省自动检测450Hz 的标准信号音的拨号音、回铃音和忙音。如果交换机不标准,那么信 号音的就频率就不是450Hz,此时可调用该函数设置语音卡检测信号 音的频率 特别说明: USB语音盒不支持该函数,调用后无意义。 ? GX_GetToneInfo 函数原型: unsigned short GX_GetToneInfo( unsigned short ChannelNo,PGX_TONE_INFO ToneInfo) 功 能: 获取当前语音卡识别信号音的参数 参 数: ChannelNo 通道的逻辑号码 PGX_TONE_INFO 结构的地址指针,定义如下: typedef struct _GX_TONE_INFO { unsigned short DialToneMinTotalTime; unsigned short BusyToneMaxTotalTime; unsigned short BusyToneMinTotalTime; unsigned short BusyToneRatio; unsigned short BusyToneErrorBetweenTwo; unsigned short BusyToneTotalTimes; unsigned short BackToneMaxTotalTime; unsigned short BackToneMinTotalTime; unsigned short BackToneRatio; unsigned short BackToneErrorBetweenTwo; unsigned short BackToneTotalTimes; }GX_TONE_INFO, *PGX_TONE_INFO; DialToneMinTotalTime 声音持续认为是拨号音的最短时间, 缺省为2500毫秒 BusyToneMaxTotalTime 忙音断续声中,认为声音是忙音的最 大时间长度,缺省为1500毫秒 BusyToneMinTotalTime 忙音断续声中,认为声音是忙音的最 小时间长度,缺省为500毫秒 BusyToneRatio 忙音断续声中,认为是忙音时一次有 声音的时间与断续声时间之和的百 分比,缺省为50% BusyToneErrorBetweenTwo 忙音断续声中,一次有声音的时间与 断续声时间之和的百分比少于多少 认为不是忙音,缺省为10% BusyToneTotalTimes 检测忙音次数,语音卡检测到多少次 忙音的断续音才认为有忙音,缺省为 3次 BackToneMaxTotalTime 回铃音断续声中,认为声音是回铃音 的最大时间长度,缺省为6000毫秒 BackToneMinTotalTime 回铃音断续声中,认为声音是回铃音 的最小时间长度,缺省为4000毫秒 BackToneRatio 回铃音断续声中,认为是回铃音时一 次有声音的时间与断续声时间之和 的百分比,缺省为20% BackToneErrorBetweenTwo 回铃音断续声中,一次有声音的时间 与断续声时间之和的百分比少于多 少认为不是回铃音,缺省为10% BackToneTotalTimes 检测回铃音次数,语音卡检测到多少 次回铃音的断续音才认为有回铃音, 缺省为2个 返 回: 如果调用成功,返回0 注 释: ? GX_SetToneInfo 函数原型: unsigned short GX_SetToneInfo( unsigned short ChannelNo,PGX_TONE_INFO ToneInfo) 功 能: 设置语音卡识别信号音参数 参 数: ChannelNo 通道的逻辑号码 PGX_TONE_INFO 结构的地址指针,定义如下: typedef struct _GX_TONE_INFO { unsigned short DialToneMinTotalTime; unsigned short BusyToneMaxTotalTime; unsigned short BusyToneMinTotalTime; unsigned short BusyToneRatio; unsigned short BusyToneErrorBetweenTwo; unsigned short BusyToneTotalTimes; unsigned short BackToneMaxTotalTime; unsigned short BackToneMinTotalTime; unsigned short BackToneRatio; unsigned short BackToneErrorBetweenTwo; unsigned short BackToneTotalTimes; }GX_TONE_INFO, *PGX_TONE_INFO; DialToneMinTotalTime 声音持续认为是拨号音的最短时间, 缺省为2500毫秒 BusyToneMaxTotalTime 忙音断续声中,认为声音是忙音的最 大时间长度,缺省为1500毫秒 BusyToneMinTotalTime 忙音断续声中,认为声音是忙音的最 小时间长度,缺省为500毫秒 BusyToneRatio 忙音断续声中,认为是忙音时一次有 声音的时间与断续声时间之和的百 分比,缺省为50% BusyToneErrorBetweenTwo 忙音断续声中,一次有声音的时间与 断续声时间之和的百分比少于多少 认为不是忙音,缺省为10% BusyToneTotalTimes 检测忙音次数,语音卡检测到多少次 忙音的断续音才认为有忙音,缺省为 3次 BackToneMaxTotalTime 回铃音断续声中,认为声音是回铃音 的最大时间长度,缺省为6000毫秒 BackToneMinTotalTime 回铃音断续声中,认为声音是回铃音 的最小时间长度,缺省为4000毫秒 BackToneRatio 回铃音断续声中,认为是回铃音时一 次有声音的时间与断续声时间之和 的百分比,缺省为20% BackToneErrorBetweenTwo 回铃音断续声中,一次有声音的时间 与断续声时间之和的百分比少于多 少认为不是回铃音,缺省为10% BackToneTotalTimes 检测回铃音次数,语音卡检测到多少 次回铃音的断续音才认为有回铃音, 缺省为2个 返 回: 如果调用成功,返回0 注 释: ? GX_SetSpecialSignalFrequency(选配) 函数原型: unsigned short GX_SetSpecialSignalFrequency (unsigned short ChannelNo, unsigned short Frequency) 功 能: 设置识别信号音的频率。该函数设置频率对拨号音、回铃音、忙音 等标准信号音无影响 参 数: ChannelNo 通道的逻辑号码 Frequency 识别信号音的频率 返 回: 如果调用成功,返回0 注 释: 该函数设置识别指定频率的信号音,对拨号音、回铃音、忙音等标准 信号音无影响。可用于识别2100Hz的传真信号音,判断对方是否为 传真。该功能是选配功能,在购买语音卡时必须说明选配。 注 释: USB语音盒上为兼容PCI接口保留该函数。 特别说明: USB语音盒不支持该函数,调用无意义。 ? GX_StartDetectSpecialSignal(选配) 函数原型: unsigned short GX_StartDetectSpecialSignal( unsigned short ChannelNo, unsigned short TimeByMilliSecond) 功 能: 开始识别指定频率的信号音 参 数: ChannelNo 通道的逻辑号码 TimeByMilliSecond 识别信号音持续的时间,单位毫秒 返 回: 如果调用成功,返回0 注 释: USB语音盒上为兼容PCI接口保留该函数。该函数设置识别指定频 率的信号音,对拨号音、回铃音、忙音等标准信号音无影响。识别到 指定频率的信号音后,会有MESSAGE_HAVE_SPECIAL_SIGNAL 事件。可用于识别2100Hz的传真信号音,判断对方是否为传真。该 功能是选配功能,在购买语音卡时必须说明选配。 特别说明: USB语音盒不支持该函数,调用无意义。 ? GX_StopDetectSpecialSignal(选配) 函数原型: unsigned short GX_SetSpecialSignalFrequency( unsigned short ChannelNo, unsigned short Frequency) 功 能: 停止识别指定频率的信号音 参 数: ChannelNo 通道的逻辑号码 Frequency 识别信号音的频率 返 回: 如果调用成功,返回0 注 释: USB语音盒上为兼容PCI接口保留该函数。该函数停止识别指定频 率的信号音,对拨号音、回铃音、忙音等标准信号音无影响。可用于 识别2100Hz的传真信号音,判断对方是否为传真。该功能是选配功 能,在购买语音卡时必须说明选配。 特别说明: USB语音盒不支持该函数,调用无意义。 5.4.11 信号音产生接口函数 ? GX_StartGenerateSignal 函数原型: unsigned short GX_StartGenerateSignal( unsigned short ChannelNo,unsigned short Frequency0, unsigned short Frequency1, unsigned short OnTime, unsigned short OffTime, unsigned short TotalTimes, char StopChar) 功 能: 产生300Hz—3400Hz之间的一个或两个频率的有无间断的周期性声 音,每一个周期分为两段,第一段产生信号音,第二段不产生信号 音。并在产生完毕时,发送事件(MESSAGE_GENERATE_SIGNAL_END); 如果有指定的停止发送信号音的DTMF按键,则在收到指定的停止发 送信号音的DTMF按键时,发送事件 (MESSAGE_GENERATE_SIGNAL_EXIT),然后发送有DTMF事件;如果 在产生信号音中间发送停止发送信号音命令,则立即停止发送信号 音,并且没有任何事件产生。 参 数: ChannelNo 通道的逻辑号码。 Frequency0 指定第一个频率的频率值,单位赫兹(Hz)。 Frequency1 指定第二个频率的频率值,单位赫兹(Hz)。 OnTime 指定产生信号音的时间,单位毫秒,取值 0x0000-0x7FFF。 OffTime 指定不产生信号音的时间,单位毫秒,取值 0x0000-0x7FFF。 TotalTimes 指定产生信号音的周期次数。 StopChar 指定如果通道收到某个或某些DTMF按键,停止产生信 号音,有效取值如下: 0x00 表示收到任何DTMF按键都不停止 0x01 表示收到任一DTMF按键就停止 0—9,*,#,A,B,C,D 表示收到某个DTMF按键就停止 其他值 没有意义 返 回: 如果调用成功,返回0 注 释: USB语音盒上为兼容PCI接口保留该函数。 如果要停止产生信号音,必须调用函数GX_StopGenerateSignal。 如果要使StopChar生效,必须首先调用识别DTMF函数 GX_StartDetectDTMF 特别说明: USB语音盒不支持参数Frequency0和Frequency1,这两个参数无效, 自动支持450Hz。与调用函数GX_StartPlaySignal功能相同。参数 OnTime和OffTime对应: OnTime OffTime 意义 时间(ms) 1000 0 拨号音 1000 5000 回铃音 350 350 忙音一 700 700 忙音二 其他值 其他值 ? GX_StopGenerateSignal 函数原型: unsigned short GX_StopGenerateSignal( unsigned short ChannelNo) 功 能: 停止产生信号音。 参 数: ChannelNo 通道的逻辑号码。 返 回: 如果调用成功,返回0 注 释: ? GX_StartPlaySignal 函数原型: unsigned short GX_StartPlaySignal( unsigned short ChannelNo,unsigned short Type, unsigned short TotalTimes,char StopChar); 功 能: 产生信号音。 参 数: ChannelNo 通道的逻辑号码。 Type 信号音类型 TotalTimes 指定产生信号音的周期次数。 StopChar 指定如果通道收到某个或某些DTMF按键,停止产生信 号音,有效取值如下: 0x00 表示收到任何DTMF按键都不停止 0x01 表示收到任一DTMF按键就停止 0—9,*,#,A,B,C,D 表示收到某个DTMF按键就停止 其他值 没有意义 返 回: 如果调用成功,返回0 注 释: USB语音盒支持。如果要停止产生信号音,必须调用函数 GX_ StopPlaySignal。该函数产生450Hz标准信号音。信号音类型为: 类型 值 意义 SIGNAL_TYPE_DIAL 0x00 拨号音 SIGNAL_TYPE_BACK 0x01 回铃音 SIGNAL_TYPE_BUSY350 0x02 忙音一 SIGNAL_TYPE_BUSY700 0x03 忙音二 SIGNAL_TYPE_OTHER 0x04 其他 ? GX_StopPlaySignal 函数原型: unsigned short GX_StopPlaySignal(unsigned short ChannelNo) 功 能: 停止产生信号音。 参 数: ChannelNo 通道的逻辑号码。 返 回: 如果调用成功,返回0 注 释: USB语音盒支持。 5.4.12 DTMF识别和产生接口函数 ? GX_StartDetectDTMF 函数原型: unsigned short GX_StartDetectDTMF(unsigned short ChannelNo, unsigned short SmartLevel) 功 能: 开始识别DTMF按键,在识别到DTMF时,发送事件 (MESSAGE_HAVE_DTMF),并继续识别,直到发送停止识别命令。应用 程序可以随时调用函数GX_GetDTMFKey来获取已经识别到的DTMF按 键。 参 数: ChannelNo 通道的逻辑号码。 SmartLevel 指定识别DTMF的灵敏度,取值为0-2,数字越大越灵 敏,但应注意,灵敏度越大,识别的准确率可能降低。 通常取0 返 回: 如果调用成功,返回0 注 释: 要检测DTMF请先调用该函数。 ? GX_StopDetectDTMF 函数原型: unsigned short GX_StopDetectDTMF(unsigned short ChannelNo) 功 能: 停止检测DTMF按键。 参 数: ChannelNo 通道的逻辑号码。 返 回: 如果调用成功,返回0 注 释: ? GX_ClearDTMFBuffer 函数原型: unsigned short GX_ClearDTMFBuffer(unsigned short ChannelNo) 功 能: 清除某一通道已经识别出来的但仍然没有被取走的DTMF按键。 参 数: ChannelNo 通道的逻辑号码。 返 回: 如果调用成功,返回0 注 释: 该函数多数用在已经调用开始识别DTMF按键后,在获取新的按键之 前,清除通道内没有用的DTMF按键。 ? GX_GetDTMFKey 函数原型: unsigned short GX_GetDTMFKey(unsigned short ChannelNo, unsigned short DTMFCount,char *DTMFKey) 功 能: 获取DTMF按键,从ChannelNo通道内提取数量为DTMFCount个按键。 如果含有足够数量的DTMF按键,则将按键依次添入DTMFKey所指的 缓存区中,并返回TRUE;否则返回FALSE。 参 数: ChannelNo 通道的逻辑号码。 DTMFKey 存放取回的DTMF按键,数量为DTMFCount。 DTMFCount 要取回的DTMF按键数量,取值为 1——(MAX_DTMF_NUM-1)。 返 回: 如果含有所需数目的DTMF按键,返回0,按键存于DTMFKey中 注 释: ? GX_GenerateDTMFString 函数原型: unsigned short GX_GenerateDTMFString( unsigned short ChannelNo, char *DTMFString) 功 能: 产生DTMF按键。 参 数: ChannelNo 通道的逻辑号码。 DTMFString 要产生的DTMF按键的字符串,以0x00结尾,数量小于 MAX_DTMF_NUM-1。有效的字符为:0——9、*、#、A、B、C、D。 返 回: 如果调用成功,返回0 注 释: 不能与放音函数同时调用。 ? GX_AutoDialOut 函数原型: unsigned short GX_AutoDialOut(unsigned short ChannelNo, char *DTMFString) 功 能: 自动拨号 参 数: ChannelNo 通道的逻辑号码。 DTMFString 要产生的DTMF按键的字符串,以0x00结尾,数量小于 MAX_DTMF_NUM-1。有效的字符为:0——9、*、#、A、B、 C、D。 返 回: 如果调用成功,返回0 注 释: USB语音盒上为兼容PCI接口保留该函数。 对于中继模块,摘机后调用GX_AutoDialOut拨号,拨号结果会返回 事件 MESSAGE_AUTO_DIAL_NO_DIAL_TONE 无拨号音 MESSAGE_AUTO_DIAL_NONE_LISTEN 无人接听 MESSAGE_AUTO_DIAL_HAVE_BUSY 有忙音 MESSAGE_AUTO_DIAL_HOOK_OFF 对方摘机,通话 在自动拨号时内部调用了GX_StartTimeOutForWindows启动了定时 器,调用该函数时不能再在应用程序中调用 GX_StartTimeOutForWindows函数。 特别说明: USB语音盒不支持该函数,调用无意义。要拨号调用函数 GX_GenerateDTMFString,参见例子拨号震铃。 5.4.13 录音接口函数 ? GX_StartRecordFile 函数原型: unsigned short GX_StartRecordFile( unsigned short ChannelNo,char*FileName, unsigned long Offset,unsigned long Length,char StopChar) 功 能: 开始文件录音,将录音数据存于文件。可以设置录音长度,或设置 在收到某个或某些DTMF按键时,停止录音。当录音数据达到要求时, 停止录音,并送出事件MESSAGE_RECORD_VOICE_END;当收到相应的 DTMF按键时,停止录音,并送出事件MESSAGE_RECORD_VOICE_EXIT。 参 数: ChannelNo 通道的逻辑号码。 FileName 录音文件名称,含有文件存放的路径,最大长度为 MAX_FILE_NAME_NUM-1。 Offset 如果录音文件存在,存放语音的起始位置,如果录音文 件不存在,必须设置为0。 Length 需要录音数据的字节长度,如果设为0xFFFFFFFF,则 一直录音,直到发送录音停止命令,或有指定的DTMF 收到。 StopChar 停止录音的DTMF,当收到相应的DTMF按键时,停止录 音,有效的取值为: 0x00 表示收到任何DTMF按键都不停止 0x01 表示收到任一DTMF按键就停止 0—9,*,#,A,B,C,D 表示收到某个DTMF按键就停止 其他值 没有意义 返 回: 如果调用成功,返回0 注 释: ? GX_StartRecordWaveFile 函数原型: unsigned short GX_StartRecordWaveFile( unsigned short ChannelNo,char*FileName, unsigned long Offset,unsigned long Length,char StopChar) 功 能: 与GX_StartRecordFile功能相同。开始文件录音,将录音数据存于 文件。可以设置录音长度,或设置在收到某个或某些DTMF按键时, 停止录音。当录音数据达到要求时,停止录音,并送出事件 MESSAGE_RECORD_VOICE_END;当收到相应的DTMF按键时,停止录音, 并送出事件MESSAGE_RECORD_VOICE_EXIT。 参 数: ChannelNo 通道的逻辑号码。 FileName 录音文件名称,含有文件存放的路径,最大长度为 MAX_FILE_NAME_NUM-1。 Offset 如果录音文件存在,存放语音的起始位置,如果录音文 件不存在,必须设置为0。 Length 需要录音数据的字节长度,如果设为0xFFFFFFFF,则 一直录音,直到发送录音停止命令,或有指定的DTMF 收到。 StopChar 停止录音的DTMF,当收到相应的DTMF按键时,停止录 音,有效的取值为: 0x00 表示收到任何DTMF按键都不停止 0x01 表示收到任一DTMF按键就停止 0—9,*,#,A,B,C,D 表示收到某个DTMF按键就停止 其他值 没有意义 返 回: 如果调用成功,返回0 注 释: 生成的文件格式是Windows 的Wav文件格式,可以直接使用Windows 的媒体播放器播放。Wav文件格式的数据格式也有多种多样,USB语 音盒支持A-law和GSM数据格式的Wav文件。设置调用 GX_SetVoiceCompress。 ? GX_StartRecordBuffer 函数原型: unsigned short GX_StartRecordBuffer( unsigned short ChannelNo,char*Buffer, unsigned long Offset,unsigned long Length,char StopChar) 功 能: 开始缓存区录音,将录音数据存于缓存区。必须设置录音长度,可 以设置在收到某个或某些DTMF按键时,停止录音。当录音数据达到 要求时,停止录音,并送出事件MESSAGE_RECORD_VOICE_END;当收 到相应的DTMF按键时,停止录音,并送出事件 MESSAGE_RECORD_VOICE_EXIT。 参 数: ChannelNo 通道的逻辑号码。 Buffer 录音缓存区, Offset 存放语音的起始位置 Length 需要录音数据的字节长度,如果设为0xFFFFFFFF,则 一直录音,直到发送录音停止命令,或有指定的DTMF 收到。 StopChar 停止录音的DTMF,当收到相应的DTMF按键时,停止录 音,有效的取值为: 0x00 表示收到任何DTMF按键都不停止 0x01 表示收到任一DTMF按键就停止 0—9,*,#,A,B,C,D 表示收到某个DTMF按键就停止 其他值 没有意义 返 回: 如果调用成功,返回0 注 释: ? GX_StopRecordVoice 函数原型: unsigned short GX_StopRecordVoice(unsigned short ChannelNo) 功 能: 停止录音,停止某个通道的录音操作 。 参 数: ChannelNo 通道的逻辑号码。 返 回: 如果调用成功,返回0 注 释: ? GX_GetRecordLength 函数原型: unsigned short GX_GetRecordLength(unsigned short ChannelNo, unsigned long *RecordLength) 功 能: 取得当前录音长度。 参 数: ChannelNo 通道的逻辑号码。 RecordLength 存放当前录音长度 返 回: 如果调用成功,返回0 注 释: 5.4.14 放音接口函数 USB语音盒提供一系列功能强大的放音函数,既包括单一的文件或缓存区放音,也包括多文件或多缓存区的索引放音。 对于任何一种放音,如果需要中途停止放音,调用函数GX_StopPlayVoice即可。 对于文件索引放音: USB语音盒为每一个逻辑通道独立建立一个最大长度为64的索引文件表,使用GX_InitPlayIndexFile初始化这个索引文件表,即将索引文件表清空;使用 GX_AddPlayIndexFile增加项目到索引文件表;调用GX_StartPlayIndexFile函数进行索引文件放音,该函数从指定通道的索引文件表的第一个文件开始放音,当第一个文件结束时,自动放音下一个,直至索引表中的所有文件放音完毕,发送 MESSAGE_PLAY_VOICE_END事件。 对于缓存区索引放音: USB语音盒仅仅建立一个最大数量为256的缓存区索引表,所有通道的索引缓 存区放音都使用相同的这个索引表,调用GX_InitPlayIndexBuffer函数来初始化 这个索引表,即将索引表清空;调用GX_AddPlayIndexBuffer函数增加表中的项目, 每个缓存区的加入是顺序进行的;调用GX_StartPlayIndexBuffer函数启动索引缓 存区放音。 对于索引文件放音的应用,举例如下: 如有0、1、2、年、月、日的语音文件,文件名分别为:Zero.tel、One.tel、Two.tel、Year.tel、Month.tel、Day.tel,那么要在第八通道放音“2001年2月1日”这段话,只需如此操作(8为逻辑通道号): GX_InitPlayIndexFile(8); GX_AddPlayIndexFile(8,“Two.tel”); GX_AddPlayIndexFile(8,“Zero.tel”); GX_AddPlayIndexFile(8,“Zero.tel”); GX_AddPlayIndexFile(8,“One.tel”); GX_AddPlayIndexFile(8,“Year.tel”); GX_AddPlayIndexFile(8,“Two.tel”); GX_AddPlayIndexFile(8,“Month.tel”); GX_AddPlayIndexFile(8,“One.tel”); GX_AddPlayIndexFile(8,“Day.tel”); GX_StartPlayIndexFile(8, StopChar); 对于索引文件放音的应用,举例如下: 应用系统首先申请足够数量的缓存区,然后将频繁使用的语音读入相应的缓存区,再建立索引表,即可使用索引缓存区放音。 如有0、1、2、年、月、日的语音,缓存区的指针分别为:Zero、One、Two、Year、 Month、Day,那么可以如下建立缓存区索引表: GX_InitPlayIndexBuffer(); GX_AddPlayIndexBuffer(Zero, xxxx); GX_AddPlayIndexBuffer(One, xxxx); GX_AddPlayIndexBuffer(Two, xxxx); GX_AddPlayIndexBuffer(Year, xxxx); GX_AddPlayIndexBuffer(Month, xxxx); GX_AddPlayIndexBuffer(Day, xxxx); 其中xxxx代表相应缓存区字节长度 那么,无论以后哪个通道进行索引缓存区放音,均使用这个索引表,如要在第八通道 放音“2001年2月1日”这段话,只需如此操作: unsigned short Buffertable[9]={2,0,0,1,3,2,4,1,5}; GX_StartPlayIndexBuffer(8,BufferTable,9,StopChar) 其中BufferTable项的值,就是各个语音缓存区在缓存区索引表中的顺序号。 下面详细叙述各种放音相关函数; ? GX_StartPlayFile 函数原型: unsigned short GX_StartPlayFile(unsigned short ChannelNo, char*FileName,unsigned long Offset, unsigned long Length,char StopChar) 功 能: 开始文件放音,放音数据存于文件。当发送停止放音命令,或收到 某个或某些设定的停止DTMF按键时,停止放音。当所有要求的放音 数据放完时,停止放音,并送出事件MESSAGE_PLAY_END;当收到相 应的DTMF按键时,停止放音,并送出事件MESSAGE_PLAY_EXIT。 参 数: ChannelNo 通道的逻辑号码。 FileName 如果放音数据在文件中,则指定文件名称,含有文件 存放的路径,最大长度为MAX_FILE_NAME_NUM-1 Ofsset 指定放音文件的字节偏移长度 Length 指定放音文件的字节长度,如果设为0xFFFFFFFF,则 表示一直到文件结尾 StopChar 停止放音的DTMF,当收到相应的DTMF按键时,停止放 音,有效的取值为: 0x00 表示收到任何DTMF按键都不停止 0x01 表示收到任一DTMF按键就停止 0—9,*,#,A,B,C,D 表示收到某个DTMF按键就停止 其他值 没有意义 返 回: 如果调用成功,返回0 注 释: ? GX_StartPlayWavFile 函数原型: unsigned short GX_StartPlayWavFile (unsigned short ChannelNo, char*FileName,unsigned long Offset, unsigned long Length,char StopChar) 功 能: 与GX_ StartPlayFile功能相同。开始文件放音,放音数据存于文 件。当发送停止放音命令,或收到某个或某些设定的停止DTMF按键 时,停止放音。当所有要求的放音数据放完时,停止放音,并送出 事件MESSAGE_PLAY_END;当收到相应的DTMF按键时,停止放音,并 送出事件MESSAGE_PLAY_EXIT。 参 数: ChannelNo 通道的逻辑号码。 FileName 如果放音数据在文件中,则指定文件名称,含有文件 存放的路径,最大长度为MAX_FILE_NAME_NUM-1 Ofsset 指定放音文件的字节偏移长度 Length 指定放音文件的字节长度,如果设为0xFFFFFFFF,则 表示一直到文件结尾 StopChar 停止放音的DTMF,当收到相应的DTMF按键时,停止放 音,有效的取值为: 0x00 表示收到任何DTMF按键都不停止 0x01 表示收到任一DTMF按键就停止 0—9,*,#,A,B,C,D 表示收到某个DTMF按键就停止 其他值 没有意义 返 回: 如果调用成功,返回0 注 释: 播放的文件格式是Windows 的Wav文件格式。Wav文件格式的数据格 式也有多种多样,USB语音盒支持A-law和GSM数据格式的Wav文件。 设置调用GX_SetVoiceCompress。该函数不检测Wav格式,如果播放 声的音不正确请检测Wav文件格式是否正确。 ? GX_StartPlayBuffer 函数原型: unsigned short GX_StartPlayFile(unsigned short ChannelNo, char*Buffer,unsigned long Offset, unsigned long Length,char StopChar) 功 能: 开始缓存区放音,放音数据存于缓存区。当发送停止放音命令,或 收到某个或某些设定的停止DTMF按键时,停止放音。当所有要求的 放音数据放完时,停止放音,并送出事件MESSAGE_PLAY_END;当收 到相应的DTMF按键时,停止放音,并送出事件MESSAGE_PLAY_EXIT。 参 数: ChannelNo 通道的逻辑号码。 Buffer 放音数据缓存区。 Ofsset 指定放音文件的字节偏移长度 Length 指定放音文件的字节长度,一定要设置,以防越界 StopChar 停止放音的DTMF,当收到相应的DTMF按键时,停止放 音,有效的取值为: 0x00 表示收到任何DTMF按键都不停止 0x01 表示收到任一DTMF按键就停止 0—9,*,#,A,B,C,D 表示收到某个DTMF按键就停止 其他值 没有意义 返 回: 如果调用成功,返回0 注 释: ? GX_StopPlayVoice 函数原型: unsigned short GX_StopPlayVoice(unsigned short ChannelNo) 功 能: 停止放音操作。 参 数: ChannelNo 通道的逻辑号码。 返 回: 如果调用成功,返回0 注 释: 所有的放音(如文件、缓存区、索引文件和索引缓存区)停止,都 调用该函数。 ? GX_GetPlayLength 函数原型: unsigned short GX_GetPlayLength(unsigned short ChannelNo, unsigned long *PlayLength) 功 能: 取得当前实际放音长度。 参 数: ChannelNo 通道的逻辑号码。 PlayLength 存放实际放音长度 返 回: 如果调用成功,返回0 注 释: ? GX_InitPlayIndexFile 函数原型: unsigned short GX_InitPlayIndexFile(unsigned short ChannelNo) 功 能: 初始化索引放音文件,该函数清空指定通道的索引放音。 参 数: ChannelNo 通道的逻辑号码。 返 回: 如果调用成功,返回0 注 释: ? GX_AddPlayIndexFile 函数原型: unsigned short GX_AddPlayIndexFile(unsigned short ChannelNo, char *FileName) 功 能: 向指定通道内增加索引文件 参 数: ChannelNo 通道的逻辑号码。 FileName 放音文件名 返 回: 如果调用成功,返回0 注 释: ? GX_StartPlayIndexFile 函数原型: unsigned short GX_StartPlayIndexFile( unsigned short ChannelNo, char StopChar) 功 能: 开始索引文件放音 参 数: ChannelNo 通道的逻辑号码。 StopChar 停止录音的DTMF,当收到相应的DTMF按键时,停止录 音,有效的取值为: 0x00 表示收到任何DTMF按键都不停止 0x01 表示收到任一DTMF按键就停止 0—9,*,#,A,B,C,D 表示收到某个DTMF按键就停止 其他值 没有意义 返 回: 如果调用成功,返回0 注 释: 如果需要停止索引文件放音,调用GX_StopPlayVoice函数 ? GX_InitPlayIndexBuffer 函数原型: unsigned short GX_InitPlayIndexBuffer(void) 功 能: 初始化缓存区索引,即将索引放音的缓存区清空 参 数: 无 返 回: 如果调用成功,返回0 注 释: ? GX_AddPlayIndexBuffer 函数原型: unsigned short GX_AddPlayIndexBuffer(char *Buffer, unsigned long Length) 功 能: 添加索引缓存区 参 数: Buffer 缓存区 Length 缓存区长度 返 回: 如果调用成功,返回0 注 释: ? GX_StartPlayIndexBuffer 函数原型: unsigned short GX_StartPlayIndexBuffer( unsigned short ChannelNo, unsigned short *IndexTable, unsigned short IndexCount,char StopChar) 功 能: 开始索引缓存区放音 参 数: ChannelNo 通道的逻辑号码。 IndexTable 索引表,该索引表实际上是一个数组,该数组的每一个 项指代缓存区索引表中的相应缓存区的顺序号。 IndexCount 索引表中的项数 StopChar 停止录音的DTMF,当收到相应的DTMF按键时,停止录 音,有效的取值为: 0x00 表示收到任何DTMF按键都不停止 0x01 表示收到任一DTMF按键就停止 0—9,*,#,A,B,C,D 表示收到某个DTMF按键就停止 其他值 没有意义 返 回: 如果调用成功,返回0 注 释: 如果需要停止索引文件放音,调用GX_StopPlayVoice函数 5.4.15 循环录放音接口函数 ? GX_StartPlayCircleBuffer 函数原型: unsigned short GX_StartPlayCircleBuffer( unsigned short ChannelNo,char *Buffer, unsigned long TotalLength,char StopChar) 功 能: 启动循环放音 参 数: ChannelNo 循环放音通道 Buffer 循环放音数据缓存区指针,大小为8K的整数倍 TotalLength 指定放音的字节长度,一定要设置,以防越界 StopChar 停止放音的DTMF,当收到相应的DTMF按键时,停止放 音,有效的取值为: 0x00 表示收到任何DTMF按键都不停止 0x01 表示收到任一DTMF按键就停止 0—9,*,#,A,B,C,D 表示收到某个DTMF按键就停止 其他值 没有意义 返 回: 如果调用成功,返回0 注 释: 循环放音时,如果第一遍放完会发送 MESSAGE_PLAY_CIRCLE_FIRST_END事件,第二遍放完会发送 MESSAGE_PLAY_CIRCLE_SECOND_END事件;以此循环。 ? GX_StartRecordCircleBuffer 函数原型: unsigned short GX_StartRecordCircleBuffer( unsigned short ChannelNo,char *Buffer, unsigned long TotalLength,char StopChar) 功 能: 启动循环录音 参 数: ChannelNo 循环录音通道 Buffer 循环录音数据缓存区指针,大小为8K的整数倍 TotalLength 指定录音的字节长度,一定要设置,以防越界 StopChar 停止录音的DTMF,当收到相应的DTMF按键时,停止录 音,有效的取值为: 0x00 表示收到任何DTMF按键都不停止 0x01 表示收到任一DTMF按键就停止 0—9,*,#,A,B,C,D 表示收到某个DTMF按键就停止 其他值 没有意义 返 回: 如果调用成功,返回0 注 释: 循环录音时,如果第一遍缓存区录满会发送 MESSAGE_RECORD_CIRCLE_FIRST_END事件,第二遍缓存区录 满会发送MESSAGE_RECORD_CIRCLE_SECOND_END事件;以此 循环。 5.4.16 话音/静音识别接口函数 ? GX_StartDetectHelloVoice 函数原型: unsigned short GX_StartDetectHelloVoice( unsigned short ChannelNo, unsigned short ThresholdValue) 功 能: 开始识别话音,当识别到有话音时,送出事件 MESSAGE_HAVE_HELLO_VOICE,并停止识别。如果需要连续识别,需 要在收到事件时,再次调用该函数。 参 数: ChannelNo 通道的逻辑号码。 ThresholdValue语音门槛值,推荐为0x13 返 回: 如果调用成功,返回0 注 释: 该函数主要用于检测对方人工摘机,当中继模块拨号完毕,可调用 该函数,检测是否有话音,如果有,则表示对方摘机。语音门槛值 ThresholdValue越小检测话音越灵敏,但也不是越小越好。 ? GX_StopDetectHelloVoice 函数原型: unsigned short GX_StopDetectHelloVoice( unsigned short ChannelNo) 功 能: 停止识别话音。 参 数: ChannelNo 通道的逻辑号码。 返 回: 如果调用成功,返回0 注 释: ? GX_StartDetectBackToneHalt 函数原型: unsigned short GX_StartDetectBackToneHalt( unsigned short ChannelNo,unsigned short HaltTimeByMs) 功 能: 开始识别回铃音,当在指定的时间内未识别到回铃音,送出事件 MESSAGE_HAVE_BACK_TONE_HALT,并停止识别。如果需要连续识别, 需要在收到事件时,再次调用该函数。 参 数: ChannelNo 通道的逻辑号码。 HaltTimeByMs 识别回铃音的时间单位毫秒,推荐为4200ms 返 回: 如果调用成功,返回0 注 释: 该函数主要用于检测对方自动摘机,当中继模块拨号完毕,可调用 该函数。 ? GX_StopDetectBackToneHalt 函数原型: unsigned short GX_StopDetectBackToneHalt( unsigned short ChannelNo) 功 能: 停止识别回铃摘机检测。 参 数: ChannelNo 通道的逻辑号码。 返 回: 如果调用成功,返回0 注 释: ? GX_StartDetectSilence 函数原型: unsigned short GX_StartDetectSilence( unsigned short ChannelNo, unsigned short ThresholdValue) 功 能: 识别所有频率的声音(包括450Hz的声音),定时(每隔204ms)送 出识别的结果数据事件(MESSAGE_HAVE_SILENCE_DATA)。识别结果 数据由16位的一个字表示,这个字的每一位的1或0分别代表有声 音和无声音(静音)。USB语音盒把该时间(204ms)分成16个时间段, 分别计算出每一个时间段上的声音识别结果(0/1)。16个时间段的声 音识别结果(0/1)按时间先后顺序对应该事件参数Parameter的第一 个字的Bit15—Bit0,“,”表示静音,“,”表示非静音。 参 数: ChannelNo 通道的逻辑号码。 ThresholdValue 语音门槛值,推荐为0x15 返 回: 如果调用成功,返回0 注 释: 该函数主要用于录音时检测静音,或与函数 GX_StartDetectToneData配合进行被叫摘机检测。检测线路上是否 有语音时,只有该线路上声音的总能量大于门槛值时,才认为有语 音。门槛值越小越灵敏,但并不是越灵敏越好。 ? GX_StopDetectSilence 函数原型: unsigned short GX_StopDetectSilence(unsigned short ChannelNo) 功 能: 停止识别静音。 参 数: ChannelNo 通道的逻辑号码。 返 回: 如果调用成功,返回0 注 释: 5.4.17 超时设置接口函数 ? GX_StartTimeOutForWindows 函数原型: unsigned short GX_StartTimeOutForWindows( unsigned short ChannelNo,unsigned short TimeBySecond) 功 能: 启动某一通道的超时计数,当相应的超时时间到达时,送出事件 MESSAGE_TIME_OUT,然后再重新计时,当相应的超时时间到达时, 再送出事件MESSAGE_TIME_OUT,这样周期性计时,直到停止。 参 数: ChannelNo 通道的逻辑号码。 TimeBySecond 超时时间,单位秒。 返 回: 如果调用成功,返回0 注 释: 该函数适用于包括中继模块通道、用户模块通道、录音模块通道。 ? BOOL GX_StopTimeOutForWindows 函数原型: unsigned short GX_StopTimeOutForWindows( unsigned short ChannelNo) 功 能: 停止超时计时。 参 数: ChannelNo 通道的逻辑号码。 返 回: 如果调用成功,返回0 注 释: 该函数适用于包括中继模块通道、用户模块通道、录音模块通道 ? GX_SetTimeOutValueForWondows 函数原型: unsigned short GX_SetTimeOutValueForWindows( unsigned short ChannelNo,unsigned short TimeBySecond) 功 能: 重新设置超时时间,当已经启动超时计数后,需要改变超时时间时, 调用该函数。 参 数: ChannelNo 通道的逻辑号码。 TimeBySecond 新的超时时间,单位秒。 返 回: 如果调用成功,返回0 注 释: 该函数适用于包括中继模块通道、用户模块通道、录音模块通道 5.4.18 主叫识别接口函数 ? GX_StartDetectCallerID 函数原型: unsigned short GX_StartDetectCallerID( unsigned short ChannelNo) 功 能: 开始主叫识别,当识别到有主叫时,发送MESSAGE_HAVE_CID_FSK事 件,并停止识别。如果需要继续识别,必须重新调用该函数。关于 主叫信息需要调用GX_GetFskCallerID函数取得。 参 数: ChannelNo 通道的逻辑号码。 返 回: 如果调用成功,返回0 注 释: 该函数适用于包括中继模块通道、用户模块通道、录音模块通道。 若主叫为DTMF制式,当识别到有主叫时,发送MESSAGE_HAVE_DTMF 事件,这时调用GX_GetDTMFKey获取。判断DTMF是否为主叫,只 要判断此时线路是否摘机即可,在线路摘机(或在第一声震铃)前 收到的就为DTMF主叫号码。 ? GX_StopDetectCallerID 函数原型: unsigned short GX_StopDetectCallerID( unsigned short ChannelNo) 功 能: 停止主叫识别。 参 数: ChannelNo 通道的逻辑号码。 返 回: 如果调用成功,返回0 注 释: 该函数适用于包括中继模块通道、用户模块通道、录音模块通道。 ? GX_GetRawFskCallerID 函数原型: unsigned short GX_GetRawFskCallerID(unsigned short ChannelNo, char *CallerIDString) 功 能: 获取FSK主叫信息,只有在收到MESSAGE_HAVE_CID_FSK时,调用该 函数,其返回值才有意义。该函数所返回的主叫信息是未经过处理 的原始信息。 参 数: ChannelNo 通道的逻辑号码。 CallerIDString 用户提供的存放主叫信息的缓存区,最大为 MAX_CID_NUM 返 回: 如果调用成功,返回0 注 释: 该函数适用于包括中继模块通道、用户模块通道、录音模块通道 ? GX_GetFskCallerID 函数原型: unsigned short GX_GetFskCallerID( unsigned short ChannelNo,char*DateTime,char *TelNo, char *Name) 功 能: 获取FSK主叫信息,只有在收到MESSAGE_HAVE_CID_FSK时,调用该 函数,其返回值才有意义。该函数所返回的主叫信息是经过处理的 信息,即已经分解成主叫日期时间、主叫号码和主叫名称等。 参 数: ChannelNo 通道的逻辑号码。 DateTime 主叫时间,字符串型,如果没有主叫时间,则返回空串。 TelNo 主叫号码,字符串型,如果没有主叫号码,则返回空串。 Name 主叫名称,字符串型,如果没有主叫名称,则返回空串。 返 回: 如果调用成功,返回0 注 释: 该函数适用于包括中继模块通道、用户模块通道、录音模块通道 对于DateTime、Telno和Name,用户提供的缓存区长度一定要大于 相应的最大可显位数,建议最好为MAX_CID_NUM。调用后一定要检测 返回值。 ? GX_GetDTMFCallerID 函数原型: unsigned short GX_GetDTMFCallerID(unsigned short ChannelNo, char *CallerIDString) 功 能: 获取DTMF主叫信息,只有在收到MESSAGE_HAVE_CID_DTMF时,调用 该函数,其返回值才有意义。 参 数: ChannelNo 通道的逻辑号码。 CallerIDString 用户提供的存放主叫信息的缓存区,最大为 MAX_DTMF_NUM 返 回: 如果调用成功,返回0 注 释: 要检测DTMF主叫,必须调用函数GX_StartDetectDTMF启动DTMF检 测。收DTMF主叫时同时有MESSAGE_HAVE_DTMF事件产生,一般认为 在震铃之前的挂机状态下收到的DTMF为DTMF主叫,摘机后收到的就 不是。因此收DTMF主叫就有两种方式,使用其中一种方式即可。一 是在有MESSAGE_HAVE_CID_DTMF事件时使用该函数取主叫,二是在有 MESSAGE_HAVE_DTMF事件调用GX_GetDTMFKey函数取码,并保存码串, 这些码串就是DTMF主叫号码。第二种方式收主叫可参考例程 Vc6_cid_dtmf或Vb6_cid_dtmf。 5.4.19 停止通道所有操作接口函数 ? GX_StopAllOperate 函数原型: unsigned short GX_StopAllOperate(unsigned short ChannelNo) 功 能: 停止语音通道的一切操作,使通道恢复打开时的状态。 参 数: ChannelNo 通道的逻辑号码 返 回: 如果调用成功,返回0 注 释: 停止所有要启动的操作,包括录音、放音、超时、信号音检测等。 不包括声卡的监听和放音。 5.4.20 TTS接口函数 USB语音盒可实现简单的TTS(Text-To-Speech)功能,即把文件转换为语音播放,目前只支持中文和字母,不支持英文。 ? GX_InitTTS 函数原型: unsigned short GX_InitTTS (void) 功 能: 初始化TTS资源 参 数: 无 返 回: 如果调用成功,返回0 注 释: 初始化TTS资源不用后调用GX_CloseTTS函数释放。 ? GX_CloseTTS 函数原型: unsigned short GX_CloseTTS (void) 功 能: 释放TTS资源 参 数: 无 返 回: 如果调用成功,返回0 注 释: 调用GX_InitTTS函数初始化TTS资源,不用后要释放。 ? GX_TTSFileToFile 函数原型: unsigned short GX_TTSFileToFile(char *TextFileName, char *VoiceFileName) 功 能: 转换文本文件为语音文件 参 数: TextFileName 待转换的文本文件名 VoiceFileName 转换后的语音文件名 返 回: 如果调用成功,返回0 注 释: 播放文本文件前,需要把文本文件转换为语音文件,然后使用 GX_StartPlayFile放音。 ? GX_TTSBufferToBuffer 函数原型: unsigned short GX_TTSBufferToBuffer (char *TextBuffer, unsigned long TextCount,char *VoiceBuffer, unsigned long *VoiceCount) 功 能: 把缓存中的文本转换为缓存中的语音 参 数: TextBuffer 文本缓存指针,应用程序分配的空间 TextCount 文本缓存大小,单位字节 VoiceBuffer 语音缓存指针,需要应用程序分配空间 VoiceCount 返回语音缓存中语音数据的数目,单位字节 返 回: 如果调用成功,返回0 注 释: 播放缓存中的文本前,需要把文本数据转换为语音数据。使用 GX_StartPlayBuffer放音。语音缓存的空间应该足够大,否则会出 错。 ? GX_TTSBufferToFile 函数原型: unsigned short GX_TTSBufferToFile(char *TextBuffer, unsigned long TextCount,char *VoiceFileName) 功 能: 把缓存中的文本转换为语音文件 参 数: TextBuffer 文本缓存指针,应用程序分配的空间 TextCount 文本缓存大小,单位字节 VoiceFileName 转换后的语音文件名 返 回: 如果调用成功,返回0 注 释: 播放文本前,需要把文本数据转换为语音数据。使用 GX_StartPlayFile放音。 5.4.21 语音转换接口函数 USB语音盒录、放音语音文件格式为A律PCM,如果要把语音文件直接使用windows 的媒体播放器播放,必须转换为windows的wave格式语音文件;反之,亦然。 ? GX_AlawToWave 函数原型: unsigned short GX_AlawToWave(char *AlawFileName, char *WaveFileName) 功 能: A律PCM语音文件转换为Wave(16位8000Hz采样单声道)文件格式。 参 数: AlawFileName A律PCM语音文件名 WaveFileName Wave文件名 返 回: 如果调用成功,返回0 注 释: 调用该函数不需要语音卡支持。 ? GX_WaveToAlaw 函数原型: unsigned short GX_WaveToAlaw(char *WaveFileName, char *AlawFileName) 功 能: wave(16位8000Hz采样单声道)文件格式转换为A律PCM语音文件。 参 数: WaveFileName Wave文件名 AlawFileName A律PCM语音文件名 返 回: 如果调用成功,返回0 注 释: 调用该函数不需要语音卡支持。 ? GX_AlawToAdpcm 函数原型: unsigned short GX_AlawToAdpcm(char *AlawFileName, char *AdpcmFileName) 功 能: A律PCM语音文件转换为Adpcm文件格式。 参 数: AlawFileName A律PCM语音文件名 AdpcmFileName Adpcm语音文件名 返 回: 如果调用成功,返回0 注 释: 调用该函数不需要语音卡支持。 ? GX_AdpcmToAlaw 函数原型: unsigned short GX_AdpcmToAlaw(char *AdpcmFileName, char *AlawFileName) 功 能: Adpcm文件格式转换为A律PCM语音文件。 参 数: AdpcmFileName Adpcm文件名 AlawFileName A律PCM语音文件名 返 回: 如果调用成功,返回0 注 释: 调用该函数不需要语音卡支持。 ? GX_AlawAGC 函数原型: unsigned short GX_AlawAGC(char *SourceFileName, char *TargetFileName) 功 能: A-law语音文件AGC处理生成A-law语音文件 参 数: SourceFileName 原文件名 TargetFileName 经处理后的文件名 返 回: 如果调用成功,返回0 注 释: 调用该函数需要语音卡支持。 ? GX_AlawToWaveAGC 函数原型: unsigned short GX_AlawToWaveAGC(char *AlawFileName, char *WaveFileName) 功 能: A-law语音文件AGC处理生成wav语音文件 参 数: AlawFileName A-law语音文件名 WaveFileName 经处理后的wav语音文件名 返 回: 如果调用成功,返回0 注 释: 调用该函数需要语音卡支持。 ? GX_AdpcmToAlaw 函数原型: unsigned short GX_WaveToAlawAGC(char *WaveFileName, char *AlawFileName) 功 能: wav语音文件AGC处理生成A-law语音文件 参 数: WaveFileName wav语音文件名 AlawFileName 经处理后的A-law语音文件名 返 回: 如果调用成功,返回0 注 释: 调用该函数需要语音卡支持。 ? GX_WavAlawToGsm 函数原型: unsigned short GX_WavAlawToGsm(char *AlawFileName, char *GsmFileName) 功 能: 把A-law wav语音文件转换为Gsm wav语音文件 参 数: AlawFileName 转换前A-law wav语音文件名 GsmFileName 经处理后的gsm wav语音文件名 返 回: 如果调用成功,返回0 注 释: 调用该函数只能是Wav文件格式转换 ? GX_WavGsmToAlaw 函数原型: unsigned short GX_WavGsmToAlaw(char *GsmFileName, char *AlawFileName) 功 能: 把A-law wav语音文件转换为Gsm wav语音文件 参 数: GsmFileName 转换前的gsm wav语音文件名 AlawFileName 经处理后A-law wav语音文件名 返 回: 如果调用成功,返回0 注 释: 调用该函数只能是Wav文件格式转换 第六章 USB电话语音盒编程接口数据结构及常量定义 以下介绍的常量或数据结构均包含在USB电话语音盒.H文件中。 6.1 基本常量定义 #define MAX_CARD_NUM 0x0008 定义了插入同一台计算机中GX08 PCI语音卡的最大数量 #define MAX_CHANNEL_NUM 0x0040 定义了插入同一台计算机中GX08 PCI语音卡的所有语音和传真通道的最大数量 #define MAX_DTMF_NUM 0x0040 定义了所有涉及DTMF按键个数的字符串中的最大字符数量,常常只允许 MAX_DTMF_NUM-1个 #define MAX_FSK_NUM 0x0400 定义了发送FSK的字符串中的最大字符数量 #define MAX_CID_NUM 0x0080 定义了接收FSK主叫的字符串最大字符数量 #define MAX_FILE_NAME_NUM 0x0080 定义了所有涉及文件名称的字符串中的最大字符数量,常常只允许 MAX_FILE_NAME_NUM -1个 #define MAX_INDEX_BUFFER_NUM 0x0100 定义了最大索引缓存区放音的数量 #define MAX_INDEX_FILE_NUM 0x0040 定义了最大索引文件放音的数量 #define MAX_CONFERENCE_GROUP_NUM 0x000A 定义了最大会议组的数量 #define MAX_CONFERENCE_RESOURCE_NUM 0x0020 定义了最大会议资源的数量 #define MAX_CONFERENCE_GROUP_RESOURCE_NUM 0x0006 定义了每个通道最大会议资源的数量 6.2 事件数据结构 typedef struct _GX_MESSAGE_INFO{ USHORT MessageCode; USHORT ChannelNo; USHORT Parameter[6]; } GX_MESSAGE_INFO, *PGX_MESSAGE_INFO; 定义了事件数据结构,即每次取回事件的内容,具体意义如下: MessageCode 占1个字,事件号码。 ChannelNo 占1个字,发生事件的通道。 Parameter 占6个字,事件参数,对于不同的事件,其内容不同,具体参见相关 的事 件类型说明章节。 第七章 USB电话语音盒编程接口事件类型说明 本章介绍的结构GX_MESSAGE_INFO中MessageCode的种类,以及与 MessageCode相对应的参数Parameter的意义,如没说明参数Parameter一般都没意义。 #define MESSAGE_HAVE_CID_FSK 0x0000 有FSK方式的主叫事件 #define MESSAGE_HAVE_CID_DTMF 0x0001 有DTMF方式的主叫事件 #define MESSAGE_HAVE_CID_ERROR 0x0002 有主叫错误事件 #define MESSAGE_HAVE_DTMF 0x0003 当识别到DTMF按键时,语音盒发送该事件 #define MESSAGE_PLAY_VOICE_END 0x0004 放音结束事件,当全部放音数据放完时,发送该事件,并停止放音 #define MESSAGE_PLAY_VOICE_EXIT 0x0005 放音中断事件,当打开或读取放音文件出错,或收到放音停止的DTMF时,发送该 事件,并停止放音 #define MESSAGE_RECORD_VOICE_END 0x0006 录音结束事件,当所需数量的录音数据录完时,发送该事件,并停止录音 #define MESSAGE_RECORD_VOICE_EXIT 0x0007 录音中断事件,当创建或写录音文件出错,或收到录音停止的DTMF时,发送该事 件,并停止录音 #define MESSAGE_GENERATE_SIGNAL_END 0x0008 发送信号音结束事件,当信号音发送完成时,发送该事件,并停止发送信号音 #define MESSAGE_GENERATE_SIGNAL_EXIT 0x0009 发送信号音中断事件,当收到中断发送信号音的DTMF时,发送该事件,并停止发 送信号音 #define MESSAGE_GENERATE_DTMF_END 0x000A 当发送完所有需要发送的DTMF按键时,发送该事件。没有命令可以中断发送DTMF 命令 #define MESSAGE_SEND_FSK_END 0x000B 当发送FSK完毕,语音卡发送该事件 #define MESSAGE_HAVE_DIAL_TONE 0x000C 当模块有标准拨号音时,发送该事件。如果要想得到该事件,必须先调用函数 GX_StartDetectDialTone。 #define MESSAGE_HAVE_BUSY_TONE 0x000D 当模块有标准忙音时,发送该事件 如果要想得到该事件,必须先调用函数GX_StartDetectBusyTone。 #define MESSAGE_HAVE_BACK_TONE 0x000E 当模块有标准回铃音时,发送该事件。如果要想得到该事件,必须先调用函数 GX_StartDetectBackTone。 #define MESSAGE_HAVE_TONE_DATA 0x000F 当模块有信号音(450HZ)数据时,发送该事件,该事件的参数Parameter的第一个 字为信号音数据。PCI语音卡上的DSP把该时间(204ms)分成16个时间段,分 别计算出每一个时间段上的信号音识别结果(0/1)。16个时间段的信号音识别结果 (0/1)按时间先后顺序对应该事件参数Parameter的第一个字的Bit15—Bit0,“,” 表示有信号音,“,”表示没有信号音。如果要想得到该事件,必须先调用函数 GX_StopDetectToneData。 #define MESSAGE_HAVE_HELLO_VOICE 0x0010 当识别到话音时,发送该事件。如果要想得到该事件,必须先调用函数 GX_StartDetectHelloVoice。 #define MESSAGE_HAVE_SILENCE_DATA 0x0011 当启动静音识别时,在固定时间(204ms)内发送该事件,该事件的参数Parameter 的第一个字表示静音数据。语音盒上把该时间(204ms)分成16个时间段,分别 计算出每一个时间段上的静音识别结果(0/1)。16个时间段的静音识别结果(0/1)按 时间先后顺序对应该事件参数Parameter的第一个字的Bit15—Bit0,“,”表示静 音,“,”表示非静音。如果要想得到该事件,必须先调用函数 GX_StartDetectSilence。 #define MESSAGE_HAVE_TIME_OUT 0x0012 当设定的超时到达时,发送该事件。如果要想得到该事件,必须先调用函数 GX_StartTimeOutForWindow。 #define MESSAGE_HAVE_FSK_DATA 0x0013 当识别到FSK信息时,发送该事件 #define MESSAGE_PLAY_CIRCLE_FIRST_END 0x0014 循环放音第一遍结束事件 #define MESSAGE_PLAY_CIRCLE_SECOND_END 0x0015 循环放音第二遍结束事件 #define MESSAGE_RECORD_CIRCLE_FIRST_END 0x0016 循环录音第一遍结束事件 #define MESSAGE_RECORD_CIRCLE_SECOND_END 0x0017 循环录音第二遍结束事件 #define MESSAGE_AUTO_DIAL_NO_DIAL_TONE 0x0018 自动拨号无拨号音事件 #define MESSAGE_AUTO_DIAL_NONE_LISTEN 0x0019 自动拨号无人接听事件 #define MESSAGE_AUTO_DIAL_HAVE_BUSY 0x001A 自动拨号有忙音事件 #define MESSAGE_AUTO_DIAL_HOOK_OFF 0x001B 自动拨号有摘机事件 #define MESSAGE_HAVE_SPECIAL_SIGNAL 0x001C 有指定频率信号音事件 #define MESSAGE_HAVE_BACK_TONE_HALT 0x001E 拨号后无回铃音事件,可用于检测对方摘机 #define MESSAGE_USER_HOOK_OFF 0x1001 当用户模块有摘机动作时,发送该事件 #define MESSAGE_USER_HOOK_ON 0x1002 当用户模块有挂机动作时,发送该事件 #define MESSAGE_USER_PICK_UP 0x1003 当用户模块有拍插动作时,发送该事件。所谓的拍插动作,就是当用户模块由摘机 状态转换到挂机状态,然后再回到摘机状态的总共时间小于一定时间的动作,该时 间缺省值是500毫秒,该值可由函数GX_SetUserPickUpTime()重新设置。 #define MESSAGE_USER_RING_END 0x1004 当用户模块振铃完成时,发送该事件 #define MESSAGE_TRUNK_RING 0x2000 当中继模块有振铃时,发送该事件,该事件的参数Parameter[0]为1表示第一次 震铃,为2表示第二次震铃. . . 。 #define MESSAGE_TRUNK_POLE 0x2001 中继模块有极性反转时,发送该事件 #define MESSAGE_TRUNK_PICK_UP_END 0x2002 对中继模块作拍插动作结束后,发送该事件 #define MESSAGE_RECORD_HOOK_OFF 0x3001 当录音模块有摘机动作时,发送该事件 #define MESSAGE_RECORD_HOOK_ON 0x3002 当录音模块有挂机动作时,发送该事件 #define MESSAGE_RECORD_RING 0x3003 当录音模块有振铃时,发送该事件,该事件的参数Parameter[0]为1表示第一次 震铃,为2表示第二次震铃. . .。 #define MESSAGE_RECORD_OPEN_CIRCLE 0x3004 当录音模块线路断开时,发送该事件 #define MESSAGE_RECORD_NO_OPEN_CIRCLE 0x3005 当录音模块线路接上时,发送该事件 #define MESSAGE_SEND_FAX_OK 0x6000 发送传真成功事件 #define MESSAGE_SEND_FAX_ERROR 0x6001 发送传真失败事件 #define MESSAGE_RECEIVE_FAX_OK 0x6002 接收传真成功事件 #define MESSAGE_RECEIVE_FAX_ERROR 0x6003 接收传真失败事件 #define MESSAGE_FAX_HAVE_REMOTE_TEL_NO 0x6004 有对方传真号码事件 #define MESSAGE_FAX_HAVE_INFORMATION 0x6005 有传真信息事件 #define MESSAGE_PLAY_SOUND_END 0x7031 声卡放音结束事件 #define MESSAGE_PLAY_SOUND_EXIT 0x7032 声卡放音退出事件 第八章 使用各种编程语言进行开发 8.1 VC 接口及编程范例 8.1.1 VC接口简介 GxUsb.LIB是GxUsb.DLL 的 C 语言输入库,由Microsoft Visual C 6.0生成。在VC环境下开发,可以直接将GxUsb.LIB加入到工程文件中。 8.1.2 C语言编程简介 在98 /2000/xp/2003下用 C 语言对USB语音盒进行编程时,一般包括三部分。 一、初始化部分,包括初始化卡、得到通道数和通道类型等等,这部分在运行时调用一次即可。 二、结束部分,包括释放语音卡、释放驱动程序,这部分在退出时调用。 三、处理部分,这部分对实时的情况进行处理,一般放在TIMER函数里,具体用法请参见示范程序。 8.1.3 C语言示范程序 在安装目录中的C语言示范程序,均为VC 6.0的环境下开发。 C语言的示范程序在vc6目录下。 有关的说明,请参考示范程序的源程序。 8.2 VB 6.0 接口及编程范例 8.2.1 VB接口简介 在 Visual Basic 6.0 中, 对动态库GxUsb.DLL的调用是通过 GxVoice.BAS 来声明的,请参见GxVoice.BAS 。 由于在本质上,VB 也是通过调用GxUsb.DLL 来实现对 USB硬件的控制。因此,在上一节中有关 VC 编程的说明,对 VB 而言是一样的。用户需要先仔细阅读上一节,在应用程序开发的过程中,也需要经常参考C语言的示范程序。 8.2.2 VB6.0对动态库的调用 在VB6.0中,需要首先对DLL中的函数进行声明,然后才能对该函数进行调用。关于如何声明DLL中的函数,请参考VB中的HELP文件“Declare statement”。 下面,通过举例来说明。当GxUsb.DLL中有新的函数未能包含在VB声明文件GxVoice.BAS中时,你可以参考该函数在C语言中的声明,自己来声明VB下的函数调用。 例如: 在GxVoice.H中的函数 unsigned short WINAPI GX_StartPlayFile(unsigned short ChannelNo,char *FileName, unsigned long Offset,unsigned long Length,char StopChar); 在GxVoice.BAS中声明为 Declare Function GX_StartPlayFile Lib "GxVoice.dll" (ByVal ChannelNo As Integer, ByVal FileName As String, ByVal Offset As Long, ByVal Length As Long, ByVal StopChar As Byte) As Integer 分析: 在VC中(32位环境),BOOL为32位,WORD为16位,DWORD为32位; 因此,在VB中,相应的使用Long(32位), Integer(16位), Long(32位) 要注意的最关键一点是,所有参数和返回值的字节长度要相等。 在VB 6.0中,变量类型 Integer 仍然是16位的。其范围是-32767,32767。VC中的int, long, DWORD, BOOL 在 VB6.0 中需用 32 位的 long 表示;而VC中的WORD在 VB6.0 中需用Integer表示。 8.2.3 VB编程简介 同在98/2000/xp/2003下用C语言编程一样,VB对录音卡的操作,也包括三部分。 一、初始化部分,包括初始化卡、得到通道数和通道类型等等,在Form_Load中运行。 二、结束部分,包括释放语音卡、释放驱动程序,在Form_Unload中运行。 三、处理部分,这部分在TIMER中运行,具体用法请参见示范程序。 注意: GX_GetMessageForWindows在每次循环中需要调用,以维持文件录、放音的继续。 在VB中没有无符号整数,因此无法实现大于32768(1024*32)的缓冲区。如果带入参数大于32767,将会出错。 8.2.3 VB编程的注意事项 由于VB是解释型的编程语言,它在设计时有一些不同的出发点,因此,在使用VB调用DLL时,有一些事项应引起注意。 , 在C语言中返回值是指针的函数,在VB中不能使用 , 如果在C语言中某函数的参数为字符串,并且在函数调用完毕后,有内容通过该 参数返回,当VB使用该函数时,带入的变量必须是已经分配空间的。 这些函数有: GX_GetRawFskCallerID GX_GetFskCallerID 例如: 得到某一通道的主叫号码 Dim ciddt, cidtel, cidname As String ciddt = String(200, Chr(0)) cidtel = String(200, Chr(0)) cidname = String(200, Chr(0)) mm = GX_GetFskCallerID (ChannelNo, ciddt, cidtel, cidname) 8.2.4 VB示范程序 在安装目录中的vb示范程序,均为Vb 6.0的环境下开发。 vb示范程序在vb6目录下。 该程序的功能同C语言的示范程序demo完全相同,还演示了接收主叫号码的功能。请参考VB源程序。 8.3 C++ BUILDER环境 由于GxUsb.LIB是在VC环境下生成的,该LIB无法直接用于C++ BUILDER工程文件的连接。 C++ BUILDER提供了一个从DLL中提取输入库LIB的工具软件IMPLIB.EXE,你可用该软件生成一个LIB,用于开发。而GxVoice.H则完全可以通用。IMPLIB.EXE的用法,请参考其自身的帮助。 具体方法: cd \windows\system implib GxUsb_BC.lib GxUsb.dll 将生成的 GxUsb_BC.lib拷贝到开发程序需要的地方,加入工程中。 8.4 Delphi接口及编程范例 8.4.1 Delphi接口简介 在Delphi 中, 对动态库GxUsb.DLL的调用是通过 GxVoice.PAS 来声明的,请参见GxVoice.PAS 。 8.4.2 Delphi对动态库的调用 同在VB6.0中一样,在Delphi中也需要首先对DLL中的函数进行声明,然后才能对该函数进行调用。关于如何声明DLL中的函数,请参考Delphi中的HELP文件“external declarations。 下面,通过举例来说明当GxUsb.DLL中有新的函数未能包含在Delphi声明文件GxVoice.PAS 中时,你可以参考该函数在C语言中的声明,自己来声明Delphi下的函数调用。 例如: 在GxVoice.H中的函数 unsigned short WINAPI GX_StartPlayFile(unsigned short ChannelNo,char *FileName, unsigned long Offset,unsigned long Length,char StopChar); 在Delphi中: function GX_StartPlayFile(ChannelNo:word;FileName:PCHAR;Offset:Longword; Length:Longword;StopChar:char):word;stdcall; far external 'GxUsb.dll'; 注意:声明最后要加stdcall; far external ' GxUsb.dll'; 在C语言中的char *,要声明为 pchar 8.4.3 Delphi下的示范程序 该示范程序是在Delphi 5.0下的例子。 在安装目录中的Delphi 示范程序,均为Delphi 5.0的环境下开发。 该程序的功能同C语言的示范程序CALL完全相同。请参考源程序。 8.5 VFP环境 8.5.1 VFP接口简介 对于Visual FoxPro 中的使用,请参见VFP 对动态库的调用。在演示程序中未提供。 8.5.2 VFP对动态库的调用 在 Visual FoxPro 中,要调用一个 DLL 函数,可首先使用 DECLARE 命令声明 DLL 函数,然后像调用其它 Visual FoxPro 函数一样调用 DLL 函数。 在退出 Visual FoxPro 之前,所链接的 DLL 函数一直保持有效,因此,在每个工作期中只需声明一次。 在声明一个 DLL 函数时,必须指定参数的数目和类型。默认情况下,数据按照值来传递,但也可以在参数前面添加符号(@) 来强制参数按引用传递。 8.6 PB环境 8.6.1 PB6接口简介 在Power Builder中, 对动态库GxUsb.DLL的调用是通过在“Decalre”菜单中的“Global External Function”来声明的。 8.6.2 PB6对动态库的调用 下面,通过举例来说明当GxUsb.DLL中有新的函数未能包含在声明中时,你可以参考该函数在C语言中的声明,自己来声明PB6下的函数调用。 例如: 在GxVoice.H中的函数 unsigned short WINAPI GX_StartPlayFile(unsigned short ChannelNo,char *FileName, unsigned long Offset,unsigned long Length,char StopChar); 在Power Builder 中: Function Boolean GX_StartPlayFile(Integer ChannelNo,String FileName,Long Offset, Long Length,char StopChar) Library "GxUsb.dll" 注意:在PB6下的参数类型与VB下相拟,请参阅”VB6.0对动态库的调用”。 8.7 C#对动态库的调用 8.7.1 C#接口简介 在.net中要注意的是以前在编程工具中,long是32位,在.net的c#中long是64位,所以在传递参数时要注意,在声明函数接口时也要注意。 8.7.2 C#对动态库的调用 例如: 在GxVoice.H中的函数 unsigned short WINAPI GX_StartPlayFile(unsigned short ChannelNo,char *FileName, unsigned long Offset,unsigned long Length,char StopChar); 在C# 中: [DllImport("GxUsb.dll")] public extern static ushort GX_StartPlayFile(ushort ChannelNo,string FileName, uint Offset, uint Length, char StopChar); 8.8 其他编程语言的调用方法 在98/2000/xp/2003的32位编程环境中,许多编程语言都可以用各种方式来调用DLL 动态库。这样,也就可以通过对动态库GxUsb.DLL的调用来控制USB的硬件。 由于各种编程语言的方法不尽相同,本说明书无法一一描述。请用户仔细阅读你所用的编程 语言的说明。
/
本文档为【[IT/计算机]USB电话语音盒编程接口函数】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索