📄 main.pas
字号:
unit Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ExtCtrls, ComCtrls, IdTCPServer, IdBaseComponent,
IdComponent, IdTCPConnection, INIFiles,DateUtils, DB,IdSocketHandle,
DBTables, MemDS, DBAccess, MSAccess, IdUDPBase, IdUDPClient, IdUDPServer;
Const
Save_Message = WM_USER + 1000;
type
TMainForm = class(TForm)
ChannelListView: TListView;
Timer1: TTimer;
Label2: TLabel;
ComCur_Line: TComboBox;
SetListen: TBitBtn;
UnSetListen: TBitBtn;
Play: TBitBtn;
StopPlay: TBitBtn;
CommandExit: TBitBtn;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
StatusBar1: TStatusBar;
Database1: TDatabase;
Query1: TQuery;
Timer2: TTimer;
IdUDPClient1: TIdUDPClient;
IdUDPServer1: TIdUDPServer;
procedure CommandExitClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure SetListenClick(Sender: TObject);
procedure UnSetListenClick(Sender: TObject);
procedure PlayClick(Sender: TObject);
procedure StopPlayClick(Sender: TObject);
procedure ComCur_LineChange(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure RadioButton3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
private
{ Private declarations }
procedure ReadClientIP; //从INI文件中读取各客户端的IP地址
public
Record_FileName : array[0..7] of String; //记录生成的MP3的日期文件名
Mp3_AAA : array[0..7] of String;
Call_Extension : array[0..7] of string; //呼叫分机,为对应的IP地址用
ChannelIP : array[1..8] of String; //对应8个通道的客户端IP地址
CallerID_Extension : array[0..7] of String; //来电号码
Call_Time : array[0..7] of TDateTime; //来电时长
Call_Ring : array[0..7] Of Boolean; //判断振铃
CallerID_Num : array[0..7] of String; //分机号
{ Public declarations }
Procedure SendData(IP_Add: Integer; Telephone, Mp3FileName : String);
Function DateFileName : String;
Procedure SaveMessage(var Msg : TMessage); Message Save_Message;
end;
var
MainForm: TMainForm;
implementation
uses Shpa3api, RecordForm;
{$R *.DFM}
procedure TMainForm.CommandExitClick(Sender: TObject);
begin
close();
end;
procedure TMainForm.FormShow(Sender: TObject);
var
I : integer;
//ListItem: TListItem;
begin
if not FrRecord.InitCtiSystem then
Close();
for i:=0 to MaxLine - 1 do
ComCur_Line.Items.Add(IntToStr(i));
ListenChannel:=MaxLine;
ComCur_Line.Text:=IntToStr(0);
FrRecord.InitTrkChannelList;
FrRecord.InitChannelState;
Timer1.Enabled:=true;
ReadClientIP;
for i := 0 to 7 do
Begin
Record_FileName[i] := ''; //记录生成的MP3的日期文件名
// ChannelIP[i] := ''; // 对应8个通道的客户端IP地址
CallerID_Extension[i] := ''; //来电号码
Call_Time[i] := Now; // array[1..8] of Integer;
CallerID_Num[i] := ''; //分机号
Mp3_AAA[i] := '';
Call_Extension[i] := '';
Call_Ring[i] := False;
End;
end;
/////////////////////////
procedure TMainForm.FormDestroy(Sender: TObject);
begin
SsmCloseCti();
end;
/////////////////////////
procedure TMainForm.Timer1Timer(Sender: TObject);
begin
FrRecord.ScanChannelState;
FrRecord.UpdateChannelState;
end;
/////////////////////
procedure TMainForm.UnSetListenClick(Sender: TObject);
begin
ChannelState[ListenChannel].ListenState :=NoListen;
ListenChannel:=MaxLine;
end;
//////////
procedure TMainForm.SetListenClick(Sender: TObject);
var
CurLine:Integer;
begin
CurLine:=StrToInt(ComCur_Line.Text );
if ListenChannel<> CurLine then
begin
ChannelState[CurLine].ListenState :=Listen;
if ListenChannel< MaxLine then ChannelState[ListenChannel].ListenState :=NoListen;
ListenChannel:=CurLine;
end;
end;
/////////////
procedure TMainForm.PlayClick(Sender: TObject);
var
ErrMsg:PChar;
begin
If ((SsmPlayFile(0, 'test.Mp3', 85, 0,$ffffffff)) = -1) Then
begin
GetMem(ErrMsg,200);
SsmGetLastErrMsg(ErrMsg); //取得初始化出错信息
Application.MessageBox(ErrMsg,'错误', MB_OK );
FreeMem(ErrMsg);
end;
end;
//////////////////////////
procedure TMainForm.StopPlayClick(Sender: TObject);
var
ErrMsg:PChar;
begin
if (SsmCheckPlay(0)=0)and(SsmStopPlayFile(0)=-1)or(SsmCheckPlay(0)=-1) then
begin
GetMem(ErrMsg,200);
SsmGetLastErrMsg(ErrMsg); //取得放音出错信息
Application.MessageBox(ErrMsg,'错误', MB_OK );
FreeMem(ErrMsg);
end;
end;
/////////////////////
procedure TMainForm.ComCur_LineChange(Sender: TObject);
VAR
CurLine : integer;
begin
CurLine:=StrToInt(ComCur_Line.Text );
if ChannelState[CurLine].ConState =SHENGKONG then
RadioButton1.Checked :=true;
if ChannelState[CurLine].ConState =YAKONG then
RadioButton2.Checked :=true;
if ChannelState[CurLine].ConState =MAKONG then
RadioButton2.Checked :=true;
end;
procedure TMainForm.RadioButton1Click(Sender: TObject);
VAR
CurLine : integer;
begin
CurLine:=StrToInt(ComCur_Line.Text );
ChannelState[CurLine].ConState:=SHENGKONG;
end;
procedure TMainForm.RadioButton2Click(Sender: TObject);
VAR
CurLine : integer;
begin
CurLine:=StrToInt(ComCur_Line.Text );
ChannelState[CurLine].ConState:=YAKONG;
end;
procedure TMainForm.RadioButton3Click(Sender: TObject);
var
CurLine : integer;
begin
CurLine:=StrToInt(ComCur_Line.Text );
ChannelState[CurLine].ConState:=MAKONG;
end;
function TMainForm.DateFileName: String;
var
AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond: Word;
StrMonth, StrDay, StrHour, StrMinute, StrSecond : String;
begin
DeCodeDateTime(Now, AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond);
If AMonth < 10 then
StrMonth := '0'+ IntToStr(AMonth)
Else
StrMonth := IntToStr(AMonth);
If ADay < 10 then
StrDay := '0'+ IntToStr(ADay)
Else
StrDay := IntToStr(ADay);
If AHour < 10 then
StrHour := '0'+ IntToStr(AHour)
Else
StrHour := IntToStr(AHour);
If AMinute < 10 then
StrMinute := '0'+ IntToStr(AMinute)
Else
StrMinute := IntToStr(AMinute);
If ASecond < 10 then
StrSecond := '0'+ IntToStr(ASecond)
Else
StrSecond := IntToStr(ASecond);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -