⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 recordfunc.pas

📁 三汇录音卡的录音源码增加了将来电号码写数据库
💻 PAS
📖 第 1 页 / 共 2 页
字号:
///////////procedure AppErrorHandler(ch : Integer)
procedure AppErrorHandler(ch : Integer);
var
   ErrMsg :  pChar;
begin
   GetMem(ErrMsg,200);
   SsmGetLastErrMsg(ErrMsg);
   ChannelState[ch].pErrMsg :=StrPas(Errmsg);
   FreeMem(ErrMsg);
   ChannelState[ch].WorkState :=TRK_IDLE;
end;
//////////////Procedure ScanChammelState Define
procedure ScanChannelState();
var
   I:Integer;
   TempDtmf1:Char;
   TempDtmf2:Char;
//   C_Time : Integer;
begin
  for I:=0 to MaxLine-1 do
     if SsmGetChType(I) = 3 then
     begin
       case ChannelState[i].WorkState of
             TRK_IDLE :
             begin
                   //if DetectPickUp(I) = 1 then //新版本不提供
                if SsmGetChState(I) = 1 then
                begin
                   ChannelState[i].WorkState :=TRK_PICKUP;
                   If ChannelState[i].ConState = YAKONG Then
                   begin
                      with MainForm do
                      begin
                         Record_FileName[i] := IntToStr(i)+DateFileName+'.Mp3';
                         SsmRecToFile(I, PAnsiChar('x:'+Record_FileName[i]), 85, 0, $ffffffff, 10, 0);
                         //Call_Time[i] := GetTickCount;
                         if ChannelState[I].ListenState =LISTEN then
                            PlayListen(0,I);
                         ChannelState[I].WorkState :=TRK_RECORD;
                      end;
                   end;
                end;
                if DetectEmpty(I) = 1 Then
                   ChannelState[I].WorkState :=TRK_OUTLINE;
             end;

             TRK_PICKUP:
             begin
                   case  ChannelState[I].ConState of
                        SHENGKONG:
                            If (SsmDetectBargeIn(I) = 1) Then
                               begin
                                  with MainForm do
                                  begin
                                    Record_FileName[i] := IntToStr(i)+ DateFileName + '.Mp3';
                                    SsmRecToFile(I, PAnsiChar('x:' + Record_FileName[i]), 85, 0, $ffffffff, 10, 0);
                                    //Call_Time[i] := GetTickCount;
                                    if (channelstate[i].ListenState =listen) then
                                        PlayListen(0,I);
                                    ChannelState[I].WorkState :=TRK_RECORD;
                                  end;
                               end;
                        YAKONG:
                            //if DetectPickUp(I) = 1 then
                            if SsmGetChState(I) = 1 then
                                begin
                                  with MainForm do
                                  Begin

                                    Record_FileName[i] := IntToStr(i)+DateFileName + '.Mp3';
                                    SsmRecToFile(I, PAnsiChar('x:'+Record_FileName[i]), 85, 0, $ffffffff, 10, 0);
                                    //Call_Time[i] := GetTickCount;
                                    if (channelstate[i].ListenState =listen) then
                                        PlayListen(0,I);
                                    ChannelState[I].WorkState :=TRK_RECORD;
                                  End;
                                end;

                        MAKONG:
                            begin
                               SsmGetLastDtmf(I,@tempDtmf1 );
                               if (tempDtmf1='*') then
                                begin
                                  with MainForm do
                                  begin
                                    Record_FileName[i] := IntToStr(i)+DateFileName + '.Mp3';
                                    SsmRecToFile(I, PAnsiChar('x:'+Record_FileName[i]), 85, 0,
                                      $ffffffff, 10, 0);
                                    //Call_Time[i] := GetTickCount;  //
                                    //记录来电时长,记时开始
                                    if (channelstate[i].ListenState =listen) then
                                       PlayListen(0,I);
                                    ChannelState[I].WorkState :=TRK_RECORD;
                                  //ClearDTMFBuf (I); //新版本不支持
                                    SsmClearRxDtmfBuf(I);
                                  end;
                                end;
                            end;
                   end;
                   //If (DetectEmpty(I) = 1) Then //新版本不支持
                   If (SsmGetChState(I) = 8) Then
                        ChannelState[i].WorkState  := TRK_OUTLINE;
                   If (SsmGetChState(I) = 0) Then
                        ChannelState[i].WorkState := TRK_IDLE;
             end;

             TRK_RECORD:
             begin
                 case  ChannelState[I].ConState of
                      SHENGKONG:
                         if (SsmDetectNoSound(I) = 1) then
                         begin
                            SsmStopRecToFile(I);
                            //此处加代码,停止录音
//                            MainForm.Call_Time[i] := Round(((GetTickCount - MainForm.Call_Time[i])/
//                               1000)/60);
//                            PostMessage(MainForm.Handle, Save_Message, i,0);
                            ChannelState[i].WorkState := TRK_PICKUP;
                         end;
                      YAKONG:
                             //If (DetectPickUp(I) = 0) Then
                         If (SsmGetChState(I) = 0) Then
                         begin
                            SsmStopRecToFile(I);
                            //此处加代码,停止录音
//                            MainForm.Call_Time[i] := Round(((GetTickCount - MainForm.Call_Time[i])/
//                              1000)/60);
//                            PostMessage(MainForm.Handle, Save_Message, i,0);
                            ChannelState[i].WorkState:=TRK_IDLE;
                         end;
                      MAKONG:
                         begin
                            SsmGetLastDtmf(I,@Tempdtmf2);
                            If (TempDtmf2 ='*') Then
                            begin
                                SsmStopRecToFile(I);
                                //此处加代码,停止录音
//                               MainForm.Call_Time[i] := Round(((GetTickCount - MainForm.Call_Time[i])/
//                                   1000)/60);
//                                PostMessage(MainForm.Handle, Save_Message, i,0);
                                ChannelState[i].WorkState:=TRK_PICKUP;
                                //ClearDTMFBuf(I);
                                SsmClearRxDtmfBuf(I);
                            end;
                         end;
                   end;
                   //If (DetectEmpty(I) = 1) Then
                   If (SsmGetChState(I) = 8) Then
                   begin
                      SsmStopRecToFile(I);
                      with MainForm do
                      begin
//                        MainForm.Call_Time[i] := Round(((GetTickCount - MainForm.Call_Time[i])/
//                          1000)/60);
//                        PostMessage(MainForm.Handle, Save_Message, i, 0);
//                        Save_Data(Record_FileName[i],CallerID_Num[i],
  //                         CallerID_Extension[i],IntToStr(i),C_Time);
                       end;
                      //此处加代码,停止录音
                      ChannelState[i].WorkState  := TRK_OUTLINE;
                   end;
                   If (SsmGetChState(I) = 0) Then
                   begin
                      SsmStopRecToFile(i);
//                      MainForm.Call_Time[i] := Round(((GetTickCount - MainForm.Call_Time[i])/
//                          1000)/60);
//                      PostMessage(MainForm.Handle, Save_Message, i,0);
                      ChannelState[i].WorkState := TRK_IDLE;
                   end;
                   if (channelstate[i].ListenState =listen) then
                      PlayListen(0,I)
                   else
                      StopListen(i);
                end;

             TRK_OUTLINE:
             begin
                 //If DetectEmpty(I) = 0 Then
                If SsmGetChState(I) = 0 Then
                    ChannelState[i].WorkState := TRK_IDLE;
             end;
       end;
     end;
end;
//////////////InitTrkChannelList()
procedure InitTrkChannelList();
var
      i:integer;
      ListItem:TListItem;
begin
    for i:=0 to MaxLine do
    begin
          if (SsmGetChType(i)=3)then
          begin
            ListItem:=MainForm.ChannelListView.Items.Add ;
            ListItem.Caption :=IntToStr(i);
            begin
              ListItem.SubItems.Add (' ');
              ListItem.SubItems.Add (' ');
              ListItem.SubItems.Add (' ');
              ListItem.SubItems.Add (' ');
              ListItem.SubItems.Add (' ');
              ListItem.SubItems.Add (' ');
              ListItem.SubItems.Add (' ');
            end;
          end;
      end;
end;

//////////////

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -