📄 communication.lst
字号:
382 3 { //为本外线消息
383 4 RawMessageNum--; //清楚已处理的消息
384 4 ClearAMessage(i);
385 4 return;
386 4 }//本外线消息
387 3 }//消息查询
388 2 }//是否有消息
389 1 }//函数
390
391 void exttel_hold_deal(UCHAR telnum) //telnum 为分机号码 0,1,2,3,4,5,6,7
392 {
393 1 idata UCHAR i,temp;
394 1
395 1 if(RawMessageNum!=0)
396 1 {
397 2 for(i=0;i<MESSAGEGROUPNUMBER;i++)
398 2 {
399 3 if(ReadMessageGroup(i,MessageGroup_origin)==MACHINE_ID[telnum])
400 3 { //为本分机消息
401 4 if(ReadMessageGroup(i,MessageGroup_type)==EXTTEL_UNHOLD_MESSAGETYPE)
402 4 { //摘机消息
403 5 temp=CreateExtComGroup(telnum);
404 5 if(temp==0xff)
405 5 {//没有通话组资源出错
406 6 SetExtTelErrorSound(telnum); //给出出错提示
407 6 WriteExtTelState(telnum,exttel_error);
408 6 }
409 5 else if(ReadExtComGroup(temp,ExtComGroup_type)==INSIDECOMTYPE)
410 5 {//内部通话
411 6 SetExtTelQuietSound(telnum);//初始化提示音
412 6 Writesoundway(telnum,HINTSOUND,ON);//给出450HZ可拨号提示音
413 6 StarDecordDTMF(MACHINE_ID[telnum]);//开始检测DTMF
-
414 6 }
415 5 else
416 5 {//外部通话
417 6 SetExtTelQuietSound(telnum);//初始化提示音
418 6 WriteExtComGroup(temp,ExtComGroup_object,OUTSIDELINE_ID[temp]);//选择通道连接
419 6 TakeOutsideLine(temp);//拿线
420 6 StarDecordDTMF(MACHINE_ID[telnum]); //开始检测DTMF
421 6 Writesoundway(telnum,temp,ON);//连接外线
-
422 6 }
423 5
424 5 WriteExtTelState(telnum,exttel_unhold);//改变分机状态
425 5 WriteExtTelTime(telnum,EXTTELTIME_30S);//启动时间功能
C51 COMPILER V7.06 COMMUNICATION 11/15/2007 09:02:23 PAGE 8
426 5
427 5 RawMessageNum--; //清楚已处理的消息
428 5 ClearAMessage(i);
429 5 return;
430 5 }
431 4 else
432 4 {//其它的消息类型不处理,进行防错动作
433 5 WriteExtTelState(telnum,exttel_hold);
434 5
435 5 RawMessageNum--; //清楚已处理的消息
436 5 ClearAMessage(i);
437 5 return;
438 5 }
439 4 RawMessageNum--; //清楚已处理的消息
440 4 ClearAMessage(i);
441 4 return;
442 4 }//本分机消息
443 3 }//消息查询
444 2 }//是否有消息
445 1 }//函数
446
447 void exttel_unhold_deal(UCHAR telnum)
448 {
449 1 idata UCHAR i,extcomgroupID,temp;
450 1
451 1 if(RawMessageNum!=0)
452 1 {
453 2 for(i=0;i<MESSAGEGROUPNUMBER;i++)
454 2 {
455 3 if(ReadMessageGroup(i,MessageGroup_origin)==MACHINE_ID[telnum])
456 3 {//为本分机消息
457 4 if(ReadMessageGroup(i,MessageGroup_type)==EXTTEL_HOLD_MESSAGETYPE)
458 4 { //挂机消息
459 5 extcomgroupID=findextcomgroupbyorigin(telnum);//取得通话组编号
460 5 if(ReadExtComGroup(extcomgroupID,ExtComGroup_type)==INSIDECOMTYPE)
461 5 {//内部通话类型
462 6 Writesoundway(telnum,HINTSOUND,OFF);//停止可拨号信号提示音
463 6 ReleaseDTMFRes(MACHINE_ID[telnum]);//释放DTMF解码资源
464 6 }
465 5 else
466 5 {//外部通话类型
467 6 Writesoundway(telnum,extcomgroupID,OFF);//断开外线连接
468 6 ReleaseDTMFRes(MACHINE_ID[telnum]);//释放DTMF解码资源
469 6 HoldOutsideLine(extcomgroupID);//挂线
470 6 }
471 5 WriteExtTelState(telnum,exttel_hold); //改变分机状态
472 5 WriteExtTelTime(telnum,0);//关闭时间功能
473 5 ClearAComGroup(extcomgroupID); //释放通话组资源
474 5
475 5 RawMessageNum--; //释放消息资源
476 5 ClearAMessage(i);
477 5 return;
478 5 }//挂机消息
479 4
480 4 if(ReadMessageGroup(i,MessageGroup_type)==DECODE_DTMF_MESSAGETYPE)
481 4 {//DTMF解码消息
482 5 if(ReadMessageGroup(i,(MessageGroup_datastar+1))==1)
483 5 {//第一个拨号信息
484 6 extcomgroupID=findextcomgroupbyorigin(telnum);//取得通话组编号
485 6 if(ReadExtComGroup(extcomgroupID,ExtComGroup_type)==INSIDECOMTYPE)
486 6 {//原定为内部通话组
487 7 if(ReadDTMF_Decord((ReadMessageGroup(i,MessageGroup_datastar)),dtmfdecord_datastar)==0x0C)
C51 COMPILER V7.06 COMMUNICATION 11/15/2007 09:02:23 PAGE 9
488 7 {//实为内线拨号
489 8 Writesoundway(telnum,HINTSOUND,OFF);//停止可拨号信号提示音
490 8 WriteExtTelState(telnum,exttel_dialing); //改变分机状态
491 8 WriteExtTelTime(telnum,0);//关闭时间功能
492 8
493 8 RawMessageNum--; //释放消息资源
494 8 ClearAMessage(i);
495 8 return;
496 8 }
497 7 else
498 7 {//实为外部通话组
499 8 //因为外线已经被占用,无法开启外部通话 给出错提示音
500 8 Writesoundway(telnum,HINTSOUND,OFF);//停止可拨号信号提示音
501 8 ReleaseDTMFRes(MACHINE_ID[telnum]);//释放DTMF解码资源
502 8 SetExtTelErrorSound(telnum); //给出错误提示音
503 8 WriteExtTelState(telnum,exttel_error);//改变分机状态
504 8 WriteExtTelTime(telnum,0);//关闭时间功能
505 8
506 8 RawMessageNum--; //释放消息资源
507 8 ClearAMessage(i);
508 8 return;
509 8 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -