📄 communication.lst
字号:
510 7 }
511 6 else
512 6 {//原定为外部通话组
513 7 if(ReadDTMF_Decord((ReadMessageGroup(i,MessageGroup_datastar)),dtmfdecord_datastar)==0x0C)
514 7 {//实为内线拨号
515 8 Writesoundway(telnum,extcomgroupID,OFF);//断开外线连接
516 8 HoldOutsideLine(extcomgroupID);//挂断外线
517 8 temp=testextcomgroup_inside();//若还有空闲内部通话组,返回通话组编号
518 8 if(temp!=0xff)
519 8 {//还存在空闲的内部通话时 将外部通话转移到内部通话组来
520 9 ClearAComGroup(extcomgroupID);//消除原有通话组
521 9 CreatExtComGroupByID(temp,MACHINE_ID[telnum],0,INSIDECOMTYPE); //新建空闲通话组
522 9 }
523 8 else
524 8 {//仍然使用原通话组
525 9 WriteExtComGroup(extcomgroupID,ExtComGroup_type,INSIDECOMTYPE); //修改通话类型
526 9 WriteExtComGroup(extcomgroupID,ExtComGroup_object,0); //修改通话目标
527 9 }
528 8 WriteExtTelState(telnum,exttel_dialing); //改变分机状态
529 8 WriteExtTelTime(telnum,0);//关闭时间功能
530 8
531 8 RawMessageNum--; //释放消息资源
532 8 ClearAMessage(i);
533 8 return;
534 8 }
535 7 else
536 7 {//实为外部通话组
537 8 ReleaseDTMFRes(MACHINE_ID[telnum]);//释放DTMF解码资源
538 8 WriteExtTelState(telnum,exttel_dialing); //改变分机状态
539 8 WriteExtTelTime(telnum,0);//关闭时间功能
540 8
541 8 RawMessageNum--; //释放消息资源
542 8 ClearAMessage(i);
543 8 return;
544 8 }
545 7 }
546 6 }//第一个拨号信息
547 5 else
548 5 {//如果不是第一个拨号信息 给出出错提示
549 6 RawMessageNum--; //释放消息资源
C51 COMPILER V7.06 COMMUNICATION 11/15/2007 09:02:23 PAGE 10
550 6 ClearAMessage(i);
551 6 return;
552 6 }
553 5 }//解码消息
554 4 RawMessageNum--; //清楚已处理的消息
555 4 ClearAMessage(i);
556 4 return;
557 4 }//本外线消息
558 3 }//消息查询
559 2 }//是否有消息
560 1 }//函数
561
562 void exttel_dialing_deal(UCHAR telnum)
563 {
564 1 idata UCHAR i,extcomgroupID;
565 1
566 1 if(RawMessageNum!=0)
567 1 {
568 2 for(i=0;i<MESSAGEGROUPNUMBER;i++)
569 2 {
570 3 if(ReadMessageGroup(i,MessageGroup_origin)==MACHINE_ID[telnum])
571 3 {//为本分机消息
572 4 if(ReadMessageGroup(i,MessageGroup_type)==EXTTEL_HOLD_MESSAGETYPE)
573 4 {//挂机消息
574 5 extcomgroupID=findextcomgroupbyorigin(telnum);//取得通话组编号
575 5 if(ReadExtComGroup(extcomgroupID,ExtComGroup_type)==INSIDECOMTYPE)
576 5 {//内部通话类型
577 6 ReleaseDTMFRes(MACHINE_ID[telnum]);//释放DTMF解码资源
578 6 }
579 5 else
580 5 {//外部通话类型
581 6 Writesoundway(telnum,extcomgroupID,OFF);//断开外线连接
582 6 HoldOutsideLine(extcomgroupID);//挂线
583 6 }
584 5 ClearAComGroup(extcomgroupID); //释放通话组资源
585 5 WriteExtTelState(telnum,exttel_hold); //改变分机状态
586 5
587 5 RawMessageNum--; //释放消息资源
588 5 ClearAMessage(i);
589 5 return;
590 5 } //挂机消息
591 4
592 4 if(ReadMessageGroup(i,MessageGroup_type)==DECODE_DTMF_MESSAGETYPE)
593 4 {//DTMF解码消息
594 5 if(ReadMessageGroup(i,(MessageGroup_datastar+1))==2)
595 5 {//收到2个拨号信息
596 6 if(ReadDTMF_Decord((ReadMessageGroup(i,MessageGroup_datastar)),dtmfdecord_datastar+1)==0x01)
597 6 {//戴接电话功能
598 7 ReleaseDTMFRes(MACHINE_ID[telnum]);//释放DTMF解码资源
599 7 TakeTheRingPhone(telnum);
600 7
601 7 RawMessageNum--; //释放消息资源
602 7 ClearAMessage(i);
603 7 return;
604 7 }
605 6 else if(ReadDTMF_Decord((ReadMessageGroup(i,MessageGroup_datastar)),dtmfdecord_datastar+1)==0x0
-8)
606 6 {//符合分机拨号标准
607 7 RawMessageNum--; //释放消息资源
608 7 ClearAMessage(i);
609 7 return;
610 7 }
C51 COMPILER V7.06 COMMUNICATION 11/15/2007 09:02:23 PAGE 11
611 6 else
612 6 {//不符合分机拨号标准
613 7 extcomgroupID=findextcomgroupbyorigin(telnum);//取得通话组编号
614 7 ClearAComGroup(extcomgroupID);//撤消通话组
615 7 ReleaseDTMFRes(MACHINE_ID[telnum]);//释放DTMF解码资源
616 7 SetExtTelErrorSound(telnum); //给出错误提示音
617 7 WriteExtTelState(telnum,exttel_error);//改变分机状态
618 7
619 7 RawMessageNum--; //释放消息资源
620 7 ClearAMessage(i);
621 7 return;
622 7 }
623 6 }
624 5
625 5 if(ReadMessageGroup(i,(MessageGroup_datastar+1))==3)
626 5 {//收到3个拨号信息
627 6 if(ReadDTMF_Decord((ReadMessageGroup(i,MessageGroup_datastar)),dtmfdecord_datastar+2)==0x00)
628 6 {//符合分机拨号标准
629 7 RawMessageNum--; //释放消息资源
630 7 ClearAMessage(i);
631 7 return;
632 7 }
633 6 else
634 6 {//不符合分机拨号标准
635 7 extcomgroupID=fi
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -