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