详细代码如下:(如有疑问可13826029618进行了解,也可直接到--www.icmcu.com-下载源代码压缩包)
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, StrUtils, FileCtrl;
type
TForm2 = class(TForm)
Button1: TButton;
Label1: TLabel;
Button2: TButton;
Button3: TButton;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
ProgressBar1: TProgressBar;
Label3: TLabel;
Button4: TButton;
Label4: TLabel;
Edit3: TEdit;
Label5: TLabel;
DriveComboBox1: TDriveComboBox;
Button6: TButton;
Button7: TButton;
ListView1: TListView;
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
private
{ Private declarations }
iscontinue1:Boolean;
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm2.Button3Click(Sender: TObject);
begin
ListView1.Items.Clear;
end;
procedure TForm2.Button1Click(Sender: TObject); //联网采集记录
var
long_i:Integer;
plist:TListItem;
begin
If Form1.POS011.DevComPortOpen = 1 Then
begin
Form1.POS011.DevNumber := StrToInt(Form1.Edit18.Text);
Form1.POS011.DevRecTotalRead();
If Form1.POS011.OperatingResults = 0 Then
begin
Edit3.Text := IntToStr(Form1.POS011.DevRecAmountTotal);//累计金额数
Edit1.Text := IntToStr(Form1.POS011.DevRecTotal);//总记录数
Edit2.Text := IntToStr(Form1.POS011.DevRecFrames);//记录总帧数
//以下代码开始采集记录
If (Form1.POS011.DevRecFrames > 0) Then //有记录需要采集
begin
iscontinue1 := True;
ProgressBar1.Max := Form1.POS011.DevRecFrames;
ProgressBar1.Update;
For long_i := 0 To (Form1.POS011.DevRecFrames - 1) do
begin
Form1.POS011.DevRecFramePoint := long_i; //设定当前需要采集的帧指针
Form1.POS011.DevRecFrameRead(); //执行采集通讯
If Form1.POS011.OperatingResults <> 0 Then
begin
//表示通讯错误,采集中断
ShowMessage('通讯错误,退出,错误代码为' + IntToStr(Form1.POS011.OperatingResults));
Break;
End;
If not iscontinue1 Then
begin
break;
End;
//以下可以做进度条算法
ProgressBar1.Position := long_i + 1;
Label3.Caption := '已采集' + IntToStr(long_i + 1);
Label3.Update;
ProgressBar1.Update;
Sleep(1);
end;
If (ProgressBar1.Position = Form1.POS011.DevRecFrames) Then
begin
If Form1.POS011.OperatingResults = 0 Then
begin
//采集全部成功
If Form1.POS011.DevRecTotal > 0 Then
begin
//下面为提取数据
For long_i := 0 To Form1.POS011.DevRecTotal - 1 do
begin
Form1.POS011.DevRecPoint := long_i ;//设定当前记录指针,用于提取记录数据,
//执行完本语句后,以下数据才有效
plist := ListView1.Items.Add;
plist.Caption := Form1.POS011.DevRecCustomNumberStr;//卡号
plist.SubItems.Add(IntToStr(Form1.POS011.DevRecRechargeTimes));//充值次数
plist.SubItems.Add(IntToStr(Form1.POS011.DevRecCardMoney));//余额
plist.SubItems.Add(IntToStr(Form1.POS011.DevRecConsumption));//当次消费额
plist.SubItems.Add(IntToStr(Form1.POS011.DevRecTimeYear) + '-' + IntToStr(Form1.POS011.DevRecTimeMonth) + '-' + IntToStr(Form1.POS011.DevRecTimeDay) + ' ' + IntToStr(Form1.POS011.DevRecTimeHour) + ':' + IntToStr(Form1.POS011.DevRecTimeMinute) + ':' + IntToStr(Form1.POS011.DevRecTimeSecond));
plist.SubItems.Add(IntToStr(Form1.POS011.DevRecMealType));
ListView1.Update;
End;
End;
End;
End;
End;
end
Else
begin
ShowMessage('设备通讯不通!');
End;
end
Else
begin
ShowMessage('端口未打开!');
End;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
iscontinue1 := False;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
If Form1.POS011.DevComPortOpen = 1 Then
begin
Form1.POS011.DevNumber := StrToInt(Form1.Edit18.Text);
Form1.POS011.DevRecDelete();
If Form1.POS011.OperatingResults = 0 Then
begin
ShowMessage('删除记录成功!');
end
Else If Form1.POS011.OperatingResults = 112 Then
begin
ShowMessage('记录未完全上传,无法删除!');
end
Else If Form1.POS011.OperatingResults = 111 Then
begin
ShowMessage('删除失败,请先按流程采集数据才能删除!');
end
Else
begin
ShowMessage(IntToStr(Form1.POS011.OperatingResults));
End;
end
Else
begin
ShowMessage('端口未打开!');
End;
end;
procedure TForm2.Button4Click(Sender: TObject);
begin
iscontinue1 := False;
end;
procedure TForm2.Button7Click(Sender: TObject);//从U盘提取记录
var
long_i:Integer;
plist:TListItem;
begin
Form1.POS011.DevDriverStr := LeftStr(DriveComboBox1.Text,2); //U盘
Form1.POS011.DevNumber := StrToInt (Form1.Edit18.Text);//机号
Form1.POS011.DevRecReadFromDisk();
If Form1.POS011.OperatingResults = 0 Then
begin
Edit3.Text := IntToStr(Form1.POS011.DevRecAmountTotal);//累计金额数
Edit1.Text := IntToStr(Form1.POS011.DevRecTotal );//总记录数
For long_i := 0 To Form1.POS011.DevRecTotal - 1 do
begin
Form1.POS011.DevRecPoint := long_i;//设定当前记录指针,用于提取记录数据,
//执行完本语句后,以下数据才有效
plist := ListView1.Items.Add;
plist.Caption := Form1.POS011.DevRecCustomNumberStr;//卡号
plist.SubItems.Add(IntToStr(Form1.POS011.DevRecRechargeTimes));//充值次数
plist.SubItems.Add(IntToStr(Form1.POS011.DevRecCardMoney));//余额
plist.SubItems.Add(IntToStr(Form1.POS011.DevRecConsumption));//当次消费额
plist.SubItems.Add(IntToStr(Form1.POS011.DevRecTimeYear) + '-' + IntToStr(Form1.POS011.DevRecTimeMonth) + '-' + IntToStr(Form1.POS011.DevRecTimeDay) + ' ' + IntToStr(Form1.POS011.DevRecTimeHour) + ':' + IntToStr(Form1.POS011.DevRecTimeMinute) + ':' + IntToStr(Form1.POS011.DevRecTimeSecond));
plist.SubItems.Add(IntToStr(Form1.POS011.DevRecMealType));
ListView1.Update;
end;
ShowMessage('从U盘提取记录成功!');
end
Else If Form1.POS011.OperatingResults = 40 Then
begin
ShowMessage('该机号对应的记录文件不存在" ');
end
Else If Form1.POS011.OperatingResults = 45 Then
begin
ShowMessage('文件不是该机号设备生成的文件!" ');
end
Else
begin
ShowMessage(IntToStr(Form1.POS011.OperatingResults));
End
end;
procedure TForm2.Button6Click(Sender: TObject);
begin
Form1.POS011.DevDriverStr := LeftStr(DriveComboBox1.Text,2); //U盘
Form1.POS011.DevNumber := StrToInt (Form1.Edit18.Text);//机号
Form1.POS011.DevRecClearFileToDisk ();
If Form1.POS011.OperatingResults = 0 Then
begin
ShowMessage('写记录删除许可文件到U盘成功!');
end
Else If Form1.POS011.OperatingResults = 46 Then
begin
ShowMessage('尚未提取文件记录!" ');
end
Else
begin
ShowMessage(IntToStr(Form1.POS011.OperatingResults));
End;
end;
end.