📄 main.pas
字号:
//demo程序实现了一下功能:
// 1。自动向外拨号功能。
// 2。未检测到F1信号时,做语音提示,延时后再发传真。
// 3。 寻找一空闲软传真通道向外发传真。
// 4。对传真发送全过程进行录音,日志显示。
unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, ExtCtrls, StdCtrls;
type
TMainForm = class(TForm)
TrunkChListView: TListView;
Timer1: TTimer;
Edit2: TEdit;
Label1: TLabel;
Edit3: TEdit;
Label3: TLabel;
Label4: TLabel;
Edit4: TEdit;
Button2: TButton;
ListBox1: TListBox;
ListBox2: TListBox;
Label2: TLabel;
Label5: TLabel;
Button3: TButton;
Button4: TButton;
Panel1: TPanel;
ListBox3: TListBox;
Edit1: TEdit;
Label7: TLabel;
Edit5: TEdit;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Label8: TLabel;
Edit6: TEdit;
Button9: TButton;
Label6: TLabel;
Label9: TLabel;
CheckBox1: TCheckBox;
Label10: TLabel;
Label11: TLabel;
Edit7: TEdit;
procedure FormShow(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Edit6Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
bHaveLoadDriver:boolean;
implementation
uses FaxFunc,Shpa3api,filectrl;
{$R *.DFM}
procedure TMainForm.FormShow(Sender: TObject);
var
i:Integer;
ListItem: TListItem;
begin
bHaveLoadDriver:=InitCtiBoard();
if not bHaveLoadDriver then Close()
else
begin
for i:=0 to nTotalCh-1 do
begin
if( FAxCh[i].EnCalled ) then
begin
ListItem:=TrunkChListView.Items.Add;
ListItem.Caption:=IntToStr(i);
ListItem.SubItems.Add(' ');
ListItem.SubItems.Add(' ');
ListItem.SubItems.Add(' ');
ListItem.SubItems.Add(' ');
end;
end;
Timer1.Enabled:=true;
end;
end;
procedure TMainForm.FormDestroy(Sender: TObject);
begin
if bHaveLoadDriver then ExitCtiBoard();
end;
procedure TMainForm.Timer1Timer(Sender: TObject);
begin
DrawTrunkChState();
DoTruckWork();
end;
procedure TMainForm.Button1Click(Sender: TObject);
begin
Close();
end;
procedure TMainForm.Button2Click(Sender: TObject);
var
ErrMsg:PChar;
sPoneNumber:PCHAR;
begin
if SsmPickUp(StrToInt(Edit2.Text))=-1then
begin
GetMem(ErrMsg,200);
SsmGetLastErrMsg(ErrMsg);
Application.MessageBox(ErrMsg,'错误', MB_OK) ;
FreeMem(ErrMsg);
exit;
end;
SsmRecToFile(StrToInt(Edit2.Text), 'record.wav', -1, 0, $ffffffff, $ffffffff, 1);
SsmClearToneAnalyzeResult(StrToInt(Edit2.Text));
TrunkCh[StrToInt(Edit2.Text)].InUse:=1;
TrunkCh[StrToInt(Edit2.Text)].nStep:=TRUNK_PICK_UP;
ListBox1.Items.Add('外线摘机');
sPoneNumber:=Pchar(Edit3.Text);
if SsmAutoDial(StrToInt(Edit2.Text),sPoneNumber)=-1 then
begin
GetMem(ErrMsg,200);
SsmGetLastErrMsg(ErrMsg);
Application.MessageBox(ErrMsg,'错误', MB_OK) ;
FreeMem(ErrMsg);
exit;
end;
TrunkCh[StrToInt(Edit2.Text)].InUse:=2;
TrunkCh[StrToInt(Edit2.Text)].nStep:=TRUNK_DAIL;
ListBox1.Items.Add('外线自动向外拨号');
end;
procedure TMainForm.Button3Click(Sender: TObject);
begin
SsmFaxStop(TrunkCh[StrToInt(Edit2.Text)].nToFaxCh);
SsmStopTalkWith(StrToInt(Edit2.Text),TrunkCh[StrToInt(Edit2.Text)].nToFaxCh);
TrunkCh[StrToInt(Edit2.Text)].nStep:=TRUNK_WAIT_HANGUP;
MainForm.ListBox1.Items.Add('***警告:用户停止传真发送***');
end;
procedure TMainForm.Button4Click(Sender: TObject);
var
ErrMsg:PChar;
sPoneNumber:PCHAR;
nRet:integer;
begin
nRet:=SsmGetChType(StrToInt(Edit2.Text));
if(nRet=0)or(nRet=4)or(nRet=6)or(nRet=7)or(nRet=8)or(nRet=11)then
begin
TrunkCh[StrToInt(Edit2.Text)].sPhoneNum := Edit3.Text;
end
else begin
Exit;
end;
if(not TrunkCh[StrToInt(Edit2.Text)].bCircleSendingFax)then
begin
TrunkCh[StrToInt(Edit2.Text)].bCircleSendingFax:=True;
TrunkCh[StrToInt(Edit2.Text)].nTimeOut :=1*60*20;
Button4.Caption:='停止循环传真发送';
end
else begin
TrunkCh[StrToInt(Edit2.Text)].bCircleSendingFax:=False;
TrunkCh[StrToInt(Edit2.Text)].nTimeOut :=0;
Button4.Caption:='启动循环传真发送';
end;
end;
procedure TMainForm.Edit2Change(Sender: TObject);
begin
if(TrunkCh[StrToInt(Edit2.Text)].bCircleSendingFax)then
begin
Button4.Caption:='停止循环传真发送';
end
else begin
Button4.Caption:='启动循环传真发送';
end;
if(TrunkCh[StrToInt(Edit2.Text)].sPhoneNum<>'')then
begin
Edit3.Text := TrunkCh[StrToInt(Edit2.Text)].sPhoneNum;
end
else begin
Edit3.Text := '';
end;
end;
procedure TMainForm.Button7Click(Sender: TObject);
begin
if FileExists('PhoneCode.txt') then
begin
ListBox3.Items.LoadFromFile ('PhoneCode.txt');
nTelCnt :=0;
end
else showmessage('文件PhoneCode.txt不存在');
end;
procedure TMainForm.Button5Click(Sender: TObject);
begin
if length(edit5.text)<>0 then
begin
ListBox3.Items.Add(edit5.text);
//nTelCnt :=0;
end;
edit5.Text:='';
end;
procedure TMainForm.Button6Click(Sender: TObject);
begin
ListBox3.Clear;
nTelCnt :=0;
end;
procedure TMainForm.Button8Click(Sender: TObject);
var
nRet:integer;
begin
if ListBox3.Items.Count=0 then
begin
showmessage('号码列表为空,请添加号码!');
exit;
end;
nRet:=SsmGetChType(StrToInt(Edit6.Text));
if(nRet=0)or(nRet=4)or(nRet=6)or(nRet=7)or(nRet=8)or(nRet=11)then
begin
//TrunkCh[StrToInt(Edit6.Text)].sPhoneNum := Edit3.Text;
end
else begin
Exit;
end;
if(not TrunkCh[StrToInt(Edit6.Text)].bMultSendFax)then
begin
TrunkCh[StrToInt(Edit6.Text)].bMultSendFax:=True;
TrunkCh[StrToInt(Edit6.Text)].nTimeOut :=1*60*20;
Button8.Caption:='停止匹发送传真';
end
else begin
TrunkCh[StrToInt(Edit6.Text)].bMultSendFax:=False;
TrunkCh[StrToInt(Edit6.Text)].nTimeOut :=0;
Button8.Caption:='启动匹发送传真';
end;
end;
procedure TMainForm.Edit6Change(Sender: TObject);
begin
if(TrunkCh[StrToInt(Edit6.Text)].bMultSendFax)then
begin
Button8.Caption:='停止匹发送传真';
end
else begin
Button8.Caption:='启动匹发送传真';
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -