📄 printcom1.pas
字号:
unit printcom1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, VSSComm32, Registry, Buttons;
type
Tdy = class(TForm)
ComboBox1: TComboBox;
Label1: TLabel;
Init: TButton;
FeedLines: TButton;
Button1: TButton;
Label2: TLabel;
MicroFeed: TButton;
Button2: TButton;
ComboBox2: TComboBox;
Label3: TLabel;
Label4: TLabel;
edit2: TEdit;
Edit1: TEdit;
CutMode: TComboBox;
Label5: TLabel;
Color: TComboBox;
Label6: TLabel;
Button6: TButton;
Button5: TButton;
Button4: TButton;
Label7: TLabel;
Button3: TButton;
BitBtn1: TBitBtn;
VSSComm321: TVSSComm32;
ComboBox3: TComboBox;
procedure PortChange(Sender: TObject);
procedure PrnTypeChange(Sender: TObject);
procedure InitClick(Sender: TObject);
procedure FeedLinesClick(Sender: TObject);
procedure MicroFeedClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure ComboBox3Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
DLLNAME = 'mPrnDll.dll';
var
dy: Tdy;
//打印机端口号:1:COM1/LPT1,2:COM2/LPT2,3:COM3,4:COM4
giPt: integer = 1;
//打印机类型:
// 1:HK110D; 2:HKP600T; 3:ADP300;
// 4:HK588TP; 5:TM300K; 6:TM210D; 7:TM210P
giPrnType: integer = 1;
//动态链接库函数声明
function HK110D_Init(iPt: integer): integer; export; stdcall; far; external DLLNAME;
function HK110D_PrnCnEn(iPt: integer; str: string): integer; export; stdcall; far; external DLLNAME;
function HK110D_FeedLines(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;
function HK110D_MicroFeed(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;
function HKP600T_Init(iPt: integer): integer; export; stdcall; far; external DLLNAME;
function HKP600T_PrnCnEn(iPt: integer; str: string): integer; export; stdcall; far; external DLLNAME;
function HKP600T_FeedLines(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;
function HKP600T_Cut(iPt: integer): integer; export; stdcall; far; external DLLNAME;
function ADP300_Init(iPt: integer): integer; export; stdcall; far; external DLLNAME;
function ADP300_PrnCnEn(iPt, iColor: integer; str: string): integer; export; stdcall; far; external DLLNAME;
function ADP300_FeedLines(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;
function ADP300_MicroFeed(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;
function ADP300_Cut(iPt, iVal: integer): integer; export; stdcall; far; external DLLNAME;
function HK588TP_Init(iPt: integer): integer; export; stdcall; far; external DLLNAME;
function HK588TP_PrnCnEn(iPt: integer; str: string): integer; export; stdcall; far; external DLLNAME;
function HK588TP_FeedLines(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;
function HK588TP_MicroFeed(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;
function TM300K_Init(iPt: integer): integer; export; stdcall; far; external DLLNAME;
function TM300K_PrnCnEn(iPt, iColor: integer; sData: string): integer; export; stdcall; far; external DLLNAME;
function TM300K_FeedLines(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;
function TM300K_MicroFeed(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;
function TM300K_Cut(iPt, iVal: integer): integer; export; stdcall; far; external DLLNAME;
function TM210D_Init(iPt: integer): integer; export; stdcall; far; external DLLNAME;
function TM210D_PrnCnEn(ipt, iColor: integer; str: string): integer; export; stdcall; far; external DLLNAME;
function TM210D_FeedLines(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;
function TM210D_MicroFeed(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;
function TM210P_Init(iPt: integer): integer; export; stdcall; far; external DLLNAME;
function TM210P_PrnCnEn(ipt, iColor: integer; str: string): integer; export; stdcall; far; external DLLNAME;
function TM210P_FeedLines(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;
function TM210P_MicroFeed(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;
implementation
{$R *.DFM}
//打印机端口
procedure Tdy.PortChange(Sender: TObject);
begin
if combobox1.ItemIndex = -1 then
giPt := 1
else if (combobox1.itemindex >= 0) and (combobox1.itemindex <= 1) then
giPt := combobox1.itemindex + 1 //LPT1,LPT2
else
giPt := combobox1.itemindex - 1; //COM1-4
end;
//打印机类型
procedure Tdy.PrnTypeChange(Sender: TObject);
begin
if combobox2.ItemIndex = -1 then
giPrnType := 1
else
giPrnType := combobox2.itemindex + 1;
MicroFeed.Enabled := true;
Button2.Enabled := false;
CutMode.enabled := false;
CutMode.ItemIndex := 1;
Color.enabled := false;
case giPrnType of
1: ; //HK110D
2: //HKP600T
begin
MicroFeed.enabled := false;
Button2.Enabled := true;
end;
3: //ADP300
begin
Button2.Enabled := true;
CutMode.enabled := true;
Color.enabled := true;
end;
4: ; //HK588TP
5: //TM300K
begin
Button2.Enabled := true;
CutMode.enabled := true;
Color.enabled := true;
end;
6, 7: //TM210D
Color.enabled := true;
end;
end;
//初始化
procedure Tdy.InitClick(Sender: TObject);
begin
case giPrnType of
1: HK110D_Init(giPt);
2: HKP600T_Init(giPt);
3: ADP300_Init(giPt);
4: HK588TP_Init(giPt);
5: TM300K_Init(giPt);
6: TM210D_Init(giPt);
7: TM210P_Init(giPt);
end;
end;
//进纸
procedure Tdy.FeedLinesClick(Sender: TObject);
var
iLines: integer;
begin
iLines := strtoint(edit2.text);
case giPrnType of
1: HK110D_FeedLines(giPt, iLines);
2: HKP600T_FeedLines(giPt, iLines);
3: ADP300_FeedLines(giPt, iLines);
4: HK588TP_FeedLines(giPt, iLines);
5: TM300K_FeedLines(giPt, iLines);
6: TM210D_FeedLines(giPt, iLines);
7: TM210P_FeedLines(giPt, iLines);
end;
end;
//微进纸
procedure Tdy.MicroFeedClick(Sender: TObject);
var
iLines: integer;
begin
case giPrnType of
1: HK110D_MicroFeed(giPt, strtoint(edit2.text));
//HKP600T不能微进纸
3: ADP300_MicroFeed(giPt, strtoint(edit2.text));
4: HK588TP_MicroFeed(giPt, strtoint(edit2.text));
5: TM300K_MicroFeed(giPt, strtoint(edit2.text));
6: TM210D_MicroFeed(giPt, strtoint(edit2.text));
7: TM210P_MicroFeed(giPt, strtoint(edit2.text));
end;
end;
//打印
procedure Tdy.Button1Click(Sender: TObject);
var
iColor: integer;
begin
if Color.ItemIndex = -1 then
iColor := 1
else
iColor := Color.itemindex + 1;
case giPrnType of
1: HK110D_PrnCnEn(giPt, edit1.Text);
2: HKP600T_PrnCnEn(giPt, edit1.Text);
3: ADP300_PrnCnEn(giPt, iColor, edit1.Text);
4: HK588TP_PrnCnEn(giPt, edit1.Text);
5: TM300K_PrnCnEn(giPt, iColor, edit1.Text);
6: TM210D_PrnCnEn(giPt, iColor, edit1.Text);
7: TM210P_PrnCnEn(giPt, iColor, edit1.Text);
end;
end;
//切纸
procedure Tdy.Button2Click(Sender: TObject);
var
iCutMode: integer; //切纸方式
begin
if CutMode.ItemIndex = -1 then
iCutMode := 1
else
iCutMode := CutMode.ItemIndex + 1;
case giPrnType of
//HK110D无切纸刀
2: HKP600T_Cut(giPt);
3: ADP300_Cut(giPt, iCutMode);
//HK588TP无切纸刀
5: TM300K_Cut(giPt, iCutMode);
//TM210D/210P 无切纸刀
end;
end;
procedure Tdy.FormCreate(Sender: TObject);
var Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey('\Software\pos', False) then
begin
ComboBox1.ItemIndex := strtoint(Reg.ReadString('pntdk'));
ComboBox1.OnChange(sender);
ComboBox2.ItemIndex := strtoint(Reg.ReadString('pntxh'));
ComboBox2.OnChange(sender);
ComboBox3.ItemIndex := strtoint(Reg.ReadString('gxdk'));
ComboBox3.OnChange(sender);
end
else
begin
ComboBox1.ItemIndex := 0;
ComboBox1.OnChange(sender);
ComboBox2.ItemIndex := 4;
ComboBox2.OnChange(sender);
ComboBox3.ItemIndex := 0;
ComboBox3.OnChange(sender);
Reg.CreateKey('\Software\Microsoft\pos'); // 创建我们的主键
Reg.OpenKey('\Software\pos', True); // 进入我们自己的主键中
Reg.WriteString('pntdk', inttostr(ComboBox1.ItemIndex));
Reg.WriteString('pntxh', inttostr(ComboBox2.ItemIndex));
Reg.WriteString('qxkzlx', inttostr(ComboBox1.ItemIndex));
Reg.WriteString('gxdk', inttostr(ComboBox3.ItemIndex));
Reg.WriteString('qxzblx', '1');
Reg.WriteString('qxdk', '0');
end;
finally
Reg.Free; // 用 Try..Finally 结构确保 REG 变量能够释放。
end;
Color.ItemIndex := 0;
Init.Click;
end;
procedure Tdy.Button6Click(Sender: TObject);
begin
VSSComm321.WriteCommData(#12, 1);
end;
procedure Tdy.FormClose(Sender: TObject; var Action: TCloseAction);
begin
VSSComm321.StopComm;
end;
procedure Tdy.Button4Click(Sender: TObject);
begin
VSSComm321.WriteCommData(#27#64, 2);
end;
procedure Tdy.Button5Click(Sender: TObject);
begin
VSSComm321.WriteCommData(Pchar(#27#81#65 + Edit1.text + #13), length(#27#81#65 + Edit1.text + #13));
end;
procedure Tdy.Button3Click(Sender: TObject);
var Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey('\Software\pos', False) then
begin
Reg.WriteString('pntdk', inttostr(ComboBox1.ItemIndex));
Reg.WriteString('pntxh', inttostr(ComboBox2.ItemIndex));
Reg.WriteString('gxdk', inttostr(ComboBox3.ItemIndex));
end;
finally
Reg.Free; // 用 Try..Finally 结构确保 REG 变量能够释放。
end;
end;
procedure Tdy.ComboBox3Change(Sender: TObject);
begin
if ComboBox3.ItemIndex = 0 then
VSSComm321.CommPort := com1
else
VSSComm321.CommPort := com2;
VSSComm321.StopComm;
VSSComm321.StartComm;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -