$(document).ready(function () { TV_Initialize(); set_check_data_url('http://192.168.0.4/k.html');//设置注册码URL函数 getEvent(T_GetEvent); inistate=1; }); $(window).unload(function () { TV_Disable(); }); //离开页面 $(window).bind('beforeunload', function () { ;TV_Disable(); }); function AppendStatus(szStatus) { //qnviccub.QNV_Tool(QNV_TOOL_WRITELOG,0,szStatus,NULL,NULL,0);//写本地日志到控件注册目录的userlog目录下 $("#StatusArea").append(szStatus + "\r\n"); // var scrollTop = $("#StatusArea")[0].scrollHeight; // $("#StatusArea").scrollTop(scrollTop); //var szHint = $("#StatusArea").val()+ szStatus +"\r\n"; // $("#StatusArea").val(szHint); // $("#StatusArea").scrollTop($("#StatusArea").scrollHeight()); } function AppendStatusEx(uID, szStatus) { uID = uID + 1; AppendStatus("通道" + uID + ":" + szStatus); } function showDlg(flag) { var urlStr = prompt("请输入上传的文件的URL,格式如php文件上传", ""); if (urlStr != null && urlStr != "") { if (flag == 0) TV_uploadFile(urlStr); else ali_uploadFile(urlStr); } else { alert('上传url不能为空!'); } } function T_GetEvent(uID, uEventType, uHandle, uResult, szdata) { //var vValueArray=qnviccub.QNV_Event(0,2,0,"","",1024); if (uEventType == -1) return; var vValue = " type=" + uEventType + " Handle=" + uHandle + " Result=" + uResult + " szdata=" + szdata; switch (uEventType) { case BriEvent_PhoneHook:// 本地电话机摘机事件 AppendStatusEx(uID, "本地电话机摘机" + vValue); break; case BriEvent_PhoneDial:// 只有在本地话机摘机,没有调用软摘机时,检测到DTMF拨号 AppendStatusEx(uID, "本地话机拨号" + vValue); break; case BriEvent_PhoneHang:// 本地电话机挂机事件 TV_HangUpCtrl(uID); AppendStatusEx(uID, "本地电话机挂机" + vValue); break; case BriEvent_CallIn:// 外线通道来电响铃事件 AppendStatusEx(uID, "外线通道来电响铃事件" + vValue); break; case BriEvent_GetCallID://得到来电号码 AppendStatusEx(uID, "得到来电号码" + vValue); break; case BriEvent_StopCallIn:// 对方停止呼叫(产生一个未接电话) AppendStatusEx(uID, "对方停止呼叫(产生一个未接电话)" + vValue); break; case BriEvent_DialEnd:// 调用开始拨号后,全部号码拨号结束 AppendStatusEx(uID, "调用开始拨号后,全部号码拨号结束" + vValue); break; case BriEvent_PlayFileEnd:// 播放文件结束事件 AppendStatusEx(uID, "播放文件结束事件" + vValue); break; case BriEvent_PlayMultiFileEnd:// 多文件连播结束事件 AppendStatusEx(uID, "多文件连播结束事件" + vValue); break; case BriEvent_PlayStringEnd://播放字符结束 AppendStatusEx(uID, "播放字符结束" + vValue); break case BriEvent_RepeatPlayFile:// 播放文件结束准备重复播放 AppendStatusEx(uID, "播放文件结束准备重复播放" + vValue); break; case BriEvent_SendCallIDEnd:// 给本地设备发送震铃信号时发送号码结束 AppendStatusEx(uID, "给本地设备发送震铃信号时发送号码结束" + vValue); break; case BriEvent_RingTimeOut://给本地设备发送震铃信号时超时 AppendStatusEx(uID, "给本地设备发送震铃信号时超时" + vValue); break; case BriEvent_Ringing://正在内线震铃 AppendStatusEx(uID, "正在内线震铃" + vValue); break; case BriEvent_Silence:// 通话时检测到一定时间的静音.默认为5秒 AppendStatusEx(uID, "通话时检测到一定时间的静音" + vValue); break; case BriEvent_GetDTMFChar:// 线路接通时收到DTMF码事件 AppendStatusEx(uID, "线路接通时收到DTMF码事件" + vValue); break; case BriEvent_RemoteHook:// 拨号后,被叫方摘机事件 AppendStatusEx(uID, "拨号后,被叫方摘机事件" + vValue); console.log("对方摘机了") break; case BriEvent_RemoteHang://对方挂机事件 TV_HangUpCtrl(uID); AppendStatusEx(uID, "对方挂机事件" + vValue); console.log("对方挂机了") break; case BriEvent_Busy:// 检测到忙音事件,表示PSTN线路已经被断开 AppendStatusEx(uID, "检测到忙音事件,表示PSTN线路已经被断开" + vValue); break; case BriEvent_DialTone:// 本地摘机后检测到拨号音 AppendStatusEx(uID, "本地摘机后检测到拨号音" + vValue); break; case BriEvent_RingBack:// 电话机拨号结束呼出事件。 AppendStatusEx(uID, "电话机拨号结束呼出事件" + vValue); break; case BriEvent_MicIn:// MIC插入状态 AppendStatusEx(uID, "MIC插入状态" + vValue); break; case BriEvent_MicOut:// MIC拔出状态 AppendStatusEx(uID, "MIC拔出状态" + vValue); break; case BriEvent_FlashEnd:// 拍插簧(Flash)完成事件,拍插簧完成后可以检测拨号音后进行二次拨号 AppendStatusEx(uID, "拍插簧(Flash)完成事件,拍插簧完成后可以检测拨号音后进行二次拨号" + vValue); break; case BriEvent_RefuseEnd:// 拒接完成 AppendStatusEx(uID, "拒接完成" + vValue); break; case BriEvent_SpeechResult:// 语音识别完成 AppendStatusEx(uID, "语音识别完成" + vValue); break; case BriEvent_FaxRecvFinished:// 接收传真完成 AppendStatusEx(uID, "接收传真完成" + vValue); break; case BriEvent_FaxRecvFailed:// 接收传真失败 AppendStatusEx(uID, "接收传真失败" + vValue); break; case BriEvent_FaxSendFinished:// 发送传真完成 AppendStatusEx(uID, "发送传真完成" + vValue); break; case BriEvent_FaxSendFailed:// 发送传真失败 AppendStatusEx(uID, "发送传真失败" + vValue); break; case BriEvent_OpenSoundFailed:// 启动声卡失败 AppendStatusEx(uID, "启动声卡失败" + vValue); break; case BriEvent_UploadSuccess://远程上传成功 AppendStatusEx(uID, "远程上传成功" + vValue); break; case BriEvent_UploadFailed://远程上传失败 AppendStatusEx(uID, "远程上传失败" + vValue); break; case BriEvent_EnableHook:// 应用层调用软摘机/软挂机成功事件 AppendStatusEx(uID, "应用层调用软摘机/软挂机成功事件" + vValue); break; case BriEvent_EnablePlay:// 喇叭被打开或者/关闭 AppendStatusEx(uID, "喇叭被打开或者/关闭" + vValue); break; case BriEvent_EnableMic:// MIC被打开或者关闭 AppendStatusEx(uID, "MIC被打开或者关闭" + vValue); break; case BriEvent_EnableSpk:// 耳机被打开或者关闭 AppendStatusEx(uID, "耳机被打开或者关闭" + vValue); break; case BriEvent_EnableRing:// 电话机跟电话线(PSTN)断开/接通 AppendStatusEx(uID, "电话机跟电话线(PSTN)断开/接通" + vValue); break; case BriEvent_DoRecSource:// 修改录音源 AppendStatusEx(uID, "修改录音源" + vValue); break; case BriEvent_DoStartDial:// 开始软件拨号 AppendStatusEx(uID, "开始软件拨号" + vValue); break; case BriEvent_RecvedFSK:// 接收到FSK信号,包括通话中FSK/来电号码的FSK AppendStatusEx(uID, "接收到FSK信号,包括通话中FSK/来电号码的FSK" + vValue); break; case BriEvent_PlugOut: AppendStatusEx(uID, "设备移除"); break; case BriEvent_DevErr://设备错误 AppendStatusEx(uID, "设备错误" + decodeURIComponent(vValue)); break; default: if (uEventType < BriEvent_EndID) AppendStatusEx(uID, "忽略其它事件发生:ID=" + uEventType + vValue); break; } } //编码问题 var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var base64DecodeChars = new Array( -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1); function base64encode(str) { var out, i, len; var c1, c2, c3; len = str.length; i = 0; out = ""; while (i < len) { c1 = str.charCodeAt(i++) & 0xff; if (i == len) { out += base64EncodeChars.charAt(c1 >> 2); out += base64EncodeChars.charAt((c1 & 0x3) << 4); out += "=="; break; } c2 = str.charCodeAt(i++); if (i == len) { out += base64EncodeChars.charAt(c1 >> 2); out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4)); out += base64EncodeChars.charAt((c2 & 0xF) << 2); out += "="; break; } c3 = str.charCodeAt(i++); out += base64EncodeChars.charAt(c1 >> 2); out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4)); out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6)); out += base64EncodeChars.charAt(c3 & 0x3F); } return out; } function base64decode(str) { var c1, c2, c3, c4; var i, len, out; len = str.length; i = 0; out = ""; while (i < len) { /* c1 */ do { c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff]; } while (i < len && c1 == -1); if (c1 == -1) break; /* c2 */ do { c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff]; } while (i < len && c2 == -1); if (c2 == -1) break; out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4)); /* c3 */ do { c3 = str.charCodeAt(i++) & 0xff; if (c3 == 61) return out; c3 = base64DecodeChars[c3]; } while (i < len && c3 == -1); if (c3 == -1) break; out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2)); /* c4 */ do { c4 = str.charCodeAt(i++) & 0xff; if (c4 == 61) return out; c4 = base64DecodeChars[c4]; } while (i < len && c4 == -1); if (c4 == -1) break; out += String.fromCharCode(((c3 & 0x03) << 6) | c4); } return out; } function utf16to8(str) { var out, i, len, c; out = ""; len = str.length; for (i = 0; i < len; i++) { c = str.charCodeAt(i); if ((c >= 0x0001) && (c <= 0x007F)) { out += str.charAt(i); } else if (c > 0x07FF) { out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F)); out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F)); out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)); } else { out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F)); out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)); } } return out; } function utf8to16(str) { var out, i, len, c; var char2, char3; out = ""; len = str.length; i = 0; while (i < len) { c = str.charCodeAt(i++); switch (c >> 4) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: // 0xxxxxxx out += str.charAt(i - 1); break; case 12: case 13: // 110x xxxx  10xx xxxx char2 = str.charCodeAt(i++); out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F)); break; case 14: // 1110 xxxx 10xx xxxx 10xx xxxx char2 = str.charCodeAt(i++); char3 = str.charCodeAt(i++); out += String.fromCharCode(((c & 0x0F) << 12) | ((char2 & 0x3F) << 6) | ((char3 & 0x3F) << 0)); break; } } return out; }