📄 okc21mainut.pas.bak
字号:
unit okc21MainUt;
interface
uses
Windows, Messages, SysUtils,StrUtils,Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Buttons, ComCtrls,jpeg, Db, DBTables,dateutils,inifiles,
Grids, FMTBcd, DBXpress, Nb30, SqlExpr, Opfileut, Math,wnaspi32;
type
{$A-}
Tokc21CapFm = class(TForm)
Timer2: TTimer;
QuestionTb: TTable;
StatusBar1: TStatusBar;
Timer1: TTimer;
PgCtrl: TPageControl;
TabSht1: TTabSheet;
TabSht2: TTabSheet;
TabSht3: TTabSheet;
TabSht4: TTabSheet;
TabSht5: TTabSheet;
StrGrid: TStringGrid;
Timer3: TTimer;
ListBox1: TListBox;
Label1: TLabel;
HDRefreshBtn: TBitBtn;
Label2: TLabel;
Bevel2: TBevel;
TabSht6: TTabSheet;
GroupBox2: TGroupBox;
Cb1: TCheckBox;
CB3: TCheckBox;
CB2: TCheckBox;
CB4: TCheckBox;
CB5: TCheckBox;
CB6: TCheckBox;
Panel1: TPanel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
DateTimeEdit: TEdit;
ChanelEdit: TEdit;
WorkNoEdit: TEdit;
NameEdit: TEdit;
Bevel5: TBevel;
Label3: TLabel;
Label4: TLabel;
Label9: TLabel;
Label11: TLabel;
BrightnessTB: TTrackBar;
ContrastTB: TTrackBar;
HueTB: TTrackBar;
SaturationTB: TTrackBar;
RadioBtn1: TRadioButton;
RadioBtn2: TRadioButton;
RadioBtn3: TRadioButton;
RadioBtn4: TRadioButton;
RadioBtn5: TRadioButton;
RadioBtn6: TRadioButton;
GroupBox1: TGroupBox;
Label10: TLabel;
PsnCarTypeEdit: TEdit;
Label12: TLabel;
ShiftEdit: TEdit;
Label13: TLabel;
AutoCarTypeEdit: TEdit;
QestionTypeEdit: TEdit;
Label14: TLabel;
BatchMove: TBatchMove;
FeeTab: TTable;
TollorTab: TTable;
ServerTab: TTable;
QuestionDS: TDataSource;
ForbidenCapBtn: TBitBtn;
TabSht7: TTabSheet;
Label15: TLabel;
TabSheet1: TTabSheet;
ExitBtn: TBitBtn;
HDStrGrid: TStringGrid;
Panel2: TPanel;
Panel3: TPanel;
Image61: TImage;
Image60: TImage;
Image51: TImage;
Image50: TImage;
Image41: TImage;
Image40: TImage;
Image31: TImage;
Image30: TImage;
Image21: TImage;
Image20: TImage;
Image11: TImage;
Image10: TImage;
Image: TImage;
Image1: TImage;
DatabaseServer: TDatabase;
Commqry: TQuery;
Animate1: TAnimate;
FmtTimer: TTimer;
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure RadioBtn1Click(Sender: TObject);
procedure BrightnessTBChange(Sender: TObject);
procedure ContrastTBChange(Sender: TObject);
procedure HueTBChange(Sender: TObject);
procedure SaturationTBChange(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Timer3Timer(Sender: TObject);
procedure HDRefreshBtnClick(Sender: TObject);
procedure ListBox1Exit(Sender: TObject);
procedure ForbidenCapBtnClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure ExitBtnClick(Sender: TObject);
procedure FmtTimerTimer(Sender: TObject);
private
function CopyRecord(S:DataRec):DataRec;
procedure Capture(i:byte);
procedure Savedata(Buf:DataRec;CarType,lane:byte);
Function FindDrives_defgh():string;
procedure MoveDirTo(sourceDrv,targetDrv:char);
Function GetDateStr(t:TDateTime):string;
Function GetImageName(Buf:DataRec):string;
Function HdFormat(drive:char):boolean;
Function updatefromServer:boolean;
procedure GetCap_MoveDrive;
function Ncb_Reset:boolean;
public
cb:array[1..6]of TcheckBox;
procedure DATAMessage(var msg:TMessage); message DATA_MESSAGE;
procedure IniFileReset;
end;
const
AD_Source=1;
AD_Brightness=2;
AD_Contrast=3;
AD_Hue=4;
AD_Saturation=5;
VIDEO=0;
VGASCREEN=-1;
BUFFER=1;
Meg=$100000;
Gb=meg*$400;
ImgW=384;
ImgH=288;
SHFMT_ID_DEFAULT=$FFFF;
SHFMT_OPT_QUICKFORMAT=$0000;
var
okc21CapFm: Tokc21CapFm;
cancap,firstRun,NcbResetok:boolean;
rect1:Trect;
index:integer;
Myini:TIniFile;
jpg: TJpegImage;
Handle1:cardinal;
Lstart,Lend:array[1..6] of Dword;
DateDir,CommStr: string;
SysDrive,CapDrive,MoveToDrive:char;
MaxSize,lanes,lana_num,LeftB,RightB:byte;
AYear,AMonth,ADay,delay,delta:Word;
ADate:TDateTime;
Orignwidth,Orignheight,OrignBitsPerPel:integer;
devmode:TDevicemode;
MainLoop,NameAdded,StatTollor,StatFee:Boolean;
lastcmd:array[1..6] of char;
NoCapLane:set of 1..6;
images:array[1..6,boolean] of TImage;
flags:array[1..6] of boolean;
tempstr:string;tempBool:bool;
sPath,dPath:array[0..60] of char;
function okOpenBoard(var Index:Longint):HWND;stdcall;far;
function okCloseBoard(hBoard:HWND):Boolean;stdcall;far;
function okGetLastError:Longint;stdcall;far;
function okSetTargetRect(hBoard:HWND; tgt:integer; var lpTgtRect:TRect):Longint;stdcall;far;
function okSetToWndRect(hBoard:HWND;hWnd:HWND):Boolean;stdcall;far;
function okCaptureToScreen(hBoard:HWND):Boolean;stdcall;far;
function okStopCapture(hBoard:HWND):Boolean;stdcall;far;
function okSetVideoParam(hBoard:HWND; wParam:WORD; lParam:Longint):Longint;stdcall;far;
function okSetCaptureParam(hBoard:HWND; wParam:WORD; lParam:Longint):Longint;stdcall;far;
function okGetBoardIndex(var szBoardName:char; iNo:Smallint):Smallint;stdcall;far;
function okSetConvertParam(hBoard:HWND; wParam:WORD; lParam:Longint):Longint;stdcall;far;
function okWaitSignalEvent(hBoard:HWND; dlwParam:WPARAM; lMilliSecond:LPARAM):Longint;stdcall;far;
function okCaptureSingle(hBoard:HWND;Dest:integer;lStart:Longint):Boolean;stdcall;far;
function okTransferRect(hBoard:HWND; dest:integer; iFirst:Longint; src:integer; iStart:Longint; lNum:Longint):Longint;stdcall;far;
function okConvertRect(hBoard:HWND; dest:integer; iFirst:Longint; src:integer; iStart:Longint; lNum:Longint):Longint;stdcall;far;
function SHFormatDrive(Handle: HWND; Drive, ID, Options: Word): LongInt; stdcall; far;
implementation
{$R *.DFM}
function okOpenBoard(var Index:Longint):HWND;external'okapi32.dll';
function okCloseBoard(hBoard:HWND):Boolean;external'okapi32.dll';
function okGetLastError:Longint;external'okapi32.dll';
function okSetTargetRect(hBoard:HWND; tgt:integer; var lpTgtRect:TRect):Longint;external'okapi32.dll';
function okSetToWndRect(hBoard:HWND;hWnd:HWND):Boolean;external'okapi32.dll';
function okCaptureToScreen(hBoard:HWND):Boolean;external'okapi32.dll';
function okStopCapture(hBoard:HWND):Boolean;external'okapi32.dll';
function okSetVideoParam(hBoard:HWND; wParam:WORD; lParam:Longint):Longint;external'okapi32.dll';
function okSetCaptureParam(hBoard:HWND; wParam:WORD; lParam:Longint):Longint;external'okapi32.dll';
function okGetBoardIndex(var szBoardName:char; iNo:Smallint):Smallint;external'okapi32.dll';
function okSetConvertParam(hBoard:HWND; wParam:WORD; lParam:Longint):Longint;external'okapi32.dll';
function okWaitSignalEvent(hBoard:HWND; dlwParam:WPARAM; lMilliSecond:LPARAM):Longint;external'okapi32.dll';
function okCaptureSingle(hBoard:HWND;Dest:integer;lStart:Longint):Boolean;external'okapi32.dll';
function okTransferRect(hBoard:HWND; dest:integer; iFirst:Longint; src:integer; iStart:Longint; lNum:Longint):Longint;external'okapi32.dll';
function okConvertRect(hBoard:HWND; dest:integer; iFirst:Longint; src:integer; iStart:Longint; lNum:Longint):Longint;external'okapi32.dll';
function SHFormatDrive(Handle:HWND;Drive,ID,Options:Word):LongInt;external 'c:\winnt\system32\shell32.dll' name 'SHFormatDrive'
function Tokc21CapFm.Ncb_Reset:boolean;
begin
result:=true;
try
Lana_num:=0;
Ctlncb.ncb_lana_num:=lana_num;
Ctlncb.ncb_command:=NCBRESET;
Ctlncb.ncb_lsn:=0;
Ctlncb.ncb_callname[0]:=#255;
Ctlncb.ncb_callname[2]:=#255;
Netbios(addr(Ctlncb));
if Ctlncb.ncb_retcode=NRC_GOODRET then
StatusBar1.Panels[1].Text:='0网络初始化成功'
else
begin
StatusBar1.Panels[1].Text:='0网络初始化失败:'+' '+inttostr(Ctlncb.ncb_cmd_cplt);
lana_num:=1;
Ctlncb.ncb_lana_num:=lana_num;
Ctlncb.ncb_command:=NCBRESET;
Ctlncb.ncb_lsn:=0;
Ctlncb.ncb_callname[0]:=#250;
Ctlncb.ncb_callname[2]:=#250;
Netbios(addr(Ctlncb));
if Ctlncb.ncb_retcode=NRC_GOODRET then
StatusBar1.Panels[1].Text:='1网络初始化成功'
else
begin
StatusBar1.Panels[1].Text:='1网络初始化失败:'+' '+inttostr(Ctlncb.ncb_cmd_cplt);
result:=false;
end;
end;
except
result:=false;
end;
end;
Function Tokc21CapFm.HdFormat(drive:char):boolean;
var i:byte;retCode: LongInt;
begin
firstRun:=true;
FmtTimer.Enabled:=true;
i:=ord(upcase(drive))-65;
StatusBar1.Panels[7].Text:='格式化'+upcase(drive)+'盘!';
if i=2 then
begin
StatusBar1.Panels[7].Text:='不能格式化C盘!';
result:=false;
exit;
end;
retCode:=SHFormatDrive(Handle,i,SHFMT_ID_DEFAULT,SHFMT_OPT_QUICKFORMAT);
if retCode< 0 then
begin
result:=false;
StatusBar1.Panels[7].Text:=drive+'盘格式化失败!';
end else result:=true;
FmtTimer.Enabled:=false;
end;
function Tokc21CapFm.updatefromServer :boolean;
var NewTime:TsystemTime;
VarTime:TDateTime;
hour,min,sec,msec:word;
begin
result:=true;
try
DatabaseServer.Open;
CommQry.close;
CommQry.sql.clear;
CommQry.sql.add('select getdate()');
CommQry.open;
VarTime:=CommQry['Column1'];
getlocaltime(Newtime);
decodetime(VarTime,hour,min,sec,msec);
decodedate(VarTime,Ayear,Amonth,Aday);
with NewTime do
begin
wyear:=Ayear;
wmonth:=Amonth;
wday:=aday;
whour:=hour;
wMinute:=min;
wSecond:=sec;
wMilliseconds:=msec+50;
end;
setlocaltime(NewTime);
except
result:=false;
StatusBar1.Panels[7].Text:='连接服务器出错';
end;
StatTollor:=TollorTab.Active;
try
TollorTab.Active:=false;
ServerTab.Active:=false;
ServerTab.TableName:='Dbo.SC';
ServerTab.Active:=true;
BatchMove.Source:=ServerTab;
BatchMove.Destination:=TollorTab;
BatchMove.Execute;
TollorTab.Active:=StatTollor;
except
TollorTab.Active:=StatTollor;
DatabaseServer.Close;
StatusBar1.Panels[7].Text:='收费员表更新出错!';
result:=false;
end;
StatFee:=FeeTab.Active;
DatabaseServer.Open;
try
FeeTab.Active:=false;
ServerTab.Active:=false;
ServerTab.TableName:='Dbo.VF';
ServerTab.Active:=true;
BatchMove.Source:=ServerTab;
BatchMove.Destination:=FeeTab;
BatchMove.Execute;
FeeTab.Active:=StatFee;
except
FeeTab.Active:=StatFee;
DatabaseServer.Close;
StatusBar1.Panels[7].Text:='费率表更新出错!';
result:=false;
end;
ServerTab.Active:=false;
DatabaseServer.Close;
end;
procedure Tokc21CapFm.IniFileReset;
var i,j,n,SortSize,skip:byte;
inorder:boolean; space,FreeSpace:Int64;
logicDisk:array[1..6] of char;
Diskspace:array[1..6] of word;
temstr:string;
station,CurrentDB:string;
begin
n:=0;
for i:=3 to 26 do
begin
space:=DiskSize(i) div Gb;
FreeSpace:=DiskFree(i);
if (space<=1)or(FreeSpace=0) then
continue;
if not fileexists(Chr(64+i)+':\mark.ini') then
begin
MyIni:= TIniFile.Create(Chr(64+i)+':\mark.ini');
if i=3 then
begin
MyIni.WriteString('Disk_set', 'disk', 'C');
MyIni.Writeinteger('Disk_set', 'lanes', 6);
MyIni.Writeinteger('Disk_set', 'contrast', 160);
MyIni.Writeinteger('Disk_set', 'brightness',160);
MyIni.Writeinteger('Disk_set', 'delay',180);
end
else
MyIni.WriteString('Disk_set', 'disk', 'O');
DecodeDate(now, AYear, AMonth, ADay);
temstr:=format('%2.2d',[AYear])+'/'+format('%2.2d',[AMonth])+'/'+Format('%2.2d',[ADay]);
MyIni.WriteString('Disk_set', 'date', temstr);
MyIni.WriteString('Disk_set', 'maxfile', '2');
MyIni.Free;
end;
end;
for i:=4 to 26 do
begin
space:=DiskSize(i) div Gb;
FreeSpace:=DiskFree(i);
if (space<=1)or(FreeSpace=0) then
continue;
inc(n);
logicDisk[n]:=Chr(64+i);
Diskspace[n]:=space;
if n=5 then
break;
end;
if n=0 then
begin
StatusBar1.Panels[7].Text:='本机只有C盘?';
exit;
end;
SortSize:=n;
skip:=SortSize;
while skip>1 do
begin
skip:=skip div 2;
repeat
inorder:=true;
for j:=1 to SortSize-skip do
begin
i:=j+skip;
if Diskspace[i]<Diskspace[j] then
begin
Diskspace[6]:=Diskspace[i];
Diskspace[i]:=Diskspace[j];
Diskspace[j]:=Diskspace[6];
logicDisk[6]:=logicDisk[i];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -