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

📄 recordform.~pas

📁 三汇录音卡的录音源码增加了将来电号码写数据库
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
unit RecordForm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls;

type TRUNK_STATE =  (
   TRK_IDLE,
   TRK_PICKUP,
   TRK_RECORD,
   TRK_OUTLINE,
   TRK_ELSE
   );
type Constrol=
(
   SHENGKONG,
   YAKONG,
   MAKONG
)  ;

type LISTENA=
   (
    NoListen,
    Listen
    );

type TRUNK_RECORD =record
    WorkState:TRUNK_STATE;
    ListenState:LISTENA ;
    ConState:Constrol;
    pErrMsg:string;
    dwTimeOutCounter:LongWord;
end;


type
  TFrRecord = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
    function InitCtiSystem : boolean;
//    procedure ExitCtiSystem;
    procedure UpdateChannelState;
    procedure InitChannelState;
    procedure InitTrkChannelList;
    procedure AppErrorHandler(ch : Integer);
    procedure ScanChannelState;
  end;

var
  FrRecord: TFrRecord;
  MaxLine : integer;
  ListenChannel : integer;
  ChannelState : array[0..200] of TRUNK_RECORD;

implementation

uses Main, Shpa3api;

{$R *.dfm}

{ TFrRecord }

procedure TFrRecord.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 TFrRecord.ExitCtiSystem;
//begin
//  SsmCloseCti();
//end;

procedure TFrRecord.InitChannelState;
var
   I : Integer;
Begin
   for I:=0 to MaxLine-1 do
   If SsmGetChType(I) = 3 Then
     begin
       ChannelState[i].WorkState :=TRK_IDLE;
       ChannelState[i].ListenState :=Nolisten;
       ChannelState[i].ConState := YAKONG; //SHENGKONG;
       //SetSoundJudgeLevel(I, 1); //新版本不提供
       SsmSetBargeInSens(I, 8)  ;
       //SetJudge(I, 28); //新版本不提供
       SsmSetDtrmLineVoltage(I, 28);
     end;
end;

function TFrRecord.InitCtiSystem: boolean;
var
  strCurrentDir:string;
  fnIni:string;
  fnIndex:string;
  ErrMsg:PChar;
begin
   strCurrentDir:=GetCurrentDir();
   fnIni:=strCurrentDir+'\ShConfig.ini';
   fnIndex:=strCurrentDir+'\shindex.ini';
   if SsmStartCti(@fnIni[1],@fnIndex[1])<>0 then
   begin
      GetMem(ErrMsg,200);
      SsmGetLastErrMsg(ErrMsg);   ////////
      Application.MessageBox(ErrMsg,'错误',MB_Ok);
      FreeMem(ErrMsg);
      InitCtiSystem:=false;
      Exit;
    end;
    if (SsmGetMaxUsableBoard() <> SsmGetMaxCfgBoard())then
    begin
       GetMem(ErrMsg,200);
       SsmGetLastErrMsg(ErrMsg);
       Application.MessageBox(ErrMsg,'错误', MB_OK);
       FreeMem(ErrMsg);
    end;
    MaxLine:=SsmGetMaxCh();
    InitCtiSystem:=True;
end;

procedure TFrRecord.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;

procedure TFrRecord.ScanChannelState;
var
   I:Integer;
   TempDtmf1:Char;
   TempDtmf2:Char;
begin
  for I:=0 to MaxLine-1 do
     if SsmGetChType(I) = 3 then
     begin
       case ChannelState[i].WorkState of
             TRK_IDLE :
             begin
               If SsmGetChState(I) = 2 then
                   Call_Ring[i] := True;
                   //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:

⌨️ 快捷键说明

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