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

📄 main.pas

📁 三汇录音卡的录音源码增加了将来电号码写数据库
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -