pos消费机dephi源代码(2)

此博客介绍了一个应用程序界面,通过联网或U盘来采集设备上的记录数据,并提供了清除记录的功能。包括读取记录总数、累计金额等信息,并将数据展示在列表视图中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

 

 

详细代码如下:(如有疑问可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.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值