📄 alterunit.pas
字号:
unit alterUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, bsSkinCtrls, bsSkinBoxCtrls, bsdbctrls, StdCtrls, Mask,
BusinessSkinForm, ComCtrls, bsMessages;
type
TalterForm = class(TForm)
bsBusinessSkinForm1: TbsBusinessSkinForm;
bsSkinStdLabel1: TbsSkinStdLabel;
bsSkinStdLabel2: TbsSkinStdLabel;
bsSkinEdit1: TbsSkinEdit;
bsSkinButton5: TbsSkinButton;
bsSkinButton6: TbsSkinButton;
bsSkinButton7: TbsSkinButton;
bsSkinEdit2: TbsSkinEdit;
bsSkinStdLabel3: TbsSkinStdLabel;
bsSkinListView1: TbsSkinListView;
bsSkinScrollBar1: TbsSkinScrollBar;
bsSkinEdit3: TbsSkinEdit;
bsSkinButton1: TbsSkinButton;
bsSkinStatusBar1: TbsSkinStatusBar;
bsSkinStatusPanel1: TbsSkinStatusPanel;
bsSkinButton2: TbsSkinButton;
bsSkinMessage1: TbsSkinMessage;
procedure bsSkinButton7Click(Sender: TObject);
procedure FormShow(Sender: TObject);
// procedure bsSkinButton2Click(Sender: TObject);
// procedure bsSkinButton3Click(Sender: TObject);
// procedure bsSkinButton4Click(Sender: TObject);
// procedure bsSkinDBLookupComboBox1Change(Sender: TObject);
procedure bsSkinButton5Click(Sender: TObject);
procedure bsSkinButton1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure bsSkinButton6Click(Sender: TObject);
procedure bsSkinButton2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
alterForm: TalterForm;
iswrite:boolean; //标记是否写卡
aListItem:TListItem;
function mythreadIC(p:pointer):longint;stdcall; //***检测读卡器连接线程
implementation
uses
datamodel,NewCarUnit, mainUnit,appadress;
{$R *.dfm}
procedure TalterForm.bsSkinButton7Click(Sender: TObject);
begin
close;
end;
procedure TalterForm.FormShow(Sender: TObject);
var
adress:string;
hthread:thandle;//定义一个句柄
threadid:dword;
begin
///******打开数据库连接************
datamodule1.personTable.Open;
datamodule1.Car_adressTable.Open;
iswrite:=false; //初始化布尔值
bsSkinEdit1.Text:='';
bsSkinEdit2.Text:='';
bsSkinListView1.Items.Clear;
hthread:=createthread(nil,0,@mythreadIC,nil,0,threadid); //**调试串口******
end;
procedure TalterForm.bsSkinButton5Click(Sender: TObject);
var
i:integer;
begin
if length(bsSkinEdit3.Text)<>3 then
begin
alterform.bsSkinMessage1.MessageDlg('请输入三位IC卡编号!',mtError,[mbok],0);
bsSKinEdit3.SetFocus;
exit;
end;
if length(bsSkinEdit1.Text)<>3 then
begin
alterform.bsSkinMessage1.MessageDlg('请输入三位人员编号!',mtError,[mbok],0);
bsSkinEdit1.SetFocus;
exit;
end;
//*******更新人员编号,姓名**********
with datamodule1.personQuery do
begin
close;
sql.Clear;
sql.Add('select * from personMIs where persionID=:a');
parameters[0].Value:=bsskinedit1.Text;
open;
//***如果没找到添加记录,找到就更新记录*********
if eof then
begin
with datamodule1.personTable do
begin
open;
append;
fieldByName('persionID').Value:=bsskinedit1.Text;
fieldByName('Pname').Value:=bsskinedit2.Text;
end;
end
else
begin
close;
sql.Clear;
sql.Add('update personMIs set Pname=:a where persionID=:b');
parameters[0].Value:=bsskinedit2.Text;
parameters[1].Value:=bsskinedit1.Text;
ExecSQL;
end;
end;
//*********更新人员编号,机器编号 ***************
with datamodule1.update_carQuery do
begin
close;
sql.Clear;
sql.Add('update carMIS set userid=:a , alterdate=:b where carid=:d ');
Parameters[0].Value:= bsSkinEdit1.Text;
Parameters[1].Value:=date();
parameters[2].Value:=bsskinedit3.Text;
ExecSQL;
end;
//*****清除原有的地址信息**********************
with datamodule1.car_adressQuery do
begin
close;
sql.Clear;
sql.Add('delete from Car_adress where carid=:a');
parameters[0].Value:=bsSkinEdit3.Text;
ExecSQL;
end;
//*******重新保存地址信息***************************
for i:=0 to bsSkinListView1.Items.Count-1 do //保存报警地址.
begin
if bsSkinListView1.Items[i].Checked then
begin
with datamodule1.Car_adressTable do
begin
open;
append;
FieldByname('carid').AsString:=bsSkinEdit3.Text;
FieldByname('adressid').AsString:=bsSkinListView1.Items[i].Caption;
FieldByName('adress').AsString:=bsSkinListView1.Items[i].SubItems.CommaText;
post;
end;
end;
end;
alterform.bsSkinMessage1.MessageDlg('保存成功!',mtInformation,[mbok],0);
iswrite:=true;
end;
procedure TalterForm.bsSkinButton1Click(Sender: TObject);
var
adress,id:string;
aListItem:TListItem;
begin
//****查找显示人员,机器编号************
with DataModule1.carQuery do
begin
close;
sql.Clear;
sql.Add('select * from carMIS');
sql.Add('where carid=:a');
Parameters[0].Value:=bsSkinEdit3.Text;
open;
bsSkinEdit1.Text:=fieldByName('userid').AsString;
end;
//*****查找显示人员姓名*******************
with DataModule1.personQuery do
begin
close;
sql.clear;
sql.Add('select Pname from personMIs');
sql.Add('where persionID=:a');
Parameters[0].Value:=bsSkinEdit1.Text;
open;
bsSkinEdit2.Text:=fieldByName('Pname').AsString;
end;
//**********查找显示地址********
bsskinlistView1.Items.Clear;
with datamodule1.car_adressQuery do
begin
close;
sql.Clear;
sql.Add('select adress,adressid from Car_adress');
sql.Add('where carid=:a');
Parameters[0].Value:=bsSkinEdit3.Text;
open;
first;
while not eof do
begin
adress:=FieldByName('adress').AsString;
id:=FieldByName('adressid').AsString;
aListItem:=bsSkinListView1.Items.Add;
aListItem.Caption:=id;
aListItem.SubItems.Add(adress);
aListItem.Checked:=true;
next;
end;
end;
end;
procedure TalterForm.FormCreate(Sender: TObject);
begin
// st:=ic_exit(icdev); //退出串口
end;
procedure TalterForm.bsSkinButton6Click(Sender: TObject);
var
i,j,k,l,n,sdn:integer;
sIC,sP,sd,strtext,s1,s2:string;
begin
////*********判断输入信息是否正确***************
if not iswrite then
begin
alterform.bsSkinMessage1.MessageDlg('注意!先保存再写卡',mtError,[mbok],0);
bsSkinButton6.SetFocus;
exit;
end;
//*********检测是否24c64卡 ********
st:=chk_24c64(icdev);
if st<>0 then
begin
newcarForm.bsSkinMessage1.MessageDlg('读卡器未插卡!',mtError,[mbok],0);
exit;
end;
if length(bsSkinEdit3.Text)<>3 then
begin
alterform.bsSkinMessage1.MessageDlg('请输入三位IC卡编号!',mtError,[mbok],0);
bsSKinEdit3.SetFocus;
exit;
end;
if length(bsSkinEdit1.Text)<>3 then
begin
alterform.bsSkinMessage1.MessageDlg('请输入三位人员编号!',mtError,[mbok],0);
bsSkinEdit1.SetFocus;
exit;
end;
{ if length(bsskinedit4.Text)<>3 then
begin
alterform.bsSkinMessage1.MessageDlg('请输入三位机器编号!',mtError,[mbok],0);
bsSkinEdit1.SetFocus;
exit;
end; }
st:=chk_24c64(icdev); //检测是否24c64卡
if st<>0 then
begin
bsSkinStatusPanel1.Caption:='读卡器未插入卡';
alterform.bsSkinMessage1.MessageDlg('读卡器未插入卡!',mtInformation,[mbok],0);
mainform.bsSkinStatusPanel3.Caption:='读卡器未插入卡';
exit;
end
else
bsSkinStatusPanel1.Caption:='读卡器已插卡成功';
mainform.bsSkinStatusPanel3.Caption:='读卡器已插卡成功';
//**********写卡*********************
offset:=0; //IC卡偏移地址
length1:=3; //字符长度
sIC:=bsSkinEdit3.Text; //卡编号,
sP:=bsSkinEdit1.Text; // 人员编号
for i:=0 to 2 do
begin
dataIC[i]:=sIC[i+1];
end;
for i:=0 to 2 do
begin
dataP[i]:=SP[i+1];
end;
st:=swr_24c64(icdev,offset,length1,dataIC); //写入IC卡编号,3位地址
offset1:=3;
st:=swr_24c64(icdev,3,length1,dataP); //写入人员编号 3位地址
for j:=0 to bsSkinListView1.Items.Count-1 do
begin
if bsSkinListView1.Items[j].Checked then
begin
sdn:=strtoint( bsSkinListView1.Items[j].Caption); // 读机器编号
sd:= bsSkinListView1.Items[j].SubItems.CommaText; // 读机器名称
s2:=inttostr(length(sd)div 2); //S2机器名称汉字个数
strtext:=writeIC(sd); //得到汉字的16进制编码
l:=length(strtext);
n:=l div 2; //求出汉字存放地址的长度
datamax[0]:=s2[1];
offset1:=1000+sdn*400-400; //存汉字个数
st:=swr_24c64(icdev,offset1,1,datamax);
for i:=0 to length(strtext)-1 do
begin
data3[i]:=strtext[i+1];
end;
offset1:=1001+sdn*400-400; //存储汉字16*16编码
st:=asc_hex(data3,hexdata3,n);
st:=swr_24c64(icdev,offset1,n,hexdata3);
end;
end;
//*****判断是否写卡成功**********
if st<>0 then
begin
alterform.bsSkinMessage1. MessageDlg('写卡失败,请重新写卡!',mtInformation,[mbok],0);
exit;
end
else
alterform.bsSkinMessage1.MessageDlg('写卡成功!',mtInformation,[mbok],0);
iswrite:=false;
end;
procedure TalterForm.bsSkinButton2Click(Sender: TObject);
begin
AppadressForm:=TAppadressForm.Create(nil);
AppadressForm.Show;
end;
function mythreadIC(p:pointer):longint;stdcall; //***检测读卡器连接线程
var
dc:hdc;
begin
dc:=getdc(alterform.handle);
with alterform do
begin
//******调试串口************
icdev:=auto_init(0,9600); //初始化串口一,并将读写器波特率设置为9600
st:=chk_24c64(icdev); //检测是否24c64卡
if st<>0 then
begin
bsSkinStatusPanel1.Caption:='读卡器未插入卡';
mainform.bsSkinStatusPanel3.Caption:='读卡器未插入卡';
end
else
bsSkinStatusPanel1.Caption:='读卡器已插卡成功';
mainform.bsSkinStatusPanel3.Caption:='读卡器已插卡成功';
releasedc(alterform.handle,dc);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -