⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 最基本的串口控制客户显示器
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, Mask, ExtCtrls;

type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    Label1: TLabel;
    BitBtn2: TBitBtn;
    txt_Num: TMaskEdit;
    rgp_State: TRadioGroup;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

//客显串口函数
function com_init(com:Integer; baud:Dword):Boolean;stdcall;external 'api_com.dll';
function com_rest:Boolean;stdcall;external 'api_com.dll';
function com_send(buf:PChar; len:Integer):Boolean;stdcall;external 'api_com.dll';

{function com_init(com:Integer; baud:Dword):Boolean;stdcall;
function com_rest:Boolean;stdcall;
function com_send(buf:PChar; len:Integer):Boolean;stdcall;
}

var
  Form1: TForm1;
  ComHandle : THandle;
  
implementation

{$R *.dfm}


{function com_init(com:Integer; baud:Dword):Boolean;
var dcb:_Dcb;
begin
    result:=comHandle<>0;     if result then exit;
    comHandle:=fileOpen('Com'+intToStr(Com), fmOpenReadWrite);
    if comHandle=INVALID_HANDLE_VALUE then raise exception.create('打开串口失败!');
    //
    windows.SetupComm(comHandle, 4096, 4096);
    windows.GetCommState(comHandle, dcb);
    //
    dcb.BaudRate:=baud;       //波特率
    dcb.ByteSize:=8;          //
    dcb.StopBits:=1;          //停止位
    dcb.Parity:=0;
    //
    windows.SetCommState(comHandle, dcb);
    //
    result:=true;
end;

function com_rest:Boolean;
begin
    result:=false;
    fileClose(comHandle);
    result:=true;
end;

function com_send(buf:PChar; len:Integer):Boolean;
begin
    result:=false;
    fileWrite(comHandle, buf, len);
    result:=true;
end;
}

procedure TForm1.FormCreate(Sender: TObject);
begin
    txt_Num.text:='123456.78';
    //
    ComHandle:=0;
    com_init(2, 2400);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    com_Rest;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var pdStr:String;
begin
    PDStr:=Chr(2)+Chr(77);{控制顾客显示屏开钱箱指令}
    if com_send(Pchar(PDStr),Length(PDStr)) then
    begin
        Label1.Caption :='已经发送命令';
      end
    else begin
        Label1.Caption :='发送失败';
    end;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
var pdStr:String;
begin
    //ESC  Q  A  d1d2d3…dn  CR送显示数据命令
    PDStr:=Chr(27)+Chr(81)+Chr(65)+ txt_Num.text +Chr(13);    //1234.56
    if com_send(Pchar(PDStr),Length(PDStr)) then begin
        Label1.Caption :='已经发送命令';
      end
    else begin
        Label1.Caption :='发送失败';
    end;
end;

procedure TForm1.BitBtn4Click(Sender: TObject);
var pdStr:String;
begin
    pdStr:=chr(12);
    com_Send(pChar(pdStr), length(pdStr));
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
var s, pdStr:String;        i,n:integer;
begin
    //ESC  s  n设置 "单价"、"总计"、"收款"、"找零"字符显示状态命令
    pdStr:=Chr(27)+Chr(115)+'';     //Chr(27)+Chr(115)+'2';  chr(02) + chr(76);
    n:=rgp_state.itemIndex;
    pdStr:=pdStr+ intToStr(n+1);
    //
    com_Send(pChar(pdStr), length(pdStr) );
    if com_send(Pchar(PDStr),Length(PDStr)) then begin
        Label1.Caption :='已经发送命令';
      end
    else begin
        Label1.Caption :='发送失败';
    end;
end;

procedure TForm1.BitBtn5Click(Sender: TObject);
var s, pdStr:String;        i,n:integer;
    cts:Array[0..3] of smallInt;
begin
    //STX  L  d1  d2  d3  d4控制显示状态灯  d1=48
    pdStr:=chr(02) + chr(76);     //Chr(27)+Chr(115)+'2';  
    //
    for i:=low(cts) to high(cts) do cts[i]:=0;
    n:=rgp_state.itemIndex;
    if n<=high(cts) then        //单个
        cts[n]:=1
    else if n=4 then begin      //全亮
        n:=0;
        for i:=low(cts) to high(cts) do cts[i]:=1
      end
    else begin                  //全暗
        for i:=low(cts) to high(cts) do cts[i]:=0;
    end;
    for i:=low(cts) to high(cts) do pdStr:=pdStr + char(cts[i]);
    //
    if com_send(Pchar(PDStr),Length(PDStr)) then begin
        Label1.Caption :='已经发送命令';
      end
    else begin
        Label1.Caption :='发送失败';
    end;
end;

end.
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -