📄 okc21mainut.pas.bak
字号:
logicDisk[i]:=logicDisk[j];
logicDisk[j]:=logicDisk[6];
inorder:=false;
end
end;
until inorder;
end;
if sortSize=5 then
begin
Diskspace[6]:=Diskspace[2];
Diskspace[2]:=Diskspace[4];
Diskspace[4]:=Diskspace[6];
Diskspace[6]:=Diskspace[3];
Diskspace[3]:=Diskspace[5];
Diskspace[5]:=Diskspace[6];
logicDisk[6]:=logicDisk[2];
logicDisk[2]:=logicDisk[4];
logicDisk[4]:=logicDisk[6];
logicDisk[6]:=logicDisk[3];
logicDisk[3]:=logicDisk[5];
logicDisk[5]:=logicDisk[6];
end;
n:=0;
if sortSize=3 then
begin
if (Diskspace[2]<10)or(Diskspace[3]<10) then
n:=2;
end;
for i:=1 to sortSize do
begin
MyIni:=TIniFile.Create(logicDisk[i]+':\mark.ini');
if i=1 then
begin
station:=MyIni.ReadString('Disk_set', 'station', '');
CurrentDB:=MyIni.ReadString('Disk_set', 'CurrentDB', '');
if station='' then
MyIni.WriteString('Disk_set', 'station', '提刘');
if CurrentDB='' then
MyIni.WriteString('Disk_set', 'CurrentDB', 'NO');
MyIni.WriteString('Disk_set','disk',Chr(67+i));
HDStrGrid.Cells[1,i]:=format(' %s',[Chr(67+i)]);
HDStrGrid.Cells[2,i]:=format(' %s',[logicDisk[i]]);
HDStrGrid.Cells[3,i]:=format(' %d',[Diskspace[i]]);
end
else
begin
MyIni.WriteString('Disk_set','disk',Chr(67+i+n));
HDStrGrid.Cells[1,i]:=format(' %s',[Chr(67+i+n)]);
HDStrGrid.Cells[2,i]:=format(' %s',[logicDisk[i]]);
HDStrGrid.Cells[3,i]:=format(' %d',[Diskspace[i]]);
end;
MyIni.Free;
end;
i:=sortSize;
while i<5 do
begin
inc(i);
HDStrGrid.Cells[1,i]:=' ';
HDStrGrid.Cells[2,i]:=' ';
HDStrGrid.Cells[3,i]:=' ';
end;
end;
Function Tokc21CapFm.FindDrives_defgh():string;
var substr:string[5];i:byte;space:Int64;
begin
substr:=' ';
IniFileReset;
for i:=4 to 26 do
begin
space:=DiskFree(i);
if (space=-1)or(space=0) then continue;
if not fileexists(Chr(64+i)+':\mark.ini') then continue;
MyIni:= TIniFile.Create(Chr(64+i)+':\mark.ini');
tempstr:=MyIni.ReadString('Disk_set', 'disk', ' ');
case tempstr[1] of
'D': substr[1]:=Chr(64+i);
'E': substr[2]:=Chr(64+i);
'F': substr[3]:=Chr(64+i);
'G': substr[4]:=Chr(64+i);
'H': substr[5]:=Chr(64+i);
end;
MyIni.Free;
end;
result:=substr;
end;
procedure Tokc21CapFm.MoveDirTo(sourceDrv,targetDrv:char);
var Sr1:TSearchRec; temdir:string;
begin
temdir:=GetCurrentDir;
ADate:=now();
if FindFirst(SourceDrv+':\*.*',faAnyFile,Sr1)=0 then
begin
repeat
if (Sr1.Attr and faDirectory)=Sr1.Attr then
begin
if Sr1.Name<=GetDateStr(ADate-2) then
movedir(sourceDrv+':\'+Sr1.Name,targetDrv+':\'+Sr1.Name);
end;
until FindNext(Sr1)<>0;
FindClose(Sr1);
end;
SetCurrentDir(temdir);
end;
procedure Tokc21CapFm.GetCap_MoveDrive;
var i:byte;eleft,fleft:single; esize,fsize:int64;
begin
tempstr:=FindDrives_defgh();
if(tempstr[1]=' ') then
MoveToDrive:='C'
else
if(tempstr[1]<>' ')and(tempstr[2]=' ') then
MoveToDrive:=tempstr[1]
else
if tempstr[2]<>' ' then
begin
i:=ord(tempstr[2])-64;
if(diskfree(i)/disksize(i))*100 >=2 then
MoveToDrive:=tempstr[2]
end
else
if tempstr[3]<>' ' then
begin
i:=ord(tempstr[3])-64;
if(diskfree(i)/disksize(i))*100 >=2 then
MoveToDrive:=tempstr[3]
end;
if tempstr[1]<>' ' then
CapDrive:=tempstr[1]
else
CapDrive:='C';
if (tempstr[2]<>' ')and(tempstr[3]<>' ') then
begin
i:=ord(tempstr[2])-64;
esize:=disksize(i);
eleft:=(diskfree(i)/esize)*100;
i:=ord(tempstr[3])-64;
fsize:=disksize(i);
fleft:=(diskfree(i)/fsize)*100;
if (eleft<2)and(fleft<4)and(fleft>eleft) then
Hdformat(tempstr[2])
else
if (fleft<2)and(eleft<4)and(eleft>fleft) then
Hdformat(tempstr[3]);
IniFileReset;
end;
end;
function Tokc21CapFm.CopyRecord(S:DataRec):DataRec;
var d:DataRec;
begin
d.data_flag:=s.data_flag;
d.command:=s.command;
d.lane:=s.lane;
d.car_type:=s.car_type;
d.cash:=s.cash;
d.ticket_no:=s.ticket_no;
d.year:=s.year;
d.month:=s.month;
d.day:=s.day;
d.hour:=s.hour;
d.minute:=s.minute;
d.second:=s.second;
d.Tollor_Id:=s.Tollor_Id;
d.no_same:=s.no_same;
d.attrib:=s.attrib;
d.sum:=s.sum;
result:=d;
end;
Function Tokc21CapFm.GetImageName(Buf:DataRec):string;
var s:string;
begin
s:=Format('%2.2d',[buf.hour])+Format('%2.2d',[Buf.minute])+Format('%2.2d',[Buf.second]);
s:=s+Format('%2.2d',[Buf.lane]);
result:=s;
end;
procedure Tokc21CapFm.DATAMessage(var msg:TMessage);
var CarType,i:byte;
begin
i:=msg.WParam;
ReceiveFlag[i]:=0;
if ListenFlag[i]<>2 then StatusBar1.Panels[7].Text:='ListenFlag[i]<>2 ??';
if(LNcb[i].ncb_cmd_cplt=NRC_SABORT)or(LNcb[i].ncb_cmd_cplt=NRC_SCLOSED) then
begin
ListenFlag[i]:=0;
StatusBar1.Panels[3].Text:=inttostr(i)+'道会话结束frm DATAMsg prg';
StatusBar1.Panels[5].Text:='';
StatusBar1.Panels[7].Text:=GetRetStr(LNcb[i].ncb_cmd_cplt)+datetimetostr(now);
exit;
end;
if(LNcb[i].ncb_cmd_cplt=NRC_CMDTMO) then
begin
StatusBar1.Panels[7].Text:=inttostr(i)+'道命令超时!frm DATAmsg prg';
if Rep[i]<6 then
Rep[i]:=Rep[i]+1
else
begin
Rep[i]:=0;
include(NoCapLane,i);
cb[i].Checked:=true;
end;
exit;
end;
if LNcb[i].ncb_cmd_cplt<>NRC_GOODRET then
begin
StatusBar1.Panels[5].Text:=inttostr(i)+'道接收失败!frm Datamsg prg';
StatusBar1.Panels[7].Text:=GetRetStr(LNcb[i].ncb_cmd_cplt)+datetimetostr(now);
exit;
end;
if not(RecBuf[i].command in ['B','T','C','I','J','D','E']) then exit;
application.ProcessMessages;
Case RecBuf[i].command of
'B','D','E','I':
Begin
if lastcmd[i]='T' then
begin
SaveData(LastRecBuf[i],0,i);
end;
lastcmd[i]:=RecBuf[i].command;
LastRecBuf[i]:=copyRecord(RecBuf[i]);
end;
'T':begin
if cancap then Capture(i);
Case lastcmd[i] of
'B':lastcmd[i]:='T';
'I': if cancap then SaveData(LastRecBuf[i],0,i);
'T': if cancap then
begin
LastRecBuf[i].command:='D';
LastRecBuf[i].attrib:=0;
SaveData(LastRecBuf[i],0,i);
lastcmd[i]:=' ';
end;
'E','D':
Begin
if cancap then SaveData(LastRecBuf[i],0,i);
lastcmd[i]:=' '
end
end;
end;
'C':Begin
if (RecBuf[i].no_same=1)and(lastcmd[i]='T') then
begin
CarType:=RecBuf[i].car_type;
if cancap then SaveData(LastRecBuf[i],CarType,i);
end;
lastcmd[i]:=' ';
end;
'J':lastcmd[i]:=' ';
End;
StrGrid.Cells[1,i]:=format(' %s',[RecBuf[i].command]);
StrGrid.Cells[2,i]:=format(' %d',[RecBuf[i].data_flag]);
StrGrid.Cells[3,i]:=format(' %d',[RecBuf[i].Tollor_Id]);
StrGrid.Cells[4,i]:=format(' %d',[RecBuf[i].car_type]);
StrGrid.Cells[5,i]:=format(' %d',[RecBuf[i].cash]);
StrGrid.Cells[6,i]:=format('%8.8d',[RecBuf[i].ticket_no]);
StrGrid.Cells[7,i]:=intTostr(RecBuf[i].hour)+'点'+intTostr(RecBuf[i].minute)+'分'+intTostr(RecBuf[i].second)+'秒';
StrGrid.Cells[8,i]:=format(' %d',[RecBuf[i].no_same]);
StrGrid.Cells[9,i]:=format(' %d',[RecBuf[i].attrib]);
end;
Function Tokc21CapFm.GetDateStr(t:TDateTime):string;
begin
DecodeDate(t, AYear, AMonth, ADay);
Result:=format('%2.2d',[AYear])+format('%2.2d',[AMonth])+Format('%2.2d',[ADay]);
end;
procedure Tokc21CapFm.FormActivate(Sender: TObject);
var rgbfm:word; B,C:INTEGER;
begin
MyIni:=TIniFile.Create('c:\mark.ini');
B:=MyIni.ReadInteger('Disk_set', 'brightness',168);
C:=MyIni.ReadInteger('Disk_set', 'contrast', 169);
MyIni.Free;
BrightnessTB.Position:=B;
ContrastTB.Position:=C;
index:=-1;
handle1:=okOpenBoard(index);
if handle1=0 then
begin
showmessage('采集卡初始化出错!');
close;
end;
Rect1:=BOUNDS(0,0,768,576);
okSetTargetRect(handle1,VIDEO,Rect1);
Rect1:=BOUNDS(0,0,384,288);
okSetTargetRect(handle1,BUFFER,Rect1);
Rect1:=BOUNDS(11,30,384,288);
okSetTargetRect(handle1,VGASCREEN,Rect1);
okSetCaptureParam(handle1,2,0);
rgbfm:=loword(okSetCaptureParam(Handle1,3,-1));
okSetVideoParam(Handle1,6,rgbfm);
okSetCaptureParam(handle1,4,rgbfm);
okSetVideoParam(Handle1,AD_Brightness,BrightnessTB.Position);
okSetVideoParam(Handle1,AD_Contrast,ContrastTB.Position);
okSetVideoParam(Handle1,AD_Saturation,SaturationTB.Position);
RadioBtn1Click(self);
NcbResetok:=Ncb_Reset;
timer1.Enabled:=true;
end;
procedure Tokc21CapFm.FormCreate(Sender: TObject);
begin
SysDrive:='C';
GetCap_MoveDrive;
SetcurrentDir(CapDrive+':\');
DateDir:=GetDateStr(now());
if not DirectoryExists(DateDir) then
CreateDir(DateDir);
MyIni:=TIniFile.Create('C:\mark.ini');
lanes:=MyIni.ReadInteger('Disk_set','lanes',6);
delta:=MyIni.ReadInteger('Disk_set','delay',80);
MyIni.Free;
if lanes=4 then
begin
include(NoCapLane,5);
include(NoCapLane,6);
CB5.Checked:=true;
CB6.Checked:=true;
end;
MyIni:=TIniFile.Create(CapDrive+':\mark.ini');
if MyIni.ReadString('Disk_set','CurrentDB','NO')='NO' then
begin
MyIni.WriteString('Disk_set','CurrentDB',DateDir+'.DBF');
fillchar(sPath,61,0);
fillchar(dPath,61,0);
tempstr:=SysDrive+':\Sys\System.dbf';
StrPCopy(sPath,tempstr);
tempstr:=CapDrive+':\'+DateDir+'.dbf';
StrPCopy(dPath,Tempstr);
copyfile(sPath,dPath,false);//temf);
QuestionTb.TableName:=DateDir+'.dbf';
end else
QuestionTb.TableName:=MyIni.ReadString('Disk_set','CurrentDB','');
QuestionTb.DatabaseName:=CapDrive+':\';
TollorTab.DatabaseName:=SysDrive+':\sys';
FeeTab.DatabaseName:=SysDrive+':\sys';
MaxSize:=StrToint(MyIni.ReadString('Disk_set','maxfile','2'));
MyIni.Free;
Jpg:=TJpegImage.Create;
initial;
updatefromServer;
QuestionTb.open;
TollorTab.open;
FeeTab.open;
orignheight:=screen.Height;
orignwidth:=screen.width;
okc21CapFm.PixelsPerInch:=96;
end;
procedure Tokc21CapFm.FormClose(Sender: TObject; var Action: TCloseAction);
var i:byte;
begin
for i:=1 to lanes do
begin
if ListenFlag[i]=0 then continue;
if ListenFlag[i]=1 then
begin
LNcb[i].ncb_command:=NCBCANCEL or ASYNCH;
LNcb[i].ncb_post:=nil;
LNcb[i].ncb_lana_num:=lana_num;
Netbios(addr(LNcb[i]));
end
else
if ListenFlag[i]=2 then
begin
LNcb[i].ncb_command:=NCBHANGUP or ASYNCH;
LNcb[i].ncb_post:=nil;
LNcb[i].ncb_lana_num:=lana_num;
Netbios(addr(LNcb[i]));
end;
end;
sleep(4006);
TollorTab.Active:=false;
QuestionTb.Active:=false;
FeeTab.Active:=false;
ServerTab.Active:=false;
okStopCapture(Handle1);
okCloseBoard(Handle1);
end;
procedure Tokc21CapFm.RadioBtn1Click(Sender: TObject);
begin
if RadioBtn1.Checked then
okSetVideoParam(Handle1,AD_Source,0)
else
if RadioBtn2.Checked then
okSetVideoParam(Handle1,AD_Source,1)
else
if RadioBtn3.Checked then
okSetVideoParam(Handle1,AD_Source,2)
else
if RadioBtn4.Checked then
okSetVideoParam(Handle1,AD_Source,3)
else
if RadioBtn5.Checked then
okSetVideoParam(Handle1,AD_Source,4)
else
if RadioBtn6.Checked then
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -