📄 icku.pas
字号:
unit ickU;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, MSCommLib_TLB, StdCtrls, ExtCtrls;
type
TickForm = class(TForm)
Label1: TLabel;
GroupBox1: TGroupBox;
ComboBox1: TComboBox;
MSComm1: TMSComm;
Memo1: TMemo;
GroupBox2: TGroupBox;
RadioButton5: TRadioButton;
RadioButton6: TRadioButton;
GroupBox3: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure MSComm1Comm(Sender: TObject);
procedure RadioButton5Click(Sender: TObject);
procedure RadioButton6Click(Sender: TObject);
procedure Memo1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
ickForm : TickForm;
ovtmp : olevariant;
vtmp : variant;
btmp : byte;
inbuf : string;
dispy : string;
needenter : smallint;
readtype : smallint;
status : smallint;
redata : array[1..15] of smallint;
function k4chg(var w :smallint;var c:smallint;var d:smallint):smallint;stdcall ;external 'generaldll.dll';
implementation
{$R *.dfm}
procedure TickForm.Button2Click(Sender: TObject);
begin
close;
end;
procedure TickForm.Button1Click(Sender: TObject);
begin
memo1.Clear;
end;
procedure TickForm.FormCreate(Sender: TObject);
begin
if mscomm1.PortOpen=false then
begin
mscomm1.PortOpen:=true;
end;
needenter:=0;
readtype:=1;
end;
procedure TickForm.RadioButton1Click(Sender: TObject);
begin
if mscomm1.PortOpen=true then
begin
mscomm1.PortOpen:=false;
end;
mscomm1.CommPort:=1;
mscomm1.PortOpen:=true;
end;
procedure TickForm.RadioButton2Click(Sender: TObject);
begin
if mscomm1.PortOpen=true then
begin
mscomm1.PortOpen:=false;
end;
mscomm1.CommPort:=2;
mscomm1.PortOpen:=true;
end;
procedure TickForm.MSComm1Comm(Sender: TObject);
var i: integer;
begin
ovtmp:=mscomm1.Input ; //接收数据
vtmp:=ovtmp;
inbuf:=vtmp;
for i:=1 to 13 do redata[i]:=integer(inbuf[i]); //将数据转换为ASSCII数组
readtype:=ComboBox1.ItemIndex+1;
status:=k4chg(readtype, needenter ,redata[1]); //调用动态连接库进行数据校验和数据格式转换
dispy:='';
for i:=1 to 13 do dispy:=dispy+chr(redata[i]);
if status=0 then // 判断校验结果
begin
Memo1.Text:='Error';
end
else
begin
case readtype of //根据读卡方式的选择进行不同格式的输出
1:begin
if needenter=0 then // 不需要回车
for i:=4 to 13 do Memo1.Text:=Memo1.Text+dispy[i]
else // 需要回车
for i:=4 to 15 do Memo1.Text:=Memo1.Text+dispy[i];
end;
2:begin
if needenter=0 then
for i:=4 to 13 do Memo1.Text:=Memo1.Text+dispy[i]
else
for i:=4 to 15 do Memo1.Text:=Memo1.Text+dispy[i];
end;
3:begin
if needenter=0 then
for i:=6 to 13 do Memo1.Text:=Memo1.Text+dispy[i]
else
for i:=6to 15 do Memo1.Text:=Memo1.Text+dispy[i];
end;
4:begin
if needenter=0 then
for i:=5 to 13 do Memo1.Text:=Memo1.Text+dispy[i]
else
for i:=5 to 15 do Memo1.Text:=Memo1.Text+dispy[i];
end;
5:begin
if needenter=0 then
for i:=3 to 13 do Memo1.Text:=Memo1.Text+dispy[i]
else
for i:=3 to 15 do Memo1.Text:=Memo1.Text+dispy[i];
end;
end;
end;
end;
procedure TickForm.RadioButton5Click(Sender: TObject);
begin
needenter:=1;
end;
procedure TickForm.RadioButton6Click(Sender: TObject);
begin
needenter:=0;
end;
procedure TickForm.Memo1Change(Sender: TObject);
begin
if memo1.Text<>'' then close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -