📄 recordform.~pas
字号:
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;
procedure TFrRecord.UpdateChannelState;
var
i : integer;
State : string;
NewDtmf : pChar;
NewCallerId :array [0..99] of char;
OldDtmf : String;
TempStr:String;
TEmpStr1:String;
nResult:integer;
Num : integer;
begin
num:=0;
for i:=0 to MaxLine-1 do
begin
if SsmGetChType(i)=3 then
begin
case (ChannelState[i].WorkState ) of
TRK_IDLE: State:='空闲';
TRK_PICKUP: State:='摘机';
TRK_RECORD: State:='录音';
TRK_OUTLINE: State:='断线';
TRK_ELSE: State:='未定义';
end;
TempStr:=MainForm.ChannelListView.Items[num].SubItems[0];
if State<>TempStr then
MainForm.ChannelListView.Items[num].SubItems[0]:=State;
case (ChannelState[I].ConState ) of
SHENGKONG: State:='声控';
YAKONG: State:='压控';
MAKONG: State:='码控';
end;
TempStr:=MainForm.ChannelListView.Items[num].SubItems[1];
if State<>TempStr then
MainForm.ChannelListView.Items[num].SubItems[1]:=state;
case ChannelState[i].ConState of
MAKONG: State:='*';
SHENGKONG,YAKONG: State:='';
end;
TempStr:=MainForm.ChannelListView.Items[num].SubItems[2];
if TempStr<>state then
MainForm.ChannelListView.Items[num].SubItems[2]:=state ;
case ChannelState[i].ListenState of
NOLISTEN: State:=' ';
LISTEN: sTATE:='监听';
end;
TempStr:=MainForm.ChannelListView.Items[num].SubItems[3];
if TempStr<>STATE then
MainForm.ChannelListView.Items [num].SubItems [3]:=State;
GetMem(NewDtmf,100);
SsmGetDtmfStr(I, NewDtmf);
OldDtmf:=MainForm.ChannelListView.Items[num].SubItems[4];
//if OldDtmf<>NewDtmf then
// MainForm.ChannelListView.Items [num].SubItems [4]:=StrPas(NewDtmf);
Freemem(newdtmf);
nResult := SsmGetCallerId(I, @NewCallerId[0]);
If (nResult = -1) Then NewCallerId := '-1' ;
If (nResult = 0) Then NewCallerId := '' ;
OldDtmf:=MainForm.ChannelListView.Items[num].SubItems[5];
if OldDtmf <> String(NewCallerId) then
MainForm.ChannelListView.Items[num].SubItems[5] := StrPas(NewCallerId);
//我加的东西
If (OldDtmf <> String(NewCallerId)) and (Length(StrPas(NewCallerId)) > 4) then
Begin
MainForm.Query1.Close;
Sleep(500);
MainForm.Query1.Open;
MainForm.CallerID_Extension[i] := MainForm.Query1.FieldByName('来电号码').AsString;
MainForm.Call_Extension[i] := MainForm.Query1.FieldByName('呼叫分机').AsString;
MainForm.StatusBar1.Panels[1].Text := '呼叫分机:'+ MainForm.Call_Extension[i];
MainForm.CallerID_Extension[i] := 'aaa';
// If MainForm.Mp3_AAA[i] <> MainForm.Record_FileName[i] then
// Begin //数据发送,下面不行再考虑放开
MainForm.SendData( i, MainForm.CallerID_Extension[i]
+ ';'+ NewCallerID, IntToStr(i)); //+';'+MainForm.Record_FileName[i]);
MainForm.Call_Time[i] := Now;
// MainForm.Mp3_AAA[i] := MainForm.Record_FileName[i];
// End;
MainForm.CallerID_Num[i] := NewCallerID;
End;
{///////////////////////////////////////试验数据发送
If MainForm.Mp3_AAA[i] <> MainForm.Record_FileName[i] then
Begin
MainForm.SendData(MainForm.ChannelIP[i+1],
MainForm.CallerID_Extension[i]
+ ';'+ NewCallerID, IntToStr(i)+';'+MainForm.Record_FileName[i]);
MainForm.Mp3_AAA[i] := MainForm.Record_FileName[i];
End;
///////////////////////////////////////}
If (OldDtmf <> String(NewCallerId))and(String(NewCallerId) = '')and(Trim(MainForm.CallerID_Num[i])<>'') then
Begin
// MainForm.Call_Time[i] := Round(((GetTickCount - MainForm.Call_Time[i])/
// 1000)/60);
PostMessage(MainForm.Handle, Save_Message, i, 0);
MainForm.StatusBar1.Panels[0].Text := IntToStr(i)+ 'Abc';
//Application.MessageBox(PAnsiChar('通道'+IntToStr(I)),'来电话了');
//到此结束
End;
TempStr:=MainForm.ChannelListView.Items[num].SubItems[6];
TempStr1:=ChannelState[i].pErrMsg ;
if TempStr<>TempStr1 then
MainForm.ChannelListView.Items[num].SubItems[6]:=TempStr1;
num:=num+1 ;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -