📄 unit1.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 + -