📄 recordform.~pas
字号:
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 + -