{------------------------------------------------------------------------------} {µ¥ÔªÃû³Æ£ºuMain.pas } {Ä£¿éÃû³Æ£ºÖ÷½ø³Ì£¬¸ºÔðÈË»ú½»»¥½çÃæ } {Ä£¿é¹¦ÄÜ£º°üº¬×Ô¶¯¼ìÑéºÍÊÖ¶¯¼ìÑéÁ½ÖÖģʽ¡£ } { 1.×Ô¶¯¼ìÑéʱ£¬Çл»×Ô¶¯½çÃæ£¬Ëø¶¨ÊÖ¶¯²Ù×÷£¬½ÓÊÜǤ¼ñϵͳָÁ·´À¡½á¹û } { 2.ÊÖ¶¯¼ìÑéʱ£¬·ÖΪ¼ìÑé¡¢·ÖÎö¡¢Ð£×¼¡¢ÉèÖÃËĸö¹¦ÄÜÄ£¿é } {½¨Á¢ÈÕÆÚ£º2023-10-24 } {ÐÞ¸ÄÐ޸ģº2025-05-23 } {°æÈ¨ËùÓУºÀîÁ¼Í¥ liangtingli@outlook.com } {------------------------------------------------------------------------------} //2024-07-08 ¿ªÆôÖ÷´°ÌåË¢ÐÂģʽ£¬·ÀÖ¹PageControlÇл»Ê±ImageÉÁ˸ //2024-10-14 Ôö¼ÓgmmdataÊý¾Ý¿â£¬ÓÃÀ´´æ´¢×Ô¶¯¼ì²âºÍÊÖ¶¯¼ì²âµÄËùÓÐÊý¾Ý¡£ //2024-11-22 ÁÙʱȥµôLicenseÊÚȨ£¬¹©²âÊÔÓᣠ//2025-02-10 Ôö¼ÓOpenTabTipµ÷Óã¬Í¨¹ýTabTip.exeÊÖд°åÍê³ÉÖÐÎÄÊäÈë¡£ //2025-05-07 ×Ô¶¯Ä£Ê½Ï£¬testThread()Ï̸߳ÄΪ×èÈûģʽ£¬Ê¹Óûص÷º¯Êý´¦ÀíËùÓÐÖ¸Áî¡£ //2025-05-23 ReadFaultCode()Ôö¼ÓÒ»¸öеĹÊÕÏÂ룺256-¼ì²âÎÞЧ(³öÏÖ¹ÊÕÏÒѻָ´)¡£ 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, Math, pngimage, sLabel, iComponent, iVCLComponent, iCustomComponent, StrUtils, iSevenSegmentDisplay, iSevenSegmentClock, iSevenSegmentCharacter, iSevenSegmentInteger, acImage, iOdometer, sEdit, sListBox, iPlotComponent, iPlot, sComboBox, acPNG, acArcControls, DateUtils, PubUtils, ActuatorLib, ShellApi, // 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; edtData_bit: TsEdit; 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; sLabel64: TsLabel; edtWTest: TsEdit; sBitBtn14: TsBitBtn; cbDebug: TCheckBox; 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; btnModfy: TsBitBtn; sLabel72: TsLabel; sLabel73: TsLabel; sLabel74: TsLabel; sLabel75: TsLabel; sLabel76: TsLabel; sLabel77: TsLabel; GroupBox7: TGroupBox; sLabel50: TsLabel; edtHeartIP: TsEdit; edtHeartPort: TsEdit; btnTareSet: TsBitBtn; Label1: TLabel; Label2: TLabel; Label3: TLabel; 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 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); procedure sBitBtn28Click(Sender: TObject); protected procedure CreateParams(var Params: TCreateParams); override; private { Private declarations } public { Public declarations } sLoginPwd : String; //ÊÖ¶¯Ä£Ê½·µ»Ø¿ÚÁî //function ConnPlc():Integer; //Á¬½ÓÉ豸£¬·µ»ØÁ¬½Ó״̬ function ConnWr():Integer; //Á¬½ÓÉ豸£¬·µ»ØÁ¬½Ó״̬ procedure DisconnPlcAndWr(); //¶Ï¿ªÉ豸 procedure StartTest(flag:Boolean); //×Ô¶¯/ÊÖ¶¯¼ì²â procedure ShowCalc(edt:TsEdit; index:Integer); //¶¯Ì¬´´½¨¼ÆËãÆ÷ procedure ManLogin_ShowCalc(x,y:Integer); //ÊÖ¶¯Ä£Ê½×¨ÓÿÚÁî¿ò procedure SetResetUI(flag:boolean); procedure ShowInput(str: string; mode: Integer=0); procedure GetScreenSize(); //̽²âÆÁÄ»·Ö±æÂÊÀàÐÍ procedure SetDisplaySize(const typ:Integer); //ÉèÖô°Ìå·Ö±æÂÊ end; type TWordArray = array[0..100] of Word; PWordArray = ^TWordArray; var frmMain: TfrmMain; implementation uses Global, MsgVar, log4me, uDM, uInit, uCalc, uSaveData, uTablet, uInput, mantestThread, verifyThread, grainThread, interceptThread, resetThread, testThread; var ManTestThread : TManTestThread; //ÊÖ¶¯¼ì²âÏß³Ì VerifyThread : TVerifyThread; //У׼¼ì²âÏß³Ì GrainThread : TGrainThread; //Ï·¢Á¸ÖÖÏß³Ì ResetThread : TResetThread; //ÒÇÆ÷¸´Î»Ïß³Ì InterceptThread : TInterceptThread; //µ÷Õû½Ø¾àÏß³Ì testThread : TtestThread; //×Ô¶¯Ïß³Ì {$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.ConnPlc():Integer; begin //Á¬½ÓPLCÉ豸 result := StartTcpSlave(502, 'COM1', 115200, 'N', 8, 1, 60, 10, @OnMessageCallBack); if result>=0 then begin lblAutoRet_error.Caption := ''; log4info(Format('Á¬½Ó£ºPLCÉ豸Á¬½Ó³É¹¦£¬·µ»ØÖµ=[%d].',[result])); end else begin lblAutoRet_error.Caption := 'PLCÁ¬½Óʧ°Ü£¡'; log4error(Format('´íÎó£ºPLCÁ¬½Óʧ°Ü, ·µ»ØÖµ=[%d].',[result])); end; end; } function TfrmMain.ConnWr():Integer; begin //Á¬½ÓË®·ÖÒÇÉ豸 hWrDev := CreateWrDevice(PChar(WrConn.SerialPort), WrConn.baud, WrConn.parity, WrConn.data_bit, WrConn.stop_bit); //Á¬½ÓÉ豸²¢ÏÔʾ result := ConnectDevice(hWrDev); if result>=0 then begin lblAutoRet_error.Caption := ''; log4info(Format('Á¬½Ó£ºË®·ÖÒÇÉ豸Á¬½Ó³É¹¦£¬·µ»ØÖµ=[%d].',[result])); end else begin lblAutoRet_error.Caption := 'Ë®·ÖÒÇÁ¬½Óʧ°Ü£¡'; log4error(Format('´íÎó£ºË®·ÖÒÇÁ¬½Óʧ°Ü, ·µ»ØÖµ=[%d].',[result])); end; end; //¶Ï¿ªË®·ÖÒǺÍPLCÉ豸 procedure TfrmMain.DisconnPlcAndWr(); begin //¹Ø±ÕTCP·þÎñ StopTcpSlave; //¹Ø±ÕË®·ÖÒÇ Disconnect(hWrDev); DestroyDevice(hWrDev); log4info('ϵͳ£º¹Ø±Õ Ǥ¼ñ ºÍË®·ÖÒÇÉ豸£¡'); 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()Ị̈߳¬×¼±¸ÊÖ¶¯²Ù×÷£¡'); StopTcpSlave; end; end; end; //×Ô¶¨Ò庯Êý£ºÌ½²âÆÁÄ»·Ö±æÂÊ£¬ÉèÖÃgl_display_size //0-×î´ó·Ö±æÂÊ£¬1-1024X768£¬2-1024X600£¬3-ÆäËû procedure TfrmMain.GetScreenSize(); begin if (Screen.Width>1024)or(Screen.Height>768) then gl_display_type := 0 else if (Screen.Width=1024)and(Screen.Height=768) then gl_display_type := 1 else if (Screen.Width=1024)and(Screen.Height=600) then gl_display_type := 2 else gl_display_type := 3; //´òÓ¡³öÀ´ log4info(Format('ÆÁÄ»£ºÌ½²âÆÁÄ»·Ö±æÂÊΪ[%dX%d]£¬ÆÁÄ»ÀàÐÍΪ[%d].',[Screen.Width,Screen.Height,gl_display_type])); end; //×Ô¶¨Ò庯Êý£º×Ô¶¯ÊÊÅä1024X768 ºÍ 1024X600 Á½ÖÖ·Ö±æÂÊ procedure TfrmMain.SetDisplaySize(const typ:Integer); var ltop,rtop : Integer; begin //ÉèÖù«¹²Æ«ÒÆÁ¿ ltop := 100; rtop := 470; if typ=1 then begin //ÕûÌå³ß´ç°´1024X768 frmMain.Width := 1024; frmMain.Height:= 768; //µ÷Õû±ß¿òÑùʽ frmMain.BorderStyle := bsNone; //frmMain.WindowState := wsmaximized; end else if typ=2 then begin //ÕûÌå³ß´ç°´1024X600 frmMain.Width := 1024; frmMain.Height:= 600; //µ÷Õû±ß¿òÑùʽ frmMain.BorderStyle := bsNone; //frmMain.WindowState := wsmaximized; //ÊÊÅä×Ô¶¯Ä£Ê½Ò³Ãæ lblAutoInfo.Top := lblAutoInfo.Top - ltop; lblAutoRet.Top := lblAutoRet.Top - ltop - 20; lblAutoRet_error.Top := lblAutoRet_error.Top - ltop - 20; imgLogo.Top := rtop; sLabel1.Top := rtop; imgInfo.Top := rtop; imgQuit.Top := rtop; //ÊÊÅäÊÖ¶¯Ä£Ê½Ò³Ãæ imgLogo1.Top := rtop; sLabel2.Top := rtop; sImage1.Top := rtop; sImage2.Top := rtop; //ÊÊÅäϵͳÐÅÏ¢Ò³Ãæ GroupBox3.Top := GroupBox3.Top-5; GroupBox3.Height := GroupBox3.Height-10; cbAutoRun.Top := cbAutoRun.Top-5; cbDebug.Top := cbDebug.Top-5; sLabel66.Top := sLabel66.Top-10; sLabel67.Top := sLabel67.Top-10; edtDelay.Top := edtDelay.Top -10; GroupBox4.Top := GroupBox4.Top-20; GroupBox4.Height := GroupBox4.Height-10; sLabel52.Top := sLabel52.Top-10; sLabel53.Top := sLabel53.Top-10; sLabel54.Top := sLabel54.Top-10; edtTime1.Top := edtTime1.Top-10; edtTime2.Top := edtTime2.Top-10; cbAutoSave.Top:= cbAutoSave.Top-10; edtPrefix.Top := edtPrefix.Top-10; btnOSK.Top := btnOSK.Top-10; sLabel7.Top := sLabel7.Top-10; edtDir.Top := edtDir.Top-10; btnDir.Top := btnDir.Top-10; GroupBox2.Top := GroupBox2.Top-5; GroupBox2.Height := GroupBox2.Height-20; GroupBox2.Width := 355; GroupBox6.Top := GroupBox6.Top-25; GroupBox6.Height := GroupBox6.Height-5; sLabel65.Top := sLabel65.Top-10; edtPassword.Top := edtPassword.Top-10; edtPassword.Width:= 166; GroupBox6.Width := 355; GroupBox7.Width := 355; edtHeartIp.Width := 141; edtHeartPort.Left:= 250; edtHeartPort.Width:=76; btnSaveInfo.Caption := '±£ ´æ'; btnSaveInfo.Layout := blGlyphTop; btnSaveInfo.Left := 880; btnSaveInfo.Top := 230; btnSaveInfo.Height:= 90; btnSaveInfo.Width := 110; btnReset.Caption := '¸´ λ'; btnReset.Layout := blGlyphTop; btnReset.Left := 880; btnReset.Top := 380; btnReset.Height:= 90; btnReset.Width := 110; //ÊÊÅäÊÖ¶¯¼ì²â½çÃæ sLabel14.Top:= sLabel14.Top- 10; mtManClock.Top:=mtManClock.Top-10; lblManTest.Top:=lblManTest.Top-10; Bevel1.Top := Bevel1.Top - 30; sLabel4.Top:= sLabel4.Top- 50; sLabel5.Top:= sLabel5.Top- 50; edtMoisture.Top := edtMoisture.Top-50; sLabel15.Top:= sLabel15.Top- 55; sLabel10.Top:= sLabel10.Top- 70; sLabel11.Top:= sLabel11.Top- 70; edtTemp.Top := edtTemp.Top - 70; sLabel12.Top:= sLabel12.Top- 80; sLabel13.Top:= sLabel13.Top- 80; edtWater.Top := edtWater.Top-80; cbTestAutoSave.Top := cbTestAutoSave.Top-95; sLabel6.Top:= sLabel6.Top- 105; edtSampleName.Top := edtSampleName.Top-105; sBitBtn28.Top := sBitBtn28.Top-105; lbType.Top := lbType.Top-70; lbType.Height := lbType.Height-36; lbType.Width := lbType.Width +30; btnManTest.Top:= btnManTest.Top-130; btnManTest.Height:= btnManTest.Height-10; //ÊÊÅäÒÇÆ÷ά»¤½çÃæ lblMaintain.Top := lblMaintain.Top-20; Bevel4.Top := Bevel4.Top-40; sBitBtn17.Top := sBitBtn17.Top-50; sBitBtn18.Top := sBitBtn18.Top-50; Bevel5.Top := Bevel5.Top-60; sBitBtn19.Top := sBitBtn19.Top-70; sBitBtn20.Top := sBitBtn20.Top-70; sBitBtn21.Top := sBitBtn21.Top-70; sBitBtn22.Top := sBitBtn22.Top-70; sBitBtn23.Top := sBitBtn23.Top-80; sBitBtn24.Top := sBitBtn24.Top-80; sBitBtn25.Top := sBitBtn25.Top-80; sBitBtn26.Top := sBitBtn26.Top-80; //ÊÊÅäÊý¾Ý·ÖÎö½çÃæ iPlot1.Height := iPlot1.Height-180; //ÊÊÅäÒÇÆ÷У׼½çÃæ sLabel21.Top:= sLabel21.Top- 10; mtVerifyClock.Top:=mtVerifyClock.Top-10; lblVerify.Top:=lblVerify.Top-10; Bevel2.Top := Bevel2.Top - 20; sLabel25.Top := sLabel25.Top - 35; sLabel26.Top := sLabel26.Top - 35; sLabel27.Top := sLabel27.Top - 35; sLabel28.Top := sLabel28.Top - 35; sLabel29.Top := sLabel29.Top - 35; sLabel20.Top := sLabel20.Top - 40; edtTest1.Top := edtTest1.Top - 40; edtTest2.Top := edtTest2.Top - 40; edtTest3.Top := edtTest3.Top - 40; edtTest4.Top := edtTest4.Top - 40; edtTest5.Top := edtTest5.Top - 40; btnVerify1.Top := btnVerify1.Top - 50; btnVerify2.Top := btnVerify2.Top - 50; btnVerify3.Top := btnVerify3.Top - 50; btnVerify4.Top := btnVerify4.Top - 50; btnVerify5.Top := btnVerify5.Top - 50; sLabel22.Top := sLabel22.Top - 100; edtMois1.Top := edtMois1.Top - 100; edtMois2.Top := edtMois2.Top - 100; edtMois3.Top := edtMois3.Top - 100; edtMois4.Top := edtMois4.Top - 100; edtMois5.Top := edtMois5.Top - 100; sLabel23.Top := sLabel23.Top - 110; edtAutoCoef1.Top := edtAutoCoef1.Top - 110; edtAutoCoef2.Top := edtAutoCoef2.Top - 110; edtAutoCoef3.Top := edtAutoCoef3.Top - 110; edtAutoCoef4.Top := edtAutoCoef4.Top - 110; edtAutoCoef5.Top := edtAutoCoef5.Top - 110; sLabel24.Top := sLabel24.Top - 120; edtManCoef1.Top := edtManCoef1.Top - 120; edtManCoef2.Top := edtManCoef2.Top - 120; edtManCoef3.Top := edtManCoef3.Top - 120; edtManCoef4.Top := edtManCoef4.Top - 120; edtManCoef5.Top := edtManCoef5.Top - 120; sLabel3.Top := sLabel3.Top - 35; lbType1.Top := lbType1.Top - 40; lbType1.Height := lbType1.Height - 40; lbType1.Width := lbType1.Width + 10; btnSwitchCoef.Top := btnSwitchCoef.Top -95; btnSwitchCoef.Height:= btnSwitchCoef.Height-10; btnComp.Top := btnComp.Top - 130; btnComp.Height:= btnComp.Height-10; btnSave.Top := btnSave.Top - 130; btnSave.Height:= btnSave.Height-10; //ÊÊÅäÖØÁ¿Ð£×¼½çÃæ sLabel63.Top := sLabel63.Top- 10; lblWeightCoef.Top := lblWeightCoef.Top- 10; Bevel3.Top := Bevel3.Top - 20; sLabel57.Top := sLabel57.Top- 35; sLabel58.Top := sLabel58.Top- 35; sLabel59.Top := sLabel59.Top- 35; sLabel56.Top := sLabel56.Top- 40; edtWTest1.Top := edtWTest1.Top-40; edtWTest2.Top := edtWTest2.Top-40; edtWTest3.Top := edtWTest3.Top-40; sLabel60.Top := sLabel60.Top- 50; edtWeight1.Top := edtWeight1.Top-50; edtWeight2.Top := edtWeight2.Top-50; edtWeight3.Top := edtWeight3.Top-50; btnWeightCoef1.Top := btnWeightCoef1.Top-60; btnWeightCoef2.Top := btnWeightCoef2.Top-60; btnWeightCoef3.Top := btnWeightCoef3.Top-60; sLabel64.Top := sLabel64.Top-100; edtWTest.Top := edtWTest.Top-100; sBitBtn14.Top := sBitBtn14.Top-100; GroupBox5.Top := GroupBox5.Top- 35; btnTareSet.Top:= btnTareSet.Top-40; sBitBtn11.Top := sBitBtn11.Top - 130; sBitBtn11.Height:= sBitBtn11.Height-10; sBitBtn12.Top := sBitBtn12.Top - 130; sBitBtn12.Height:= sBitBtn12.Height-10; //ÊÊÅäµ÷Õû½Ø¾à½çÃæ sLabel71.Top := sLabel71.Top - 10; mtInterClock.Top := mtInterClock.Top - 10; lblInter.Top := lblInter.Top - 10; Bevel6.Top := Bevel6.Top - 20; Label1.Top := Label1.Top - 20; Label2.Top := Label2.Top - 20; Label3.Top := Label3.Top - 20; sLabel9.Top := sLabel9.Top - 20; edtInter1.Top := edtInter1.Top - 20; edtInter2.Top := edtInter2.Top - 20; edtInter3.Top := edtInter3.Top - 20; btnInter1.Top := btnInter1.Top - 30; btnInter2.Top := btnInter2.Top - 30; btnInter3.Top := btnInter3.Top - 30; sLabel46.Top := sLabel46.Top - 90; edtManVal.Top := edtManVal.Top - 90; sLabel69.Top := sLabel69.Top - 100; edtIntercept.Top := edtIntercept.Top - 100; sLabel70.Top := sLabel70.Top - 20; lbType2.Top := lbType2.Top - 20; lbType2.Height := lbType2.Height - 70; btnAdd.Top := btnAdd.Top - 90; btnModfy.Top := btnModfy.Top - 90; btnDel.Top := btnDel.Top - 90; btnCopm1.Top := btnCopm1.Top - 130; btnCopm1.Height:= btnCopm1.Height-10; btnSave1.Top := btnSave1.Top - 130; btnSave1.Height:= btnSave1.Height-10; //ÊÊÅä²ÎÊýÉèÖýçÃæ sLabel30.Top := sLabel30.Top - 40; sLabel31.Top := sLabel31.Top - 40; edtVolume.Top := edtVolume.Top - 40; sLabel38.Top := sLabel38.Top - 40; sLabel39.Top := sLabel39.Top - 40; edtStartFreq.Top := edtStartFreq.Top - 40; sLabel32.Top := sLabel32.Top - 50; sLabel33.Top := sLabel33.Top - 50; edtTare.Top := edtTare.Top - 50; sLabel41.Top := sLabel41.Top - 50; sLabel40.Top := sLabel40.Top - 50; edtStopFreq.Top := edtStopFreq.Top - 50; sLabel37.Top := sLabel37.Top - 60; edtFreq.Top := edtFreq.Top - 60; sLabel42.Top := sLabel42.Top - 60; sLabel43.Top := sLabel43.Top - 60; edtStep.Top := edtStep.Top - 60; sLabel36.Top := sLabel36.Top - 70; edtDecay.Top := edtDecay.Top - 70; sLabel34.Top := sLabel34.Top - 80; lbASK.Top := lbASK.Top - 80; btnSetting.Top := btnSetting.Top - 130; btnSetting.Height:= btnSetting.Height-10; 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); //̽²âÆÁÄ»·Ö±æÂÊ GetScreenSize(); //µ÷ÕûÈË»ú½çÃæ×î´ó»¯ SetDisplaySize(2); 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(); //¿ªÆô×Ô¶¯Ä£Ê½ ConnWr(); 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; StartTest(true); end; 2:begin//ÊÖ¶¯Ä£Ê½ //ÏÈÑéÖ¤¿ÚÁÕýÈ·²ÅÔÊÐíÇл» if gl_display_type=2 then ManLogin_ShowCalc(300,150) else 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 := tsManual; //¼ÓÔØÁ¸ÖÖÁбí queryGrainlistSql(t_Grain, lbType); end; //Çл»µ½ÏµÍ³Ò³Ãæ procedure TfrmMain.imgInfoClick(Sender: TObject); begin //ÏÈÑéÖ¤¿ÚÁÕýÈ·²ÅÔÊÐí½øÈë if gl_display_type=2 then ManLogin_ShowCalc(300,150) else ManLogin_ShowCalc(300,250); //Ïú»Ù×Ô¶¯¼ì²âÏß³Ì if sLoginPwd=SysConfig.password then pc.ActivePage := tsSystem; 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, 0); 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; 26:begin//µ÷ÕûÐÄÌøip glCurrFocus := 26; ShowCalc(edtHeartIp, glCurrFocus); end; 27:begin//µ÷ÕûÐÄÌøport glCurrFocus := 27; ShowCalc(edtHeartPort, 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.ShowInput(str: string; mode: Integer=0); begin frmInput := TfrmInput.Create(Application); //´´½¨¶¯Ì¬´°Ìå frmInput.thMode := mode; //ÊäÈë¿òģʽ£º0-ĬÈÏÊäÈë¿ò£¬1-Á¸ÖÖ´óÀàÑ¡Ôñ¿ò frmInput.strParam := str; //´«ÈëÐÞ¸ÄÖµ frmInput.Left := frmMain.Left+ 300; //Ð޸ļÆËãÆ÷×ø±ê if gl_display_type=2 then frmInput.Top := frmMain.Top + 150 else frmInput.Top := frmMain.Top + 50; frmInput.ShowModal; //ģ̬´°¿ÚÏÔʾcalc 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); edtIntercept.Text := Grain.Intercept; //Æô¶¯Ï·¢Á¸ÖÖÏß³Ì 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 := RoundTo(StrToFloatDef(edtManVal.Text, 0) - ((moisval[0]+moisval[1]+moisval[2])/3), -2); //Êä³ö½á¹û 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]); log4Info(Format('Á¸ÖÖ£º±£´æ [%s] Á¸ÖÖÐÅÏ¢, ´úÂë-[%d], ½Ø¾à-[%s]', [Grain.Name, Grain.Code, Grain.Intercept])); end; //ÐÂÔöÁ¸ÖÖ procedure TfrmMain.btnAddClick(Sender: TObject); //var // nam : string; begin //Æô¶¯ÊÖдÊäÈë¿ò {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); } {//´´½¨ÊäÈë¶Ô»°¿ò if InputQuery('ÐÂÔö¶Ô»°¿ò', 'ÇëÊäÈëÁ¸ÖÖÃû³Æ£º.', nam) then begin if Trim(nam)<>'' then begin //ÐÂÔöÁ¸ÖÖ AddGrainRecord(Trim(nam)); //¼ÓÔØÁ¸ÖÖÁбí queryGrainlistSql(t_Grain, lbType2); end; end;} //´ò¿ª´¥¿Ø°å ShellExecute(0, nil, 'OpenTabTip', nil, nil, SW_SHOWNORMAL); //´´½¨ÊäÈë¶Ô»°¿ò ShowInput('', 1); if glInput<>'' then begin //ÅжÏÊÇ·ñÖØÃû£¬ÊÇ·ñδ¸ÄÃû if queryGrainNumSql(t_Grain, glInput, GrainType_rec.Code)>0 then begin lblInter.Caption := Format('Ìáʾ£ºÐÂÔöÁ¸ÖÖ [%s-%s] ÖØÃû£¬Ìύʧ°Ü£¡',[GrainType_rec.Name,glInput]); exit; end; //ÐÂÔöÁ¸ÖÖ AddGrainRecord(glInput, GrainType_rec); //¼ÓÔØÁ¸ÖÖÁбí queryGrainlistSql(t_Grain, lbType2); //½çÃæÐÅÏ¢Ìáʾ lblInter.Caption := Format('Ìáʾ£ºÐÂÔöÁ¸ÖÖ [%s-%s] ³É¹¦£¡',[GrainType_rec.Name,glInput]); end; //ÇåÀíÏÖ³¡ glInput := ''; frmInput.InitGrainRec(); end; //ÐÞ¸ÄÁ¸ÖÖ procedure TfrmMain.btnModfyClick(Sender: TObject); var new,nam,nam1 : string; begin {//È·¶¨Ñ¡ÖеÄÁ¸ÖÖÃû³Æ glCurrIndex := lbType2.ItemIndex; if glCurrIndex<0 then exit; nam := lbType2.Items[glCurrIndex]; new := nam; //Æô¶¯ÊÖдÊäÈë¿ò 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]); } {// ÏÔʾÊäÈë¶Ô»°¿ò£¬ÌáʾÓû§ÊäÈëÐÂ×Ö·û´® 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;} //È·¶¨Ñ¡ÖеÄÁ¸ÖÖÃû³Æ glCurrIndex := lbType2.ItemIndex; if glCurrIndex<0 then exit; if Grain.flag then exit; //´ò¿ª´¥¿Ø°å ShellExecute(0, nil, 'OpenTabTip', nil, nil, SW_SHOWNORMAL); nam := lbType2.Items[glCurrIndex]; new := nam; //Èç¹ûnamÊÇ£ºÓñÃ×-¶«±±-->²ð·ÖΪ¶«±±£¬´«ÈëÕæÊµnam if Pos('-', nam)>0 then nam1 := SplitStr(nam, '-', 1); //´´½¨ÊäÈë¶Ô»°¿ò ShowInput(nam1, 1); if GrainType_rec.Name='' then exit; new := Format('%s-%s',[GrainType_rec.Name, glInput]); //ÅжÏÊÇ·ñÖØÃû£¬ÊÇ·ñδ¸ÄÃû if new=nam then exit; if Trim(new)='' then exit; if queryGrainNumSql(t_Grain, glInput, GrainType_rec.Code)>0 then begin lblInter.Caption := Format('Ìáʾ£ºÐÞ¸ÄÁ¸ÖÖ [%s-%s] ÖØÃû£¬Ìύʧ°Ü£¡',[GrainType_rec.Name,glInput]); exit; end; //¸üÐÂÁ¸ÖÖÃû³Æ updateNameSql(t_Grain, glInput, nam1, GrainType_rec.Code, Grain.Code); Grain.Name := glInput; //¼ÓÔØÁ¸ÖÖÁбí queryGrainlistSql(t_Grain, lbType2); //¸üбêÇ©£¬¼Ç¼ÈÕÖ¾ sLabel70.Caption := Format('Á¸Ê³ÖÖÀà - [%s]',[Grain.Name]); lblInter.Caption := Format('Ìáʾ£ºÐÞ¸ÄÁ¸ÖÖ [%s-%s] ³É¹¦£¡',[GrainType_rec.Name,Grain.Name]); log4info(Format('Ìáʾ£ºÊý¾Ý¿â [%s] Á¸Ê³Ãû³Æ [%s] ¸üгɹ¦.',[t_Grain,Grain.Name])); //ÇåÀíÈ«¾Ö±äÁ¿ glInput := ''; frmInput.InitGrainRec(); end; //ɾ³ýÁ¸ÖÖ procedure TfrmMain.btnDelClick(Sender: TObject); var nam : string; begin //È·¶¨Ñ¡ÖеÄÁ¸ÖÖÃû³Æ glCurrIndex := lbType2.ItemIndex; if glCurrIndex<0 then exit; if Grain.flag then begin MessageBox(handle,'´íÎ󣺽ûֹɾ³ý´óÀàÁ¸ÖÖÃû³Æ£¡','´íÎó¶Ô»°¿ò',MB_OK+MB_ICONERROR); exit; end; //ɾ³ýÁ¸ÖÖ nam := lbType2.Items[glCurrIndex]; deleteGrainSql(t_Grain, nam); //¼ÓÔØÁ¸ÖÖÁбí queryGrainlistSql(t_Grain, lbType2); //¸üнçÃæÐÅÏ¢ sLabel70.Caption := 'Á¸Ê³ÖÖÀà'; lblInter.Caption := Format('Ìáʾ£º³É¹¦É¾³ý [%s] Á¸ÖÖÐÅÏ¢£¡',[nam]); log4info(lblInter.Caption); end; //------- ÖØÁ¿Ð£×¼ ------------------------------------------------------------- //ÊÖ¶¯²âÊÔÒ»×éÊý¾Ý procedure TfrmMain.btnWeightCoef1Click(Sender: TObject); 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; //------- ϵͳÐÅÏ¢ÉèÖà --------------------------------------------------------- //ÊÖ¶¯²âÊÔ-µ÷ÓÃÐéÄâ¼üÅÌ procedure TfrmMain.sBitBtn28Click(Sender: TObject); begin //µ÷ÓÃosk¼üÅÌ //OpenOnScreenKeyboard(); //´ò¿ª´¥¿Ø°å ShellExecute(0, nil, 'OpenTabTip', nil, nil, SW_SHOWNORMAL); //´´½¨ÊäÈë¶Ô»°¿ò ShowInput(edtSampleName.Text); edtSampleName.Text := glInput; glInput := ''; end; //ϵͳÐÅÏ¢-µ÷ÓÃÐéÄâ¼üÅÌ procedure TfrmMain.btnOSKClick(Sender: TObject); begin //´ò¿ª´¥¿Ø°å ShellExecute(0, nil, 'OpenTabTip', nil, nil, SW_SHOWNORMAL); //´´½¨ÊäÈë¶Ô»°¿ò ShowInput(edtPrefix.Text); edtPrefix.Text := glInput; glInput := ''; 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); PlcConn.heart_ip := edtHeartIP.Text; PlcConn.heart_port := StrToIntDef(edtHeartPort.Text,8868); 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, 'Ìáʾ£ºÇ¤¼ñϵͳ¡¢Ë®·ÖÒÇ¡¢¼ì²â²ÎÊý±£´æ³É¹¦£¡', '±£´æ¶Ô»°¿ò',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; faultCode : Word; //Ë®·ÖÒǹÊÕÏÂë begin //¼ì²éË®·ÖÒǹÊÕÏÂë ReadFaultCode(hWrDev, @faultCode); RefashFaultCode(faultCode); //³õʼ»¯°æ±¾Êý×é 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; faultCode : Word; //Ë®·ÖÒǹÊÕÏÂë begin //Ö´ÐÐË®·ÖÒÇά»¤Ö¸Áî ret := 0; case TsBitBtn(Sender).Tag of 1: ret := SendCommands(hWrDev, WR_VALV01,0,15,0); //ÉÏ·§ÃÅ¿ª 2: ret := SendCommands(hWrDev, WR_VALV02,0,15,0); //ÉÏ·§ÃÅ¹Ø 3: ret := SendCommands(hWrDev, WR_VALV03,0,15,0); //Ï·§ÃÅ¿ª 4: ret := SendCommands(hWrDev, WR_VALV04,0,15,0); //Ï·§ÃÅ¹Ø 5: ret := SendCommands(hWrDev, WR_VALV05,0,15,0); //Ë«·§ÃÅ¿ª 6: ret := SendCommands(hWrDev, WR_VALV06,0,15,0); //Ë«·§ÃÅ¹Ø 7: ret := SendCommands(hWrDev, WR_VIBRATE_01,0,15,0); //Õñ¶¯¿ª 8: ret := SendCommands(hWrDev, WR_VIBRATE_02,0,15,0); //Õñ¶¯¹Ø end; //ÏÔʾִÐнá¹û if ret=0 then lblMaintain.Caption := 'Ìáʾ£ºÖ´ÐÐË®·ÖÒÇ ['+TsBitBtn(Sender).Caption+'] ²Ù×÷³É¹¦£¡' else lblMaintain.Caption := 'Ìáʾ£ºÖ´ÐÐË®·ÖÒÇ ['+TsBitBtn(Sender).Caption+'] ²Ù×÷ʧ°Ü£¡'; //¼ì²éË®·ÖÒǹÊÕÏÂë ReadFaultCode(hWrDev, @faultCode); RefashFaultCode(faultCode); end; procedure TfrmMain.sImage4Click(Sender: TObject); begin // ʹ´°ÌåÔÚÈÎÎñÀ¸ÉϿɼû Application.Minimize; end; end.