{------------------------------------------------------------------------------}
|
{µ¥ÔªÃû³Æ£ºuMain.pas }
|
{Ä£¿éÃû³Æ£ºÖ÷½ø³Ì£¬¸ºÔðÈË»ú½»»¥½çÃæ }
|
{Ä£¿é¹¦ÄÜ£º°üº¬×Ô¶¯¼ìÑéºÍÊÖ¶¯¼ìÑéÁ½ÖÖģʽ¡£ }
|
{ 1.×Ô¶¯¼ìÑéʱ£¬Çл»×Ô¶¯½çÃæ£¬Ëø¶¨ÊÖ¶¯²Ù×÷£¬½ÓÊÜPLCÖ¸Á·´À¡¼ìÑé½á¹û }
|
{ 2.ÊÖ¶¯¼ìÑéʱ£¬·ÖΪ¼ìÑé¡¢·ÖÎö¡¢Ð£×¼¡¢ÉèÖÃËĸö¹¦ÄÜÄ£¿é }
|
{½¨Á¢ÈÕÆÚ£º2023-10-24 }
|
{ÐÞ¸ÄÐ޸ģº2024-11-22 }
|
{°æÈ¨ËùÓУºÀîÁ¼Í¥ liangtingli@outlook.com }
|
{------------------------------------------------------------------------------}
|
//2024-07-08 ¿ªÆôÖ÷´°ÌåË¢ÐÂģʽ£¬·ÀÖ¹PageControlÇл»Ê±ImageÉÁ˸
|
//2024-10-14 Ôö¼ÓgmmdataÊý¾Ý¿â£¬ÓÃÀ´´æ´¢×Ô¶¯¼ì²âºÍÊÖ¶¯¼ì²âµÄËùÓÐÊý¾Ý¡£
|
//2024-11-22 ÁÙʱȥµôLicenseÊÚȨ£¬¹©²âÊÔÓá£
|
|
unit uMain;
|
|
interface
|
|
{$WARN UNIT_PLATFORM OFF}
|
{$WARN SYMBOL_PLATFORM OFF}
|
|
uses
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
Dialogs, jpeg, ExtCtrls, ComCtrls, XPMan, StdCtrls, Buttons, sBitBtn,
|
pngimage, sLabel, iComponent, iVCLComponent, iCustomComponent, StrUtils,
|
iSevenSegmentDisplay, iSevenSegmentClock, iSevenSegmentCharacter,
|
iSevenSegmentInteger, acImage, iOdometer, sEdit, sListBox,
|
iPlotComponent, iPlot, sComboBox, acPNG, acArcControls,
|
DateUtils, PubUtils, ActuatorLib,
|
// Unit 'FileCtrl' is specific to platform (Windows)
|
FileCtrl;
|
|
type
|
TfrmMain = class(TForm)
|
pc: TPageControl;
|
tsAuto: TTabSheet;
|
tsManual: TTabSheet;
|
tsAnalyse: TTabSheet;
|
tsStandard: TTabSheet;
|
tsSetting: TTabSheet;
|
tsSystem: TTabSheet;
|
imgBG: TImage;
|
imgBG1: TImage;
|
btnAuto: TsBitBtn;
|
btnManual: TsBitBtn;
|
sLabel1: TsLabel;
|
imgLogo: TImage;
|
ssClock: TiSevenSegmentClock;
|
ssYear: TiSevenSegmentInteger;
|
iSevenSegmentCharacter1: TiSevenSegmentCharacter;
|
ssMonth: TiSevenSegmentInteger;
|
iSevenSegmentCharacter2: TiSevenSegmentCharacter;
|
ssDay: TiSevenSegmentInteger;
|
sBitBtn1: TsBitBtn;
|
sBitBtn2: TsBitBtn;
|
ssYear1: TiSevenSegmentInteger;
|
iSevenSegmentCharacter3: TiSevenSegmentCharacter;
|
ssMonth1: TiSevenSegmentInteger;
|
iSevenSegmentCharacter4: TiSevenSegmentCharacter;
|
ssDay1: TiSevenSegmentInteger;
|
ssClock1: TiSevenSegmentClock;
|
imgLogo1: TImage;
|
sLabel2: TsLabel;
|
lblAutoInfo: TsLabel;
|
btnTest: TsBitBtn;
|
sBitBtn4: TsBitBtn;
|
sBitBtn5: TsBitBtn;
|
sBitBtn6: TsBitBtn;
|
tsTest: TTabSheet;
|
imgBar1: TImage;
|
imgBar2: TImage;
|
imgBar3: TImage;
|
imgBar4: TImage;
|
btnReturn: TsBitBtn;
|
imgInfo: TsImage;
|
sLabel4: TsLabel;
|
edtMoisture: TsEdit;
|
sLabel5: TsLabel;
|
edtWeightRatio: TsEdit;
|
edtWeight: TsEdit;
|
sLabel10: TsLabel;
|
edtTemp: TsEdit;
|
sLabel11: TsLabel;
|
sLabel12: TsLabel;
|
edtWater: TsEdit;
|
sLabel13: TsLabel;
|
sLabel14: TsLabel;
|
mtManClock: TiOdometer;
|
sLabel15: TsLabel;
|
lbType: TsListBox;
|
btnManTest: TsBitBtn;
|
sLabel16: TsLabel;
|
sLabel17: TsLabel;
|
sLabel18: TsLabel;
|
sLabel19: TsLabel;
|
plDisplay: TPanel;
|
iPlot1: TiPlot;
|
sLabel20: TsLabel;
|
edtTest1: TsEdit;
|
sLabel22: TsLabel;
|
sLabel23: TsLabel;
|
edtAutoCoef1: TsEdit;
|
sLabel24: TsLabel;
|
btnComp: TsBitBtn;
|
btnSave: TsBitBtn;
|
btnSwitchCoef: TsBitBtn;
|
btnVerify1: TsBitBtn;
|
sLabel25: TsLabel;
|
edtMois2: TsEdit;
|
edtAutoCoef2: TsEdit;
|
btnVerify2: TsBitBtn;
|
edtTest2: TsEdit;
|
sLabel26: TsLabel;
|
edtMois3: TsEdit;
|
edtAutoCoef3: TsEdit;
|
btnVerify3: TsBitBtn;
|
edtTest3: TsEdit;
|
sLabel27: TsLabel;
|
edtMois4: TsEdit;
|
edtAutoCoef4: TsEdit;
|
btnVerify4: TsBitBtn;
|
edtTest4: TsEdit;
|
sLabel28: TsLabel;
|
edtMois5: TsEdit;
|
edtAutoCoef5: TsEdit;
|
btnVerify5: TsBitBtn;
|
edtTest5: TsEdit;
|
sLabel29: TsLabel;
|
sLabel30: TsLabel;
|
edtVolume: TsEdit;
|
sLabel31: TsLabel;
|
sLabel32: TsLabel;
|
edtTare: TsEdit;
|
sLabel33: TsLabel;
|
btnSetting: TsBitBtn;
|
edtFreq: TsEdit;
|
edtDecay: TsEdit;
|
sLabel36: TsLabel;
|
sLabel37: TsLabel;
|
sLabel38: TsLabel;
|
edtStartFreq: TsEdit;
|
sLabel39: TsLabel;
|
sLabel40: TsLabel;
|
edtStopFreq: TsEdit;
|
sLabel41: TsLabel;
|
sLabel42: TsLabel;
|
edtStep: TsEdit;
|
sLabel43: TsLabel;
|
sLabel34: TsLabel;
|
sBitBtn7: TsBitBtn;
|
sBitBtn8: TsBitBtn;
|
sBitBtn9: TsBitBtn;
|
lbASK: TsListBox;
|
imgBottom1: TImage;
|
imgBottom2: TImage;
|
imgBottom3: TImage;
|
imgBottom4: TImage;
|
sLabel3: TsLabel;
|
lbType1: TsListBox;
|
edtManCoef1: TsEdit;
|
edtManCoef2: TsEdit;
|
edtManCoef3: TsEdit;
|
edtManCoef4: TsEdit;
|
edtManCoef5: TsEdit;
|
Bevel1: TBevel;
|
imgQuit: TsImage;
|
sBitBtn3: TsBitBtn;
|
imgBarSystem: TImage;
|
sLabel35: TsLabel;
|
sImage1: TsImage;
|
sImage2: TsImage;
|
edtMois1: TsEdit;
|
lblAutoRet: TsLabel;
|
lblAutoRet_error: TsLabel;
|
mtAutoClock: TiOdometer;
|
sLabel44: TsLabel;
|
lblManTest: TsLabel;
|
GroupBox1: TGroupBox;
|
GroupBox2: TGroupBox;
|
sLabel45: TsLabel;
|
edtIP: TsEdit;
|
edtPort: TsEdit;
|
sLabel47: TsLabel;
|
edtBaud: TsEdit;
|
cbSerialPort: TsComboBox;
|
sLabel48: TsLabel;
|
edtParity: TsEdit;
|
sLabel49: TsLabel;
|
sLabel50: TsLabel;
|
edtData_bit: TsEdit;
|
sLabel51: TsLabel;
|
edtStop_bit: TsEdit;
|
btnSaveInfo: TsBitBtn;
|
mtVerifyClock: TiOdometer;
|
lblVerify: TsLabel;
|
sLabel21: TsLabel;
|
Bevel2: TBevel;
|
GroupBox3: TGroupBox;
|
cbAutoRun: TCheckBox;
|
btnReset: TsBitBtn;
|
GroupBox4: TGroupBox;
|
sLabel52: TsLabel;
|
sLabel53: TsLabel;
|
edtTime1: TsEdit;
|
edtTime2: TsEdit;
|
sLabel54: TsLabel;
|
tsWeight: TTabSheet;
|
sBitBtn10: TsBitBtn;
|
Image1: TImage;
|
sLabel55: TsLabel;
|
sBitBtn11: TsBitBtn;
|
sBitBtn12: TsBitBtn;
|
Image2: TImage;
|
sLabel56: TsLabel;
|
sLabel57: TsLabel;
|
sLabel58: TsLabel;
|
sLabel59: TsLabel;
|
edtWTest1: TsEdit;
|
edtWTest2: TsEdit;
|
edtWTest3: TsEdit;
|
btnWeightCoef1: TsBitBtn;
|
btnWeightCoef2: TsBitBtn;
|
btnWeightCoef3: TsBitBtn;
|
sLabel60: TsLabel;
|
edtWeight1: TsEdit;
|
edtWeight2: TsEdit;
|
edtWeight3: TsEdit;
|
Bevel3: TBevel;
|
lblWeightCoef: TsLabel;
|
sLabel63: TsLabel;
|
sBitBtn13: TsBitBtn;
|
GroupBox5: TGroupBox;
|
sLabel61: TsLabel;
|
edtWTare: TsEdit;
|
sLabel62: TsLabel;
|
edtRange: TsEdit;
|
btnTareSet: TsBitBtn;
|
sLabel64: TsLabel;
|
edtWTest: TsEdit;
|
sBitBtn14: TsBitBtn;
|
cbDebug: TCheckBox;
|
lblAutoInfo1: TsLabel;
|
imgLink: TsImage;
|
sImage3: TsImage;
|
GroupBox6: TGroupBox;
|
sLabel65: TsLabel;
|
edtPassword: TsEdit;
|
sLabel66: TsLabel;
|
edtDelay: TsEdit;
|
sLabel67: TsLabel;
|
lblVersion: TsLabel;
|
sBitBtn15: TsBitBtn;
|
tsMaintain: TTabSheet;
|
Image3: TImage;
|
sLabel68: TsLabel;
|
sBitBtn16: TsBitBtn;
|
lblMaintain: TsLabel;
|
Bevel4: TBevel;
|
sBitBtn18: TsBitBtn;
|
sBitBtn19: TsBitBtn;
|
sBitBtn20: TsBitBtn;
|
sBitBtn21: TsBitBtn;
|
sBitBtn22: TsBitBtn;
|
sBitBtn23: TsBitBtn;
|
sBitBtn24: TsBitBtn;
|
sBitBtn25: TsBitBtn;
|
sBitBtn26: TsBitBtn;
|
Bevel5: TBevel;
|
cbTestAutoSave: TCheckBox;
|
sLabel6: TsLabel;
|
edtSampleName: TsEdit;
|
cbAutoSave: TCheckBox;
|
sLabel7: TsLabel;
|
edtPrefix: TEdit;
|
edtDir: TEdit;
|
btnDir: TsBitBtn;
|
btnOSK: TsBitBtn;
|
sBitBtn28: TsBitBtn;
|
sImage4: TsImage;
|
sImage5: TsImage;
|
sBitBtn17: TsBitBtn;
|
sBitBtn27: TsBitBtn;
|
tsIntercept: TTabSheet;
|
Image4: TImage;
|
sLabel8: TsLabel;
|
sBitBtn29: TsBitBtn;
|
Image5: TImage;
|
sLabel9: TsLabel;
|
edtInter1: TsEdit;
|
edtInter2: TsEdit;
|
edtInter3: TsEdit;
|
btnInter1: TsBitBtn;
|
btnInter2: TsBitBtn;
|
btnInter3: TsBitBtn;
|
sLabel46: TsLabel;
|
edtManVal: TsEdit;
|
sLabel69: TsLabel;
|
edtIntercept: TsEdit;
|
btnCopm1: TsBitBtn;
|
btnSave1: TsBitBtn;
|
sLabel70: TsLabel;
|
lbType2: TsListBox;
|
sLabel71: TsLabel;
|
mtInterClock: TiOdometer;
|
Bevel6: TBevel;
|
lblInter: TsLabel;
|
btnAdd: TsBitBtn;
|
btnDel: TsBitBtn;
|
sBitBtn30: TsBitBtn;
|
btnModfy: TsBitBtn;
|
sLabel72: TsLabel;
|
sLabel73: TsLabel;
|
sLabel74: TsLabel;
|
sLabel75: TsLabel;
|
sLabel76: TsLabel;
|
procedure FormCreate(Sender: TObject);
|
procedure FormShow(Sender: TObject);
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
procedure btnAutoClick(Sender: TObject);
|
procedure btnTestClick(Sender: TObject);
|
procedure btnReturnClick(Sender: TObject);
|
procedure edtMois1Click(Sender: TObject);
|
procedure imgInfoClick(Sender: TObject);
|
procedure imgQuitClick(Sender: TObject);
|
procedure edtMoistureKeyPress(Sender: TObject; var Key: Char);
|
procedure btnManTestClick(Sender: TObject);
|
procedure btnSettingClick(Sender: TObject);
|
procedure btnVerify1Click(Sender: TObject);
|
procedure btnCompClick(Sender: TObject);
|
procedure lbTypeClick(Sender: TObject);
|
procedure lbType1Click(Sender: TObject);
|
procedure btnSaveInfoClick(Sender: TObject);
|
procedure btnSaveClick(Sender: TObject);
|
procedure btnSwitchCoefClick(Sender: TObject);
|
procedure btnResetClick(Sender: TObject);
|
procedure btnWeightCoef1Click(Sender: TObject);
|
procedure btnTareSetClick(Sender: TObject);
|
procedure sBitBtn11Click(Sender: TObject);
|
procedure sBitBtn12Click(Sender: TObject);
|
procedure sBitBtn13Click(Sender: TObject);
|
procedure sBitBtn10Click(Sender: TObject);
|
procedure sBitBtn14Click(Sender: TObject);
|
procedure imgLinkClick(Sender: TObject);
|
procedure sBitBtn3Click(Sender: TObject);
|
procedure sBitBtn15Click(Sender: TObject);
|
procedure sBitBtn18Click(Sender: TObject);
|
procedure sBitBtn19Click(Sender: TObject);
|
procedure btnOSKClick(Sender: TObject);
|
procedure btnDirClick(Sender: TObject);
|
procedure sImage4Click(Sender: TObject);
|
procedure sBitBtn17Click(Sender: TObject);
|
procedure sBitBtn27Click(Sender: TObject);
|
procedure btnInter1Click(Sender: TObject);
|
procedure lbType2Click(Sender: TObject);
|
procedure btnCopm1Click(Sender: TObject);
|
procedure btnSave1Click(Sender: TObject);
|
procedure btnAddClick(Sender: TObject);
|
procedure btnDelClick(Sender: TObject);
|
procedure btnModfyClick(Sender: TObject);
|
protected
|
procedure CreateParams(var Params: TCreateParams); override;
|
private
|
{ Private declarations }
|
public
|
{ Public declarations }
|
sLoginPwd : String; //ÊÖ¶¯Ä£Ê½·µ»Ø¿ÚÁî
|
function ConnPlcAndWr():Integer; //Á¬½ÓÉ豸£¬·µ»ØÁ¬½Ó״̬
|
procedure DisconnPlcAndWr(); //¶Ï¿ªÉ豸
|
procedure StartTest(flag:Boolean); //×Ô¶¯/ÊÖ¶¯¼ì²â
|
procedure ShowCalc(edt:TsEdit; index:Integer); //¶¯Ì¬´´½¨¼ÆËãÆ÷
|
procedure ManLogin_ShowCalc(x,y:Integer); //ÊÖ¶¯Ä£Ê½×¨ÓÿÚÁî¿ò
|
procedure SetResetUI(flag:boolean);
|
end;
|
|
var
|
frmMain: TfrmMain;
|
|
implementation
|
|
uses
|
Global, MsgVar, log4me, uDM, uInit, uCalc, uSaveData, uTablet,
|
testThread, mantestThread, verifyThread, grainThread, interceptThread,
|
resetThread;
|
|
var
|
TestThread : TTestThread; //×Ô¶¯¼ì²âÏß³Ì
|
ManTestThread : TManTestThread; //ÊÖ¶¯¼ì²âÏß³Ì
|
VerifyThread : TVerifyThread; //У׼¼ì²âÏß³Ì
|
GrainThread : TGrainThread; //Ï·¢Á¸ÖÖÏß³Ì
|
InterceptThread : TInterceptThread; //µ÷Õû½Ø¾àÏß³Ì
|
ResetThread : TResetThread; //ÒÇÆ÷¸´Î»Ïß³Ì
|
|
{$R *.dfm}
|
//------- רÓú¯Êý -------------------------------------------------------------
|
//¿ªÆôÖ÷´°ÌåË¢ÐÂģʽ£¬·ÀÖ¹PageControlÇл»Ê±ImageÉÁ˸
|
procedure TfrmMain.CreateParams(var Params: TCreateParams);
|
begin
|
inherited;
|
Params.ExStyle := 33554432; //0x 02 00 00 00
|
end;
|
|
//------- ×Ô¶¨Ò庯Êý -----------------------------------------------------------
|
//Á¬½ÓË®·ÖÒǺÍPLCÉ豸
|
//·µ»ØÖµ£º0-Á¬½Ó³É¹¦
|
// 1-PLCÁ¬½Óʧ°Ü
|
// 2-Wr Á¬½Óʧ°Ü
|
// 3-PLCºÍWr Á¬½Óʧ°Ü
|
function TfrmMain.ConnPlcAndWr():Integer;
|
begin
|
//Á¬½ÓË®·ÖÒǺÍPLCÉ豸
|
hPlcDev := CreatePlcDevice(PChar(PlcConn.ip), PlcConn.port);
|
hWrDev := CreateWrDevice(PChar(WrConn.SerialPort), WrConn.baud, WrConn.parity, WrConn.data_bit, WrConn.stop_bit);
|
//Á¬½ÓÉ豸²¢ÏÔʾ
|
result := 0;
|
if ConnectDevice(hPlcDev)<0 then result := 1;
|
if ConnectDevice(hWrDev)<0 then result := result + 2;
|
//¸üнçÃæ£¬¼Ç¼ÈÕÖ¾
|
if result=0 then begin
|
lblAutoRet_error.Caption := '';
|
log4info(Format('Á¬½Ó£ºPLCºÍË®·ÖÒÇÉ豸Á¬½Ó³É¹¦£¬·µ»ØÖµ=[%d].',[result]));
|
end
|
else begin
|
if result=1 then
|
lblAutoRet_error.Caption := 'PLCÁ¬½Óʧ°Ü£¡'
|
else if result=2 then
|
lblAutoRet_error.Caption := 'Ë®·ÖÒÇÁ¬½Óʧ°Ü£¡'
|
else
|
lblAutoRet_error.Caption := 'PLC¡¢Ë®·ÖÒÇÁ¬½Óʧ°Ü£¡';
|
log4error(Format('´íÎó£º%s ·µ»ØÖµ=[%d].',[lblAutoRet_error.Caption, result]));
|
end;
|
end;
|
|
//¶Ï¿ªË®·ÖÒǺÍPLCÉ豸
|
procedure TfrmMain.DisconnPlcAndWr();
|
begin
|
//¶Ï¿ªÉ豸
|
Disconnect(hPlcDev);
|
Disconnect(hWrDev);
|
//Ïú»ÙÉ豸
|
DestroyDevice(hPlcDev);
|
DestroyDevice(hWrDev);
|
log4info('Ïú»Ù£º¹Ø±Õ PLCºÍË®·ÖÒÇÉ豸¾ä±ú£¡');
|
end;
|
|
//×Ô¶¨Ò庯Êý£º×Ô¶¯/ÊÖ¶¯Á¬½ÓÉ豸
|
//×Ô¶¯¼ì²âʱ£¬Æô¶¯Ïß³ÌAutoTest()
|
//ÊÖ¶¯¼ì²âʱ£¬Ïú»ÙỊ̈߳¬µÈ´ý²Ù×÷
|
//×¢Ò⣺Á¬½ÓÉ豸·ÅÔÚÖ÷½ø³Ì³õʼ»¯Ê±Íê³É£¡£¡£¡
|
procedure TfrmMain.StartTest(flag:Boolean);
|
begin
|
//¿ªÆô×Ô¶¯¼ì²âģʽ
|
if flag then begin
|
//¸üÐÂÐÅÏ¢
|
lblAutoInfo.Caption := 'É豸ÒѾÍÐ÷£¬ÇëµÈ´ý......';
|
log4info('ģʽ£ºÇл»×Ô¶¯¼ì²âģʽ£¡');
|
//Æô¶¯¼ì²â
|
if m_TestThread=0 then begin
|
TestThread := TTestThread.Create();
|
m_TestThread := TestThread.Handle;
|
log4info('ģʽ£º×Ô¶¯¼ì²âģʽ£¬Æô¶¯ TestThread()Ị̈߳¡');
|
end;
|
end
|
//Çл»µ½ÊÖ¶¯Ä£Ê½£¬Ïú»ÙÏß³Ì
|
else begin
|
log4info('ģʽ£ºÇл»ÊÖ¶¯¼ì²âģʽ£¡');
|
if m_TestThread<>0 then begin
|
TestThread.Terminate;
|
log4info('ģʽ£ºÊÖ¶¯¼ì²âģʽ£¬Í£Ö¹ TestThread()Ị̈߳¬×¼±¸ÊÖ¶¯²Ù×÷£¡');
|
end;
|
end;
|
end;
|
|
//------- ½çÃæ³õʼ»¯ -----------------------------------------------------------
|
procedure TfrmMain.FormCreate(Sender: TObject);
|
begin
|
InitGlobal(); //³õʼ»¯È«¾Ö±äÁ¿
|
InitSystemDir(); //½¨Á¢ÏµÍ³Îļþ¼Ð
|
InitDatas(); //³õʼ»¯²É¼¯Êý¾Ý½á¹¹
|
InitConfig(); //´´½¨config²ÎÊýÊý¾Ý¿â
|
InitConn(); //´´½¨connͨѶÊý¾Ý¿â
|
InitGrain(); //´´½¨grainÁ¸ÖÖÊý¾Ý¿â
|
InitTestDB(); //´´½¨test´æ´¢Êý¾Ý¿â
|
InitWeight(); //´´½¨weightÖØÁ¿Ð£×¼Êý¾Ý
|
InitManager(); //´´½¨manager¹ÜÀí¿ÚÁîÊý¾Ý¿â
|
LoadParam(); //×°ÔØconfig¡¢conn¡¢grain¡¢wiehgit¡¢manager²ÎÊý
|
LoadSystemInfo(); //×°ÔØsystem²ÎÊý
|
|
//»ñÈ¡Èí¼þ°æÈ¨ÐÅÏ¢
|
GetVersionInfo(Application.ExeName);
|
|
//µ÷ÕûÈË»ú½çÃæ×î´ó»¯
|
if (Screen.Width<=1024)and(Screen.Height<=768) then begin
|
frmMain.BorderStyle := bsNone;
|
frmMain.WindowState := wsmaximized;
|
end;
|
end;
|
|
procedure TfrmMain.FormShow(Sender: TObject);
|
var
|
i : Integer;
|
begin
|
//¸ù¾ÝÆô¶¯ÑÓʱ²ÎÊý£¬ÍÆ³ÙÆô¶¯Ê±¼ä
|
Sleep(SysConfig.delay * 1000);
|
|
//³õʼ»¯pcÒ³Ãæ£¬Ä¬ÈÏÏÔʾɨÃèÒ³Ãæ
|
for i := 0 to pc.PageCount - 1 do
|
pc.Pages[i].TabVisible := False;
|
pc.ActivePage := tsAuto;
|
//¼ÓÔØÊÚȨ¼ì²éÄ£¿é
|
//²âÊÔ°æ±¾£¬×¢ÊÍÈí¼þÊÚȨ¹¦ÄÜ
|
//RegCheckMode();
|
|
//¼ÓÔØ²ÎÊýµ½½çÃæ
|
LoadOptions();
|
//Á¬½ÓË®·ÖÒǺÍPLCÉ豸
|
log4info('ģʽ£º¿ªÆô×Ô¶¯¼ì²âģʽ£¡');
|
glConn_err := ConnPlcAndWr();
|
//Á¬½Ó³É¹¦Ê±£¬¿ªÆô×Ô¶¯Ä£Ê½
|
//²»¹ÜplcºÍwrÁ¬½ÓÊÇ·ñʧ°Ü£¬¶¼¿ªÆô×Ô¶¯¼ì²âỊ̈߳¬liliangting2025.1.17
|
//if glConn_err = 0 then
|
StartTest(true);
|
end;
|
|
procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
|
begin
|
//Ïú»ÙÉ豸
|
DisconnPlcAndWr();
|
end;
|
|
//------- Çл»×Ô¶¯--ÊÖ¶¯Ä£Ê½----------------------------------------------------
|
//Çл»×Ô¶¯Ä£Ê½
|
procedure TfrmMain.btnAutoClick(Sender: TObject);
|
begin
|
case TsBitBtn(Sender).Tag of
|
1:begin//×Ô¶¯Ä£Ê½
|
pc.ActivePage := tsAuto;
|
//¿ªÆô×Ô¶¯Ïß³Ì
|
if glConn_err = 0 then
|
StartTest(true);
|
end;
|
2:begin//ÊÖ¶¯Ä£Ê½
|
//ÏÈÑéÖ¤¿ÚÁÕýÈ·²ÅÔÊÐíÇл»
|
ManLogin_ShowCalc(300,250);
|
//Ïú»Ù×Ô¶¯¼ì²âÏß³Ì
|
if sLoginPwd=SysConfig.password then begin
|
pc.ActivePage := tsManual;
|
StartTest(false);
|
end;
|
end;
|
end;
|
end;
|
|
//ÊÖ¶¯Ä£Ê½µ¼º½°´Å¥
|
procedure TfrmMain.btnTestClick(Sender: TObject);
|
begin
|
case TsBitBtn(Sender).Tag of
|
3:begin//¼ì²â
|
pc.ActivePage := tsTest;
|
//¼ÓÔØÁ¸ÖÖÁбí
|
queryGrainlistSql(t_Grain, lbType);
|
end;
|
4:begin//·ÖÎö
|
pc.ActivePage := tsAnalyse;
|
end;
|
5:begin//У׼
|
pc.ActivePage := tsStandard;
|
//¼ÓÔØÁ¸ÖÖÁбí
|
queryGrainlistSql(t_Grain, lbType1);
|
end;
|
6:begin//ÉèÖÃ
|
pc.ActivePage := tsSetting;
|
end;
|
end;
|
end;
|
|
//·µ»ØÊÖ¶¯Ä£Ê½--Ê×Ò³
|
procedure TfrmMain.btnReturnClick(Sender: TObject);
|
begin
|
pc.ActivePage := tsManual;
|
end;
|
|
//·µ»Ø×Ô¶¯Ä£Ê½--Ê×Ò³
|
procedure TfrmMain.sBitBtn3Click(Sender: TObject);
|
begin
|
pc.ActivePage := tsTest;
|
end;
|
|
//Çл»µ½ÏµÍ³Ò³Ãæ
|
procedure TfrmMain.imgInfoClick(Sender: TObject);
|
begin
|
//ÏÈÑéÖ¤¿ÚÁÕýÈ·²ÅÔÊÐí½øÈë
|
ManLogin_ShowCalc(300,250);
|
//Ïú»Ù×Ô¶¯¼ì²âÏß³Ì
|
if sLoginPwd=SysConfig.password then
|
pc.ActivePage := tsSystem;
|
end;
|
|
//ÊÖ¶¯Á¬½ÓÉ豸
|
procedure TfrmMain.imgLinkClick(Sender: TObject);
|
begin
|
//ÌáʾÐÅÏ¢
|
lblAutoInfo.Caption := 'É豸ÕýÔÚÖØÁ¬£¬ÇëµÈ´ý......';
|
log4info('ģʽ£ºÊÖ¶¯ÖØÁ¬ PLCºÍË®·ÖÒÇÉ豸......');
|
//Ïú»ÙÉ豸
|
DisconnPlcAndWr();
|
//Á¬½ÓË®·ÖÒǺÍPLCÉ豸
|
glConn_err := ConnPlcAndWr();
|
//Á¬½Ó³É¹¦Ê±£¬¿ªÆô×Ô¶¯Ä£Ê½
|
if glConn_err = 0 then
|
StartTest(true);
|
end;
|
|
//Í˳öÉÏλ»ú
|
procedure TfrmMain.imgQuitClick(Sender: TObject);
|
begin
|
close();
|
end;
|
|
//------- У׼¹¦ÄÜ -------------------------------------------------------------
|
//´ÓÒÇÆ÷Ð£×¼Ìø×ªµ½ÖØÁ¿Ð£×¼
|
procedure TfrmMain.sBitBtn13Click(Sender: TObject);
|
begin
|
pc.ActivePage := tsWeight;
|
//¸üе±Ç°¹«Ê½
|
if Wg.b>0 then
|
lblWeightCoef.Caption := Format('У׼¹«Ê½ Y = %.4fX + %.4f£¬Îó²î¡À%.4f £¡', [Wg.k,Wg.b,Wg.range])
|
else
|
lblWeightCoef.Caption := Format('У׼¹«Ê½ Y = %.4fX - %.4f£¬Îó²î¡À%.4f £¡', [Wg.k,Abs(Wg.b),Wg.range]);
|
//¸üнçÃæ
|
edtWTare.Text := FloatToStr(Wg.tare);
|
edtRange.Text := FloatToStr(Wg.range);
|
end;
|
|
//¼ÆËã½Ø¾à
|
procedure TfrmMain.sBitBtn27Click(Sender: TObject);
|
begin
|
pc.ActivePage := tsIntercept;
|
//¼ÓÔØÁ¸ÖÖÁбí
|
queryGrainlistSql(t_Grain, lbType2);
|
end;
|
|
//·µ»ØÒÇÆ÷У׼
|
procedure TfrmMain.sBitBtn10Click(Sender: TObject);
|
begin
|
pc.ActivePage := tsStandard;
|
//¼ÓÔØÁ¸ÖÖÁбí
|
queryGrainlistSql(t_Grain, lbType1);
|
sLabel3.Caption := 'Á¸Ê³ÖÖÀà';
|
end;
|
|
//------- EditÊäÈëÇø -----------------------------------------------------------
|
//¹«¹²º¯Êý£º¶¯Ì¬´´½¨¼ÆËãÆ÷
|
procedure TfrmMain.ShowCalc(edt:TsEdit; index:Integer);
|
var
|
p : TPoint;
|
begin
|
frmCalc := TfrmCalc.Create(Application); //´´½¨¶¯Ì¬´°Ìå
|
frmCalc.strParam := edt.Text; //´«ÈëÐÞ¸ÄÖµ
|
p := GetCurrMsgPos(index); //¼ÆËãÊäÈë¿ò×ø±ê
|
frmCalc.Left := p.x; //Ð޸ļÆËãÆ÷×ø±ê
|
frmCalc.Top := p.y;
|
frmCalc.ShowModal; //ģ̬´°¿ÚÏÔʾcalc
|
end;
|
|
//ÊÖ¶¯µÇ¼רÓÃÊäÈë¿ò
|
procedure TfrmMain.ManLogin_ShowCalc(x,y:Integer);
|
begin
|
frmCalc := TfrmCalc.Create(Application); //´´½¨¶¯Ì¬´°Ìå
|
frmCalc.strParam := ''; //´«ÈëÐÞ¸ÄÖµ
|
frmCalc.Left := frmMain.Left + x; //Ð޸ļÆËãÆ÷×ø±ê
|
frmCalc.Top := frmMain.Top + y;
|
glCurrFocus := 0; //½¹µã±àºÅ-->frmMain.sLoginPwd
|
frmCalc.ShowModal; //ģ̬´°¿ÚÏÔʾcalc
|
end;
|
|
//È·¶¨ÊäÈëEdit±àºÅ£¬¶¨Î»¼üÅÌÏÔʾλÖ㬵¯³öС¼üÅÌ
|
procedure TfrmMain.edtMois1Click(Sender: TObject);
|
begin
|
case TsEdit(Sender).Tag of
|
1:begin
|
glCurrFocus := 1; //ÉèÖÃEdit½¹µã±àºÅ
|
ShowCalc(edtMois1, glCurrFocus); //ÏÔʾС¼üÅÌ
|
end;
|
2:begin
|
glCurrFocus := 2;
|
ShowCalc(edtMois2, glCurrFocus);
|
end;
|
3:begin
|
glCurrFocus := 3;
|
ShowCalc(edtMois3, glCurrFocus);
|
end;
|
4:begin
|
glCurrFocus := 4;
|
ShowCalc(edtMois4, glCurrFocus);
|
end;
|
5:begin
|
glCurrFocus := 5;
|
ShowCalc(edtMois5, glCurrFocus);
|
end;
|
6:begin
|
glCurrFocus := 6;
|
ShowCalc(edtManCoef1, glCurrFocus);
|
end;
|
7:begin
|
glCurrFocus := 7;
|
ShowCalc(edtManCoef2, glCurrFocus);
|
end;
|
8:begin
|
glCurrFocus := 8;
|
ShowCalc(edtManCoef3, glCurrFocus);
|
end;
|
9:begin
|
glCurrFocus := 9;
|
ShowCalc(edtManCoef4, glCurrFocus);
|
end;
|
10:begin
|
glCurrFocus := 10;
|
ShowCalc(edtManCoef5, glCurrFocus);
|
end;
|
11:begin
|
glCurrFocus := 11;
|
ShowCalc(edtIp, glCurrFocus);
|
end;
|
12:begin
|
glCurrFocus := 12;
|
ShowCalc(edtPort, glCurrFocus);
|
end;
|
13:begin
|
glCurrFocus := 13;
|
ShowCalc(edtTime1, glCurrFocus);
|
end;
|
14:begin
|
glCurrFocus := 14;
|
ShowCalc(edtTime2, glCurrFocus);
|
end;
|
15:begin
|
glCurrFocus := 15;
|
ShowCalc(edtWeight1, glCurrFocus);
|
end;
|
16:begin
|
glCurrFocus := 16;
|
ShowCalc(edtWeight2, glCurrFocus);
|
end;
|
17:begin
|
glCurrFocus := 17;
|
ShowCalc(edtWeight3, glCurrFocus);
|
end;
|
18:begin
|
glCurrFocus := 18;
|
ShowCalc(edtWTare, glCurrFocus);
|
end;
|
19:begin
|
glCurrFocus := 19;
|
ShowCalc(edtRange, glCurrFocus);
|
end;
|
20:begin
|
glCurrFocus := 20;
|
ShowCalc(edtVolume, glCurrFocus);
|
end;
|
21:begin
|
glCurrFocus := 21;
|
ShowCalc(edtTare, glCurrFocus);
|
end;
|
22:begin
|
glCurrFocus := 22;
|
ShowCalc(edtDelay, glCurrFocus);
|
end;
|
23:begin
|
glCurrFocus := 23;
|
ShowCalc(edtPassword, glCurrFocus);
|
end;
|
24:begin//µ÷Õû½Ø¾à-È˹¤º¬Ë®ÂÊ
|
glCurrFocus := 24; //ÉèÖÃEdit½¹µã±àºÅ
|
ShowCalc(edtManVal, glCurrFocus);//ÏÔʾС¼üÅÌ
|
end;
|
25:begin//µ÷Õû½Ø¾à-ÊÖ¶¯ÊäÈë½Ø¾à
|
glCurrFocus := 25;
|
ShowCalc(edtIntercept, glCurrFocus);
|
end;
|
end;
|
end;
|
|
//ÆäËûEditÉèÖÃÖ»¶Á£¬·ÀÖ¹ÊäÈëÊýÖµ
|
procedure TfrmMain.edtMoistureKeyPress(Sender: TObject; var Key: Char);
|
begin
|
Key := Chr(0);
|
end;
|
|
//------- ÊÖ¶¯¼ì²â --------------------------------------
|
//ÊÖ¶¯--¼ì²â£¬Ñ¡ÔñÁ¸ÖÖ
|
procedure TfrmMain.lbTypeClick(Sender: TObject);
|
var
|
ss : string;
|
begin
|
//ÈÝ´í´¦Àí
|
if lbType.ItemIndex<0 then exit;
|
|
//ÉèÖÃÏ̱߳êÖ¾
|
s_Grain := 1; //1-ÊÖ¶¯¼ì²â£»2-ÊÖ¶¯Ð£×¼£»3-µ÷Õû½Ø¾à
|
|
//¼ì²éÊÇ·ñÔÚÊÖ¶¯²âÊÔÖÐ
|
if m_ManTestThread<>0 then begin
|
MessageBox(handle,'Ìáʾ£ºµ±Ç°ÕýÔÚ½øÐк¬Ë®Âʼì²â£¬ÇëÉÔºóÔÙÊÔ£¡','¾¯¸æ¶Ô»°¿ò',MB_OK+MB_ICONWARNING);
|
lbType.ItemIndex := glCurrIndex;
|
exit;
|
end;
|
|
//¼ì²éÏß³ÌÊÇ·ñÆô¶¯
|
if m_GrainThread=0 then begin
|
glCurrIndex := lbType.ItemIndex;
|
ss := lbType.Items[glCurrIndex];
|
//¼ÓÔØÁ¸ÖÖУ׼ϵÊý
|
Grain := queryGrainSql(t_Grain, ss);
|
//³õʼ»¯½çÃæ
|
edtMoisture.Clear;
|
edtWeightRatio.Clear;
|
edtWeight.Clear;
|
edtTemp.Clear;
|
edtWater.Clear;
|
//Æô¶¯Ï·¢Á¸ÖÖÏß³Ì
|
GrainThread := TGrainThread.Create();
|
m_GrainThread := GrainThread.Handle;
|
end
|
else begin
|
//Èç¹ûÏß³Ìδ½áÊø£¬²»ÄÜÇ¿ÐÐÖÕÖ¹£¬½öÌáʾ£¡£¡£¡
|
//GrainThread.Terminate;
|
MessageBox(handle,'Ìáʾ£ºµ±Ç°Á¸ÖÖÏ·¢Ö¸ÁîÉÐδ½áÊø£¬ÇëÉÔºóÔÙÊÔ£¡','¾¯¸æ¶Ô»°¿ò',MB_OK+MB_ICONWARNING);
|
lbType.ItemIndex := glCurrIndex;
|
end;
|
end;
|
|
//ÊÖ¶¯¼ì²âº¬Ë®ÂÊ
|
procedure TfrmMain.btnManTestClick(Sender: TObject);
|
begin
|
//Ïȱ£´æÁÙʱ²ÎÊý
|
smp.flag := cbTestAutoSave.Checked;
|
smp.info := edtSampleName.Text;
|
cbAutoSave.Checked := cbTestAutoSave.Checked;//ͬ²½¸üÐÂϵͳ½çÃæ
|
if FileExists(glConn_db) then begin
|
//Ôö¼ÓÊý¾Ý´æ´¢²ÎÊý
|
updateConfigSql(t_Conn,'AutoSave',BoolToString(smp.flag));
|
updateConfigSql(t_Conn,'SampleName', smp.info);
|
//¼Ç¼ÈÕÖ¾
|
log4info(Format('Ìáʾ£ºÊÖ¶¯¼ì²âʱ£¬¸üР%s-Ñù±¾´æ´¢²ÎÊý.',[t_Conn]));
|
end;
|
|
//Æô¶¯ÊÖ¶¯¼ì²âỊ̈߳¬ÓÅ»¯½çÃæÏÔʾ
|
if (m_ManTestThread=0)and(m_VerifyThread=0)and(m_InterceptThread=0) then begin
|
//³õʼ»¯½çÃæ
|
lblManTest.Caption := '¿ªÊ¼º¬Ë®Âʼì²â.';
|
edtMoisture.Clear;
|
edtWeightRatio.Clear;
|
edtWeight.Clear;
|
edtTemp.Clear;
|
edtWater.Clear;
|
//Æô¶¯ÊÖ¶¯¼ì²âÏß³Ì
|
ManTestThread := TManTestThread.Create();
|
m_ManTestThread := ManTestThread.Handle;
|
end
|
else begin
|
if m_ManTestThread<>0 then
|
MessageBox(handle,'Ìáʾ£ºµ±Ç°¼ì²â¹ý³ÌÉÐδ½áÊø£¬ÇëÉÔºóÔÙÊÔ£¡','¾¯¸æ¶Ô»°¿ò',MB_OK+MB_ICONWARNING);
|
if m_VerifyThread<>0 then
|
MessageBox(handle,'Ìáʾ£ºÊÖ¶¯Ð£×¼¹ý³ÌÉÐδ½áÊø£¬ÇëÉÔºóÔÙÊÔ£¡','¾¯¸æ¶Ô»°¿ò',MB_OK+MB_ICONWARNING);
|
if m_InterceptThread<>0 then
|
MessageBox(handle,'Ìáʾ£ºµ÷Õû½Ø¾à¹ý³ÌÉÐδ½áÊø£¬ÇëÉÔºóÔÙÊÔ£¡','¾¯¸æ¶Ô»°¿ò',MB_OK+MB_ICONWARNING);
|
end;
|
end;
|
|
//------- ÊÖ¶¯Ð£×¼ ------------------------------------------------------
|
//ÒÇÆ÷У׼--Ñ¡ÔñÁ¸ÖÖ
|
procedure TfrmMain.lbType1Click(Sender: TObject);
|
var
|
ss : string;
|
begin
|
//ÈÝ´í´¦Àí
|
if lbType1.ItemIndex<0 then exit;
|
|
//ÉèÖÃÏ̱߳êÖ¾
|
s_Grain := 2; //1-ÊÖ¶¯¼ì²â£»2-ÊÖ¶¯Ð£×¼£»3-µ÷Õû½Ø¾à
|
|
//¼ì²éÊÇ·ñÔÚÊÖ¶¯²âÊÔÖÐ
|
if m_VerifyThread<>0 then begin
|
MessageBox(handle,'Ìáʾ£ºµ±Ç°ÕýÔÚ½øÐÐУ׼¼ì²â£¬ÇëÉÔºóÔÙÊÔ£¡','¾¯¸æ¶Ô»°¿ò',MB_OK+MB_ICONWARNING);
|
lbType1.ItemIndex := glCurrIndex;
|
exit;
|
end;
|
|
//¼ì²éÏß³ÌÊÇ·ñÆô¶¯
|
if m_GrainThread=0 then begin
|
//·µ»ØÖµ
|
glCurrIndex := lbType1.ItemIndex;
|
ss := lbType1.Items[glCurrIndex];
|
//¼ÓÔØÁ¸ÖÖУ׼ϵÊý
|
Grain := queryGrainSql(t_Grain, ss);
|
//Æô¶¯Ï·¢Á¸ÖÖÏß³Ì
|
GrainThread := TGrainThread.Create();
|
m_GrainThread := GrainThread.Handle;
|
end
|
else begin
|
//Èç¹ûÏß³Ìδ½áÊø£¬½öÌáʾ£¡£¡£¡
|
MessageBox(handle,'Ìáʾ£ºµ±Ç°Á¸ÖÖÏ·¢Ö¸ÁîÉÐδ½áÊø£¬ÇëÉÔºóÔÙÊÔ£¡','¾¯¸æ¶Ô»°¿ò',MB_OK+MB_ICONWARNING);
|
lbType1.ItemIndex := glCurrIndex;
|
end;
|
end;
|
|
//ÊÖ¶¯¼ì²âÒ»×éµçƽ
|
procedure TfrmMain.btnVerify1Click(Sender: TObject);
|
begin
|
glBtnTag := TsBitBtn(Sender).Tag;
|
|
//Æô¶¯Ð£×¼Ị̈߳¬ÓÅ»¯½çÃæÏÔʾ
|
if (m_VerifyThread=0)and(m_ManTestThread=0)and(m_InterceptThread=0) then begin
|
//³õʼ»¯½çÃæ
|
lblVerify.Caption := '¿ªÊ¼Ð£×¼¼ì²â.';
|
//Æô¶¯ÊÖ¶¯¼ì²âÏß³Ì
|
VerifyThread := TVerifyThread.Create();
|
m_VerifyThread := VerifyThread.Handle;
|
end
|
else begin
|
if m_VerifyThread<>0 then
|
lblVerify.Caption := 'µ±Ç°Ð£×¼¹ý³ÌÉÐδ½áÊø£¬ÇëÉÔºóÔÙÊÔ£¡';
|
if m_ManTestThread<>0 then
|
lblVerify.Caption := 'ÊÖ¶¯¼ì²â¹ý³ÌÉÐδ½áÊø£¬ÇëÉÔºóÔÙÊÔ£¡';
|
if m_InterceptThread<>0 then
|
lblInter.Caption := 'µ÷Õû½Ø¾à¹ý³ÌÉÐδ½áÊø£¬ÇëÉÔºóÔÙÊÔ£¡';
|
end;
|
end;
|
|
//ÊÖ¶¯¼ÆËãУ׼ϵÊý
|
procedure TfrmMain.btnCompClick(Sender: TObject);
|
var
|
vccval,inputval,coef : array [0..4] of double;
|
begin
|
//Ìî³ä¼ÆËãÌõ¼þ
|
vccval[0] := StrToFloat(edtTest1.Text);
|
vccval[1] := StrToFloat(edtTest2.Text);
|
vccval[2] := StrToFloat(edtTest3.Text);
|
vccval[3] := StrToFloat(edtTest4.Text);
|
vccval[4] := StrToFloat(edtTest5.Text);
|
inputval[0] := StrToFloat(edtMois1.Text);
|
inputval[1] := StrToFloat(edtMois2.Text);
|
inputval[2] := StrToFloat(edtMois3.Text);
|
inputval[3] := StrToFloat(edtMois4.Text);
|
inputval[4] := StrToFloat(edtMois5.Text);
|
//¿ªÊ¼¼ÆËã
|
//Linearize(@vccval, @inputval, @coef, 3, 5);
|
PolyNomialFit(@vccval, @inputval, @coef, 3, 5);
|
//Êä³ö½á¹û
|
Grain.Coef[0] := FloatToStr(coef[0]);
|
Grain.Coef[1] := FloatToStr(coef[1]);
|
Grain.Coef[2] := FloatToStr(coef[2]);
|
Grain.Coef[3] := FloatToStr(coef[3]);
|
Grain.Coef[4] := FloatToStr(coef[4]);
|
edtAutoCoef1.Text := Grain.coef[0];
|
edtAutoCoef2.Text := Grain.coef[1];
|
edtAutoCoef3.Text := Grain.coef[2];
|
edtAutoCoef4.Text := Grain.coef[3];
|
edtAutoCoef5.Text := Grain.coef[4];
|
//½çÃæÏÔʾ¼ÆËã½áÊø
|
lblVerify.Caption := 'Íê³ÉÒÇÆ÷У׼£¬½á¹ûÊä³öÖÁ[×Ô¶¯Ð£×¼ÏµÊý].';
|
end;
|
|
//ÒÇÆ÷У׼--Çл»ÏµÊý
|
procedure TfrmMain.btnSwitchCoefClick(Sender: TObject);
|
var
|
s1,s2,s3,s4,s5 : string;
|
begin
|
s1 := edtManCoef1.Text;
|
s2 := edtManCoef2.Text;
|
s3 := edtManCoef3.Text;
|
s4 := edtManCoef4.Text;
|
s5 := edtManCoef5.Text;
|
edtManCoef1.Text := edtAutoCoef1.Text;
|
edtManCoef2.Text := edtAutoCoef2.Text;
|
edtManCoef3.Text := edtAutoCoef3.Text;
|
edtManCoef4.Text := edtAutoCoef4.Text;
|
edtManCoef5.Text := edtAutoCoef5.Text;
|
edtAutoCoef1.Text := s1;
|
edtAutoCoef2.Text := s2;
|
edtAutoCoef3.Text := s3;
|
edtAutoCoef4.Text := s4;
|
edtAutoCoef5.Text := s5;
|
end;
|
|
//ÒÇÆ÷У׼--±£´æÐ£×¼ÏµÊý
|
procedure TfrmMain.btnSaveClick(Sender: TObject);
|
begin
|
//¸üÐÂGrainÊý¾Ý½á¹¹
|
Grain.Coef[0] := edtAutoCoef1.Text;
|
Grain.Coef[1] := edtAutoCoef2.Text;
|
Grain.Coef[2] := edtAutoCoef3.Text;
|
Grain.Coef[3] := edtAutoCoef4.Text;
|
Grain.Coef[4] := edtAutoCoef5.Text;
|
|
//±£´æÏµÊý
|
SaveVerifyParam();
|
//¼Ç¼ÈÕÖ¾²¢µ¯¿òÌáʾ
|
lblVerify.Caption := Format('±£´æÐµÄУ׼ϵÊýµ½ [%s]Á¸ÖÖÐÅÏ¢£¡',[Grain.Name]);
|
log4Info(Format('Á¸ÖÖ£º±£´æ[%s]Á¸ÖÖÐÅÏ¢, ´úÂë[%d], У׼ϵÊý[%s,%s,%s,%s,%s]',
|
[Grain.Name,
|
Grain.Code,
|
Grain.Coef[0],
|
Grain.Coef[1],
|
Grain.Coef[2],
|
Grain.Coef[3],
|
Grain.Coef[4]]));
|
end;
|
|
//------- µ÷Õû½Ø¾à¹¦ÄÜÄ£¿é -----------------------------------------------------
|
//µ÷Õû½Ø¾à--Ñ¡ÔñÁ¸ÖÖ
|
procedure TfrmMain.lbType2Click(Sender: TObject);
|
var
|
ss : string;
|
begin
|
//ÈÝ´í´¦Àí
|
if lbType2.ItemIndex<0 then exit;
|
|
//ÉèÖÃÏ̱߳êÖ¾
|
s_Grain := 3; //1-ÊÖ¶¯¼ì²â£»2-ÊÖ¶¯Ð£×¼£»3-µ÷Õû½Ø¾à
|
|
//¼ì²éÊÇ·ñÔÚÊÖ¶¯²âÊÔÖÐ
|
if m_InterceptThread<>0 then begin
|
MessageBox(handle,'Ìáʾ£ºµ±Ç°ÕýÔÚµ÷Õû½Ø¾à£¬ÇëÉÔºóÔÙÊÔ£¡','¾¯¸æ¶Ô»°¿ò',MB_OK+MB_ICONWARNING);
|
lbType2.ItemIndex := glCurrIndex;
|
exit;
|
end;
|
|
//¼ì²éÏß³ÌÊÇ·ñÆô¶¯
|
if m_GrainThread=0 then begin
|
//·µ»ØÖµ
|
glCurrIndex := lbType2.ItemIndex;
|
ss := lbType2.Items[glCurrIndex];
|
//¼ÓÔØÁ¸ÖÖУ׼ϵÊý
|
Grain := queryGrainSql(t_Grain, ss);
|
//Æô¶¯Ï·¢Á¸ÖÖÏß³Ì
|
GrainThread := TGrainThread.Create();
|
m_GrainThread := GrainThread.Handle;
|
end
|
else begin
|
//Èç¹ûÏß³Ìδ½áÊø£¬½öÌáʾ£¡£¡£¡
|
MessageBox(handle,'Ìáʾ£ºµ±Ç°Á¸ÖÖÏ·¢Ö¸ÁîÉÐδ½áÊø£¬ÇëÉÔºóÔÙÊÔ£¡','¾¯¸æ¶Ô»°¿ò',MB_OK+MB_ICONWARNING);
|
lbType2.ItemIndex := glCurrIndex;
|
end;
|
end;
|
|
//µ÷Õû½Ø¾à--¼ì²âº¬Ë®ÂÊ
|
procedure TfrmMain.btnInter1Click(Sender: TObject);
|
begin
|
glBtnTag1 := TsBitBtn(Sender).Tag;
|
|
//Æô¶¯µ÷Õû½Ø¾àÏß³Ì
|
if (m_VerifyThread=0)and(m_ManTestThread=0)and(m_InterceptThread=0) then begin
|
//³õʼ»¯½çÃæ
|
lblInter.Caption := Format('¿ªÊ¼µ÷ÕûµÚ [%d] ×齨¾à.', [glBtnTag1]);
|
//Æô¶¯Ïß³Ì
|
InterceptThread := TInterceptThread.Create();
|
m_InterceptThread := InterceptThread.Handle;
|
end
|
else begin
|
if m_VerifyThread<>0 then
|
lblVerify.Caption := 'µ±Ç°Ð£×¼¹ý³ÌÉÐδ½áÊø£¬ÇëÉÔºóÔÙÊÔ£¡';
|
if m_ManTestThread<>0 then
|
lblVerify.Caption := 'ÊÖ¶¯¼ì²â¹ý³ÌÉÐδ½áÊø£¬ÇëÉÔºóÔÙÊÔ£¡';
|
if m_InterceptThread<>0 then
|
lblInter.Caption := 'µ÷Õû½Ø¾à¹ý³ÌÉÐδ½áÊø£¬ÇëÉÔºóÔÙÊÔ£¡';
|
end;
|
end;
|
|
//¸ù¾ÝÈý×é¼ì²âÖµ+È˹¤ÊäÈ뺬ˮÂÊ£¬¼ÆË㵱ǰ½Ø¾à
|
//¼ÆË㹫ʽ£ºIntercept = RealMois - (M1+M2+M3)/3
|
procedure TfrmMain.btnCopm1Click(Sender: TObject);
|
var
|
moisval : array [0..2] of double;
|
interval : double;
|
begin
|
//Ìî³ä¼ÆËãÌõ¼þ
|
moisval[0] := StrToFloat(edtInter1.Text);
|
moisval[1] := StrToFloat(edtInter2.Text);
|
moisval[2] := StrToFloat(edtInter3.Text);
|
|
//¿ªÊ¼¼ÆËã
|
interval := StrToFloatDef(edtManVal.Text, 0) - ((moisval[0]+moisval[1]+moisval[2])/3);
|
//Êä³ö½á¹û
|
edtIntercept.Text := FloatToStr(interval);
|
//½çÃæÏÔʾ¼ÆËã½áÊø
|
lblInter.Caption := 'Íê³É½Ø¾àÆÀ¹À£¬½á¹ûΪ['+edtIntercept.Text+'%].';
|
end;
|
|
//±£´æµ±Ç°½Ø¾à
|
procedure TfrmMain.btnSave1Click(Sender: TObject);
|
begin
|
//±£´æÏµÊý
|
Grain.Intercept := edtIntercept.Text;
|
SaveInterceptParam(edtIntercept.Text);
|
//¼Ç¼ÈÕÖ¾²¢µ¯¿òÌáʾ
|
lblInter.Caption := Format('Ìáʾ£º±£´æÐµĽؾà²ÎÊýµ½ [%s]Á¸ÖÖÐÅÏ¢£¡',[Grain.Name]);
|
MessageBox(handle,PChar(lblInter.Caption),'±£´æ¶Ô»°¿ò',MB_OK+MB_ICONINFORMATION);
|
log4Info(Format('Á¸ÖÖ£º±£´æ [%s] Á¸ÖÖÐÅÏ¢, ´úÂë-[%d], ½Ø¾à-[%s]',
|
[Grain.Name, Grain.Code, Grain.Intercept]));
|
end;
|
|
//ÐÂÔöÁ¸ÖÖ
|
procedure TfrmMain.btnAddClick(Sender: TObject);
|
var
|
nam : string;
|
begin
|
{ //´´½¨ÊäÈë¶Ô»°¿ò
|
if InputQuery('ÐÂÔö¶Ô»°¿ò', 'ÇëÊäÈëÁ¸ÖÖÃû³Æ£º.', nam) then begin
|
if Trim(nam)<>'' then begin
|
//ÐÂÔöÁ¸ÖÖ
|
AddGrainRecord(Trim(nam));
|
//¼ÓÔØÁ¸ÖÖÁбí
|
queryGrainlistSql(t_Grain, lbType2);
|
end;
|
end; }
|
//Æô¶¯ÊÖдÊäÈë¿ò
|
frmTablet := TfrmTablet.Create(Application); //´´½¨¶¯Ì¬´°Ìå
|
frmTablet.ShowModal; //ģ̬´°¿ÚÏÔʾTablet
|
nam := glInkOutput;
|
|
//ÅжÏÊÇ·ñÖØÃû£¬ÊÇ·ñδ¸ÄÃû
|
if Trim(nam)='' then exit;
|
if queryGrainNumSql(t_Grain, nam)>0 then begin
|
MessageBox(handle,'´íÎó£ºÄúÐÂÔöµÄÁ¸ÖÖÖØÃû£¬Çë¼ì²éºóÖØÐÂÌá½»£¡','´íÎó¶Ô»°¿ò',MB_OK+MB_ICONERROR);
|
exit;
|
end;
|
|
//ÐÂÔöÁ¸ÖÖ
|
AddGrainRecord(Trim(nam));
|
//¼ÓÔØÁ¸ÖÖÁбí
|
queryGrainlistSql(t_Grain, lbType2);
|
end;
|
|
//ÐÞ¸ÄÁ¸ÖÖ
|
procedure TfrmMain.btnModfyClick(Sender: TObject);
|
var
|
new,nam : string;
|
begin
|
//È·¶¨Ñ¡ÖеÄÁ¸ÖÖÃû³Æ
|
glCurrIndex := lbType2.ItemIndex;
|
if glCurrIndex<0 then exit;
|
nam := lbType2.Items[glCurrIndex];
|
new := nam;
|
// ÏÔʾÊäÈë¶Ô»°¿ò£¬ÌáʾÓû§ÊäÈëÐÂ×Ö·û´®
|
{if InputQuery('Ð޸ĶԻ°¿ò', 'ÇëÊäÈëеÄÁ¸ÖÖÃû³Æ£º.', new) then
|
begin
|
//ÅжÏÊÇ·ñÖØÃû£¬ÊÇ·ñδ¸ÄÃû
|
if new=nam then exit;
|
if Trim(new)='' then exit;
|
if queryGrainNumSql(t_Grain, new)>0 then begin
|
MessageBox(handle,'´íÎó£ºÄúÌá½»µÄÁ¸ÖÖÖØÃû£¬Çë¼ì²éºóÖØÐÂÌá½»£¡','´íÎó¶Ô»°¿ò',MB_OK+MB_ICONERROR);
|
exit;
|
end;
|
//¸üÐÂÔʼ×Ö·û´®
|
updateNameSql(t_Grain, new, nam);
|
Grain.Name := new;
|
//¼ÓÔØÁ¸ÖÖÁбí
|
queryGrainlistSql(t_Grain, lbType2);
|
//¸üбêÇ©
|
sLabel70.Caption := Format('Á¸Ê³ÖÖÀà - [%s]',[Grain.Name]);
|
end; }
|
//Æô¶¯ÊÖдÊäÈë¿ò
|
frmTablet := TfrmTablet.Create(Application); //´´½¨¶¯Ì¬´°Ìå
|
frmTablet.strParam := nam; //´«ÈëÐÞ¸ÄÖµ
|
frmTablet.ShowModal; //ģ̬´°¿ÚÏÔʾTablet
|
new := glInkOutput;
|
//ÅжÏÊÇ·ñÖØÃû£¬ÊÇ·ñδ¸ÄÃû
|
if new=nam then exit;
|
if Trim(new)='' then exit;
|
if queryGrainNumSql(t_Grain, new)>0 then begin
|
MessageBox(handle,'´íÎó£ºÄúÌá½»µÄÁ¸ÖÖÖØÃû£¬Çë¼ì²éºóÖØÐÂÌá½»£¡','´íÎó¶Ô»°¿ò',MB_OK+MB_ICONERROR);
|
exit;
|
end;
|
//¸üÐÂÔʼ×Ö·û´®
|
updateNameSql(t_Grain, new, nam);
|
Grain.Name := new;
|
//¼ÓÔØÁ¸ÖÖÁбí
|
queryGrainlistSql(t_Grain, lbType2);
|
//¸üбêÇ©
|
sLabel70.Caption := Format('Á¸Ê³ÖÖÀà - [%s]',[Grain.Name]);
|
end;
|
|
//ɾ³ýÁ¸ÖÖ
|
procedure TfrmMain.btnDelClick(Sender: TObject);
|
var
|
ss,nam : string;
|
begin
|
//È·¶¨Ñ¡ÖеÄÁ¸ÖÖÃû³Æ
|
glCurrIndex := lbType2.ItemIndex;
|
if glCurrIndex<0 then exit;
|
nam := lbType2.Items[glCurrIndex];
|
ss := Format('Ìáʾ£ºÄúÈ·¶¨ÒªÉ¾³ý [%s] Á¸ÖÖ²ÎÊýÂð£¿',[nam]);
|
if MessageBox(handle,PChar(ss),'ɾ³ý¶Ô»°¿ò',MB_YESNO+MB_ICONQUESTION)=IDYES then begin
|
//ɾ³ýÁ¸ÖÖ
|
deleteGrainSql(t_Grain, nam);
|
//¼ÓÔØÁ¸ÖÖÁбí
|
queryGrainlistSql(t_Grain, lbType2);
|
//¸üбêÇ©
|
sLabel70.Caption := 'Á¸Ê³ÖÖÀà';
|
end;
|
end;
|
|
//------- ÖØÁ¿Ð£×¼ -------------------------------------------------------------
|
//ÊÖ¶¯²âÊÔÒ»×éÊý¾Ý
|
procedure TfrmMain.btnWeightCoef1Click(Sender: TObject);
|
//¶ÁÈ¡Êý¾Ý
|
{function ReadWeight(p:Pointer; ind:Integer):double;
|
begin
|
result := 0;
|
if ind=1 then result := 1.12;
|
if ind=2 then result := 10.19;
|
if ind=3 then result := 100.28;
|
end; }
|
var
|
index : Integer;
|
nWeight : Word;
|
nWeight1: SmallInt;
|
begin
|
//»ñÈ¡µ±Ç°Index
|
index := TsBitBtn(Sender).Tag;
|
//µ÷ÓÃÖ¸Áî¶ÁÈ¡ÖØÁ¿£¬Ç¿×ªÎªint
|
ReadWeight(hWrDev, @nWeight);
|
nWeight1 := SmallInt(nWeight);
|
//Êä³öÖØÁ¿µ½½çÃæ
|
case TsBitBtn(Sender).Tag of
|
1: edtWTest1.Text := FloatToStr(nWeight1-StrToFloatDef(edtWTare.Text,0)); //ȥƤ
|
2: edtWTest2.Text := FloatToStr(nWeight1-StrToFloatDef(edtWTare.Text,0));
|
3: edtWTest3.Text := FloatToStr(nWeight1-StrToFloatDef(edtWTare.Text,0));
|
end;
|
//ÏÔʾ½á¹û
|
lblWeightCoef.Caption := Format('µ±Ç°½øÐÐµÚ %d ×é³ÆÖØÐ£×¼£¡', [index]);
|
end;
|
|
//У׼ºó²âÊÔÒ»´ÎÖØÁ¿
|
procedure TfrmMain.sBitBtn14Click(Sender: TObject);
|
var
|
nWeight : Word;
|
nWeight1: SmallInt;
|
y : double;
|
begin
|
//µ÷ÓÃÖ¸Áî¶ÁÈ¡ÖØÁ¿£¬Ç¿×ªÎªint
|
ReadWeight(hWrDev, @nWeight);
|
nWeight1 := SmallInt(nWeight);
|
//°´¹«Ê½¼ÆËãyÖµ
|
y := Wg.k * (nWeight1 - Wg.tare) + Wg.b;
|
edtWTest.Text := FloatToStr(y);
|
//ÏÔʾ½á¹û
|
//Ìáʾ±£´æ³É¹¦£¡
|
if Wg.b>0 then
|
lblWeightCoef.Caption := Format('¹«Ê½ Y = %.4fX + %.4f£¬Ð£×¼ºó²âÊÔ %.4fg £¡', [Wg.k,Wg.b,y])
|
else
|
lblWeightCoef.Caption := Format('¹«Ê½ Y = %.4fX - %.4f£¬Ð£×¼ºó²âÊÔ %.4fg £¡', [Wg.k,Abs(Wg.b),y]);
|
end;
|
|
//ÉèÖÃÊÖ¶¯È¥Æ¤²ÎÊý
|
procedure TfrmMain.btnTareSetClick(Sender: TObject);
|
begin
|
//½«È¥Æ¤ÖØÁ¿´æÔÚÈ«¾ÖÖØÁ¿²ÎÊýÖÐ
|
Wg.tare := StrToFloatDef(edtWTare.Text,0);
|
Wg.range:= StrToFloatDef(edtRange.Text,0);
|
lblWeightCoef.Caption := Format('ÉèÖÃУ׼²ÎÊý--ȥƤ %.4fg£¬Îó²î·¶Î§ ¡À%.2f', [Wg.tare,Wg.range]);
|
end;
|
|
//¼ÆËãÖØÁ¿Ð£×¼ÏµÊý
|
procedure TfrmMain.sBitBtn11Click(Sender: TObject);
|
var
|
std1,std2,std3 : double;
|
test1,test2,test3 : double;
|
y3, nK, nB : double;
|
range : double; //Îó²î·¶Î§
|
begin
|
//ÉèÖÃÎó²î·¶Î§
|
range := StrToFloatDef(edtRange.Text,0);
|
//±£´æÊµ¼ÊÖØÁ¿
|
std1 := StrToFloatDef(edtWeight1.Text,0);
|
std2 := StrToFloatDef(edtWeight2.Text,0);
|
std3 := StrToFloatDef(edtWeight3.Text,0);
|
test1 := StrToFloatDef(edtWTest1.Text,0);
|
test2 := StrToFloatDef(edtWTest2.Text,0);
|
test3 := StrToFloatDef(edtWTest3.Text,0);
|
//¼ÆËãУ׼ϵÊýk¡¢b£¬Ð£ÑéÎó²î·¶Î§
|
//¹«Ê½ y=kx+b
|
nK := (std2 - std1)/(test2 - test1);
|
nB := std1 - nK * test1;
|
y3 := nK * test3 + nB;
|
//½«k¡¢bдÈëÁÙʱ±äÁ¿£¬Ñé֤ƫ²î
|
glWg_k := nK;
|
glWg_b := nB;
|
if ((y3>=std3-range) and (y3<=std3+range)) then begin
|
if glWg_b>0 then
|
lblWeightCoef.Caption := Format('Y = %.4fX + %.4f£¬Îó²î¡À%.2f£¬Ñé֤ͨ¹ý£¡', [glWg_k,glWg_b,range])
|
else
|
lblWeightCoef.Caption := Format('Y = %.4fX - %.4f£¬Îó²î¡À%.2f£¬Ñé֤ͨ¹ý£¡', [glWg_k,Abs(glWg_b),range]);
|
end
|
else begin
|
if glWg_b>0 then
|
lblWeightCoef.Caption := Format('Y = %.4fX + %.4f Ñé֤ʧ°Ü£¬Î´¸üÐÂϵÊý£¡', [glWg_k, glWg_b])
|
else
|
lblWeightCoef.Caption := Format('Y = %.4fX - %.4f Ñé֤ʧ°Ü£¬Î´¸üÐÂϵÊý£¡', [glWg_k, Abs(glWg_b)]);
|
end;
|
end;
|
|
//±£´æÖØÁ¿ÏµÊý
|
procedure TfrmMain.sBitBtn12Click(Sender: TObject);
|
begin
|
//¸üÐÂÖØÁ¿Ð£×¼²ÎÊý
|
Wg.k := glWg_k;
|
Wg.b := glWg_b;
|
Wg.tare := StrToFloatDef(edtWTare.Text,0);
|
Wg.range:= StrToFloatDef(edtRange.Text,0);
|
Wg.test1 := StrToFloatDef(edtWTest1.Text,0);
|
Wg.test2 := StrToFloatDef(edtWTest2.Text,0);
|
Wg.test3 := StrToFloatDef(edtWTest3.Text,0);
|
Wg.std1 := StrToFloatDef(edtWeight1.Text,0);
|
Wg.std2 := StrToFloatDef(edtWeight2.Text,0);
|
Wg.std3 := StrToFloatDef(edtWeight3.Text,0);
|
//±£´æÖØÁ¿Êý¾ÝÖÁÊý¾Ý¿â
|
SaveWgParam();
|
//Ìáʾ±£´æ³É¹¦£¡
|
if Wg.b>0 then
|
lblWeightCoef.Caption := Format('У׼¹«Ê½ Y = %.4fX + %.4f£¬Îó²î¡À%.4f £¡', [Wg.k,Wg.b,Wg.range])
|
else
|
lblWeightCoef.Caption := Format('У׼¹«Ê½ Y = %.4fX - %.4f£¬Îó²î¡À%.4f £¡', [Wg.k,Abs(Wg.b),Wg.range]);
|
end;
|
|
//------ ÊÖ¶¯ÉèÖòÎÊý ---------------------------------------------------------
|
//ÊÖ¶¯Ð´²ÎÊýµ½Ë®·ÖÒÇ
|
procedure TfrmMain.btnSettingClick(Sender: TObject);
|
var
|
ret : Integer;
|
begin
|
//²»Óóõʼ»¯Á¬½ÓÉ豸£¬Ö±½Óд²ÎÊý
|
ret := WriteParams(hWrDev,
|
StrToInt(edtStartFreq.Text),
|
StrToInt(edtStopFreq.Text),
|
StrToInt(edtStep.Text),
|
StrToInt(edtDecay.Text),
|
lbASK.ItemIndex);
|
if ret<0 then
|
MessageBox(handle,'Ìáʾ£ºÏòË®·ÖÒÇÏ·¢²ÎÊýʧ°Ü£¬Çë¼ì²éºóÖØÐÂÏ·¢£¡','¶Ô»°¿ò',MB_OK+MB_ICONERROR)
|
else begin
|
//±£´æ²ÎÊýµ½Êý¾Ý¿â
|
SysConfig.StartFreq := StrToFloatDef(edtStartFreq.Text, 10500);
|
SysConfig.StopFreq := StrToFloatDef(edtStopFreq.Text, 12000);
|
SysConfig.Step := StrToIntDef(edtStep.Text, 50);
|
SysConfig.Freq := StrToFloatDef(edtFreq.Text, 0);
|
SysConfig.Decay := StrToFloatDef(edtDecay.Text, 1);
|
SysConfig.ASK := lbASK.ItemIndex;
|
SysConfig.Volume := StrToFloatDef(edtVolume.Text, 0);
|
SysConfig.Tare := StrToFloatDef(edtTare.Text, 1000);
|
//µ÷ÓÃÊý¾Ý¿â´æ´¢º¯Êý
|
SaveParam();
|
//µ¯¿òÌáʾ
|
MessageBox(handle, 'Ìáʾ£ºË®·ÖÒÇϵͳ²ÎÊý±£´æ³É¹¦£¡', '±£´æ¶Ô»°¿ò',MB_OK+MB_ICONINFORMATION);
|
end;
|
end;
|
|
//------- ϵͳÐÅÏ¢ÉèÖà ---------------------------------------------------------
|
//µ÷ÓÃOSKÆÁÄ»¼üÅÌ
|
procedure TfrmMain.btnOSKClick(Sender: TObject);
|
begin
|
//µ÷ÓÃosk¼üÅÌ
|
OpenOnScreenKeyboard();
|
end;
|
|
//Ñ¡ÔñÊý¾Ý±£´æµÄÎļþ¼Ð
|
procedure TfrmMain.btnDirClick(Sender: TObject);
|
var
|
dir: string;
|
begin
|
if SelectDirectory('ÇëÑ¡Ôñ´æ´¢Îļþ¼Ð','',dir) then begin
|
if RightStr(dir,1)='\' then
|
edtDir.Text := dir
|
else
|
edtDir.Text := dir + '\';
|
end;
|
end;
|
|
//------- ϵͳÐÅÏ¢ -------------------------------------------------------------
|
//±£´æÏµÍ³ÐÅÏ¢
|
procedure TfrmMain.btnSaveInfoClick(Sender: TObject);
|
var
|
c : Char;
|
ss : string;
|
begin
|
//°ÑϵͳÐÅÏ¢¸üÐÂÖÁÈ«¾ÖÊý¾Ý½á¹¹
|
PlcConn.ip := edtIP.Text;
|
PlcConn.port := StrToIntDef(edtPort.Text,1502);
|
WrConn.SerialPort := cbSerialPort.Text;
|
WrConn.baud := StrToIntDef(edtBaud.Text,115200);
|
//µ¥¶À´¦ÀícharÀàÐÍ
|
CopyMemory(@c, PChar(edtParity.Text), 1);
|
WrConn.parity := c;
|
WrConn.data_bit := StrToIntDef(edtData_bit.Text,8);
|
WrConn.stop_bit := StrToIntDef(edtStop_bit.Text,1);
|
glTime1 := StrToIntDef(edtTime1.Text,2);
|
glTime2 := StrToIntDef(edtTime2.Text,20);
|
|
//¸üÐÂÆô¶¯Ñ¡Ïî
|
ss := '"'+ glAppPath + Application.ExeName +'"';
|
if cbAutoRun.Checked then glAutoRun := true
|
else glAutoRun := false;
|
AutoRun(glAutoRun, 'GmmSoft');
|
|
//Ôö¼Óµ÷ÊÔ¿ª¹Ø
|
glIsDebug := cbDebug.Checked;
|
//¸üд洢²ÎÊý
|
smp.flag := cbAutoSave.Checked;
|
smp.prefix := edtPrefix.Text;
|
smp.dir := edtDir.Text;
|
cbTestAutoSave.Checked := cbAutoSave.Checked; //ͬ²½ÊÖ¶¯¼ì²â½çÃæ
|
|
//Ôö¼ÓµÇ¼¿ÚÁî
|
SysConfig.password := edtPassword.Text;
|
SysConfig.delay := StrToIntDef(edtDelay.Text,0);
|
|
//µ÷ÓÃÊý¾Ý¿â´æ´¢º¯Êý
|
SaveParam();
|
//µ¯¿òÌáʾ
|
MessageBox(handle, 'Ìáʾ£ºPLC¡¢Ë®·ÖÒÇ¡¢¼ì²â²ÎÊý±£´æ³É¹¦£¡', '±£´æ¶Ô»°¿ò',MB_OK+MB_ICONINFORMATION);
|
end;
|
|
//¸´Î»
|
procedure TfrmMain.btnResetClick(Sender: TObject);
|
var
|
ret : Integer;
|
begin
|
ret := SendCommands(hWrDev, WR_RESET, 0, glTime1);
|
if ret<0 then begin
|
ResponseState(hPlcDev, PLC_DEVICE_WR_FAULT);
|
//µ¯¿òÌáʾ
|
MessageBox(handle, 'Ìáʾ£ºÖ´ÐÐË®·ÖÒǸ´Î»²Ù×÷³É¹¦£¡', '¶Ô»°¿ò',MB_OK+MB_ICONINFORMATION);
|
end;
|
end;
|
|
//------- ÒÇÆ÷ά»¤ ----------------------------------------
|
//ÒÇÆ÷¸´Î»¹¦ÄÜ×Óº¯Êý
|
procedure TfrmMain.SetResetUI(flag:boolean);
|
begin
|
sBitBtn16.Enabled := flag;
|
sBitBtn17.Enabled := flag;
|
sBitBtn18.Enabled := flag;
|
sBitBtn19.Enabled := flag;
|
sBitBtn20.Enabled := flag;
|
sBitBtn21.Enabled := flag;
|
sBitBtn22.Enabled := flag;
|
sBitBtn23.Enabled := flag;
|
sBitBtn24.Enabled := flag;
|
sBitBtn25.Enabled := flag;
|
sBitBtn26.Enabled := flag;
|
end;
|
|
//½øÈëÒÇÆ÷ά»¤½çÃæ
|
procedure TfrmMain.sBitBtn15Click(Sender: TObject);
|
begin
|
pc.ActivePage := tsMaintain;
|
end;
|
|
//ÒÇÆ÷¸´Î»
|
procedure TfrmMain.sBitBtn18Click(Sender: TObject);
|
begin
|
//Æô¶¯ÒÇÆ÷¸´Î»Ïß³Ì
|
if m_ResetThread=0 then begin
|
//ÉèÖð´Å¥²»¿ÉÓÃ
|
SetResetUI(false);
|
//Æô¶¯Ïß³Ì
|
resetThread := TResetThread.Create();
|
m_resetThread := resetThread.Handle;
|
end
|
else
|
lblMaintain.Caption := 'ÒÇÆ÷¸´Î»ÉÐδ½áÊø£¬ÇëÉÔºóÔÙÊÔ£¡';
|
end;
|
|
//ÏÔʾ¹Ì¼þ°æ±¾
|
procedure TfrmMain.sBitBtn17Click(Sender: TObject);
|
var
|
ver : array[0..1] of Word; //ÔÝ´æ°æ±¾ºÅ
|
ret : Integer;
|
begin
|
//³õʼ»¯°æ±¾Êý×é
|
ver[0] := 0;
|
ver[1] := 0;
|
|
ret := ReadVersion(hWrDev, @ver);
|
if ret>0 then
|
lblMaintain.Caption := Format('Ìáʾ£ºË®·ÖÒÇÓ²¼þ°æ±¾ [%d], Èí¼þ°æ±¾ [%d].', [ver[0],ver[1]])
|
else
|
lblMaintain.Caption := 'Ìáʾ£º¶Áȡˮ·ÖÒǹ̼þ°æ±¾ºÅʧ°Ü£¡';
|
end;
|
|
//¼ìÐÞ°´Å¥
|
procedure TfrmMain.sBitBtn19Click(Sender: TObject);
|
var
|
ret : Integer;
|
begin
|
ret := 0;
|
case TsBitBtn(Sender).Tag of
|
1: ret := SendCommands(hWrDev, WR_VALV01,0,1,500000); //ÉÏ·§ÃÅ¿ª
|
2: ret := SendCommands(hWrDev, WR_VALV02,0,1,500000); //ÉÏ·§ÃŹØ
|
3: ret := SendCommands(hWrDev, WR_VALV03,0,1,500000); //Ï·§ÃÅ¿ª
|
4: ret := SendCommands(hWrDev, WR_VALV04,0,1,500000); //Ï·§ÃŹØ
|
5: ret := SendCommands(hWrDev, WR_VALV05,0,1,500000); //Ë«·§ÃÅ¿ª
|
6: ret := SendCommands(hWrDev, WR_VALV06,0,1,500000); //Ë«·§ÃŹØ
|
7: ret := SendCommands(hWrDev, WR_VIBRATE_01,0,1,500000); //Õñ¶¯¿ª
|
8: ret := SendCommands(hWrDev, WR_VIBRATE_02,0,1,500000); //Õñ¶¯¹Ø
|
end;
|
//ÏÔʾ½á¹û
|
if ret>0 then
|
lblMaintain.Caption := 'Ìáʾ£ºÖ´ÐÐË®·ÖÒÇ ['+TsBitBtn(Sender).Caption+'] ²Ù×÷³É¹¦£¡'
|
else
|
lblMaintain.Caption := 'Ìáʾ£ºÖ´ÐÐË®·ÖÒÇ ['+TsBitBtn(Sender).Caption+'] ²Ù×÷ʧ°Ü£¡';
|
end;
|
|
procedure TfrmMain.sImage4Click(Sender: TObject);
|
begin
|
// ʹ´°ÌåÔÚÈÎÎñÀ¸ÉϿɼû
|
Application.Minimize;
|
end;
|
|
end.
|