📄 jsztj_unit.pas
字号:
unit JSZTJ_Unit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, DB, ADODB;
type
ResultData=Array of char;
Mydata=array [0..99999] of Char;
TJSZTJ_Form = class(TForm)
Label1: TLabel;
Label2: TLabel;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
SCQry: TADOQuery;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
private
Data_Buff:MyData;
{ Private declarations }
public
function CurBuffHex(Data_Buff:MyData;var ResData:ResultData;Index,Count:integer):integer;
function HexToInt(ResData:ResultData;Length:integer):integer;
function MyRound(X: Extended;Length:Integer):Extended;
{ Public declarations }
end;
var
JSZTJ_Form: TJSZTJ_Form;
implementation
uses DMUnit, MainUnit, csUnit;
{$R *.dfm}
procedure TJSZTJ_Form.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=cafree;
end;
procedure TJSZTJ_Form.FormDestroy(Sender: TObject);
begin
JSZTJ_Form:=nil;
end;
function TJSZTJ_Form.CurBuffHex(Data_Buff: MyData;
var ResData: ResultData; Index, Count: integer): integer;
var
i:integer;
begin
for i:=0 to Count-1 do
ResData[i]:=Data_Buff[Index+i];
Result:=Index+Count;
end;
function TJSZTJ_Form.HexToInt(ResData: ResultData;
Length: integer): integer;
var
i:integer;
Temp:String;
begin
Temp:='';
for i:=0 to Length-1 do
Temp:=Temp+IntToHex(Ord(ResData[i]),2);
Result:=StrToInt('$'+Temp);
end;
function TJSZTJ_Form.MyRound(X: Extended; Length: Integer): Extended;
var
i,k,j:integer;
begin
i:=1;
k:=1;
if X<0 then j:=-1 else j:=1;
while i<=abs(length) do
begin
k:=k*10;
inc(i);
end;
if length<0 then
Result:=trunc(abs(X)/K+0.5)*(K)*J
else
Result:=trunc(abs(X)*K+0.5)/(K)*J ;
end;
procedure TJSZTJ_Form.BitBtn2Click(Sender: TObject);
begin
Close;
end;
procedure TJSZTJ_Form.BitBtn1Click(Sender: TObject);
var
Data_Len:Array[0..1] of integer;
len:integer;
i:longint;
S:string;
Temp:ResultData;
Index:integer;
DataCode:String;//数据代码
SNo:String; //收银机号
JYCount:integer;//交易数量
LSNO:string;//交易流水号
ChPCOde:String; //产品编号
Price:double; //单价
Count:integer; //数量
Fy:double; //金额
Datetime:String;//销售时间
OP:String; //操作员
begin
JSZTJ_FORM.Visible:=false;
with DM.SALE_ADOQ do
begin
Close;
Open;
end;
{ Result:=InitCom('COM1');
if Result=0 then
Showmessage('初始化串口成功')
else
begin
Showmessage('初始化失败!'+inttostr(Result));
Exit;
end; }
Result:=POS_Comm_Start(1);
if Result=0 then
ShowMessage('通讯成功')
else
begin
ShowMessage(' 通讯失败'+inttostr(Result));
Exit;
end;
csform:=Tcsform.Create(application);
csform.Show;
for i:=0 to 99999 do
Data_Buff[i]:=char(0);
Result:=2;
Result:=POS_UpLoad_Data(@Data_Buff[0],@Data_Len);
// sleep(50000);
SetLength(Temp,4);
Index:=CurBuffHex(Data_Buff,Temp,0,4);
DataCode:=String(Temp);
Temp:=nil;
SetLength(Temp,6);
Index:=CurBuffHex(Data_Buff,Temp,Index,6);
SNo:=String(Temp);
Temp:=nil;
SetLength(Temp,2);
Index:=CurBuffHex(Data_Buff,Temp,Index,2);
JYCount:=HexToInt(Temp,2);
Temp:=nil;
for i:=1 to JYCount do
begin
DM.SALE_ADOQ.Append;
DM.SALE_ADOQ.FieldByName('ITEM_CARNO').AsString:=Combobox1.Text; //车号
DM.SALE_ADOQ.FieldByName('ITEM_BZ').AsString:=Combobox2.Text; //班组
DM.SALE_ADOQ.FieldByName('ITEM_DATE').AsDateTime:=DATE();
DM.SALE_ADOQ.FieldByName('ITEM_BS').AsString:='可用';
DM.SALE_ADOQ.FieldByName('ITEM_SJDM').AsString:=DataCode; //数据代码
DM.SALE_ADOQ.FieldByName('ITEM_CSJNO').AsString:=SNo; //收银机号
DM.SALE_ADOQ.FieldByName('ITEM_JYNUM').AsInteger:=JYCount; //交易数量
SetLength(Temp,6);
Index:=CurBuffHex(Data_Buff,Temp,Index,6);
LSNO:=String(Temp);
DM.SALE_ADOQ.FieldByName('ITEM_LSNO').AsString:=LSNO; //流水号
SetLength(Temp,6);
Index:=CurBuffHex(Data_Buff,Temp,Index,6);
ChPCode:=String(Temp);
DM.SALE_ADOQ.FieldByName('ITEM_NO').AsString:=ChPCode; //产品编号
Temp:=nil;
SetLength(Temp,2);
Index:=CurBuffHex(Data_Buff,Temp,Index,2);
Price:=HexToInt(Temp,2);
Price:=MyRound(Price/100,2);
DM.SALE_ADOQ.FieldByName('ITEM_PRICE').AsCurrency:=Price; //产品单价
Temp:=nil;
SetLength(Temp,2);
Index:=CurBuffHex(Data_Buff,Temp,Index,2);
Count:=HexToInt(Temp,2);
DM.SALE_ADOQ.FieldByName('ITEM_NUM').AsInteger:=Count; //产品数量
Temp:=nil;
SetLength(Temp,4);
Index:=CurBuffHex(Data_Buff,Temp,Index,4);
Fy:=HexToInt(Temp,4);
Fy:=MyRound(Fy/100,2);
DM.SALE_ADOQ.FieldByName('ITEM_MON').AsCurrency:=Fy;
Temp:=nil;
SetLength(Temp,12);
Index:=CurBuffHex(Data_Buff,Temp,Index,12);
Datetime:=String(Temp);
Datetime:=copy(Datetime,1,4)+'-'+Copy(Datetime,5,2)+'-'+Copy(Datetime,7,2)+' '+Copy(Datetime,9,2)+':'+Copy(Datetime,11,2);
DM.SALE_ADOQ.FieldByName('ITEM_TIME').AsDateTime:=strtodatetime(Datetime);
Temp:=nil;
SetLength(Temp,6);
Index:=CurBuffHex(Data_Buff,Temp,Index,6);
OP:=String(Temp);
DM.SALE_ADOQ.FieldByName('ITEM_MEN').AsString:=OP;
Temp:=nil;
DM.SALE_ADOQ.Post;
end;
if Result=0 then
begin
csform.Close;
SHowmessage('上传交易数据成功!');
POS_Comm_End();
end
else
begin
ShowMessage('上传交易数据失败!');
Exit;
end;
JSZTJ_FORM.Close;
end;
procedure TJSZTJ_Form.FormCreate(Sender: TObject);
begin
with SCQry do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM LCBASE');
Open;
end;
WHILE NOT scqry.Eof do
begin
Combobox1.Items.Add(SCQRY.FieldbyName('LC_CARNO').AsString);
scqry.Next;
end;
{ with SCQry do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM CLASS_ITEM');
Open;
end;
while not SCQRY.Eof do
begin
Combobox2.Items.Add(SCQRY.FieldByname('CLASS_NAME').AsString);
scqry.Next;
end; }
end;
procedure TJSZTJ_Form.ComboBox1Change(Sender: TObject);
var
S:String;
begin
Combobox2.Clear;
S:='SELECT CLASS_NAME FROM CLASS_ITEM WHERE 2>1';
if Combobox1.ItemIndex>=0 then
begin
S:=S+' and CLASS_MARKS='''+Combobox1.Text+'''';
with SCQry do
begin
Close;
SQL.Clear;
SQL.Add(S);
Open;
end;
While not SCQry.Eof do
begin
Combobox2.Items.Add(SCQRY.FieldByname('CLASS_NAME').AsString);
SCQry.Next;
end;
end
else
begin
with SCQry do
begin
Close;
SQL.Clear;
SQL.Add(S);
Open;
end;
While not SCQry.Eof do
begin
Combobox2.Items.Add(SCQRY.FieldByname('CLASS_NAME').AsString);
SCQry.Next;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -