📄 frmmain.~pas
字号:
begin
sInfo:=sInfo+mData[iCount];
end;
//从转接服务器找到可用的服务器。
if gcf_GetStrPosStr(sInfo,1)='返回' then
begin
idpclntWord.Active:=False;
gsRedirectHost:=gcf_GetStrPosStr(sInfo,3);
gsRedirectPort:=gcf_GetStrPosStr(sInfo,2);
idpclntWord.Port:=StrToIntDef(gcf_GetStrPosStr(sInfo,2),0);
idpclntWord.Host:=gcf_GetStrPosStr(sInfo,3);
idpclntWord.Active:=True;
//发送电话号码
idpclntWord.Send(DEF_BSEPCHAR + edtPhone.Text +
DEF_ESEPCHAR + DEF_LINKCHAR + DEF_BSEPCHAR +
gcf_GetGUIDString +
DEF_ESEPCHAR + DEF_LINKCHAR + DEF_BSEPCHAR +
gComputerName + DEF_ESEPCHAR + DEF_LINKCHAR + DEF_BSEPCHAR +
'HOLDON' + DEF_ESEPCHAR);
end;
//采样率
gsRateType:=gcf_GetStrPosStr(sInfo,1);
//流方式
gsStreamType:=gcf_GetStrPosStr(sInfo,2);
//传输方式
gsTransType:=gcf_GetStrPosStr(sInfo,3);
//当前使用帐号
gsCurrAccount:=gcf_GetStrPosStr(sInfo,4);
//流模式
gsStreammodel:=gcf_GetStrPosStr(sInfo,5);
if trim(gsCurrAccount)='服务1-READY' then
begin
WaveInStream1.close;
WaveOutStream1.close;
WaveIn1.close();
WaveOut1.close();
statMain.Panels[3].Text:=gsCurrAccount;
//传输方式
if (UpperCase(Trim(gsTransType)) ='UDP') then begin
//
WaveOutStream1.proto := unapt_UDP;
WaveInStream1.proto := unapt_UDP;
end
else begin
//
WaveOutStream1.proto := unapt_TCP;
WaveInStream1.proto := unapt_TCP;
end;
if (UpperCase(Trim(gsStreamModel))='0') then begin
gsStreamModel:='unasm_VC';
WaveOutStream1.streamingMode:=unasm_VC;
WaveInStream1.streamingMode:=unasm_VC;
end else begin
gsStreamModel:='unasm_RAW';
WaveOutStream1.streamingMode:=unasm_RAW;
WaveInStream1.streamingMode:=unasm_RAW;
end;
//接受来自远端的流并传输给skype的录音设备
WaveInStream1.port := gs_LocalPhonePort;
//接收来自Skype播放接口作为录音口 发送流到端口
WaveOutStream1.port:= gs_RemotePhonePort;
//远程IP地址
WaveOutStream1.host:=gs_RemoteIP;
//回放B---------------------------------------------------------------------
//设备号
WaveOut1.deviceId := index2deviceId(cbbPB1);
//采样率
WaveOut1.pcm_samplesPerSec :=StrToIntDef(gsRateType,11025);
WaveCodeP1.formatTag := StrToIntDef(gsStreamType,853);
WaveCodeP1.pcm_samplesPerSec:=StrToIntDef(gsRateType,11025);
WaveCodeP1.pcm_numChannels:=1;
WaveInStream1.open;
//回放E----------------------------------------------------------------------
sleep(500);
//录入B--------------------------------------------------------------------
WaveIn1.close();
//设备号
WaveIn1.deviceId :=index2deviceId(cbbRC1);
//采样率
WaveIn1.pcm_samplesPerSec :=StrToIntDef(gsRateType,11025);
WaveIn1.pcm_numChannels:=1;
//流模式
WaveCodeR1.formatTag :=StrToIntDef(gsStreamType,853);
WaveIn1.Open;
//保存流模式
//录入E---------------------------------------------------------------------
tmrCount.Enabled:=False;
tmrCount.Interval:=1000;
tmrCount.Enabled:=True;
iSec:=0;
iMin:=0;
iHor:=0;
{
lstServer.Items.Clear;
lstServer.Items.Add('采样率:' + gsRateType);
lstServer.Items.Add('声音模式:' + gsStreamType);
lstServer.Items.Add('传输模式:' + gsTransType);
lstServer.Items.Add('流模式:' + gsStreamModel);
lstServer.Items.Add('流入字节: [0] Bytes');
lstServer.Items.Add('流出字节: [0] Bytes');
lstLocal.Items.Clear;
lstLocal.Items.Add('流入:');
lstLocal.Items.Add('流出:'); }
end else if trim(gsCurrAccount)='服务1-BUSY' then
begin
statMain.Panels[3].Text:='服务1-占线';
end;
end;
procedure TfrmSmartPhone.btnDisConClick(Sender: TObject);
begin
idpclntWord.Send(DEF_BSEPCHAR + edtPhone.Text + DEF_ESEPCHAR + DEF_LINKCHAR + DEF_BSEPCHAR + 'FINISH' + DEF_ESEPCHAR);
idpclntWord.Active:=False;
WaveIn1.close();
WaveInStream1.Close();
WaveOut1.close();
WaveOutStream1.Close();
tmrCount.Enabled:=False;
statMain.Panels.Items[3].Text:='电话已挂断';
btnDial.Enabled:=True;
btnDisCon.Enabled:=False;
end;
procedure TfrmSmartPhone.btnNum1Click(Sender: TObject);
begin
edtPhone.Text:=edtPhone.Text+'1';
end;
procedure TfrmSmartPhone.btnNum2Click(Sender: TObject);
begin
edtPhone.Text:=edtPhone.Text+'2';
end;
procedure TfrmSmartPhone.btnNum3Click(Sender: TObject);
begin
edtPhone.Text:=edtPhone.Text+'3';
end;
procedure TfrmSmartPhone.btnNum4Click(Sender: TObject);
begin
edtPhone.Text:=edtPhone.Text+'4';
end;
procedure TfrmSmartPhone.btnNum5Click(Sender: TObject);
begin
edtPhone.Text:=edtPhone.Text+'5';
end;
procedure TfrmSmartPhone.btnNum6Click(Sender: TObject);
begin
edtPhone.Text:=edtPhone.Text+'6';
end;
procedure TfrmSmartPhone.btnNum7Click(Sender: TObject);
begin
edtPhone.Text:=edtPhone.Text+'7';
end;
procedure TfrmSmartPhone.btnNum8Click(Sender: TObject);
begin
edtPhone.Text:=edtPhone.Text+'8';
end;
procedure TfrmSmartPhone.btnNum9Click(Sender: TObject);
begin
edtPhone.Text:=edtPhone.Text+'9';
end;
procedure TfrmSmartPhone.btnNum0Click(Sender: TObject);
begin
edtPhone.Text:=edtPhone.Text+'0';
end;
procedure TfrmSmartPhone.btnNumXClick(Sender: TObject);
begin
edtPhone.Text:=edtPhone.Text+'*';
end;
procedure TfrmSmartPhone.btnNumJClick(Sender: TObject);
begin
edtPhone.Text:=edtPhone.Text+'#';
end;
procedure TfrmSmartPhone.btnRedailClick(Sender: TObject);
begin
edtPhone.Text:=Copy(edtPhone.Text,1,Length(edtPhone.Text)-1);
end;
procedure TfrmSmartPhone.FormShow(Sender: TObject);
begin
gcp_GetComputerInfo;
statMain.Panels[1].Text:=gComputerAddr;
end;
procedure TfrmSmartPhone.tiMainDblClick(Sender: TObject);
begin
Show;
end;
procedure TfrmSmartPhone.N1Click(Sender: TObject);
begin
Show;
end;
procedure TfrmSmartPhone.N2Click(Sender: TObject);
begin
Hide;
end;
procedure TfrmSmartPhone.N4Click(Sender: TObject);
begin
Hide;
//本地文字监听端口
gcf_SetINIValue('NETWORK','LOCALWORDPORT',edtLocalPort.Text);
//远端文字监听端口
gcf_SetINIValue('NETWORK','REMOTEWORDPORT',edtRemotePort.Text);
//远端主机IP
gcf_SetINIValue('NETWORK','REMOTEHOST',edtServerIP.Text);
//默认音量 最大
gcf_SetINIValue('SYSTEM','DEFAULTSPEAKVOL',IntToStr(trckbrSpeak.Position));
//默认麦克风音量 最大
gcf_SetINIValue('SYSTEM','DEFAULTMICVOL',IntToStr(trckbrMic.Position));
//默认麦克风音量 最大
gcf_SetINIValue('SYSTEM','LASTPHONENUM',edtPhone.Text);
//回放1
gcf_SetINIValue('SERVERSOUNDCARD','PB',IntToStr(cbbPB1.ItemIndex));
//录音1
gcf_SetINIValue('SERVERSOUNDCARD','RC',IntToStr(cbbRC1.ItemIndex));
tiMain.Active:=False;
Application.Terminate;
end;
procedure TfrmSmartPhone.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
tiMain.BalloonHint('Smart Phone','程序仍然在运行...',btInfo,30);
tiMain.Active:=True;
Action:=caNone;
Hide;
end;
procedure TfrmSmartPhone.idpsrvrPhoneUDPRead(Sender: TObject;
AData: TStream; ABinding: TIdSocketHandle);
var
mData:array[1..CST_MAXBUFF] of char;
pData:Pchar;
I,J:Integer;
sInfo:String;
begin
if waveOutGetNumDevs>0 then
begin
//将流读到mData中。
AData.ReadBuffer(mData,Adata.Size);
pData:=pChar(dword(@mData));
// acmwvtMain.PlayBack(pData,adata.size);
end;
end;
procedure TfrmSmartPhone.tmrCountTimer(Sender: TObject);
begin
Inc(iSec);
if iSec>60 then
begin
Inc(iMin);
if iMin>60 then
begin
Inc(iHor);
if iHor>24 then
begin
iHor:=0;
end;
iMin:=0;
end;
iSec:=0;
end;
lblTime.Caption:=FormatFloat('00',iHor) + ':' + FormatFloat('00',iMin) + ':' + FormatFloat('00',iSec);
if gsCurrAccount='服务1-FINISH' then
begin
tmrCount.Enabled:=False;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -