⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 okc21mainut.pas.bak

📁 某省公路收费站违章车辆抓拍管理系统
💻 BAK
📖 第 1 页 / 共 3 页
字号:
              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 + -