?? hardwareinitialize_f.~pas
字號:
unit HardWareInitialize_F;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, FileCtrl,
Dialogs, ExtCtrls, StdCtrls, Buttons, ComCtrls, DB, ADODB, pasMyComm, StrUtils, ComObj;
type
TCheckThread=class(TThread)
protected
procedure Execute;override;
public
bCheckThread:boolean;
end;
TReceiveStatus = (
rComOpen, //打開
rComStop); //關閉
TfrmHardWardInit = class(TForm)
Panel1: TPanel;
Panel3: TPanel;
btnClose: TButton;
GroupBox1: TGroupBox;
RadioGroup: TRadioGroup;
GroupBox2: TGroupBox;
labCar_LicensePlate: TLabel;
edtCar_LicensePlate: TEdit;
labCar_LicensePlateColor: TLabel;
edtCar_LicensePlateColor: TEdit;
btnOK: TBitBtn;
GroupBox3: TGroupBox;
GroupBox4: TGroupBox;
edtDriverLicence3: TEdit;
Label5: TLabel;
Label4: TLabel;
edtDriverLicence2: TEdit;
edtDriverLicence1: TEdit;
Label8: TLabel;
edtDriverID1: TEdit;
edtDriverID2: TEdit;
edtDriverID3: TEdit;
Label3: TLabel;
Label2: TLabel;
Label1: TLabel;
GroupBox5: TGroupBox;
Label6: TLabel;
edtVIN: TEdit;
Label7: TLabel;
Label9: TLabel;
edtTime: TEdit;
edtParameter: TEdit;
Label13: TLabel;
Label15: TLabel;
edtCarType: TEdit;
edtLicensePlate: TEdit;
btnSendData: TBitBtn;
btnSelectColor: TButton;
Label17: TLabel;
edtDriverID4: TEdit;
Label18: TLabel;
edtDriverLicence4: TEdit;
Label19: TLabel;
edtDriverID5: TEdit;
Label20: TLabel;
edtDriverLicence5: TEdit;
ADOConnection: TADOConnection;
ADOQuery: TADOQuery;
btnOpenCom: TBitBtn;
OpenDialog: TOpenDialog;
btnCloseComm: TButton;
Label10: TLabel;
edtDeviceID: TEdit;
Label11: TLabel;
Label12: TLabel;
edtFirstDown: TEdit;
edtMaxSpeed: TEdit;
panCOM1Sign: TPanel;
panCOM2Sign: TPanel;
panCOM3Sign: TPanel;
lbCarLicList: TListBox;
panCOM4Sign: TPanel;
panCOM5Sign: TPanel;
panCOM6Sign: TPanel;
ProgressBar: TProgressBar;
btnUSBItem: TButton;
procedure btnCloseClick(Sender: TObject);
function getData:Boolean;
procedure btnOKClick(Sender: TObject);
procedure btnOpenComClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure RadioGroupClick(Sender: TObject);
procedure btnSendDataClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure formatData;
procedure SendToUSB;
procedure SendData;
procedure btnCloseCommClick(Sender: TObject);
procedure btnSelectColorClick(Sender: TObject);
function DataCheck:Boolean;
procedure AppMessage(var Msg: TMsg; var Handled: Boolean);
procedure edtCar_LicensePlateDblClick(Sender: TObject);
procedure lbCarLicListClick(Sender: TObject);
procedure btnUSBItemClick(Sender: TObject);
procedure edtCar_LicensePlateKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
TestComm:TComm; //使用TComm類
CheckThread:TCheckThread; //讀數據線程
public
{ Public declarations }
end;
var
frmHardWardInit: TfrmHardWardInit;
strCom: String;
rReceiveStatus:TReceiveStatus;
TempString: String;
arrSendData: Array[0..11] of String;
arrSendByte: array[0..8] of Byte;
arrByteData: Array[0..1023] of Byte;
strGB_CarLic: String;
strGB_CarType: String;
strGB_CarColor: String;
strUsbDrive:String;
intSendNum :Integer;
arrCommand: Array[0..11] of String;
strSpeedCheck: String;
strKmCheck: String;
strMemClearCheck: String;
const
WM_RECEIVE_SUCCESS = WM_USER + 2000; //發送成功
WM_RECEIVE_FAILURE = WM_USER + 2001; //發送超時
WM_RECEIVE_CheckErr = WM_USER + 2002; //發送超時
implementation
uses
HardWareInitialize_IMP, HardWareInitialize_F_USBItem;
{$R *.dfm}
procedure TCheckThread.Execute;
var
TempByte:Byte;
i: Integer;
begin
i:=0;
while bCheckThread do
begin
if rReceiveStatus=rComOpen then //超時
begin
if frmHardWardInit.TestComm.WaitForBytes(1,5000)=FALSE then
begin
bCheckThread:=False;
PostMessage(frmHardWardInit.Handle,WM_RECEIVE_FAILURE,0,0);
Continue;
end;
end;
{if not frmHardWardInit.TestComm.GetCheckResult then
begin
bCheckThread:=False;
PostMessage(frmHardWardInit.Handle,WM_RECEIVE_CheckErr,0,0);
Continue;
end; }
//如果輸入隊列中有數據,讀入并在隊列中顯示出來
if (frmHardWardInit.TestComm<>Nil) and (frmHardWardInit.TestComm.BytesInInQue>=1) then
begin
frmHardWardInit.TestComm.ReadData(@TempByte,1);
TempString:=TempString+Format('%.2x', [TempByte]);
end;
if (TempString=arrCommand[i]) and (intSendNum<=11) then //單片機返回正確幀,發送下一段數據
begin
sleep(1000);
TempString:='';
intSendNum:=intSendNum+1;
rReceiveStatus:=rComStop; //接收成功,停止接收
frmHardWardInit.TestComm.ClearComm;
i:=i+1;
frmHardWardInit.ProgressBar.Position:=10+frmHardWardInit.ProgressBar.Position;
end;
//if (TempString=arrCommand[Length(arrCommand)-1]) and (intSendNum=11) then
// if TempString=arrCommand[9] then
if intSendNum=12 then
begin
//intSendNum:=
bCheckThread:=False;
PostMessage(frmHardWardInit.Handle,WM_RECEIVE_SUCCESS,0,0);
end;
if TempString='557AFB00D4' then //單片機返回錯誤幀,重發當前幀
begin
TempString:='';
//TempString:=arrCommand[i];
//intSendNum:=intSendNum-1;
//i:=i-1;
rReceiveStatus:=rComStop; //接收出錯,停止接收
end;
if rReceiveStatus=rComStop then //接收完成,發送
frmHardWardInit.SendData;
end;
end;
procedure TfrmHardWardInit.btnCloseClick(Sender: TObject);
begin
Close;
end;
function TfrmHardWardInit.getData:Boolean;
var
strSql: String;
//i: Integer;
//j: Integer;
intHigh: Integer;
intLow: Integer;
begin
strGB_CarLic:='';
strGB_CarType:='';
strGB_CarColor:='';
strSql:='SELECT Driver_ID,Driver_Licence,Car_VIN,Car_CharacterParameter,Car_DeviceID,Car_FirstDownload,Car_Type,Car_SpeedUpperLimit,Car_LicensePlate,Car_LicensePlateColor from View_Info_Car_Driver where Car_LicensePlate='''+edtCar_LicensePlate.Text+''' and Car_LicensePlateColor='''+edtCar_LicensePlateColor.Text+''' order by DriverDefault';
Adoquery.Close;
Adoquery.SQL.Clear;
Adoquery.SQL.Add(strSql);
Adoquery.Open;
if Adoquery.RecordCount=0 then
begin
ShowMessage('沒有找到符合條件的數據');
Result:=False;
Exit;
end
else
begin
edtVIN.Text:=Adoquery.FieldByName('Car_VIN').Value;
edtTime.Text:=DateTimeToStr(Now);
edtParameter.Text:=Adoquery.FieldByName('Car_CharacterParameter').Value;
edtCarType.Text:=Adoquery.FieldByName('Car_Type').Value;
edtLicensePlate.Text:=Adoquery.FieldByName('Car_LicensePlate').Value;
edtDeviceID.Text:=Adoquery.FieldByName('Car_DeviceID').Value;
edtFirstDown.Text:=Adoquery.FieldByName('Car_FirstDownload').Value;
edtMaxSpeed.Text:=Adoquery.FieldByName('Car_SpeedUpperLimit').Value;
if not Adoquery.Eof then
begin
edtDriverID1.Text:=Adoquery.FieldByName('Driver_ID').Value;
edtDriverLicence1.Text:=Adoquery.FieldByName('Driver_Licence').Value;
Adoquery.Next;
end;
if not Adoquery.Eof then
begin
edtDriverID2.Text:=Adoquery.FieldByName('Driver_ID').Value;
edtDriverLicence2.Text:=Adoquery.FieldByName('Driver_Licence').Value;
Adoquery.Next;
end;
if not Adoquery.Eof then
begin
edtDriverID3.Text:=Adoquery.FieldByName('Driver_ID').Value;
edtDriverLicence3.Text:=Adoquery.FieldByName('Driver_Licence').Value;
Adoquery.Next;
end;
if not Adoquery.Eof then
begin
edtDriverID4.Text:=Adoquery.FieldByName('Driver_ID').Value;
edtDriverLicence4.Text:=Adoquery.FieldByName('Driver_Licence').Value;
Adoquery.Next;
end;
if not Adoquery.Eof then
begin
edtDriverID5.Text:=Adoquery.FieldByName('Driver_ID').Value;
edtDriverLicence5.Text:=Adoquery.FieldByName('Driver_Licence').Value;
Adoquery.Next;
end;
{strSql:='SELECT GBCode FROM Code_GB WHERE GBCharacter='''+LeftStr(edtLicensePlate.Text,2)+'''';
Adoquery.Close;
Adoquery.SQL.Clear;
Adoquery.SQL.Add(strSql);
Adoquery.Open;
if NOT Adoquery.Eof then
strGB_CarLic:='蘇'
//strGB_CarLic:=Chr(StrToInt('$'+Copy(Adoquery.FieldByName('GBCode').Value,1,2)))+Chr(StrToInt('$'+Copy(Adoquery.FieldByName('GBCode').Value,3,2)))
else
begin
ShowMessage('該省份字庫中沒有找到,無法下載');
Result:=False;
Exit;
end; }
strGB_CarLic:=LeftStr(edtLicensePlate.Text,2);
{
j:=1;
for i:=1 to (Length(edtCarType.Text) div 2) do
begin
strSql:='SELECT GBCode FROM Code_GB WHERE GBCharacter='''+Copy(edtCarType.Text,j,2)+'''';
Adoquery.Close;
Adoquery.SQL.Clear;
Adoquery.SQL.Add(strSql);
Adoquery.Open;
if NOT Adoquery.Eof then
strGB_CarType:=strGB_CarType+Chr(StrToInt('$'+Copy(Adoquery.FieldByName('GBCode').Value,1,2)))+Chr(StrToInt('$'+Copy(Adoquery.FieldByName('GBCode').Value,3,2)))
else
begin
ShowMessage('該車輛類型字庫中沒有找到,無法下載');
Result:=False;
Exit;
end;
j:=j+2;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -