📄 gsmwizunit.~pas
字号:
BatchTimer.Enabled := false;
NotifyLabel.Caption := '开始查询所有设备的剩余话费,请稍候...';
StatusBar1.Panels.Items[0].Text := '开始查询所有设备的剩余话费,请稍候...';
StopAction.Enabled := true;
FeeAction.Enabled := false;
ForceFeeAction.Enabled := false;
FEEINIFile := ExtractFilePath(Application.ExeName)+'Fee.ini';
INIFile := TIniFile.Create(FEEINIFile);
SendAdress := INIFile.ReadString('Fee','SendAdress','1861');
SENDMSG := INIFile.ReadString('Fee','SendMsg','HF');
ReceiveAdress := INIFile.ReadString('Fee','ReceiveAdress','01861');
FeeTemplate := INIFile.ReadString('Fee','FeeTemplate','');
INIFile.Free;
for i:=0 to FServer.GSMSets.Count-1 do
begin
FServer.GSMSets.GSMSet[i].DoFee(SendAdress,SENDMSG,ReceiveAdress,FeeTemplate);
if GlobSendMode then
FServer.GSMSets.GSMSet[i].ReActive;
end;
NotAllOK := false;
for i:=0 to FServer.GSMSets.Count-1 do
if FServer.GSMSets.GSMSet[i].Fee<0 then
begin
NotAllOK := true;
break;
end;
if not NotAllOK then
begin
SendAction.Enabled := true;
FeeAction.Enabled := false;
NotifyLabel.Caption := '所有设备剩余话费检查完毕,可以进行下一步操作.';
StatusBar1.Panels.Items[0].Text := '剩余话费检查完毕';
end
else
begin
FeeAction.Enabled := true;
NotifyLabel.Caption := '剩余话费完成,但部分设备话费结果不正确,需要重新查询';
StatusBar1.Panels.Items[0].Text := '剩余话费不正常';
end;
StopAction.Enabled := false;
FeeAction.Enabled := true;
ForceFeeAction.Enabled := true;
FeeTimer.Enabled := true;
end;
procedure TMainForm.ForceSendActionExecute(Sender: TObject);
begin
GlobNeedCheckFee := false;
SendAction.Enabled := true;
SendActionExecute(sender);
end;
procedure TMainForm.BackUPLog;
var
SourceFile: String;
TargetFile: String;
begin
SourceFile := LogINIFile;
TargetFile := ExtractFilePath(Application.ExeName)+'Log\Log'+INITaskName+FormatDateTime('YYYYMMDDHHMMSS',now)+'.ini';
try
CopyFile(Pchar(LogINIFile),PChar(TargetFile),false);
except
end;
end;
procedure TMainForm.WriteFeeLog(FeeLog: String);
begin
if FeeLogListBox.Items.Count>100 then
FeeLogListBox.Items.Clear;
FeeLogListBox.Items.Add(DateTimeToStr(now)+' : '+FeeLog);
end;
procedure TMainForm.WriteSystemLog;
var
LogSL: TStringList;
i: Integer;
targetFile: String;
begin
LogSL := TStringList.Create;
LogSL.Add('===============================================');
LogSL.Add(DateTimeToStr(now));
LogSL.Add('===============================================');
LogSL.Add('开始时间:'+DateTimeToStr(GlobStartTime));
LogSL.Add('已发送:'+IntToStr(INISendedCount));
LogSL.Add('未发送:'+IntToStr(MobileList.Count-INIReadCount));
LogSL.Add('失败:'+IntToStr(IniFailedCount));
for i:=0 to FServer.GSMSets.Count-1 do
begin
try
LogSL.Add(Format('GSM%.2d 状态: %s,话费:%m',[FServer.GSMSets.GSMSet[i].Port,GComListView.Items.Item[i].SubItems.Strings[0],FServer.GSMSets.GSMSet[i].Fee]))
except
end;
end;
TargetFile := ExtractFilePath(Application.ExeName)+'Log\Sys'+INITaskName+FormatDateTime('YYYYMMDDHHMMSS',now)+'.ini';
try
LogSL.SaveToFile(targetFile);
except
end;
LogSL.Free;
end;
procedure TMainForm.SheduleTimerTimer(Sender: TObject);
var
i: Integer;
begin
if GlobAutoStop then
// if (timeOf(now)>=GlobAutoStopTime) and GlobSendMode then
// begin
// WriteLog('自动停止');
// StopActionExecute(sender);
// end
// else
if (TimeOf(Now)>GlobStartTime) and not GlobSendMode then
begin
WriteLog('自动运行');
SendActionExecute(sender);
end;
// if GlobSendMode then
for i:=0 to FServer.GSMSets.Count-1 do
if not FServer.GSMSets.GSMSet[i].InThread then
FServer.GSMSets.GSMSet[i].ReActive;
end;
procedure TMainForm.PrepaireSending;
var
INIFile: TIniFile;
begin
GlobLogCount := 0;
GlobSendMode := false;
GlobAutoCheckFeeMode := false;
NotifyLabel.Caption := '';
FeeNotifyLabel.Caption := '';
FTasks.Task[0].WaitSendItems.Clear;
INIFile := TIniFile.Create(WizINIFile);
if not INIisCallPhoneTask then
begin
INIMobileListName := ExtractFilePath(Application.ExeName)+INIFile.ReadString('COMMON','MobileListName','');
if FileExists(INIMobileListName) then
begin
MobileList.LoadFromFile(INIMobileListName);
TaskInfoEditor.Values['手机列表文件'] := INIMobileListName;
end
else
TaskInfoEditor.Values['手机列表文件'] := INIMobileListName + '《----文件不存在!!!!';
INISMSMessage := INIFile.ReadString('COMMON','SMSMessage['+DateToStr(now)+']','');
TaskInfoEditor.Values['短信内容'] := INISMSMessage;
end;
INIFile.Free;
INIFile := TIniFile.Create(LogINIFile);
INISendedCount := INIFile.ReadInteger('LOG','SendedCount',0);
IniFailedCount := INIFile.ReadInteger('LOG','FailedCount',0);
INIReadCount := INISendedCount + IniFailedCount - ((INISendedCount + IniFailedCount) div ININotifyCount);
GlobStartCount := INIReadCount;
INIFile.Free;
TaskInfoEditor.Values['已发送'] := IntToStr(INISendedCount);
if not INIisCallPhoneTask then
TaskInfoEditor.Values['未发送'] := IntToStr(MobileList.Count-INIReadCount)
else if INIRepeatCount=-1 then
TaskInfoEditor.Values['未发送'] := '无限次'
else
TaskInfoEditor.Values['未发送'] := IntToStr(INIRepeatCount-INIReadCount);
end;
procedure TMainForm.AddMobileActionExecute(Sender: TObject);
var
LSL: TStringList;
i: Integer;
Str: String;
StrCar: Cardinal;
begin
if OpenDialog1.Execute then
begin
try
if MobileList.Count<>0 then
begin
LSL := TStringList.Create;
LSL.LoadFromFile(OpenDialog1.FileName);
for i:=0 to LSL.Count-1 do
begin
Application.ProcessMessages;
str := Trim(LSL.Strings[i]);
if Length(Str)<11 then
Continue;
if str[1]<>'1' then
Continue;
if Length(str)>11 then
str := copy(str,1,11);
try
strCar := StrToInt(Copy(str,3,9));
except
Continue;
end;
Application.ProcessMessages;
if MobileList.IndexOf(Str)=-1 then
MobileList.Add(Str);
Application.ProcessMessages;
end;
LSL.free;
MobileList.SaveToFile(INIMobileListName);
ShowMessage('追加成功');
end;
except
end;
end;
end;
procedure TMainForm.FormShow(Sender: TObject);
begin
SheduleTimerTimer(sender);
SheduleTimer.Enabled := true;
end;
procedure TMainForm.FeeTimerTimer(Sender: TObject);
var
i: Integer;
INIFile: TINIfile;
SendAdress: String;
SENDMSG: String;
ReceiveAdress: String;
FeeTemplate: String;
NotStop: Boolean;
NotAllOK: Boolean;
TimeOut: Integer;
Tick: Cardinal;
setIndex: Integer;
begin
if not GlobAutoCheckFee then
exit;
if not ((TimeOf(Now)>GlobAutoCheckFeeStartTime) and (TimeOf(Now)<GlobAutoCheckFeeStopTime)) then
exit;
if SetList.Count = 0 then
for i:=0 to FServer.GSMSets.Count-1 do
SetList.Add(IntToStr(i));
if SetList.Count=1 then
FeeTimer.Interval := GlobAutoCheckFeeTime
else
FeeTimer.Interval := 30000;
Randomize;
setIndex := StrToInt(SetList.Strings[Random(SetList.Count)]);
SetList.Delete(SetList.IndexOf(IntToStr(setIndex)));
FeeNotifyLabel.Caption := format('开始查询设备[GSM%.2d]的剩余话费,请稍候...',[FServer.GSMSets.GSMSet[setIndex].Port]);
StatusBar1.Panels.Items[0].Text := '开始查询设备的剩余话费,请稍候...';
INIFile := TIniFile.Create(FEEINIFile);
SendAdress := INIFile.ReadString('Fee','SendAdress','1861');
SENDMSG := INIFile.ReadString('Fee','SendMsg','HF');
ReceiveAdress := INIFile.ReadString('Fee','ReceiveAdress','01861');
FeeTemplate := INIFile.ReadString('Fee','FeeTemplate','');
INIFile.Free;
Tick := GetTickCount;
TimeOut := 40000;
FServer.GSMSets.GSMSet[setIndex].DoFee(SendAdress,SENDMSG,ReceiveAdress,FeeTemplate);
repeat
SimpleWait(200);
until (not FServer.GSMSets.GSMSet[setIndex].InThread) or (Application.Terminated) or (GetTickCount-Tick>TimeOut);
if GlobSendMode then
FServer.GSMSets.GSMSet[setIndex].ReActive;
if SetList.Count=0 then
begin
FeeNotifyLabel.Caption := format('剩余话费查询['+TimeToStr(Now)+']结束,下一次在%d分钟后进行',[FeeTimer.Interval div 60000]);
StatusBar1.Panels.Items[0].Text := '剩余话费本轮查询结束';
WriteSystemLog;
end;
end;
procedure TMainForm.N1Click(Sender: TObject);
var
i: integer;
INIFile: TINIfile;
SendAdress: String;
SENDMSG: String;
ReceiveAdress: String;
FeeTemplate: String;
Tick: Cardinal;
TimeOut: Integer;
begin
INIFile := TIniFile.Create(FEEINIFile);
SendAdress := INIFile.ReadString('Fee','SendAdress','1861');
SENDMSG := INIFile.ReadString('Fee','SendMsg','HF');
ReceiveAdress := INIFile.ReadString('Fee','ReceiveAdress','01861');
FeeTemplate := INIFile.ReadString('Fee','FeeTemplate','');
INIFile.Free;
for i:= 0 to FServer.GSMSets.Count-1 do
begin
if GComListView.Items[i].Selected then
begin
Tick := GetTickCount;
TimeOut := 40000;
FServer.GSMSets.GSMSet[i].DoFee(SendAdress,SENDMSG,ReceiveAdress,FeeTemplate);
repeat
SimpleWait(200);
until (not FServer.GSMSets.GSMSet[i].InThread) or (Application.Terminated) or (GetTickCount-Tick>TimeOut);
if GlobSendMode then
FServer.GSMSets.GSMSet[i].ReActive;
end;
end;
end;
procedure TMainForm.S1Click(Sender: TObject);
var
i: Integer;
begin
for i:= 0 to FServer.GSMSets.Count-1 do
if GComListView.Items[i].Selected then
begin
FServer.GSMSets.GSMSet[i].KeepIT := false;
FServer.GSMSets.GSMSet[i].ReActive;
end;
end;
procedure TMainForm.N3Click(Sender: TObject);
var
i: Integer;
begin
for i:= 0 to FServer.GSMSets.Count-1 do
if GComListView.Items[i].Selected then
FServer.GSMSets.GSMSet[i].KeepIT := true;
end;
procedure TMainForm.LowSpeedActionExecute(Sender: TObject);
begin
GlobDialLowSpeed := not GlobDialLowSpeed;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -