Compare commits

..
Author SHA1 Message Date
Milan Hanajik 4c29a5d087 Barcode printing for CEVAK - OnePerMeter component, ver. 2.18.1506 2020-07-27 11:15:04 +02:00
Milan Hanajik 6e4996d9aa Barcode printing for CEVAK, ver. 2.18.1503 2020-07-17 10:05:48 +02:00
Milan Hanajik b563f187d3 Reconfigured for CEVAK-200 2020-02-10 14:25:48 +01:00
Milan Hanajik ca576e3448 ver. 2.18.1413 2020-02-10 14:19:36 +01:00
Milan Hanajik 3a55002027 ver. 2.18.1412 2020-02-10 13:55:58 +01:00
Milan Hanajik bbadacf7d3 Minor change 2020-02-10 12:13:05 +01:00
Milan Hanajik 2ff7b02e72 Output.Printers.Label with water meter s/n printed as a QR code, ver. 2.18.1411 2020-02-10 09:49:22 +01:00
Milan Hanajik 65c441d929 ver. 2.18.1406 2020-01-31 09:01:05 +01:00
Milan Hanajik 9390dc95c2 Solution upgraded to VS2012, ver. 2.18.1401 2020-01-17 08:27:46 +01:00
Milan Hanajik 97c612e49b ver. 2.18.1388 2019-12-19 11:25:30 +01:00
Milan Hanajik 4a185ed35b Output.DB.ProductionTracing : Alternative profuction tracing DB possible. 2019-12-18 17:48:11 +01:00
Milan Hanajik 2718c4021c RestoreAndFixBatch functionality modified. 2019-12-18 15:04:28 +01:00
Milan Hanajik ebb2950e84 (1) Bug fix in sending FM pump frequencies to control board, (2) More logging, ver. 2.18.1387 2019-12-18 13:25:05 +01:00
Milan Hanajik 67a53909f8 FixedstartDeferredEvalSeq : Delay time before grabbing images introduced. 2019-12-11 14:21:37 +01:00
Milan Hanajik fbfbbecca4 E5 fixed, ver. 2.18.1380 2019-12-11 14:21:24 +01:00
Milan Hanajik e8db0f46c3 MainSeq bug fix : Program crashed when OuterLoop.Start was started as the first test, ver. 2.18.1374 2019-12-05 14:52:00 +01:00
Milan Hanajik c1705713df ALZIR_25 : French language 2019-11-26 17:18:07 +01:00
Milan Hanajik 0fd1d9e141 Elde.RegisterReader.RegisterReader.Position, IRegisterReader.Position, etc. introduced, ver. 2.18.1367 2019-11-26 17:17:55 +01:00
Milan Hanajik 5ee66205a9 ALZIR_25 symbol and component (22.11.2019) added 2019-11-26 17:14:20 +01:00
Milan Hanajik 03e8108704 FixedStartDeferredEval a FixedStartMassCollDeferredEval, ver. 2.18.1362 2019-11-15 16:55:55 +01:00
Milan Hanajik ed4179be5f All three TesttMethods.Adjustment.WMErrorsForm-s are more robust. 2019-11-15 16:55:53 +01:00
Milan Hanajik bedbecbcc3 TestMethods.FixedStart.FixedStartSeq code cleanup, references to scale/tank/draining/mass measurement removed. 2019-11-15 16:55:29 +01:00
Milan Hanajik e81de2267b ver. 2.18.1361 2019-11-12 07:57:44 +01:00
Milan Hanajik 3dfff4ad70 New iPerlCommunication.iPerlHead porc. parameter DoQ2CorrInside05pct and related functionality. 2019-11-11 11:28:39 +01:00
Milan Hanajik 7a640621ac Bug fixes : (1) FlowMeterDewa, (2) ControlComWrap.ReferenceFreqs(int i), ver. 2.18.1360 2019-11-11 09:46:25 +01:00
Milan Hanajik 807daf2bcd ver. 2.18.1357 2019-10-29 13:37:16 +01:00
Milan Hanajik ede1773b4f ver. 2.18.1356 2019-10-28 15:45:35 +01:00
Milan Hanajik e3ae1b24f1 Output.fileWriters.IperlLogger bug fix, ver. 2.18.1355 2019-10-28 15:38:42 +01:00
Milan Hanajik f6dc9d74fc iPerlCommunication : DelayBetweenRetries introduced. 2019-10-28 14:47:05 +01:00
Milan Hanajik 51f3a6e6c2 (1) ProcedureDlg: Draining before/after in Process tab, (2) DoDrainingAfter implemented in test method sequences. 2019-10-25 15:25:47 +02:00
Milan Hanajik f81d5111a9 ver. 2.18.1351 2019-10-24 09:02:12 +02:00
Milan Hanajik b24ec4ea2d ver. 2.18.1350 2019-10-24 08:55:44 +02:00
Milan Hanajik f3ed9a64f7 Transition sequences and hydraulic paths are not displayed and cannot be edited for test methods with DoTranisitions( ) == false. 2019-10-24 08:55:41 +02:00
Milan Hanajik 866939abbd (1) TBF.BenchControl.Elde.SendCommandArgs class and cbCommandQueue (2) DiverterToTank, DiverterToSink commands modified. 2019-10-24 08:55:40 +02:00
Milan Hanajik 248f51fa69 TransitionContext.AfterTestWithOverlap, PID coef. set earlier as well, nextHydroTest in MainSeq. 2019-10-24 08:55:31 +02:00
Milan Hanajik b4dc83e7fa (1) Modifications for WR20, WR21 (2) ProcessData.BenchInfo.TestBenchId/TextBenchName are always used by Oracle and ProductionTracing. 2019-10-22 12:48:58 +02:00
Milan Hanajik 0bb6a2cd8c ver. 2.18.1331 2019-10-15 09:35:45 +02:00
Milan Hanajik c3d3a8c987 (1) "Fix' possible for user 'milan' even when previous records are missing, (2) More OracleWZTypSelection, ver. 2.18.1330 2019-10-11 16:56:20 +02:00
Milan Hanajik 825230d9e9 ver. 2.18.1328 2019-10-09 14:41:00 +02:00
Milan Hanajik cb13e3f108 ver. 2.18.1327 2019-10-09 14:34:01 +02:00
Milan Hanajik 2552949c59 ver. 2.18.1326 2019-10-09 14:22:51 +02:00
Milan Hanajik 317e0f16cb (1) TestMethods.Dummy component, (2) Three custom shared buttons, (3) ProcedureDlg and Procedures.TestWizard modified. 2019-10-09 14:00:08 +02:00
Milan Hanajik 8e046046cd SensusTestInfo extended 2019-10-09 13:59:56 +02:00
Milan Hanajik e440981068 'ShowDisabledPositions' supported when displaying previous results. 2019-10-08 09:48:37 +02:00
Milan Hanajik 299f3ecb68 ver. 2.18.1325 2019-10-01 12:02:30 +02:00
Milan Hanajik 39aa02f9ab Oracle DB only : Refactorization : TBF.UI namespace, no change of function, part 2. 2019-10-01 11:12:51 +02:00
Milan Hanajik d502873d17 FlowMeter, FlowmeterTriplet : Condiiton (flow < 0.1 * NominalFlow) removed from LtrPerPulseCorrected( ), ver. 2.18.1324 2019-09-26 15:53:00 +02:00
Milan Hanajik da192a207c (1) StandardCamera.TestStartEndForm fixed (exclamation), (2) Simulate mode for camera with sample.bmp, ver. 2.18.1322 2019-09-23 08:03:16 +02:00
Milan Hanajik 23560f1702 Bug fix : Program crashed when on-screen result items were defined for the first time on a PC (columnWidths == null). 2019-09-23 07:16:35 +02:00
Milan Hanajik 36a6fba408 (1) FlowMeteDewa uses EtPulses2, EtPulses3, (2) WMChart fixed, Q4 displayed, (3) Minor MainSeq bug fix, ver. 2.18.1318 2019-09-22 17:11:48 +02:00
Milan Hanajik 2ca9c104d2 DEWA_300 component upgraded. 2019-09-18 14:45:21 +02:00
Milan Hanajik 994568799d Refactorization: TBF.UI namespace, no change of function, ver. 2.18.1314 2019-09-17 10:58:44 +02:00
Milan Hanajik 7f8a5c83ed Users : Password change, password requirements, password history, BackupAndSecurity component, ver. 2.18.1313 2019-09-16 08:52:20 +02:00
Milan Hanajik 99b68f1dd6 Bug fix : Crash when closing TBF program (ModelessActivityForm). 2019-09-15 10:51:14 +02:00
Milan Hanajik 604c59723f (1) Production Tracing tab removed from MoreWMResultsDlg, (2) WMChart: testRslt.TestTime used instead of mtr.TestTime, AxisX Minimum and Maximum. 2019-09-15 06:24:42 +02:00
Milan Hanajik 886d87c03d Config.Mappins.UserMap fixed for TURA_IPERL, etc. (Tag) 2019-09-14 10:41:42 +02:00
Milan Hanajik d4eb52d70e RegulValve.SetFlowOp in progress 2019-09-12 13:50:53 +02:00
Milan Hanajik e2650736cd iPerlCommunication simulation 2019-09-12 13:50:47 +02:00
Milan Hanajik 77b71d5a7d LoginDlgWithBenchSelection : Logging with full name fixed, ver. 2.18.1308 2019-09-11 15:46:15 +02:00
Milan Hanajik bd65ff5420 Cosmetical changes 2019-09-10 10:57:58 +02:00
Milan Hanajik 0449c38de2 Polish language, ver. 2.18.1305 2019-09-09 09:35:43 +02:00
Milan Hanajik eb6f76d6f5 Configuratin is encrypted for PUCHONG_200 as well, ver. 2.18.1303 2019-09-05 09:28:04 +02:00
Milan Hanajik 6fdb030b9f GID.MetrologicalAuthority, GID.WaterMeterAuthority added and used in MetrologyDlg, ProcedureDlg (KEMPNO_50), ver. 2.18.1302 2019-09-05 08:52:34 +02:00
Milan Hanajik 6079c8419f (1) Diverter switch time measurement modifications (2) const int CountWhenSendingRdDivCmd = 1, CountWhenReadingDiv = 3. 2019-09-04 15:08:36 +02:00
Milan Hanajik ef6f21eb9e Safer saving corrections to runtime component, test of a null reference. 2019-09-03 09:53:30 +02:00
Milan Hanajik 50db69e5cb ver. 2.18.1300 2019-09-02 10:21:05 +02:00
Milan Hanajik 9194871508 ver. 2.18.1299 2019-09-02 08:38:55 +02:00
Milan Hanajik 5dde27bad9 (1) Database export, import and creation completed, TODO pwd, (2) Warning message with yes/no confirmation when aborting a cycle. 2019-08-27 18:01:48 +02:00
Milan Hanajik e61e5c59cb TestMethods.Q2CorrectionFromHistory sets test results, TODO: Web service. 2019-08-27 14:40:30 +02:00
Milan Hanajik ff3118068d Delete handler subscriptions from controls (memory leak if not done???), ver. 2.18.1298 2019-08-26 14:53:41 +02:00
Milan Hanajik c3d5e157ec TestMethods.Q2CorrectionFromHistory slightly modified, no State.Create() and do {} while loop, ver. 2.18.1297 2019-08-15 18:22:53 +02:00
Milan Hanajik ef5320917a CalculatedInitQ2CorrXY added to ProcessData, used in InitOrReadQ2Correction(...), TestMethods.Q2CorrectionFromHistory added, ver. 2.18.1295 2019-08-15 16:05:17 +02:00
Milan Hanajik e37dd87ece ver. 2.18.1292 2019-08-14 23:02:46 +02:00
Milan Hanajik 128d71bcd8 ver. 2.18.1291 2019-08-14 13:56:52 +02:00
Milan Hanajik da220f4e7f Dramatic changes in displaying results on screen, ver. 2.18.1290 2019-08-14 13:30:20 +02:00
Milan Hanajik 2d42ae95f8 TestProgressControls changes in progress. 2019-08-09 09:55:35 +02:00
Milan Hanajik e0af6a5c20 (1) SaveDiverterCorr calculation fix (2) Corrections applied immediately in SaveFlowmeterCorr and SaveDiverterCorr, ver. 2.18.1285 2019-08-09 09:55:34 +02:00
Milan Hanajik 838ec17b29 TestMethods.DiverterTest bug fix, correction time applied 'DivRepetitions' times now, ver. 2.18.1284 2019-08-08 14:45:35 +02:00
Milan Hanajik b2b0be4097 ver. 2.18.1283 2019-08-07 15:22:30 +02:00
Milan Hanajik 142da5cbec ver. 2.18.1282 2019-08-07 14:27:11 +02:00
Milan Hanajik 969c983d42 Warsaw END component upgraded (16.3.2018), this fixed communication with pressure meters, ver. 2.18.1281 2019-08-07 13:38:18 +02:00
Milan Hanajik 1d86a1289d UserManagement : Config file is encrypted, ver. 2.18.1280 2019-08-07 10:38:48 +02:00
Milan Hanajik d4518ac651 ver. 2.18.1280 2019-08-07 08:57:41 +02:00
Milan Hanajik 73aa148ded ver. 2.18.1279 2019-08-06 15:38:50 +02:00
Milan Hanajik 2041b7b3b1 WR18, WR19 added to Results.Utils, ver. 2.18.1278 2019-08-06 15:37:39 +02:00
Milan Hanajik d708e6e01f Ambiet.Comet : 'Set DTR to 1' property, ver. 2.18.1277 2019-08-06 15:36:10 +02:00
Milan Hanajik 0580e04be4 Back up Configuration/Results added to menu, Import DB added to DatabaseSettingsDlg, ver. 2.18.1275 2019-08-06 15:35:59 +02:00
Milan Hanajik 59f1de4370 Test cardReaders != null before cardReadrs use. 2019-08-05 12:06:37 +02:00
Milan Hanajik bb1efb122e TBF : Configuration saved in C:\TBF\Cfg directory, ver. 2.18.1274 2019-07-25 15:13:06 +02:00
Milan Hanajik 375cea26a6 TURA_IPERL_NEW : (1) Processing symbol implemented, (2) Elde component dated 17.7.2019 added, ver. 2.18.1273 2019-07-24 15:48:32 +02:00
Milan Hanajik 156cec5596 It is not possible to fix a production tracing error if previous step record is still missing : last step is verified once again when fixing, ver. 2.18.1272 2019-07-24 15:15:09 +02:00
Milan Hanajik 98a3730fa3 MoreWMResultsDlg : Production tracing message, ver. 2.18.1271 2019-07-24 13:22:07 +02:00
Milan Hanajik 2f788adb7d (1) ProcedureDlg is initially unlocked after New/Copy/Import, (2) ProceduresDlg displays extra information in 'More' column. 2019-07-23 12:09:24 +02:00
Milan Hanajik e622718c27 (1) Encrypt console app. (2) Decode app.=> Decrypt (3) LocalSettings uses MemStream (4) PaddingMode.Zeros, ver. 2.18.1270 2019-07-23 12:09:22 +02:00
Milan Hanajik e98d633d7f FlyingMassCollComparative method supports multiple lift valves. 2019-07-23 12:09:21 +02:00
Milan Hanajik b83ffb9e9b (1) MonitoringCfg.NetAdapter parameter added, (2) It's IP address used in RegisterWorkplace(), (3) AdapterInfo class moved one level up. 2019-07-23 11:21:44 +02:00
Milan Hanajik 1d31e5c4b7 Output.DB.SaveDiverterCorrections added. 2019-07-23 11:21:43 +02:00
Milan Hanajik 1fbaccf4db Save local settings less frequently, check if UI settings were changed in SaveUISetting(). 2019-07-12 13:26:32 +02:00
Milan Hanajik c0c65f3381 Filipiny PT50 component upgraded, dated 12.7.2019. ver. 2.18.1269 2019-07-12 09:52:06 +02:00
Milan Hanajik d032d26c59 Config.Data bug fixes (Puchong, Munich), ver. 2.18.1268 2019-07-12 09:39:32 +02:00
Milan Hanajik 28a324be8d MainWnd.UI2Settings(): no ls.Save() when no UI change, LocalSettings: Saves either plain or encrypted file, ver. 2.18.1268 2019-07-12 09:19:24 +02:00
Milan Hanajik fa22b6a8c7 DiverterTest : One single statistics (temperature, ...) for complete diverter test loop 2019-07-10 16:00:27 +02:00
Milan Hanajik a89b134a5a RealDensity corrected to 998.2008 (was 988.2008) in SampleConfig/config.xml, Metrology/Density display modifications, ver. 2.18.1265 2019-07-10 15:59:42 +02:00
Milan Hanajik ed21afd82e Decode console application project added. 2019-07-10 10:02:36 +02:00
Milan Hanajik df5b240397 Results.Entities.TestRslt.IsRelErrTest() and IsDiverter() modified, ver. 2.18.1264 2019-07-10 08:58:05 +02:00
Milan Hanajik a6b8fade23 (1) DiverterTest component added, (2) Filipiny_50 component 9.7.2019, (3) flowMeterIdxAndDiv for FILIPINY_50, ver. 2.18.1263 2019-07-09 15:58:13 +02:00
Milan Hanajik 1fb6cf4717 TBF : Local settings encryption, ver. 2.18.1262 2019-07-09 12:37:33 +02:00
Milan Hanajik 4fbf471ea0 TestMethods.SensitivityTest added, STOP handled correctly in SensitivityTestSeq, ver. 2.18.1261 2019-07-08 12:52:28 +02:00
Milan Hanajik b57d22e276 Results.Output.WMChart : MarkerSize for printer = 1, MarkerStyle = Circle, ver. 2.18.1259 2019-06-30 13:15:25 +02:00
Milan Hanajik 9fa7079dc0 ResultsBrowser ver.2.18.1258 2019-06-30 12:47:01 +02:00
Milan Hanajik 2a05126444 ver. 2.18.1258 2019-06-28 14:15:47 +02:00
Milan Hanajik 58d1c1e1ef FILIPINY_50 symbol processing added to sources, component dated 28.6.2019 added, ver. 2.18.1257 2019-06-28 13:04:25 +02:00
Milan Hanajik 430e897429 MainSeq : transitionBefore : case of outer loops handled correctly, ver. 2.18.1256 2019-06-27 21:05:21 +02:00
Milan Hanajik b9b86ecaff MainSeq : transitionBefore is not executed between 2 repetitions of a test, ver. 2.18.1255 2019-06-27 11:14:26 +02:00
Milan Hanajik 1c5c260a82 Puchong : (1) RegValveCalib[] array dimensions changed, (2) component upgraded (26.6.2019), ver. 2.18.1254 2019-06-26 16:25:40 +02:00
Milan Hanajik f46352e8fd Output.FileWriter.IperlLogger bug fix : Q2 error without correction when the name of calculated test in not "Q2". 2019-06-25 18:25:32 +02:00
Milan Hanajik 096b649e40 iPerl : Pruefindex is compared with the max. allowed value only in case WM is Failed (either Pink or Magenta back color), ver. 2.18.1254 2019-06-25 18:24:09 +02:00
Milan Hanajik 4642abac2d SequenceBase : SummaryResults : tstRslt.ConstMasterRaw and tstRslt.RefFlowmeter() unstead of outPath.FlowMeter... (bug fix), ver. 2.18.1252 2019-06-25 12:08:14 +02:00
Milan Hanajik 721904dbae Diverter : flowMtrNr4Cmd fixed for PUCHONG_200, ver. 2.18.1251 2019-06-24 11:22:47 +02:00
Milan Hanajik 899caac18b (1) Puchong-200 component upgraded, 24.6.2019 : dimensions of arrays changed, etc., (2) Related ControlComWrap changes, ver. 2.18.1250 2019-06-24 10:38:20 +02:00
Milan Hanajik a07c54186f Changes simplyfying debugging. 2019-06-21 13:25:47 +02:00
Milan Hanajik e252e55197 (1) Results.Output.Printers.WMChart added, (2) Results.Forms.MoreWMResultsDlg added, (3) Output.Printers.OnePerMeter can print graphs, ver. 2.18.1249 2019-06-21 13:25:13 +02:00
Milan Hanajik b873dd5bf5 TBF : iPerl : Two bug fixes : (1) checking previous records, (2) evaluating MaxProefindex 2019-06-19 15:31:56 +02:00
Milan Hanajik 59eb1902f7 ver. 2.18.1245 2019-06-14 11:25:55 +02:00
Milan Hanajik db6903e406 TBF : SensusTestInfo for Greece added, Q2 correction for Greece modified, ver. 2.18.1244 2019-06-14 11:03:11 +02:00
Milan Hanajik 53bff92b21 Resources: (1) ResultsBrowser: unused strings removed, (2) TracingDB: Process->Workflow, Workstep->Workflow step, ver. 2.18.1243 2019-06-07 14:06:32 +02:00
Milan Hanajik f8458a4275 TURA_IPERL : Diverter.flowMtrNr4Cmd corrected. 2019-06-06 09:03:23 +02:00
Milan Hanajik 0c5003be7b Results.Entities.TestRslt.IsVolumeMethod( ) fixed, ver. 2.18.1241 2019-06-05 14:07:38 +02:00
Milan Hanajik 05bdf0dc06 TURA_IPERL || TURA_SPECIAL : TracingResultsDlg shown after a double-click on a WM results. 2019-06-05 09:02:28 +02:00
Milan Hanajik dfd8e879d1 Bug fix : 'Save results' was inactive when all test were done, but at least one WM position was disabled, ver. 2.18.1240 2019-06-03 14:09:10 +02:00
Milan Hanajik 2382ceea73 TestMethods.LeakTest : Start and End mass saved to test result. 2019-05-30 08:32:37 +02:00
Milan Hanajik 0c72e76ecc TestMethods.LeakTest : Test parameters IsPumpRunning, MaxPressureDrop and MaxMassIncrease added. 2019-05-29 15:31:11 +02:00
Milan Hanajik 6226e069eb Kepno : Component upgraded, 29.05.2019, opravene P4. 2019-05-29 15:31:08 +02:00
Milan Hanajik 47b6bb4cf7 ProductionTracing : wm.IsLastErrorOk used again, ErrorFlags bit E28 set in iPerlCheck appropriately, ver. 2.18.1235 2019-05-23 10:30:28 +02:00
Milan Hanajik bbcbee894d Users : production_tracing_administrator localized, ver. 2.18.1234 2019-05-22 14:35:58 +02:00
Milan Hanajik 944862dde0 iPerlCommunicationForm : (1) OutOfRange / Q2OutOfRange aren't an RFID error, (2) CommFailed cleanup, (3) WriteQ2Correction(..) cleanup (updateQ2adjByCalibFactor arg. 2019-05-22 14:30:10 +02:00
Milan Hanajik 14a5721649 IperlHead : TestEndTelegramIx obtained in a correct way. 2019-05-22 14:29:20 +02:00
Milan Hanajik 93bcde2599 More robust reading of the start sample from opto-data. 2019-05-21 14:40:22 +02:00
Milan Hanajik 05c312fbb9 Selected LogType name passed to caller by GetBestmatch(..) 2019-05-17 08:13:31 +02:00
Milan Hanajik 53795db720 Output. ... .Tracing.CheckPreviousRecordOfSingleWM(.) cleanup : E28 is used everywhere : fixed 2019-05-16 13:35:11 +02:00
Milan Hanajik 156215bea6 (1) Modbus.CometAmbient.Ambient. UpdateProcessData(..) was missing, (2) FixedStartMassCollection : Flow regulation stopped after test. 2019-05-16 10:34:47 +02:00
Milan Hanajik 48c021e9fb ErrorFlags.TestParams : E25, E26, E27, E28 added for IPERL 2019-05-16 10:34:37 +02:00
Milan Hanajik 357a216b6b Stopping flow regulation after test in all remaining FlyingStart.... sequences. 2019-05-15 16:05:14 +02:00
Milan Hanajik d6215178b1 MetrologyDlgEvaporationTab : Resources : Correction -> Evaporation, ver. 2.18.1229 2019-05-15 15:46:36 +02:00
Milan Hanajik 1a122cfa12 Various.Evaporation comp., MetrologyDlgEvaporationTab and IEvaporation/IScaleOrTank/ITankDraining with EvaporationRate(double T) introduced. 2019-05-15 15:14:04 +02:00
Milan Hanajik 59087474d9 Results.Entities.TestRslt.TestTimeCorrection added and used in test methods with diverter. 2019-05-15 11:18:38 +02:00
Milan Hanajik 3fceee156b (1) MetrologyDlgDiverterTab added to UI, (2) double TestTimeCorrection(double flow) added to IDiverter and implemented in Elde.Diverter and Dummy.Diverter. 2019-05-15 11:18:20 +02:00
Milan Hanajik 55ed11ae58 Results.Entities.TestRslt.TimeBtwnMassMsrmnts added, evaluated in test methods, ver. 2.18.1226 2019-05-14 16:59:20 +02:00
Milan Hanajik 39f44ad2e3 (1) ConstMasterCorr added to results, (2) MakeSimulated( ) for FlyingStartMassCollection enhanced. 2019-05-13 11:43:42 +02:00
Milan Hanajik 3075169fd1 Output.ProductionTracing.Tracing.CheckPreviousRecordOfSingleWM(.) cleanup : E28 is used everywhere, ver. 2.18.1225 2019-05-13 09:50:58 +02:00
Milan Hanajik d51edbfbfe Elde.FlowMeterDewa : (1) Exact LtrPerPulseCorrected calc. (2) nominal flow and flowmeters bitfield (=Idx0) calculated from particular flowmeters. 2019-05-12 08:17:52 +02:00
Milan Hanajik 7724c004a0 Elde interface : filters, pidCoef and shortPulses are set by SetFilterPidShortPulses( ) only. 2019-05-10 16:28:18 +02:00
Milan Hanajik 6b42dd091f MetrologyDlgFlowMeterTab, ...BalanceTab, ...PressTab, ...TempTab : Error column added. 2019-05-10 15:11:32 +02:00
Milan Hanajik 4221de3b22 Stopping flow regulation modifications : cmd=Stop, real flowMeterNr used. 2019-05-10 10:53:48 +02:00
Milan Hanajik a4debe7ac0 Bug fixes in Results.Entities (CopyContentFrom(.)) 2019-05-10 10:08:00 +02:00
Milan Hanajik c1cfc67cce Bug fix in calculated Q2 error value MakeQ2CorrectedFrom( ), iPerl.CalibTargetQ2 is used now, ver. 2.18.1219 2019-05-10 08:38:46 +02:00
Milan Hanajik 7fa06079c2 Short pulses bug fix : argument was not sent when reading diverter transitions, ver. 2.18.1218 2019-05-09 16:22:20 +02:00
Milan Hanajik a0818e3605 SensusTestInfo : LogType.DEWA_wo_Q2 added, ver. 2.18.1217 2019-05-09 15:15:05 +02:00
Milan Hanajik 8197777e69 SummaryResults : ErrorMaster from a correction curve for a volume method. 2019-05-09 11:23:43 +02:00
Milan Hanajik 667f548101 ControlComWrap logging levels modified. 2019-05-09 10:42:51 +02:00
Milan Hanajik fa1dc3cc62 (1) DAWA 300 has 10 water meter, (2) Results screen updated after a counter increment. 2019-05-07 14:37:03 +02:00
Milan Hanajik fed11e6439 Short pulses bug fix. 2019-05-07 13:24:33 +02:00
Milan Hanajik d197629cdb Static counters added (not mapped to DB now), ver. 2.18.1213 2019-05-07 12:36:47 +02:00
Milan Hanajik f8a2126c90 TestMethods.Counter added, ver. 2.18.1211 2019-05-06 13:45:07 +02:00
Milan Hanajik 5955a47518 ver. 2.18.1210 2019-05-06 10:22:11 +02:00
Milan Hanajik 32a13ecf49 (1) Ref.flowmeter, Test method Elde (string) added to result items (2) FileWriters.Elde.Writer (3) New DEWA300 component (3.5.2019), ver. 2.18.1209 2019-05-06 10:13:55 +02:00
Milan Hanajik 5936efcad2 IperlHead : Opto data correctly saved in case of test repetitions (iPerlSpecial), ver. 2.18.1208 2019-05-03 12:14:52 +02:00
Milan Hanajik 04547306d0 Bug fix : Purging sequence is executed after cycle selection after a STOP in the previous evacuation sequence, ver. 2.18.1207 2019-05-03 09:47:26 +02:00
Milan Hanajik d0bba74dff (1) filters[] initialized earlier in test method sequences, (2) filters and shortPulses used in SetFlowOp(.), ver. 2.18.1206 2019-05-02 10:23:33 +02:00
Milan Hanajik 1e97a26863 (1) PreviousResults : 'Fix' option added to 'Send again' and 'Reload', (2) Missing PCB nr. does not cause a production tracing error. 2019-04-30 13:17:08 +02:00
Milan Hanajik 6341d5a474 (1) WMTypeID loaded correctly when restoring a batch, (2) WMTypeID, WMTypeRev, E25, E26, E27 and E28 added to results, ver. 2.18.1205 2019-04-30 09:50:29 +02:00
Milan Hanajik e9bda4f1b2 Short pulses test parameter used in SendCommand(..., shortPulses), ver. 2.18.1204 2019-04-29 10:36:08 +02:00
Milan Hanajik 6cc10d221d Output.FileWriters.Elde added, ver. 2.18.1204 2019-04-26 13:00:47 +02:00
Milan Hanajik 3d243c0a19 MainSeq : Cosmetical changes. 2019-04-26 09:50:04 +02:00
Milan Hanajik e32a484e81 IperlHead procedure parameter CalibTargetQ2 added, ver. 2.18.1203 2019-04-25 13:53:08 +02:00
Milan Hanajik 5dad80d031 Stopping flow regulation after a test completes (in three test methods). 2019-04-25 11:00:34 +02:00
Milan Hanajik 24e23d01e8 More changes : RequredFlowLo/Hi, ReferenceFlow, RefereneFreq, etc. float -> double, ver. 2.18.1202 2019-04-25 08:58:54 +02:00
Milan Hanajik b2ae78e0d9 SensusTestInfo for DEWA modified, ver. 2.18.1201 2019-04-24 11:46:01 +02:00
Milan Hanajik 79fe396a6d ver. 2.18.1200 2019-04-23 08:59:14 +02:00
Milan Hanajik cfb29c8149 DataEntry.Fewa.EntryForm added, ver. 2.18.1199 2019-04-20 10:07:31 +02:00
Milan Hanajik 960dc9d53a Output.SensusOracle.Database bug fix, as a consequence sometimes the IperlLogs were not written, ver. 2.18.1198 2019-04-19 11:18:49 +02:00
Milan Hanajik 03180392b0 IperlLogger : (1) Retv.Error handled properly, (2) more logging, ver. 2.18.1197 2019-04-18 11:23:19 +02:00
Milan Hanajik 03aa29cf75 SensusTestInfo for DEWA changed, ver. 2.18.1196 2019-04-18 09:35:40 +02:00
Milan Hanajik d724dab388 ver.2.18.1195 2019-04-15 16:20:55 +02:00
Milan Hanajik 208510921a DEWA : (1) Modification of SensusTestInfo, (2) Minor Q2 correction change, ver. 2.18.1194 2019-04-15 09:06:04 +02:00
Milan Hanajik 51d28fc5a9 ver. 2.18.1193 2019-04-15 08:20:24 +02:00
Milan Hanajik f8671ac516 (1) Range of flow extended to 125%, (2) RequredFlowLo/Hi etc. float -> double, ver. 2.18.1192 2019-04-15 08:15:47 +02:00
Milan Hanajik 556290abf6 DEWA300 double and tripple flowmeters, NominalFlow and LtrPerPulse are doubles, ver. 2.18.1191 2019-04-11 15:39:46 +02:00
Milan Hanajik e1e74e1588 IperlLogger fix (adjustment, negative PruefungsNrLog), etc., ver. 2.18.1189 2019-04-09 13:05:16 +02:00
Milan Hanajik fa7565e541 iPerlSpecial : MainWnd does not process num. keys, coax valve can be controlled manually, ver. 2.18.1188 2019-04-09 09:49:32 +02:00
Milan Hanajik 3c341d4d97 Test method sequences : Correct error message on flow setting timeout. 2019-04-08 10:34:12 +02:00
Milan Hanajik b8a16f1301 Q2 correction calculation and Q2CorrectionCheck activity modifications, ver. 2.18.1187 2019-04-08 09:44:13 +02:00
Milan Hanajik 33947e383f ver. 2.18.1186 2019-04-05 09:49:11 +02:00
Milan Hanajik 6a61c9400b Q2CorrectionCheck modified, ver. 2.18.1185 2019-04-05 09:04:44 +02:00
Milan Hanajik 32d560d164 SensusTestInfo fixes for repeatability and EMP, ver. 2.18.1184 2019-04-04 14:23:50 +02:00
Milan Hanajik 809b067260 Clean-up, Q2Corretion and Q2CorrectionDone removed from Results DB, ver.2.18.1183 2019-04-04 10:23:52 +02:00
Milan Hanajik b235f9ae20 (1) SUEZ cycle: InitOrReadQ2Correction, (Conditional)UpdateQ2Corrections, (2) Flow dir. detection fixed, (3) etc., ver. 2.18.1182 2019-04-03 16:19:46 +02:00
Milan Hanajik e356934ede ver. 2.18.1176 2019-03-28 09:17:33 +01:00
Milan Hanajik 2c4c76343d SensusOracle.Database and ProductionTracing.Tracing : CurrentOp => OpState with ...Scheduled and ...Running satates, ver. 2.18.1174 2019-03-22 11:21:06 +01:00
Milan Hanajik b8c4f35b1a 'completeTestInfo' reloaded when only the procedure changes (and not wmTypeID), usefull for iPerlSpecial, ver. 2.18.1174 2019-03-21 15:36:42 +01:00
Milan Hanajik c855a18c61 SensusTestInfo matching and its use in SensusOracle.Database and IperlLogger.Writer reimplemented, ver. 2.18.1173 2019-03-21 14:20:17 +01:00
Milan Hanajik d40f6a6c15 Output.DB.SensusOracle.Database : TestMode (no writes to DB). 2019-03-20 10:58:09 +01:00
Milan Hanajik a2bb50117e StartInfo is read from DB when previous results were reloaded. 2019-03-20 09:57:41 +01:00
Milan Hanajik 8624f30f71 IperlLogger bug fix, ver. 2.18.1172 2019-03-20 08:47:08 +01:00
Milan Hanajik 9fecf05b3f (1) ProcessTabPageEx: TRefHi, TRefLo (2) Ambient vals. written directly to ProcessData (3) Sequences changed:'readTempPressOps', ver. 2.18.1171 2019-03-20 08:25:01 +01:00
Milan Hanajik 0041ec9616 TURA_SEPCIAL uses ProcessTabPageExCtrl in MainWnd.Designer. 2019-03-20 08:23:03 +01:00
637 changed files with 46010 additions and 16717 deletions
+7
View File
@@ -1,11 +1,17 @@
Config/bin/
Config/obj/
Decrypt/bin/
Decrypt/obj/
DeviceTest/bin/
DeviceTest/obj/
Dirichlet.Numerics/bin
Dirichlet.Numerics/obj
Encrypt/bin/
Encrypt/obj/
GemCard/bin
GemCard/obj
GenCode128/bin
GenCode128/obj
GraphLib/bin
GraphLib/obj
TracingDB/bin
@@ -25,5 +31,6 @@ Users/obj/
UserManagement/bin/
UserManagement/obj/
Doc/
.vs/
*.suo
*.bak
+3 -2
View File
@@ -18,7 +18,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;SLM_50;HEAT_METERS;LANG_SK</DefineConstants>
<DefineConstants>TRACE;DEBUG;CEVAK_200;LANG_CS</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
@@ -28,7 +28,7 @@
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE;SLM_50;HEAT_METERS;LANG_SK</DefineConstants>
<DefineConstants>TRACE;CEVAK_200;LANG_CS</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
@@ -125,6 +125,7 @@
<ItemGroup>
<EmbeddedResource Include="Resources\Strings.cs.resx" />
<EmbeddedResource Include="Resources\Strings.de.resx" />
<EmbeddedResource Include="Resources\Strings.fr.resx" />
<EmbeddedResource Include="Resources\Strings.it.resx" />
<EmbeddedResource Include="Resources\Strings.pl.resx" />
<EmbeddedResource Include="Resources\Strings.resx">
+17 -5
View File
@@ -10,8 +10,8 @@ namespace Config
#if MUNICH
public const int WMsCount = 3;
public const int LineSize = 1;
public const int CompoundWMsCount = 1;
public const int LineSize = 3;
public const int CompoundWMsCount = 3;
public const int HeatMetersCount = 0;
public const int MaxPartNr = 3;
#elif DN100 || BADGER_STREDNA_TRAT || BADGER_VELKA_TRAT || CEVAK_200
@@ -20,12 +20,24 @@ namespace Config
public const int CompoundWMsCount = 1;
public const int HeatMetersCount = 0;
public const int MaxPartNr = WMsCount / LineSize;
#elif FUZHOU_300 || FUZHOU_150 || IZRAEL_200 || PUCHONG_200 || GENESIS || SLM_150 || PETERSBURG_200 || DEWA_300
#elif FUZHOU_300 || FUZHOU_150 || IZRAEL_200 || GENESIS || SLM_150 || PETERSBURG_200
public const int WMsCount = 6;
public const int LineSize = 6;
public const int CompoundWMsCount = 1;
public const int HeatMetersCount = 0;
public const int MaxPartNr = 3;
#elif PUCHONG_200
public const int WMsCount = 6;
public const int LineSize = 6;
public const int CompoundWMsCount = 3;
public const int HeatMetersCount = 0;
public const int MaxPartNr = 3;
#elif DEWA_300
public const int WMsCount = 10;
public const int LineSize = 10;
public const int CompoundWMsCount = 3;
public const int HeatMetersCount = 0;
public const int MaxPartNr = WMsCount / LineSize;
#elif DUBAJ_50
public const int WMsCount = 10;
public const int LineSize = 5;
@@ -50,7 +62,7 @@ namespace Config
public const int CompoundWMsCount = 1;
public const int HeatMetersCount = 0;
public const int MaxPartNr = 1;
#elif TORUN_50 || CEVAK_40 || MURES_40 || FUZHOU_50 || PETERSBURG_50 || KEMPNO_50 || BAHRAIN_50 || KRAKOW_50 || JUZNA_AFRIKA_50 || IZRAEL_25 || ZAMBIA || ZODINO || FEWA_50
#elif TORUN_50 || CEVAK_40 || MURES_40 || FUZHOU_50 || PETERSBURG_50 || KEMPNO_50 || BAHRAIN_50 || KRAKOW_50 || JUZNA_AFRIKA_50 || IZRAEL_25 || ZAMBIA || ZODINO || FEWA_50 || FILIPINY_50 || ALZIR_25
public const int WMsCount = 20;
public const int LineSize = 10;
public const int CompoundWMsCount = 1;
@@ -62,7 +74,7 @@ namespace Config
public const int CompoundWMsCount = 1;
public const int HeatMetersCount = 0;
public const int MaxPartNr = WMsCount / LineSize;
#elif TURA_IPERL
#elif TURA_IPERL || TURA_IPERL_NEW
public const int WMsCount = 40;
public const int LineSize = 20;
public const int CompoundWMsCount = 1;
+48 -4
View File
@@ -90,6 +90,10 @@ namespace Config.Entities
[Description("Wasserzähler")] Single,
[Description("Verbundwasserzähler")] Combined,
[Description("Wärmezähler")] HeatMeter,
#elif LANG_FR
[Description("Compteurs eau")] Single,
[Description("Mètres composés")] Combined,
[Description("Thermomètres")] HeatMeter,
#elif LANG_CS
[Description("Vodoměry")] Single,
[Description("Kombinované vodoměry")] Combined,
@@ -125,6 +129,9 @@ namespace Config.Entities
#elif LANG_IT
[Description("freddo")] ColdWater,
[Description("caldo")] HotWater,
#elif LANG_FR
[Description("eau froide")] ColdWater,
[Description("eau chaude")] HotWater,
#else
[Description("cold")] ColdWater,
[Description("hot")] HotWater,
@@ -240,6 +247,11 @@ namespace Config.Entities
[Description("immer")] Always = 1,
[Description("Bildschirm")] OnScreen = 2,
[Description("intern")] Internal = 3,
#elif LANG_FR
[Description("jamais")] Never = 0,
[Description("toujours")] Always = 1,
[Description("À l'écran")] OnScreen = 2,
[Description("interne")] Internal = 3,
#elif LANG_CS
/// czech
[Description("nikdy")] Never = 0,
@@ -281,6 +293,10 @@ namespace Config.Entities
[Description("Waage")] Scale,
[Description("Spanne")] Spread,
[Description("Standardabw.")] StdDev,
#elif LANG_FR
[Description("Balance")] Scale,
[Description("Envergure")] Spread,
[Description("Déviation std.")] StdDev,
#elif LANG_CS
/// cesky
[Description("váhou")] Scale,
@@ -291,7 +307,7 @@ namespace Config.Entities
[Description("Spread")] Spread,
[Description("Std.dev.")] StdDev,
#endif
Count
Count
}
public enum TestRedType
@@ -345,6 +361,14 @@ namespace Config.Entities
[Description("Prüfpunktergebnisse")] TestResult,
[Description("Wasserzelledaten")] MeterData,
[Description("Wasserzelleergebnisse")] MeterResult,
#elif LANG_FR
[Description("Autres")] Other,
[Description("Données de banc")] BenchData,
[Description("Résultats du banc")] BenchResult,
[Description("Données de test")] TestData,
[Description("Résultats de test")] TestResult,
[Description("Données du compteur d'eau")] MeterData,
[Description("Résultats du compteur d'eau")] MeterResult,
#else
[Description("Other")] Other,
[Description("Bench data")] BenchData,
@@ -354,7 +378,7 @@ namespace Config.Entities
[Description("Meter data")] MeterData,
[Description("Meter result")] MeterResult,
#endif
Count,
Count,
}
/// <summary> Possible modes of operation of components and devices. </summary>
@@ -371,6 +395,17 @@ namespace Config.Entities
[Description("Reply")] Reply,
[Description("Simuliert")] Simulate, /// Test bench simulation, this mode does not require any hardware
[Description("Geerbt")] Inherit,
#elif LANG_FR
[Description("Détection automatique: Éteindre")] DetectedOff = -2,
[Description("Détection automatique: Allumé")] DetectedOn = -1,
[Description("Ordinaire")] Normal = 0,
[Description("Détection automatique")] AutoDetect,
[Description("Erreur d'exécution")] FailureDuringOperation,
[Description("Éteindre")] Off,
[Description("Record")] Record,
[Description("Répondre")] Reply,
[Description("Simuler")] Simulate,
[Description("Hériter")] Inherit,
#else
[Description("Detected off")] DetectedOff = -2,
[Description("Detected on")] DetectedOn = -1,
@@ -383,7 +418,7 @@ namespace Config.Entities
[Description("Simulate")] Simulate, /// Test bench simulation, this mode does not require any hardware
[Description("Inherit")] Inherit,
#endif
Count,
Count,
}
public enum LogLevel
@@ -430,6 +465,11 @@ namespace Config.Entities
[Description("zentriert")] Center,
[Description("rechts")] Right,
[Description("angepasst")] Justified,
#elif LANG_FR
[Description("gauche")] Left,
[Description("centré")] Center,
[Description("droit")] Right,
[Description("justifié")] Justified,
#else
[Description("Left")] Left,
[Description("Center")] Center,
@@ -479,6 +519,10 @@ namespace Config.Entities
[Description("aus")] Off,
[Description("info")] Info,
[Description("ein")] On,
#elif LANG_FR
[Description("éteindre")] Off,
[Description("info")] Info,
[Description("allumé")] On,
#elif LANG_CS
[Description("vypnuto")] Off,
[Description("info")] Info,
@@ -496,7 +540,7 @@ namespace Config.Entities
[Description("info")] Info,
[Description("on")] On,
#endif
Count
Count
}
+36
View File
@@ -234,6 +234,42 @@ namespace Config.Entities
return null;
}
/// <summary>
/// Processes the selection done by the bench control panel in the main sequence.
/// </summary>
/// <param name="selection">Selection.Q1, .Q2, .Q3 or .Test</param>
/// <returns>The selected test or null</returns>
public virtual Test GetTest(string expandedTestName, out int testIx, out int repetNr)
{
for (int ix = 0; ix < Tests.Count; ix++)
{
Test test = Tests[ix];
if (test.Name.Equals(expandedTestName))
{
/// Name is not expanded => Repeats==1
testIx = ix;
repetNr = 1;
return test;
}
for (int r = 1; r <= test.Repeats; r++)
{
if (test.GetExpandedTestName(r).Equals(expandedTestName))
{
testIx = ix;
repetNr = r;
return test;
}
}
}
testIx = 0;
repetNr = 1;
return null;
}
public override string ToString()
{
return string.Format("{0}, rev.{1}", Name, Revision);
+36 -6
View File
@@ -30,7 +30,7 @@ namespace Config.Entities
public virtual float Uncertainty { get; set; } /// int [%] makes error limits tighter: 0 <= Uncertainty <= abs(ErrLimXx)
public virtual int Repeats { get; set; }
public virtual bool DoDraining { get; set; }
public virtual bool DoZeroing { get; set; }
public virtual bool DoDrainingAfter { get; set; }
public virtual bool DoControlWaterTemp { get; set; }
public virtual float TempLimLo { get; set; } /// Lower limit for the controlled temperature
public virtual float TempLimHi { get; set; } /// Upper limit for the controlled temperature
@@ -56,6 +56,9 @@ namespace Config.Entities
public virtual string RelTransAfter { get; set; }
public virtual string TransitionAfter { get; set; }
public virtual bool IsOuterLoopStart { get; set; } /// Not mapped to database
public virtual bool IsOuterLoopEnd { get; set; } /// Not mapped to database
public virtual IList<ComponentTest> MoreParams { get; set; }
public virtual Procedure Procedure { get; set; }
@@ -73,7 +76,7 @@ namespace Config.Entities
DoEvaluate = true;
Repeats = 1;
DoDraining = false;
DoZeroing = false;
DoDrainingAfter = false;
DoControlWaterTemp = false;
TempLimLo = 15.0f;
TempLimHi = 25.0f;
@@ -121,7 +124,7 @@ namespace Config.Entities
result.Uncertainty = Uncertainty;
result.Repeats = Repeats;
result.DoDraining = DoDraining;
result.DoZeroing = DoZeroing;
result.DoDrainingAfter = DoDrainingAfter;
result.DoControlWaterTemp = DoControlWaterTemp;
result.TempLimLo = TempLimLo;
result.TempLimHi = TempLimHi;
@@ -169,7 +172,7 @@ namespace Config.Entities
output.WriteLine(Uncertainty.ToString(ci));
output.WriteLine(Repeats.ToString(ci));
output.WriteLine(DoDraining.ToString());
output.WriteLine(DoZeroing.ToString());
output.WriteLine(DoDrainingAfter.ToString());
output.WriteLine(DoControlWaterTemp.ToString());
output.WriteLine(TempLimLo.ToString(ci));
output.WriteLine(TempLimHi.ToString(ci));
@@ -219,7 +222,7 @@ namespace Config.Entities
tst.Uncertainty = float.Parse(input.ReadLine(), ci);
tst.Repeats = int.Parse(input.ReadLine(), ci);
tst.DoDraining = bool.Parse(input.ReadLine());
tst.DoZeroing = bool.Parse(input.ReadLine());
tst.DoDrainingAfter = bool.Parse(input.ReadLine());
tst.DoControlWaterTemp = bool.Parse(input.ReadLine());
tst.TempLimLo = float.Parse(input.ReadLine(), ci);
tst.TempLimHi = float.Parse(input.ReadLine(), ci);
@@ -277,7 +280,7 @@ namespace Config.Entities
ln = inp.ReadLine(); if (ln != Uncertainty.ToString(ci)) { diff.AppendFormat(fmt, "Uncertainty", Uncertainty.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != Repeats.ToString(ci)) { diff.AppendFormat(fmt, "Repeats", Repeats.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != DoDraining.ToString(ci)) { diff.AppendFormat(fmt, "Draining", DoDraining.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != DoZeroing.ToString(ci)) { diff.AppendFormat(fmt, "Zeroing", DoZeroing.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != DoDrainingAfter.ToString(ci)) { diff.AppendFormat(fmt, "Zeroing", DoDrainingAfter.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != DoControlWaterTemp.ToString()) { diff.AppendFormat(fmt, "DoControlWaterTemp", DoControlWaterTemp.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != TempLimLo.ToString(ci)) { diff.AppendFormat(fmt, "TempLimLo", TempLimLo.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != TempLimHi.ToString(ci)) { diff.AppendFormat(fmt, "TempLimHi", TempLimHi.ToString(ci), ln); };
@@ -310,6 +313,33 @@ namespace Config.Entities
return null;
}
/// <summary>
/// Return test title for a this test and a given repetition number
/// </summary>
/// <param name="repetitonNr">1 .. Nr. repetitions</param>
/// <returns>Test title (string)</returns>
public virtual string GetExpandedTestName(int repetitionNr)
{
if (Repeats == 1)
{
if (Part == 0)
{
/// Single test
return Name;
}
else
{
/// A part of a single test
return string.Format("{0} ({1})", Name, Part);
}
}
else
{
/// More test repetitions
return string.Format("{0} ({1}/{2})", Name, repetitionNr, Repeats);
}
}
public virtual double GetErrLimLo(double volumeCTV, double testTime)
{
if (ErrLimLo <= ErrLimHi)
+5 -2
View File
@@ -1,5 +1,5 @@
///
/// Copyright (c) 2013-2017 Sensus Metering Systems
/// Copyright (c) 2013-2019 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
@@ -11,8 +11,11 @@ namespace Config.Entities
public virtual int Id { get; protected set; }
public virtual string UserName { get; set; } /// = name, alias, abbreviation
public virtual string FullName { get; set; } /// = description
public virtual int Number { get; set; }
public virtual string Tag { get; set; }
public virtual int Number { get; set; }
public virtual string Password { get; set; }
public virtual string Password2 { get; set; }
public virtual string Password3 { get; set; }
public virtual DateTime LastPwChange { get; set; }
public virtual IList<Group> Groups { get; set; } //User can be a member of a list of groups
+50 -35
View File
@@ -221,45 +221,60 @@ namespace Config
return error;
}
/// <summary>
/// Calculates corrected value form a list of corrections by interpolation.
/// It is assumed that values in the list 'corrections' are sorted.
/// </summary>
/// <param name="rawMeasurement">Raw uncorrected value</param>
/// <param name="corrections">Sorted (value, correction) pairs</param>
/// <returns>Corrected value</returns>
public static double CorrectedValue(double rawValue, IList<Config.Entities.MeasurementCorrection> corrections)
{
if (corrections == null || corrections.Count == 0) return rawValue;
if (rawValue < corrections[0].Measurement)
{
return rawValue + corrections[0].Correction;
}
/// <summary>
/// Calculates corrected value from a list of corrections by interpolation.
/// It is assumed that values in the list 'corrections' are sorted.
/// </summary>
/// <param name="rawMeasurement">Raw uncorrected value</param>
/// <param name="corrections">Sorted (value, correction) pairs</param>
/// <returns>Corrected value</returns>
public static double CorrectedValue(double rawValue, IList<Config.Entities.MeasurementCorrection> corrections)
{
return rawValue + GetCorrection(rawValue, corrections);
}
int count = corrections.Count;
for (int i = 1; i < count; i++)
{
if (rawValue < corrections[i].Measurement)
{
double d1 = rawValue - corrections[i-1].Measurement;
double d2 = corrections[i].Measurement - rawValue;
/// <summary>
/// Get a correction from a list of corrections by interpolation.
/// It is assumed that values in the list 'corrections' are sorted.
/// </summary>
/// <param name="rawMeasurement">Raw uncorrected value</param>
/// <param name="corrections">Sorted (value, correction) pairs</param>
/// <returns>Corrected value</returns>
public static double GetCorrection(double rawValue, IList<Config.Entities.MeasurementCorrection> corrections)
{
if ((corrections == null) || (corrections.Count == 0)) return 0; /// No correction
double corr;
if (d1 + d2 <= float.Epsilon)
{
corr = (corrections[i - 1].Correction + corrections[i].Correction) / 2.0;
}
else
{
corr = (corrections[i - 1].Correction * d2 + corrections[i].Correction * d1) / (d1 + d2);
}
return rawValue + corr;
}
}
if (rawValue < corrections[0].Measurement)
{
/// rawValue is below the lowest value in the correction table
return corrections[0].Correction;
}
return rawValue + corrections[count - 1].Correction;
}
int count = corrections.Count;
for (int i = 1; i < count; i++)
{
if (rawValue < corrections[i].Measurement)
{
double d1 = rawValue - corrections[i - 1].Measurement;
double d2 = corrections[i].Measurement - rawValue;
if (d1 + d2 <= float.Epsilon)
{
/// Neigboring values in the corection table are close to each other -> calculate the average
return (corrections[i - 1].Correction + corrections[i].Correction) / 2.0;
}
else
{
/// Interpolate the correction from neigboring values in the corection table
return (corrections[i - 1].Correction * d2 + corrections[i].Correction * d1) / (d1 + d2);
}
}
}
/// rawValue is above the highest value in the correction table
return corrections[count - 1].Correction;
}
/// <summary>
+1 -1
View File
@@ -24,7 +24,7 @@ namespace Config.Mappings
Map(x => x.Repeats);
Map(x => x.DoDraining)
.Column("Emptying");
Map(x => x.DoZeroing)
Map(x => x.DoDrainingAfter)
.Column("Zeroing");
Map(x => x.DoControlWaterTemp);
Map(x => x.TempLimLo);
+4 -1
View File
@@ -1,5 +1,5 @@
///
/// Copyright (c) 2013-2015 Sensus Metering Systems
/// Copyright (c) 2016-2019 Sensus Slovensko a.s.
///
using FluentNHibernate.Mapping;
@@ -12,6 +12,9 @@ namespace Config.Mappings
Id(x => x.Id);
Map(x => x.UserName).Column("Name");
Map(x => x.Number);
#if TURA_IPERL || TURA_IPERL_NEW || TURA_SPECIAL
Map(x => x.Tag);
#endif
Map(x => x.Password);
Map(x => x.FullName).Column("Description");
Map(x => x.LastPwChange);
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.18.1151.0")]
[assembly: AssemblyFileVersion("2.18.1151.0")]
[assembly: AssemblyVersion("2.18.1273.0")]
[assembly: AssemblyFileVersion("2.18.1273.0")]
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
@@ -117,70 +117,37 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="startTestBtn.Text" xml:space="preserve">
<value>Начать тест</value>
<data name="Administrator" xml:space="preserve">
<value>Administrateur</value>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>Результаты</value>
<data name="Calibration_Specialist" xml:space="preserve">
<value>Spécialiste en calibration</value>
</data>
<data name="otherGroupBox.Text" xml:space="preserve">
<value>Вспомогательный</value>
<data name="Head_of_Lab" xml:space="preserve">
<value>Chef de laboratoire</value>
</data>
<data name="cameraTestBtn.Text" xml:space="preserve">
<value>Тест камеры</value>
<data name="Maintenance_Specialist" xml:space="preserve">
<value>Spécialiste en maintenance</value>
</data>
<data name="resetResultsBtn.Text" xml:space="preserve">
<value>Сброс</value>
<data name="Metrologist" xml:space="preserve">
<value>Métrologue</value>
</data>
<data name="purgeEndBtn.Text" xml:space="preserve">
<value>Конец</value>
<data name="Tester" xml:space="preserve">
<value>Testeur</value>
</data>
<data name="emptyTank1Btn.Text" xml:space="preserve">
<value>W1</value>
<data name="Testing_Specialist" xml:space="preserve">
<value>Spécialiste d'essais</value>
</data>
<data name="purgeBeginBtn.Text" xml:space="preserve">
<value>Начать</value>
<data name="Failed" xml:space="preserve">
<value>Échoué</value>
</data>
<data name="startQ3Btn.Text" xml:space="preserve">
<value>Q3</value>
<data name="Passed" xml:space="preserve">
<value>Passé</value>
</data>
<data name="emptyTank2Btn.Text" xml:space="preserve">
<value>W2</value>
<data name="Cannot_open_DB_Cause_0" xml:space="preserve">
<value>Impossible d'ouvrir la base de données Cause\\r\\n{0}</value>
</data>
<data name="startQ1Btn.Text" xml:space="preserve">
<value>Q1</value>
</data>
<data name="startCycleBtn.Text" xml:space="preserve">
<value>Запустить цикл</value>
</data>
<data name="purgeGroupBox.Text" xml:space="preserve">
<value>Очистка</value>
</data>
<data name="emptyGroupBox.Text" xml:space="preserve">
<value>Пустой</value>
</data>
<data name="nextButton.Text" xml:space="preserve">
<value>Следующий</value>
</data>
<data name="testGroupBox.Text" xml:space="preserve">
<value>Тест</value>
</data>
<data name="startQ2Btn.Text" xml:space="preserve">
<value>Q2</value>
</data>
<data name="acceptResultsBtn.Text" xml:space="preserve">
<value>Принять</value>
</data>
<data name="emptyTank3Btn.Text" xml:space="preserve">
<value>W3</value>
</data>
<data name="stopBtn.Text" xml:space="preserve">
<value>Стоп</value>
</data>
<data name="breakBtn.Text" xml:space="preserve">
<value>Прервать</value>
</data>
<data name="sensitivityTestBtn.Text" xml:space="preserve">
<value>Чувствительность</value>
<data name="Error" xml:space="preserve">
<value>Erreur</value>
</data>
</root>
+56
View File
@@ -82,5 +82,61 @@ namespace Config
else return "F5";
}
}
/// <summary>
/// Extract and return a DB server from a MySQL connection string.
/// </summary>
public static string GetDBServer(string connectionString)
{
return GetFromConnectionString(connectionString, new string[] { "SERVER=" });
}
/// <summary>
/// Extract and return a DB name from a MySQL connection string.
/// </summary>
public static string GetDBName(string connectionString)
{
return GetFromConnectionString(connectionString, new string[] { "DATABASE=" });
}
/// <summary>
/// Extract and return a username from a MySQL connection string
/// </summary>
public static string GetDBUser(string connectionString)
{
return GetFromConnectionString(connectionString, new string[] { "USER=", "UID=" });
}
/// <summary>
/// Extract and return a password from a MySQL connection string
/// </summary>
public static string GetDBPassword(string connectionString)
{
return GetFromConnectionString(connectionString, new string[] { "PASSWORD=", "PWD=" });
}
/// <summary>
/// Extract and return an element of a MySQL connection string
/// (a host, a database, a user name or a password).
/// Return an empty string on any error.
/// </summary>
public static string GetFromConnectionString(string connectionString, string[] patterns)
{
foreach (var pattern in patterns)
{
int startIx = connectionString.IndexOf(pattern);
if (startIx >= 0)
{
/// pattern found, extract the subsequent element
startIx += pattern.Length;
int endIx = connectionString.IndexOf(';', startIx);
return (endIx > 0) ? connectionString.Substring(startIx, endIx - startIx) : string.Empty;
}
}
/// pattern NOT found
return string.Empty;
}
}
}
+64
View File
@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{D476ABBE-A455-4476-8A8D-3F6151217B51}</ProjectGuid>
<OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Decrypt</RootNamespace>
<AssemblyName>Decrypt</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>
</TargetFrameworkProfile>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<PlatformTarget>x86</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<PlatformTarget>x86</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<StartupObject>Decrypt.Program</StartupObject>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
+9
View File
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<StartArguments>config.xml</StartArguments>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<StartArguments>config.xml</StartArguments>
</PropertyGroup>
</Project>
+96
View File
@@ -0,0 +1,96 @@
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace Decrypt
{
/// <summary>
/// See also:
/// https://www.fluxbytes.com/csharp/encrypt-and-decrypt-files-in-c/
/// </summary>
class Program
{
static byte[] key = new byte[] { 83, 254, 105, 64, 184, 201, 195, 127, 52, 99, 77, 45, 252, 132, 163, 156 };
static byte[] IV = new byte[] { 189, 23, 137, 56, 204, 241, 242, 118, 28, 89, 9, 198, 224, 111, 186, 125 };
static void Main(string[] args)
{
if ((args.Length < 1) || !File.Exists(args[0]))
{
Console.WriteLine("Usage: Decode <file>");
Console.ReadKey();
return;
}
string fileName = args[0];
string intermediateFile = fileName + ".plain"; /// Intermediate file, output of cryptography decoding
string backupFile = fileName + ".bak";
try
{
using (StreamReader reader = new StreamReader(fileName))
{
if (reader.ReadLine().StartsWith("<?xml version="))
{
Console.WriteLine(string.Format("File {0} is not encrypted.", fileName));
Console.ReadKey();
return;
}
}
bool successful = false;
using (RijndaelManaged aes = new RijndaelManaged { Padding = PaddingMode.Zeros })
{
using (FileStream fsCrypt = new FileStream(fileName, FileMode.Open))
{
using (FileStream fsOut = new FileStream(intermediateFile, FileMode.Create))
{
using (ICryptoTransform decryptor = aes.CreateDecryptor(key, IV))
{
using (CryptoStream cs = new CryptoStream(fsCrypt, decryptor, CryptoStreamMode.Read))
{
int data;
while ((data = cs.ReadByte()) != -1)
{
if (data != 0) fsOut.WriteByte((byte)data);
}
successful = true;
}
}
}
}
}
if (successful)
{
/// File decryption successfuly completed => rotate files
if (File.Exists(backupFile)) File.Delete(backupFile);
File.Move(fileName, backupFile);
File.Move(intermediateFile, fileName);
return;
}
else
{
Failed(fileName, intermediateFile, "");
return;
}
}
catch (Exception e)
{
Failed(fileName, intermediateFile, e.Message);
return;
}
}
static void Failed(string fileName, string toBeDeleted, string message)
{
if (File.Exists(toBeDeleted))
{
File.Delete(toBeDeleted);
}
Console.WriteLine(string.Format("Decryption of file {0} failed: {1}", fileName, message));
Console.ReadKey();
}
}
}
+36
View File
@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Decrypt")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Decrypt")]
[assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("c17ec788-0e12-4f9c-aadf-ea4e83a9f373")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.1.0")]
[assembly: AssemblyFileVersion("1.0.1.0")]
+3
View File
@@ -0,0 +1,3 @@
<?xml version="1.0"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
+9 -10
View File
@@ -7,7 +7,6 @@ using System.Threading;
using System.Windows.Forms;
using TBF.BenchControl;
using TBF.BenchControl.Generic;
using TBF.BenchControl.GenericDevices;
using System.Xml.Serialization;
@@ -27,11 +26,11 @@ namespace DeviceTest
IComponentCfg component2Cfg;
IComponentCfg component3Cfg;
static IList<TBF.BenchControl.Generic.IDevice> tbfDevices;
static IList<TBF.BenchControl.Generic.IComponent> tbfComponents;
static TBF.BenchControl.Generic.IComponent tbfComponent1forOp;
static TBF.BenchControl.Generic.IComponent tbfComponent2forOp;
static TBF.BenchControl.Generic.IComponent tbfComponent3forOp;
static IList<IDevice> tbfDevices;
static IList<IComponent> tbfComponents;
static IComponent tbfComponent1forOp;
static IComponent tbfComponent2forOp;
static IComponent tbfComponent3forOp;
static Thread workerThread;
static bool workerThreadRunning;
@@ -426,7 +425,7 @@ namespace DeviceTest
cfgControl.Config = parentCfg;
cfgControl.Config.ItemNr = 0;
TBF.ComponentParametersDlg cfgForm = new TBF.ComponentParametersDlg();
ComponentParametersDlg cfgForm = new ComponentParametersDlg();
cfgForm.TbfComponents = new List<Config.Entities.Component>();
cfgForm.ComponentCfgCtrl = cfgControl;
@@ -455,7 +454,7 @@ namespace DeviceTest
cfgControl.Config = component1Cfg;
cfgControl.Config.ItemNr = 1;
TBF.ComponentParametersDlg cfgForm = new TBF.ComponentParametersDlg();
ComponentParametersDlg cfgForm = new ComponentParametersDlg();
///
IList<Config.Entities.Component> compEntities = new List<Config.Entities.Component>();
if (parentFactory != null && parentCfg != null) compEntities.Add(parentCfg.CreateDbEntity());
@@ -489,7 +488,7 @@ namespace DeviceTest
cfgControl.Config = component2Cfg;
cfgControl.Config.ItemNr = 1;
TBF.ComponentParametersDlg cfgForm = new TBF.ComponentParametersDlg();
ComponentParametersDlg cfgForm = new ComponentParametersDlg();
///
IList<Config.Entities.Component> compEntities = new List<Config.Entities.Component>();
if (parentFactory != null && parentCfg != null) compEntities.Add(parentCfg.CreateDbEntity());
@@ -524,7 +523,7 @@ namespace DeviceTest
cfgControl.Config = component3Cfg;
cfgControl.Config.ItemNr = 1;
TBF.ComponentParametersDlg cfgForm = new TBF.ComponentParametersDlg();
ComponentParametersDlg cfgForm = new ComponentParametersDlg();
///
IList<Config.Entities.Component> compEntities = new List<Config.Entities.Component>();
if (parentFactory != null && parentCfg != null) compEntities.Add(parentCfg.CreateDbEntity());
+64
View File
@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{DA9B09F3-A99D-4883-A954-537560453674}</ProjectGuid>
<OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Encrypt</RootNamespace>
<AssemblyName>Encrypt</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>
</TargetFrameworkProfile>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<PlatformTarget>x86</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<PlatformTarget>x86</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<StartupObject>Encrypt.Program</StartupObject>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
+93
View File
@@ -0,0 +1,93 @@
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace Encrypt
{
/// <summary>
/// See also:
/// https://www.fluxbytes.com/csharp/encrypt-and-decrypt-files-in-c/
/// </summary>
class Program
{
static byte[] key = new byte[] { 83, 254, 105, 64, 184, 201, 195, 127, 52, 99, 77, 45, 252, 132, 163, 156 };
static byte[] IV = new byte[] { 189, 23, 137, 56, 204, 241, 242, 118, 28, 89, 9, 198, 224, 111, 186, 125 };
static void Main(string[] args)
{
if ((args.Length < 1) || !File.Exists(args[0]))
{
Console.WriteLine("Usage: Encode <file>");
Console.ReadKey();
return;
}
string fileName = args[0];
string intermediateFile = fileName + ".encrypted"; /// Intermediate file, output of cryptography encoding
string backupFile = fileName + ".bak";
try
{
using (StreamReader reader = new StreamReader(fileName))
{
if (!reader.ReadLine().StartsWith("<?xml version="))
{
Console.WriteLine(string.Format("File {0} is already encrypted.", fileName));
Console.ReadKey();
return;
}
}
bool successful = false;
using (RijndaelManaged aes = new RijndaelManaged { Padding = PaddingMode.Zeros })
{
using (FileStream fsCrypt = new FileStream(intermediateFile, FileMode.Create))
{
using (ICryptoTransform encryptor = aes.CreateEncryptor(key, IV))
{
using (CryptoStream cs = new CryptoStream(fsCrypt, encryptor, CryptoStreamMode.Write))
{
using (FileStream fsIn = new FileStream(fileName, FileMode.Open))
{
int data;
while ((data = fsIn.ReadByte()) != -1) cs.WriteByte((byte)data);
successful = true;
}
}
}
}
}
if (successful)
{
/// File encryption successfuly completed => rotate files
if (File.Exists(backupFile)) File.Delete(backupFile);
File.Move(fileName, backupFile);
File.Move(intermediateFile, fileName);
return;
}
else
{
Failed(fileName, intermediateFile);
return;
}
}
catch (Exception)
{
Failed(fileName, intermediateFile);
return;
}
}
static void Failed(string fileName, string toBeDeleted)
{
if (File.Exists(toBeDeleted))
{
File.Delete(toBeDeleted);
}
Console.WriteLine(string.Format("Encryption of file {0} failed.", fileName));
Console.ReadKey();
}
}
}
+36
View File
@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Encrypt")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Encrypt")]
[assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("0f602531-6f1f-416e-af4d-9242855715a8")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
+3
View File
@@ -0,0 +1,3 @@
<?xml version="1.0"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
+51
View File
@@ -0,0 +1,51 @@
using System.Reflection;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("GenCode128")]
[assembly: AssemblyDescription("GenCode128")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Chris Wuestefeld")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("2006 Chris Wuestefeld")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.0.0")]
// In order to sign your assembly you must specify a key to use. Refer to the
// Microsoft .NET Framework documentation for more information on assembly signing.
//
// Use the attributes below to control which key is used for signing.
//
// Notes:
// (*) If no key is specified, the assembly is not signed.
// (*) KeyName refers to a key that has been installed in the Crypto Service
// Provider (CSP) on your machine. KeyFile refers to a file which contains
// a key.
// (*) If the KeyFile and the KeyName values are both specified, the
// following processing occurs:
// (1) If the KeyName can be found in the CSP, that key is used.
// (2) If the KeyName does not exist and the KeyFile does exist, the key
// in the KeyFile is installed into the CSP and used.
// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility.
// When specifying the KeyFile, the location of the KeyFile should be
// relative to the project output directory which is
// %Project Directory%\obj\<configuration>. For example, if your KeyFile is
// located in the project directory, you would specify the AssemblyKeyFile
// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
// documentation for more information on this.
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("")]
[assembly: AssemblyKeyName("")]
+139
View File
@@ -0,0 +1,139 @@
namespace GenCode128
{
/// <summary>
/// Static tools for determining codes for individual characters in the content
/// </summary>
public static class Code128Code
{
private const int CShift = 98;
private const int CCodeA = 101;
private const int CCodeB = 100;
private const int CStartA = 103;
private const int CStartB = 104;
private const int CStop = 106;
/// <summary>
/// Indicates which code sets can represent a character -- CodeA, CodeB, or either
/// </summary>
public enum CodeSetAllowed
{
CodeA,
CodeB,
CodeAorB
}
/// <summary>
/// Get the Code128 code value(s) to represent an ASCII character, with
/// optional look-ahead for length optimization
/// </summary>
/// <param name="charAscii">The ASCII value of the character to translate</param>
/// <param name="lookAheadAscii">The next character in sequence (or -1 if none)</param>
/// <param name="currentCodeSet">The current codeset, that the returned codes need to follow;
/// if the returned codes change that, then this value will be changed to reflect it</param>
/// <returns>An array of integers representing the codes that need to be output to produce the
/// given character</returns>
public static int[] CodesForChar(int charAscii, int lookAheadAscii, ref CodeSet currentCodeSet)
{
int[] result;
var shifter = -1;
if (!CharCompatibleWithCodeset(charAscii, currentCodeSet))
{
// if we have a lookahead character AND if the next character is ALSO not compatible
if ((lookAheadAscii != -1) && !CharCompatibleWithCodeset(lookAheadAscii, currentCodeSet))
{
// we need to switch code sets
switch (currentCodeSet)
{
case CodeSet.CodeA:
shifter = CCodeB;
currentCodeSet = CodeSet.CodeB;
break;
case CodeSet.CodeB:
shifter = CCodeA;
currentCodeSet = CodeSet.CodeA;
break;
}
}
else
{
// no need to switch code sets, a temporary SHIFT will suffice
shifter = CShift;
}
}
if (shifter != -1)
{
result = new int[2];
result[0] = shifter;
result[1] = CodeValueForChar(charAscii);
}
else
{
result = new int[1];
result[0] = CodeValueForChar(charAscii);
}
return result;
}
/// <summary>
/// Tells us which codesets a given character value is allowed in
/// </summary>
/// <param name="charAscii">ASCII value of character to look at</param>
/// <returns>Which codeset(s) can be used to represent this character</returns>
public static CodeSetAllowed CodesetAllowedForChar(int charAscii)
{
if (charAscii >= 32 && charAscii <= 95)
{
return CodeSetAllowed.CodeAorB;
}
else
{
return charAscii < 32 ? CodeSetAllowed.CodeA : CodeSetAllowed.CodeB;
}
}
/// <summary>
/// Determine if a character can be represented in a given codeset
/// </summary>
/// <param name="charAscii">character to check for</param>
/// <param name="currentCodeSet">codeset context to test</param>
/// <returns>true if the codeset contains a representation for the ASCII character</returns>
public static bool CharCompatibleWithCodeset(int charAscii, CodeSet currentCodeSet)
{
var csa = CodesetAllowedForChar(charAscii);
return csa == CodeSetAllowed.CodeAorB || (csa == CodeSetAllowed.CodeA && currentCodeSet == CodeSet.CodeA)
|| (csa == CodeSetAllowed.CodeB && currentCodeSet == CodeSet.CodeB);
}
/// <summary>
/// Gets the integer code128 code value for a character (assuming the appropriate code set)
/// </summary>
/// <param name="charAscii">character to convert</param>
/// <returns>code128 symbol value for the character</returns>
public static int CodeValueForChar(int charAscii)
{
return charAscii >= 32 ? charAscii - 32 : charAscii + 64;
}
/// <summary>
/// Return the appropriate START code depending on the codeset we want to be in
/// </summary>
/// <param name="cs">The codeset you want to start in</param>
/// <returns>The code128 code to start a barcode in that codeset</returns>
public static int StartCodeForCodeSet(CodeSet cs)
{
return cs == CodeSet.CodeA ? CStartA : CStartB;
}
/// <summary>
/// Return the Code128 stop code
/// </summary>
/// <returns>the stop code</returns>
public static int StopCode()
{
return CStop;
}
}
}
+97
View File
@@ -0,0 +1,97 @@
namespace GenCode128
{
using System.Collections;
using System.Text;
/// <summary>
/// Represent the set of code values to be output into barcode form
/// </summary>
public class Code128Content
{
/// <summary>
/// Create content based on a string of ASCII data
/// </summary>
/// <param name="asciiData">the string that should be represented</param>
public Code128Content(string asciiData)
{
this.Codes = this.StringToCode128(asciiData);
}
/// <summary>
/// Provides the Code128 code values representing the object's string
/// </summary>
public int[] Codes
{
get { return codes; }
set { codes = value; }
}
int[] codes;
/// <summary>
/// Transform the string into integers representing the Code128 codes
/// necessary to represent it
/// </summary>
/// <param name="asciiData">String to be encoded</param>
/// <returns>Code128 representation</returns>
private int[] StringToCode128(string asciiData)
{
// turn the string into ascii byte data
var asciiBytes = Encoding.ASCII.GetBytes(asciiData);
// decide which codeset to start with
var csa1 = asciiBytes.Length > 0
? Code128Code.CodesetAllowedForChar(asciiBytes[0])
: Code128Code.CodeSetAllowed.CodeAorB;
var csa2 = asciiBytes.Length > 1
? Code128Code.CodesetAllowedForChar(asciiBytes[1])
: Code128Code.CodeSetAllowed.CodeAorB;
var currentCodeSet = this.GetBestStartSet(csa1, csa2);
// set up the beginning of the barcode
// assume no codeset changes, account for start, checksum, and stop
var codes = new ArrayList(asciiBytes.Length + 3) { Code128Code.StartCodeForCodeSet(currentCodeSet) };
// add the codes for each character in the string
for (var i = 0; i < asciiBytes.Length; i++)
{
int thischar = asciiBytes[i];
var nextchar = asciiBytes.Length > i + 1 ? asciiBytes[i + 1] : -1;
codes.AddRange(Code128Code.CodesForChar(thischar, nextchar, ref currentCodeSet));
}
// calculate the check digit
var checksum = (int)codes[0];
for (var i = 1; i < codes.Count; i++)
{
checksum += i * (int)codes[i];
}
codes.Add(checksum % 103);
codes.Add(Code128Code.StopCode());
var result = codes.ToArray(typeof(int)) as int[];
return result;
}
/// <summary>
/// Determines the best starting code set based on the the first two
/// characters of the string to be encoded
/// </summary>
/// <param name="csa1">First character of input string</param>
/// <param name="csa2">Second character of input string</param>
/// <returns>The codeset determined to be best to start with</returns>
private CodeSet GetBestStartSet(Code128Code.CodeSetAllowed csa1, Code128Code.CodeSetAllowed csa2)
{
var vote = 0;
vote += csa1 == Code128Code.CodeSetAllowed.CodeA ? 1 : 0;
vote += csa1 == Code128Code.CodeSetAllowed.CodeB ? -1 : 0;
vote += csa2 == Code128Code.CodeSetAllowed.CodeA ? 1 : 0;
vote += csa2 == Code128Code.CodeSetAllowed.CodeB ? -1 : 0;
return vote > 0 ? CodeSet.CodeA : CodeSet.CodeB; // ties go to codeB due to my own prejudices
}
}
}
+188
View File
@@ -0,0 +1,188 @@
namespace GenCode128
{
using System;
using System.Drawing;
/// <summary>
/// Summary description for Code128Rendering.
/// </summary>
public static class Code128Rendering
{
private const int CQuietWidth = 10;
// Code patterns:
// in principle these rows should each have 6 elements
// however, the last one -- STOP -- has 7. The cost of the
// extra integers is trivial, and this lets the code flow
// much more elegantly
private static readonly int[,] CPatterns =
{
{ 2, 1, 2, 2, 2, 2, 0, 0 }, // 0
{ 2, 2, 2, 1, 2, 2, 0, 0 }, // 1
{ 2, 2, 2, 2, 2, 1, 0, 0 }, // 2
{ 1, 2, 1, 2, 2, 3, 0, 0 }, // 3
{ 1, 2, 1, 3, 2, 2, 0, 0 }, // 4
{ 1, 3, 1, 2, 2, 2, 0, 0 }, // 5
{ 1, 2, 2, 2, 1, 3, 0, 0 }, // 6
{ 1, 2, 2, 3, 1, 2, 0, 0 }, // 7
{ 1, 3, 2, 2, 1, 2, 0, 0 }, // 8
{ 2, 2, 1, 2, 1, 3, 0, 0 }, // 9
{ 2, 2, 1, 3, 1, 2, 0, 0 }, // 10
{ 2, 3, 1, 2, 1, 2, 0, 0 }, // 11
{ 1, 1, 2, 2, 3, 2, 0, 0 }, // 12
{ 1, 2, 2, 1, 3, 2, 0, 0 }, // 13
{ 1, 2, 2, 2, 3, 1, 0, 0 }, // 14
{ 1, 1, 3, 2, 2, 2, 0, 0 }, // 15
{ 1, 2, 3, 1, 2, 2, 0, 0 }, // 16
{ 1, 2, 3, 2, 2, 1, 0, 0 }, // 17
{ 2, 2, 3, 2, 1, 1, 0, 0 }, // 18
{ 2, 2, 1, 1, 3, 2, 0, 0 }, // 19
{ 2, 2, 1, 2, 3, 1, 0, 0 }, // 20
{ 2, 1, 3, 2, 1, 2, 0, 0 }, // 21
{ 2, 2, 3, 1, 1, 2, 0, 0 }, // 22
{ 3, 1, 2, 1, 3, 1, 0, 0 }, // 23
{ 3, 1, 1, 2, 2, 2, 0, 0 }, // 24
{ 3, 2, 1, 1, 2, 2, 0, 0 }, // 25
{ 3, 2, 1, 2, 2, 1, 0, 0 }, // 26
{ 3, 1, 2, 2, 1, 2, 0, 0 }, // 27
{ 3, 2, 2, 1, 1, 2, 0, 0 }, // 28
{ 3, 2, 2, 2, 1, 1, 0, 0 }, // 29
{ 2, 1, 2, 1, 2, 3, 0, 0 }, // 30
{ 2, 1, 2, 3, 2, 1, 0, 0 }, // 31
{ 2, 3, 2, 1, 2, 1, 0, 0 }, // 32
{ 1, 1, 1, 3, 2, 3, 0, 0 }, // 33
{ 1, 3, 1, 1, 2, 3, 0, 0 }, // 34
{ 1, 3, 1, 3, 2, 1, 0, 0 }, // 35
{ 1, 1, 2, 3, 1, 3, 0, 0 }, // 36
{ 1, 3, 2, 1, 1, 3, 0, 0 }, // 37
{ 1, 3, 2, 3, 1, 1, 0, 0 }, // 38
{ 2, 1, 1, 3, 1, 3, 0, 0 }, // 39
{ 2, 3, 1, 1, 1, 3, 0, 0 }, // 40
{ 2, 3, 1, 3, 1, 1, 0, 0 }, // 41
{ 1, 1, 2, 1, 3, 3, 0, 0 }, // 42
{ 1, 1, 2, 3, 3, 1, 0, 0 }, // 43
{ 1, 3, 2, 1, 3, 1, 0, 0 }, // 44
{ 1, 1, 3, 1, 2, 3, 0, 0 }, // 45
{ 1, 1, 3, 3, 2, 1, 0, 0 }, // 46
{ 1, 3, 3, 1, 2, 1, 0, 0 }, // 47
{ 3, 1, 3, 1, 2, 1, 0, 0 }, // 48
{ 2, 1, 1, 3, 3, 1, 0, 0 }, // 49
{ 2, 3, 1, 1, 3, 1, 0, 0 }, // 50
{ 2, 1, 3, 1, 1, 3, 0, 0 }, // 51
{ 2, 1, 3, 3, 1, 1, 0, 0 }, // 52
{ 2, 1, 3, 1, 3, 1, 0, 0 }, // 53
{ 3, 1, 1, 1, 2, 3, 0, 0 }, // 54
{ 3, 1, 1, 3, 2, 1, 0, 0 }, // 55
{ 3, 3, 1, 1, 2, 1, 0, 0 }, // 56
{ 3, 1, 2, 1, 1, 3, 0, 0 }, // 57
{ 3, 1, 2, 3, 1, 1, 0, 0 }, // 58
{ 3, 3, 2, 1, 1, 1, 0, 0 }, // 59
{ 3, 1, 4, 1, 1, 1, 0, 0 }, // 60
{ 2, 2, 1, 4, 1, 1, 0, 0 }, // 61
{ 4, 3, 1, 1, 1, 1, 0, 0 }, // 62
{ 1, 1, 1, 2, 2, 4, 0, 0 }, // 63
{ 1, 1, 1, 4, 2, 2, 0, 0 }, // 64
{ 1, 2, 1, 1, 2, 4, 0, 0 }, // 65
{ 1, 2, 1, 4, 2, 1, 0, 0 }, // 66
{ 1, 4, 1, 1, 2, 2, 0, 0 }, // 67
{ 1, 4, 1, 2, 2, 1, 0, 0 }, // 68
{ 1, 1, 2, 2, 1, 4, 0, 0 }, // 69
{ 1, 1, 2, 4, 1, 2, 0, 0 }, // 70
{ 1, 2, 2, 1, 1, 4, 0, 0 }, // 71
{ 1, 2, 2, 4, 1, 1, 0, 0 }, // 72
{ 1, 4, 2, 1, 1, 2, 0, 0 }, // 73
{ 1, 4, 2, 2, 1, 1, 0, 0 }, // 74
{ 2, 4, 1, 2, 1, 1, 0, 0 }, // 75
{ 2, 2, 1, 1, 1, 4, 0, 0 }, // 76
{ 4, 1, 3, 1, 1, 1, 0, 0 }, // 77
{ 2, 4, 1, 1, 1, 2, 0, 0 }, // 78
{ 1, 3, 4, 1, 1, 1, 0, 0 }, // 79
{ 1, 1, 1, 2, 4, 2, 0, 0 }, // 80
{ 1, 2, 1, 1, 4, 2, 0, 0 }, // 81
{ 1, 2, 1, 2, 4, 1, 0, 0 }, // 82
{ 1, 1, 4, 2, 1, 2, 0, 0 }, // 83
{ 1, 2, 4, 1, 1, 2, 0, 0 }, // 84
{ 1, 2, 4, 2, 1, 1, 0, 0 }, // 85
{ 4, 1, 1, 2, 1, 2, 0, 0 }, // 86
{ 4, 2, 1, 1, 1, 2, 0, 0 }, // 87
{ 4, 2, 1, 2, 1, 1, 0, 0 }, // 88
{ 2, 1, 2, 1, 4, 1, 0, 0 }, // 89
{ 2, 1, 4, 1, 2, 1, 0, 0 }, // 90
{ 4, 1, 2, 1, 2, 1, 0, 0 }, // 91
{ 1, 1, 1, 1, 4, 3, 0, 0 }, // 92
{ 1, 1, 1, 3, 4, 1, 0, 0 }, // 93
{ 1, 3, 1, 1, 4, 1, 0, 0 }, // 94
{ 1, 1, 4, 1, 1, 3, 0, 0 }, // 95
{ 1, 1, 4, 3, 1, 1, 0, 0 }, // 96
{ 4, 1, 1, 1, 1, 3, 0, 0 }, // 97
{ 4, 1, 1, 3, 1, 1, 0, 0 }, // 98
{ 1, 1, 3, 1, 4, 1, 0, 0 }, // 99
{ 1, 1, 4, 1, 3, 1, 0, 0 }, // 100
{ 3, 1, 1, 1, 4, 1, 0, 0 }, // 101
{ 4, 1, 1, 1, 3, 1, 0, 0 }, // 102
{ 2, 1, 1, 4, 1, 2, 0, 0 }, // 103
{ 2, 1, 1, 2, 1, 4, 0, 0 }, // 104
{ 2, 1, 1, 2, 3, 2, 0, 0 }, // 105
{ 2, 3, 3, 1, 1, 1, 2, 0 } // 106
};
/// <summary>
/// Make an image of a Code128 barcode for a given string
/// </summary>
/// <param name="inputData">Message to be encoded</param>
/// <param name="barWeight">Base thickness for bar width (1 or 2 works well)</param>
/// <param name="addQuietZone">Add required horizontal margins (use if output is tight)</param>
/// <returns>An Image of the Code128 barcode representing the message</returns>
public static Image MakeBarcodeImage(string inputData, int barWeight, bool addQuietZone)
{
// get the Code128 codes to represent the message
var content = new Code128Content(inputData);
var codes = content.Codes;
var width = (((codes.Length - 3) * 11) + 35) * barWeight;
var height = Convert.ToInt32(Math.Ceiling(Convert.ToSingle(width) * .15F));
if (addQuietZone)
{
width += 2 * CQuietWidth * barWeight; // on both sides
}
// get surface to draw on
Image myImage = new Bitmap(width, height);
using (var gr = Graphics.FromImage(myImage))
{
// set to white so we don't have to fill the spaces with white
gr.FillRectangle(Brushes.White, 0, 0, width, height);
// skip quiet zone
var cursor = addQuietZone ? CQuietWidth * barWeight : 0;
for (var codeIdx = 0; codeIdx < codes.Length; codeIdx++)
{
var code = codes[codeIdx];
// take the bars two at a time: a black and a white
for (var bar = 0; bar < 8; bar += 2)
{
var barWidth = CPatterns[code, bar] * barWeight;
var spcWidth = CPatterns[code, bar + 1] * barWeight;
// if width is zero, don't try to draw it
if (barWidth > 0)
{
gr.FillRectangle(Brushes.Black, cursor, 0, barWidth, height);
}
// note that we never need to draw the space, since we
// initialized the graphics to all white
// advance cursor beyond this pair
cursor += barWidth + spcWidth;
}
}
}
return myImage;
}
}
}
+9
View File
@@ -0,0 +1,9 @@
namespace GenCode128
{
public enum CodeSet
{
CodeA,
CodeB
//// CodeC // not supported
}
}
+147
View File
@@ -0,0 +1,147 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="14.0">
<PropertyGroup>
<ProjectType>Local</ProjectType>
<ProductVersion>8.0.50727</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{32817BF9-E380-4467-9C7F-936F4B122BC7}</ProjectGuid>
<SccProjectName>
</SccProjectName>
<SccLocalPath>
</SccLocalPath>
<SccAuxPath>
</SccAuxPath>
<SccProvider>
</SccProvider>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ApplicationIcon>
</ApplicationIcon>
<AssemblyKeyContainerName>
</AssemblyKeyContainerName>
<AssemblyName>GenCode128</AssemblyName>
<AssemblyOriginatorKeyFile>
</AssemblyOriginatorKeyFile>
<DefaultClientScript>JScript</DefaultClientScript>
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
<DefaultTargetSchema>IE50</DefaultTargetSchema>
<DelaySign>false</DelaySign>
<OutputType>Library</OutputType>
<RootNamespace>GenCode128</RootNamespace>
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
<StartupObject>
</StartupObject>
<FileUpgradeFlags>
</FileUpgradeFlags>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<OldToolsVersion>2.0</OldToolsVersion>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>true</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>false</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<DebugType>full</DebugType>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>false</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>true</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<DebugType>none</DebugType>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<ItemGroup>
<Reference Include="System">
<Name>System</Name>
</Reference>
<Reference Include="System.Data">
<Name>System.Data</Name>
</Reference>
<Reference Include="System.Drawing">
<Name>System.Drawing</Name>
</Reference>
<Reference Include="System.Windows.Forms">
<Name>System.Windows.Forms</Name>
</Reference>
<Reference Include="System.Xml">
<Name>System.XML</Name>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Code128Code.cs" />
<Compile Include="CodeSet.cs" />
<Compile Include="AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Code128Content.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Code128Rendering.cs">
<SubType>Code</SubType>
</Compile>
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
</Project>
+13 -7
View File
@@ -130,13 +130,19 @@ namespace Results
public static BatchResults FromBatch(Batch batch)
{
int wmCount = batch.WaterMeters.Count;
if (wmCount == 0) return null;
if (batch.WaterMeters == null || batch.WaterMeters.Count == 0) return null;
BatchResults batchResults = new BatchResults(wmCount);
int wmPosMax = 0;
foreach (var wm in batch.WaterMeters) if (wm.WMPosition > wmPosMax) wmPosMax = wm.WMPosition;
BatchResults batchResults = new BatchResults(wmPosMax);
batchResults.Batch = batch;
batchResults.WaterMeters = new WaterMeter[wmCount];
for (int i = 0; i < wmCount; i++) batchResults.WaterMeters[i] = batch.WaterMeters[i];
batchResults.WaterMeters = new WaterMeter[wmPosMax];
for (int i = 0; i < batch.WaterMeters.Count; i++)
{
WaterMeter wm = batch.WaterMeters[i];
batchResults.WaterMeters[wm.WMPosition - 1] = wm;
}
return batchResults;
}
@@ -164,11 +170,11 @@ namespace Results
{
for (int i = 0; i < WMPositionsCount; i++)
{
if (WaterMeters[i] != null)
if ((WaterMeters[i] != null) && !WaterMeters[i].Disabled)
{
foreach (var mtr in WaterMeters[i].MeterTestRslts)
{
if (!mtr.TestDone) return false;
if (!mtr.TestDone) return false;
}
}
}
+12 -2
View File
@@ -29,7 +29,17 @@ namespace Results.Entities
public virtual float DensityCorr { get; set; } /// Density correction in [kg/m3]
public virtual float Custom2 { get; set; }
public virtual float Custom3 { get; set; }
public virtual DateTime StartTime { get; set; }
public virtual int Counter1 { get; set; }
public virtual int Counter2 { get; set; }
public virtual int Counter3 { get; set; }
public virtual int Counter4 { get; set; }
public virtual int Counter5 { get; set; }
public virtual int Counter6 { get; set; }
public virtual int Counter7 { get; set; }
public virtual int Counter8 { get; set; }
public virtual int Counter9 { get; set; }
public virtual int Counter10 { get; set; }
public virtual DateTime StartTime { get; set; }
public virtual DateTime EndTime { get; set; }
public virtual bool Dirty { get; set; }
public virtual bool RsltsSent { get; set; }
@@ -38,7 +48,7 @@ namespace Results.Entities
public virtual IList<WaterMeter> WaterMeters { get; set; }
public virtual IList<TestRslt> TestRslts { get; set; }
public virtual bool Compound { get; set; } /// Not mapped to DB now
public virtual bool HeatMeter { get; set; } /// Not mapped to DB now
public virtual bool HeatMeter { get; set; } /// Not mapped to DB now ///
public Batch()
{
+5 -1
View File
@@ -10,7 +10,7 @@ namespace Results.Entities
public virtual int Id { get; protected set; }
public virtual byte CompoundMeterId { get; set; } /// 0=single, 1=compound/main, 2=compound/aux., 3=compound/overal, 4=heat meter volume, 5=heat meter energy
public virtual int RegReaderType { get; set; } /// Not mapped to the DB, does not depent on localisation and customer
public virtual int RegReaderType { get; set; } /// Not mapped to the DB, does not depend on localization and customer
public virtual double PulsesMeter { get; set; } /// # of water meter or heat meter pulses
public virtual double PulsesMaster { get; set; } /// # of reference flowmeter pulses (gated by this water meter pulses)
@@ -128,9 +128,13 @@ namespace Results.Entities
TimestampEnd = src.TimestampEnd;
TestTime = src.TestTime;
Error = src.Error;
ErrorIndicators = src.ErrorIndicators;
KorrErrQ = src.KorrErrQ;
TestDone = src.TestDone;
Passed = src.Passed;
#if ORACLE_DB
LastError = src.LastError;
#endif
}
public override string ToString()
+41 -15
View File
@@ -15,22 +15,24 @@ namespace Results.Entities
public virtual TestData TestData { get; set; }
public virtual Components Components { get; set; }
public virtual int Part { get; set; }
public virtual int RepetitionNr { get; set; } /// Repetition number from the set of repeated tests (1...)
public virtual string MethodClass { get; set; } /// Not mapped to the DB, does not depent on localisation and customer
public virtual int RepetitionNr { get; set; } /// Repetition number from the set of repeated tests (1...)
public virtual string MethodClass { get; set; } /// Not mapped to DB, does not depend on localization and customer
/// Main results
public virtual bool TestDone { get; set; }
public virtual string Remark { get; set; }
public virtual DateTime StartTime { get; set; } /// Date and time of the test start
public virtual DateTime EndTime { get; set; } /// Date and time of the test end
public virtual int FlowSetTime { get; set; } /// [s] Measurement time in seconds
public virtual double TestTime { get; set; } /// [s] Measurement time in seconds
public virtual double PulsesMaster { get; set; } /// [pls] FlyingStartMassCollectionProlonged: MID pulses of the water to the tank
public virtual double TotalPulsesMstr { get; set; } /// [pls] FlyingStartMassCollectionProlonged: MID pulses of the complete test (not mapped to DB)
public virtual double ConstMasterRaw { get; set; } /// [l/pls] Liters per pulse of the master flow meter uncorrected.
public virtual double ConstMasterCorr { get; set; } /// [l/pls] Liters per pulse of the master flow meter corrected by a correction table.
public virtual double ConstMaster { get; set; } /// [l/pls] Liters per pulse of the master flow meter calculated from a mass measurement.
/// When mass measurement is not available, corrected by a correction table.
public virtual DateTime StartTime { get; set; } /// Date and time of the test start
public virtual DateTime EndTime { get; set; } /// Date and time of the test end
public virtual int FlowSetTime { get; set; } /// [s] Flow set time in seconds
public virtual int TimeBtwnMassMsrmnts { get; set; } /// [s] Time between two mass measurements in seconds (if applicable)
public virtual double TestTime { get; set; } /// [s] Test time in seconds
public virtual double TestTimeCorrection { get; set; } /// [s] Correction of the test time due to diverter (0 for methods w/o diverter or when there is no correction table)
public virtual double PulsesMaster { get; set; } /// [pls] FlyingStartMassCollectionProlonged: MID pulses of the water to the tank
public virtual double TotalPulsesMstr { get; set; } /// [pls] FlyingStartMassCollectionProlonged: MID pulses of the complete test (not mapped to DB)
public virtual double ConstMasterRaw { get; set; } /// [l/pls] Liters per pulse of the master flow meter uncorrected.
public virtual double ConstMasterCorr { get; set; } /// [l/pls] Liters per pulse of the master flow meter corrected by a correction table.
public virtual double ConstMaster { get; set; } /// [l/pls] Liters per pulse of the master flow meter calculated from a mass measurement.
/// When mass measurement is not available, corrected by a correction table.
public virtual double MassStartRaw { get; set; } /// [kg]
public virtual double MassStart { get; set; } /// [kg]
public virtual double MassEndRaw { get; set; } /// [kg]
@@ -132,10 +134,25 @@ namespace Results.Entities
public virtual double TargetVolume() { return TestData.TargetVolume; }
public virtual double TargetTime() { return TestData.TargetTime; }
public virtual string Method() { return TestData.Method; }
public virtual bool IsRelErrTest() { return (MethodClass != null) ? (MethodClass.Contains("FixedStart") || MethodClass.Contains("FlyingStart") || MethodClass.Contains("CombinedWithDetection")) : true; }
public virtual string RefFlowmeter() { return (Components != null) ? Components.Flowmeter : string.Empty; }
public virtual bool IsRelErrTest() { return (MethodClass != null) ? (MethodClass.Contains("FixedStart") || MethodClass.Contains("FlyingStart") || MethodClass.Contains("CombinedWithDetection") || MethodClass.Contains("DiverterTest")) : true; }
public virtual bool IsPMaxTest() { return (MethodClass != null) ? (MethodClass.Contains("PMaxTest") || MethodClass.Contains("LeakTest")) : true; }
public virtual bool IsStartStop() { return (MethodClass != null) ? MethodClass.Contains("FixedStart") : true; }
public virtual bool IsDiverter() { return (MethodClass != null) ? (MethodClass.Contains("FlyingStart") && MethodClass.Contains("MassColl")) : true; }
public virtual bool IsDiverter() { return (MethodClass != null) ? ((MethodClass.Contains("FlyingStart") && MethodClass.Contains("MassColl")) || MethodClass.Contains("DiverterTest")) : true; }
public virtual bool IsVolumeMethod() { return (MethodClass != null) ? (MethodClass.Contains("TestMethods.FixedStart.") || MethodClass.Contains("TestMethods.FlyingStart.")) : false; }
public virtual string MethodElde()
{
if (MethodClass == null) return string.Empty;
else if (MethodClass.Contains("TestMethods.FlyingStartMassCollection.")) return "MS";
else if (MethodClass.Contains("TestMethods.FlyingStartMassCollectionProlonged.")) return "MS";
else if (MethodClass.Contains("TestMethods.FlyingStartMassCollectionComparative.")) return "MS";
else if (MethodClass.Contains("TestMethods.FlyingStart.")) return "VS";
else if (MethodClass.Contains("TestMethods.FixedStartMassCollection.")) return "MP";
else if (MethodClass.Contains("TestMethods.FixedStartTankCollection.")) return "VP";
else if (MethodClass.Contains("TestMethods.FixedStart.")) return "VP";
else return string.Empty;
}
public virtual double ErrLimLo()
{
@@ -218,10 +235,13 @@ namespace Results.Entities
StartTime = src.StartTime;
EndTime = src.EndTime;
FlowSetTime = src.FlowSetTime;
TimeBtwnMassMsrmnts = src.TimeBtwnMassMsrmnts;
TestTime = src.TestTime;
PulsesMaster = src.PulsesMaster;
TotalPulsesMstr = src.TotalPulsesMstr;
ConstMasterRaw = src.ConstMasterRaw;
ConstMaster = src.ConstMaster;
ConstMasterCorr = src.ConstMasterCorr;
ConstMaster = src.ConstMaster;
MassStartRaw = src.MassStartRaw;
MassStart = src.MassStart;
MassEndRaw = src.MassEndRaw;
@@ -236,7 +256,13 @@ namespace Results.Entities
VolumeMaster = src.VolumeMaster;
ErrorMaster = src.ErrorMaster;
DiverterStart = src.DiverterStart;
DivStart10 = src.DivStart10;
DivStart50 = src.DivStart50;
DivStart90 = src.DivStart90;
DiverterEnd = src.DiverterEnd;
DivEnd10 = src.DivEnd10;
DivEnd50 = src.DivEnd50;
DivEnd90 = src.DivEnd90;
ErrorFlags = src.ErrorFlags;
ErrorFlagsMd = src.ErrorFlagsMd;
RefEnergy = src.RefEnergy;
+112 -10
View File
@@ -5,6 +5,7 @@ using System;
using System.Collections.Generic;
using System.Text;
using Config.Entities;
using Results.Resources;
namespace Results.Entities
{
@@ -62,8 +63,6 @@ namespace Results.Entities
public virtual double OrigCalibFactorLNA{ get; set; } /// Original iPerl LNA calibration factor used during the test
public virtual double CalibFactorLNA { get; set; } /// iPerl LNA calibration factor used during the test
public virtual double Q2ErrWOCorrection { get; set; }
public virtual bool Q2CorrectionDone { get; set; } /// true = iPerl Q2 correction was done
public virtual double Q2Correction { get; set; } /// !!! obsolete
public virtual int Q2CorrRL { get; set; } /// iPerl Q2 correction for the R-flow written to iPerl
public virtual int Q2CorrLR { get; set; } /// iPerl Q2 correction for the L-flow written to iPerl
public virtual int Q2CorrFlowRight { get; set; } /// 1 = right to left
@@ -94,10 +93,12 @@ namespace Results.Entities
public virtual int Pruefindex { get; set; } /// >= 1 ... pruefindex
public virtual int HydrPruefung { get; set; }
public virtual int WMTypeRevision { get; set; } /// Not mapped to DB !!!
public virtual object TestInfos { get; set; } /// SensusTestInfo[] array fetched at the beginning of the cycle, not mapped to DB !!!
public virtual object RawTestInfos { get; set; } /// IList<SensusTestInfo> fetched from Oracle at the beginning of the cycle, not mapped to DB !!!
public virtual object CompleteTestInfos { get; set; } /// SensusTestInfo[] obtained as a best match at the beginning of the cycle, not mapped to DB !!!
#endif
public virtual int ProcessId { get; set; } /// Not mapped to DB !!! Tracing DB Process ID
public virtual bool IsLastRecordOk { get; set; } /// Not mapped to DB !!! Previous record verification result
public virtual int SessionId { get; set; } /// Not mapped to DB !!! 1 (regular tracing DB session) or 2 (alternative tracing DB session)
public virtual bool LastRecordIsNok { get; set; } /// Not mapped to DB !!! Previous record verification result
public virtual WaterMeterData WaterMeterData { get; set; }
public virtual Batch Batch { get; set; }
@@ -355,10 +356,13 @@ namespace Results.Entities
Pruefindex = 1;
HydrPruefung = 0;
WMTypeRevision = 0;
TestInfos = null;
RawTestInfos = null;
CompleteTestInfos = null;
#endif
ProcessId = 0;
IsLastRecordOk = false;
SessionId = 0;
ErrorFlags = 0;
LastRecordIsNok = false;
}
@@ -383,9 +387,9 @@ namespace Results.Entities
#if IPERL
OrigCalibFactor = src.OrigCalibFactor;
CalibFactor = src.CalibFactor;
OrigCalibFactorLNA = src.OrigCalibFactorLNA;
CalibFactorLNA = src.CalibFactorLNA;
Q2ErrWOCorrection = src.Q2ErrWOCorrection;
Q2CorrectionDone = src.Q2CorrectionDone;
Q2Correction = src.Q2Correction;
Q2CorrRL = src.Q2CorrRL;
Q2CorrLR = src.Q2CorrLR;
Q2CorrFlowRight = src.Q2CorrFlowRight;
@@ -413,10 +417,12 @@ namespace Results.Entities
Pruefindex = src.Pruefindex;
HydrPruefung = src.HydrPruefung;
WMTypeRevision = src.WMTypeRevision;
TestInfos = src.TestInfos;
RawTestInfos = src.RawTestInfos;
CompleteTestInfos = src.CompleteTestInfos;
#endif
ProcessId = src.ProcessId;
IsLastRecordOk = src.IsLastRecordOk;
SessionId = src.SessionId;
LastRecordIsNok = src.LastRecordIsNok;
foreach (var mtr in MeterTestRslts)
{
@@ -442,5 +448,101 @@ namespace Results.Entities
sb.AppendFormat(" test start: {0} {1} batch={2}", StartTime().ToShortDateString(), StartTime().ToShortTimeString(), BatchNr());
return sb.ToString();
}
/// <summary>
/// Get decorated test names for a specified watermeter
/// </summary>
/// <param name="wMtr">Watermeter results entity</param>
/// <returns>A list of strings</returns>
public virtual IList<string> GetAllDecoratedTestNames()
{
IList<string> testNames = new List<string>();
if (MeterTestRslts != null)
{
foreach (var mtr in MeterTestRslts)
{
if ((mtr.CompoundMeterId == (byte)CompoundMeterId.Single || mtr.CompoundMeterId == (byte)CompoundMeterId.Compound || mtr.CompoundMeterId == (byte)CompoundMeterId.HeatMeterEnergy)
&& mtr.TestDone
&& (mtr.Publish() != Config.Entities.Publish.Never)
&& (mtr.Publish() != Config.Entities.Publish.Internal))
{
testNames.Add(mtr.Name());
}
}
}
return testNames;
}
static readonly System.Drawing.Color NotCompletedColor = System.Drawing.Color.White;
static readonly System.Drawing.Color OkColor = System.Drawing.Color.LightGreen;
static readonly System.Drawing.Color NokColor = System.Drawing.Color.LightPink;
static readonly System.Drawing.Color RejectColor = System.Drawing.Color.Magenta;
static readonly System.Drawing.Color ProductionErrorColor = System.Drawing.Color.RoyalBlue;
static readonly System.Drawing.Color WrongDirectionColor = System.Drawing.Color.Gold;
static readonly System.Drawing.Color WrongQ2FactorsColor = System.Drawing.Color.Red;
/// <summary>
/// Get color for highlighting results and an apporpriate text message.
/// </summary>
/// <param name="wMtr">Water meter results entity</param>
/// <param name="message">Appropriate message</param>
/// <returns>Color for results</returns>
public virtual System.Drawing.Color GetColorOfResults(bool maxRepeatsExceeded, out string message)
{
bool wmtrCompleted = CompletedFromTests();
bool wmtrPassed = PassedFromTests();
if ((ErrorFlags & (int)ErrorFlagMask.E28) != 0)
{
message = Strings.Previous_step_is_missing_or_NOK;
return ProductionErrorColor;
}
else if ((ErrorFlags & (int)ErrorFlagMask.E27) != 0)
{
message = Strings.Wrong_iPerl_counting_direction;
return WrongDirectionColor;
}
else if ((ErrorFlags & (int)ErrorFlagMask.E26) != 0)
{
message = Strings.Invalid_Q2_correction_factors;
return WrongQ2FactorsColor;
}
else if (wmtrPassed)
{
/// Water meter passed (therefore is was also completed)
message = Strings.Passed;
return OkColor;
}
else if (wmtrCompleted)
{
/// Water meter was completed but did not pass => Failed
if (maxRepeatsExceeded)
{
message = Strings.Test_repetition_count_exceeded_upper_limit;
return RejectColor;
}
else
{
message = Strings.Failed;
return NokColor;
}
}
else if (Disabled)
{
/// Water meter was not completed yet => did not pass, did not fail
message = Strings.This_position_is_disabled;
return NotCompletedColor;
}
else
{
/// Water meter was not completed yet => did not pass, did not fail
message = Strings.Test_in_progress;
return NotCompletedColor;
}
}
}
}
+199 -317
View File
@@ -1,14 +1,11 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using log4net;
using Config.Entities;
using Results.Resources;
using NHibernate;
using TracingDB.Entities;
namespace Results.Forms
{
@@ -16,52 +13,33 @@ namespace Results.Forms
{
static readonly ILog log = LogManager.GetLogger(typeof(BatchResultsDlg));
static readonly Color NotCompletedColor = Color.White;
static readonly Color OkColor = Color.LightGreen;
static readonly Color NokColor = Color.LightPink;
static readonly Color RejectColor = Color.Magenta;
static readonly Color ProductionTracing = Color.RoyalBlue;
static readonly Color WrongDirection = Color.Gold;
static readonly Color WrongQ2FactorsColor = Color.Red;
DateTime lastRedraw;
DateTime lastSizeChange;
bool loaded;
///
/// Public members
///
public Results.BatchResults Results;
public IList<Results.WMeterRsltItemSpec> Items;
public MetersArrangement MetersArrangement;
public TestsArrangement TestsArrangement;
public int NrMetersInOneGroup;
public IList<Results.WMeterRsltItemSpec> RsltItems_Screen_SingleWM;
public IList<Results.WMeterRsltItemSpec> RsltItems_Screen_CombinedWM;
public IList<Results.WMeterRsltItemSpec> RsltItems_Screen_HeatM;
public int[] RsltsClmnWidths { set { rsltsClmnWidths = value; } }
public bool ShowDisabledPositions;
public int MinWidth;
public int MinHeight;
public int PopupResultsLeft;
public int PopupResultsTop;
public int PopupResultsWidth;
public int PopupResultsHeight;
public int[] RsltsClmnWidths;
public Results.BatchResults Results { set { Display(value); } }
///
/// Private members
///
Results.BatchResults results;
MetersKind metersKind;
OneWMResultsCtrl firstListView;
public int[] rsltsClmnWidths;
int rsltsClmnCount { get { return (rsltsClmnWidths != null) ? rsltsClmnWidths.Length : 0; } }
int lvWidth;
int lvHeight;
IOneWMResultsCtrl[] wmRsltsCtrl; /// An array of controls with water meter results.
IOneWMResultsCtrl firstEnabledControl;
DateTime lastRedraw;
DateTime lastSizeChange;
int metersInOneGroup;
int nrGroups;
Timer timer;
@@ -69,351 +47,227 @@ namespace Results.Forms
public BatchResultsDlg()
{
InitializeComponent();
Text = Strings.Results;
firstEnabledControl = null;
lastSizeChange = DateTime.Now;
nrGroups = 1;
metersInOneGroup = 1;
// Create a timer with a ten second interval.
/// Create a timer with one second interval.
timer = new Timer();
timer.Interval = 500; /// ms
timer.Interval = 1000; /// ms
timer.Tick += new EventHandler(OnTimer);
timer.Start();
}
private void BatchResultsDlg_Load(object sender, EventArgs e)
{
if (PopupResultsLeft != 0) Left = PopupResultsLeft;
if (PopupResultsTop != 0) Top = PopupResultsTop;
if (PopupResultsWidth != 0) Width = PopupResultsWidth;
if (PopupResultsLeft != 0) Left = PopupResultsLeft;
if (PopupResultsTop != 0) Top = PopupResultsTop;
if (PopupResultsWidth != 0) Width = PopupResultsWidth;
if (PopupResultsHeight != 0) Height = PopupResultsHeight;
loaded = true;
if (results != null) Redraw();
}
public void Display(Results.BatchResults results)
{
this.results = results;
if (loaded) Redraw();
CreateControlsAndFillPanel(Results);
UpdateColumnWidths(RsltsClmnWidths);
UpdateResults(Results);
}
IList<Results.WMeterRsltItemSpec> GetRsltItems(MetersKind metersKind)
///
/// Handle double-click inside a water meter results control
///
void OnDoubleClick(object sender, Results.Forms.WaterMeterEventArgs args)
{
IList<Results.WMeterRsltItemSpec> srcItems;
switch (metersKind)
if (Results.WaterMeters != null && args.WMPosition > 0)
{
default:
case MetersKind.Single: srcItems = RsltItems_Screen_SingleWM; break;
case MetersKind.Combined: srcItems = RsltItems_Screen_CombinedWM; break;
case MetersKind.HeatMeter: srcItems = RsltItems_Screen_HeatM; break;
foreach (var wm in Results.WaterMeters)
{
if ((wm != null) && (wm.WMPosition == args.WMPosition))
{
ShowMoreWMResults(wm);
return;
}
}
}
IList<Results.WMeterRsltItemSpec> copiedItems = new List<Results.WMeterRsltItemSpec>();
foreach (var it in srcItems) copiedItems.Add(it.Clone());
return copiedItems;
MessageBox.Show(Strings.No_water_meter);
return;
}
void UpdateColumnWidths(int[] columnWidths)
{
foreach (var ctrl in wmRsltsCtrl) ctrl.Update(columnWidths);
}
void UpdateScrollpositions(int scrollStart)
{
/// TODO
}
/// <summary>
/// Re-draw the results. Apply new settings if they changed.
/// </summary>
public void Redraw()
void CreateControlsAndFillPanel(Results.BatchResults results)
{
lastRedraw = DateTime.Now;
this.SuspendLayout();
try
if ((results == null) || (results.WMPositionsCount == 0))
{
/// Determine how many water meters were enabled for result evaluation and printing
int enabledWMsCount = 0;
for (int i = 0; i < results.WMPositionsCount; i++)
{
if (results.WaterMeters[i] != null && !results.WaterMeters[i].Disabled)
{
enabledWMsCount++;
}
}
int metersInOneGroup = Math.Max(1, Math.Min(enabledWMsCount, NrMetersInOneGroup));
int nrGroups = Math.Max(1, (enabledWMsCount + metersInOneGroup - 1) / metersInOneGroup);
if (MetersArrangement == MetersArrangement.Horizontally)
{
flowLayoutPanel.FlowDirection = FlowDirection.LeftToRight;
lvWidth = flowLayoutPanel.Width / metersInOneGroup - 6;
lvHeight = flowLayoutPanel.Height / nrGroups - 6;
}
else
{
flowLayoutPanel.FlowDirection = FlowDirection.TopDown;
lvWidth = flowLayoutPanel.Width / nrGroups - 6;
lvHeight = flowLayoutPanel.Height / metersInOneGroup - 6;
}
/// There are no water meters at all
flowLayoutPanel.Controls.Clear();
flowLayoutPanel.WrapContents = true;
flowLayoutPanel.AutoScroll = true;
bool first = true;
for (int i = 0; i < results.WMPositionsCount; i++)
{
if (results.WaterMeters[i] != null && !results.WaterMeters[i].Disabled)
{
OneWMResultsCtrl lview = (TestsArrangement == TestsArrangement.Rows)
? GetResultsTestsAreRows(results.WaterMeters[i], i + 1)
: GetResultsTestsAreColumns(results.WaterMeters[i], i + 1);
if (lview != null)
{
flowLayoutPanel.Controls.Add(lview);
if (first)
{
firstListView = lview;
first = false;
}
}
}
}
}
catch (Exception e)
{
log.FatalFormat("Redrawing results failed : {0}", e.Message);
if (e.InnerException != null)
{
log.FatalFormat("InnerMessage : {0}", e.InnerException.Message);
}
log.FatalFormat("StackTrace : {0}{1}", Environment.NewLine, e.StackTrace);
wmRsltsCtrl = new OneWMResultsRowsCtrl[0];
firstEnabledControl = null;
return;
}
this.ResumeLayout(false);
}
/// <summary>
/// Get an empty ListView control with appropriate parameters.
/// </summary>
/// <returns>ListView control</returns>
OneWMResultsCtrl GetListView(Color backColor)
{
return new OneWMResultsCtrl(backColor, lvWidth, lvHeight);
}
OneWMResultsCtrl GetListView() { return GetListView(Color.White); }
/// <summary>
/// Get decorated test names for a specified watermeter
/// </summary>
/// <param name="wMtr">Watermeter results entity</param>
/// <returns>A list of strings</returns>
IList<string> GetAllDecoratedTestNames(Results.Entities.WaterMeter wMtr)
{
IList<string> testNames = new List<string>();
foreach (var mtr in wMtr.MeterTestRslts)
///
/// Determine water meter positions count
///
int displayedControlsCount = 0;
for (int i = 0; i < results.WaterMeters.Length; i++)
{
if ((mtr.CompoundMeterId == (byte)CompoundMeterId.Single || mtr.CompoundMeterId == (byte)CompoundMeterId.Compound || mtr.CompoundMeterId == (byte)CompoundMeterId.HeatMeterEnergy)
&& mtr.TestDone
&& (mtr.Publish() != Config.Entities.Publish.Never)
&& (mtr.Publish() != Config.Entities.Publish.Internal))
if (((results.WaterMeters[i] != null) && !results.WaterMeters[i].Disabled) || ShowDisabledPositions)
{
testNames.Add(mtr.Name());
displayedControlsCount++;
}
}
return testNames;
}
///
/// Calculate geometry
///
metersInOneGroup = Math.Max(1, Math.Min(displayedControlsCount, NrMetersInOneGroup));
nrGroups = Math.Max(1, (displayedControlsCount + metersInOneGroup - 1) / metersInOneGroup);
/// <summary>
/// Get color for highlighting results and an apporpriate text message.
/// </summary>
/// <param name="wMtr">Water meter results entity</param>
/// <param name="message">Appropriate message</param>
/// <returns>Color for results</returns>
Color GetColorOfResults(Results.Entities.WaterMeter wMtr, out string message)
{
bool wmtrCompleted = wMtr.CompletedFromTests();
bool wmtrPassed = wMtr.PassedFromTests();
if ((wMtr.ErrorFlags & (int)ErrorFlagMask.E28) != 0)
int oneWidth;
int oneHeight;
///
if (MetersArrangement == MetersArrangement.Horizontally)
{
message = Strings.Previous_step_is_missing_or_NOK;
return ProductionTracing;
}
else if ((wMtr.ErrorFlags & (int)ErrorFlagMask.E27) != 0)
{
message = Strings.Wrong_iPerl_counting_direction;
return WrongDirection;
}
else if ((wMtr.ErrorFlags & (int)ErrorFlagMask.E26) != 0)
{
message = Strings.Invalid_Q2_correction_factors;
return WrongQ2FactorsColor;
}
else if ((wMtr.ErrorFlags & (int)ErrorFlagMask.E25) != 0)
{
message = Strings.Test_repetition_count_exceeded_upper_limit;
return RejectColor;
}
else if (wmtrPassed)
{
/// Water meter passed (therefore is was also completed)
message = Strings.Passed;
return OkColor;
}
else if (wmtrCompleted)
{
/// Water meter was completed but did not pass => Failed
message = Strings.Failed;
return NokColor;
flowLayoutPanel.FlowDirection = FlowDirection.LeftToRight;
oneWidth = Math.Max(MinWidth, flowLayoutPanel.Width / metersInOneGroup - 6);
oneHeight = Math.Max(MinHeight, flowLayoutPanel.Height / nrGroups - 6);
}
else
{
/// Water meter was not completed yet => did not pass, did not fail
message = Strings.Test_in_progress;
return NotCompletedColor;
}
}
/// <summary>
/// Get a ListView control filled with results of the meter 'mtr'
/// </summary>
/// <param name="mtr">Water meter number (1-based): 1 .. Config.Data.WMsCount</param>
/// <returns>ListView object</returns>
OneWMResultsCtrl GetResultsTestsAreRows(Results.Entities.WaterMeter wMtr, int printedWMNr)
{
metersKind = wMtr.Compound() ? MetersKind.Combined : (wMtr.HeatMeter() ? MetersKind.HeatMeter : MetersKind.Single);
string message = string.Empty;
Color commonBackColor = GetColorOfResults(wMtr, out message);
OneWMResultsCtrl lview = GetListView(commonBackColor);
#if ORACLE_DB
lview.Caption = string.Format("{0} ({1}) {2}", (string.IsNullOrEmpty(wMtr.SerialNr) ? string.Empty : wMtr.SerialNr), (wMtr.Pruefindex % 100), message);
#else
lview.Caption = string.Format("s/n = {0}", string.IsNullOrEmpty(wMtr.SerialNr) ? string.Empty : wMtr.SerialNr);
#endif
IList<Results.WMeterRsltItemSpec> items = GetRsltItems(metersKind);
if (items == null || items.Count == 0) return lview;
// Header
lview.Columns.Add(printedWMNr.ToString(), (rsltsClmnCount > 0) ? rsltsClmnWidths[0] : 40);
int col = 1;
foreach (var item in items)
{
lview.Columns.Add(item.Caption, (rsltsClmnCount > col) ? rsltsClmnWidths[col] : 70);
col++;
flowLayoutPanel.FlowDirection = FlowDirection.TopDown;
oneWidth = Math.Max(MinWidth, flowLayoutPanel.Width / nrGroups - 6);
oneHeight = Math.Max(MinHeight, flowLayoutPanel.Height / metersInOneGroup - 6);
}
///
/// Create controls and fill the FlowLayoutPanel
///
flowLayoutPanel.SuspendLayout();
flowLayoutPanel.Controls.Clear();
flowLayoutPanel.WrapContents = true;
flowLayoutPanel.AutoScroll = true;
IList<string> testNames = GetAllDecoratedTestNames(wMtr);
wmRsltsCtrl = new IOneWMResultsCtrl[displayedControlsCount];
int ix = 0;
foreach (var mtr in wMtr.MeterTestRslts)
firstEnabledControl = null;
for (int i = 0; i < results.WaterMeters.Length; i++)
{
if (mtr != null && mtr.IsPilotRslt() && mtr.TestDone && mtr.Publish() != Config.Entities.Publish.Never
&& mtr.Publish() != Config.Entities.Publish.Internal)
if (((results.WaterMeters[i] != null) && !results.WaterMeters[i].Disabled) || ShowDisabledPositions)
{
ListViewItem lvi = new ListViewItem(testNames[ix++]);
/// Create one water meter position / control
wmRsltsCtrl[ix] = (TestsArrangement == TestsArrangement.Rows)
? new OneWMResultsRowsCtrl() as IOneWMResultsCtrl
: new OneWMResultsColumnsCtrl() as IOneWMResultsCtrl;
wmRsltsCtrl[ix].Width = oneWidth;
wmRsltsCtrl[ix].Height = oneHeight;
for (int i = 0; i < items.Count; i++)
if ((results.WaterMeters[i] != null) && !results.WaterMeters[i].Disabled)
{
string str = items[i].Print(wMtr, mtr.Name());
if ((firstEnabledControl == null) && (results.WaterMeters[i] != null) && !results.WaterMeters[i].Disabled)
{
firstEnabledControl = wmRsltsCtrl[ix];
}
/// Extract and use color information
string[] texts = str.Split(new char[] { '|' });
if (texts.Length == 1)
//wmRsltsCtrl[ix].Update(results.WaterMeters[i].WMPosition);
wmRsltsCtrl[ix].Update(Items);
wmRsltsCtrl[ix].WMResultsClickedHandler += delegate(object s, Results.Forms.WaterMeterEventArgs args)
{
lvi.SubItems.Add(str);
}
else if (texts.Length == 2)
{
Color color = texts[1].Equals("Green") ? Color.Green : (texts[1].Equals("Red") ? Color.Red : Color.White);
lvi.UseItemStyleForSubItems = false;
lvi.SubItems.Add(texts[0]);
lvi.SubItems[lvi.SubItems.Count - 1].BackColor = color;
}
else
{
lvi.SubItems.Add(string.Empty);
}
if (InvokeRequired)
{
Invoke(new EventHandler<Results.Forms.WaterMeterEventArgs>(OnDoubleClick), s, args);
}
else
{
OnDoubleClick(s, args);
}
};
}
lview.Items.Add(lvi);
flowLayoutPanel.Controls.Add(wmRsltsCtrl[ix] as UserControl);
ix++;
}
}
return lview;
flowLayoutPanel.ResumeLayout();
lastRedraw = DateTime.Now;
}
/// <summary>
/// Get a ListView control filled with results of the meter 'mtr'
/// </summary>
/// <param name="mtr">Water meter number (1-based): 1 .. Config.Data.WMsCount</param>
/// <returns>ListView object</returns>
OneWMResultsCtrl GetResultsTestsAreColumns(Results.Entities.WaterMeter wMtr, int printedWMNr)
void UpdateResults(Results.BatchResults results)
{
metersKind = wMtr.Compound() ? MetersKind.Combined : (wMtr.HeatMeter() ? MetersKind.HeatMeter : MetersKind.Single);
string message;
Color commonBackColor = GetColorOfResults(wMtr, out message);
OneWMResultsCtrl lview = GetListView(commonBackColor);
#if ORACLE_DB
lview.Caption = string.Format("{0} ({1}) {2}", (string.IsNullOrEmpty(wMtr.SerialNr) ? string.Empty : wMtr.SerialNr), (wMtr.Pruefindex % 100), message);
#else
lview.Caption = string.Format("s/n = {0}", string.IsNullOrEmpty(wMtr.SerialNr) ? string.Empty : wMtr.SerialNr);
#endif
IList<Results.WMeterRsltItemSpec> items = GetRsltItems(metersKind);
if (items == null || items.Count == 0) return lview;
// Header
lview.Columns.Add(printedWMNr.ToString(), (rsltsClmnCount > 0) ? rsltsClmnWidths[0] : 40);
int i = 1;
foreach (var str in GetAllDecoratedTestNames(wMtr))
if ((results != null) && (results.WaterMeters != null))
{
lview.Columns.Add(str, (rsltsClmnCount > i) ? rsltsClmnWidths[i] : 70);
i++;
}
foreach (var item in items)
{
ListViewItem lvi = new ListViewItem(item.Caption);
foreach (var mtr in wMtr.MeterTestRslts)
int ctrlIx = 0;
for (int i = 0; i < results.WaterMeters.Length; i++)
{
if (mtr != null && mtr.IsPilotRslt() && mtr.TestDone && mtr.Publish() != Config.Entities.Publish.Never &&
mtr.Publish() != Config.Entities.Publish.Internal)
if (((results.WaterMeters[i] != null) && !results.WaterMeters[i].Disabled) || ShowDisabledPositions)
{
string str = item.Print(wMtr, mtr.Name());
string[] texts = str.Split(new char[] { '|' });
if (texts.Length == 1)
{
lvi.SubItems.Add(str);
}
else if (texts.Length == 2)
{
Color color = texts[1].Equals("Green") ? Color.Green : (texts[1].Equals("Red") ? Color.Red : Color.White);
lvi.UseItemStyleForSubItems = false;
lvi.SubItems.Add(texts[0]);
lvi.SubItems[lvi.SubItems.Count - 1].BackColor = color;
}
else
{
lvi.SubItems.Add(string.Empty);
}
if (ctrlIx < wmRsltsCtrl.Length) wmRsltsCtrl[ctrlIx++].Update(results.WaterMeters[i]);
}
}
lview.Items.Add(lvi);
}
return lview;
}
void ShowMoreWMResults(Results.Entities.WaterMeter wm)
{
if ((TracingDB.DB.SessionFactory == null) || string.IsNullOrEmpty(wm.SerialNr))
{
new Results.Forms.MoreWMResultsDlg(wm, null).ShowDialog();
}
else
{
using (ISession session = TracingDB.DB.SessionFactory.OpenSession())
{
IList<ReferenceRecord> refRecords = session.QueryOver<ReferenceRecord>()
.Where(x => (x.Code == wm.SerialNr))
.OrderBy(x => x.TimeStamp).Desc
.List();
for (int i = 0; i < refRecords.Count; i++)
{
ReferenceRecord refR = refRecords[i];
if ((refR.Records != null) && (refR.Records.Count > 0))
{
/// Reference record has additional records/parts (i.e. it is PCB assembly workflow step)
///
foreach (var rec in refR.Records)
{
if (rec.Part.OraDBType.ToLower().Contains("flowtube"))
{
/// rec.Part is a flowtube
///
IList<ReferenceRecord> flowtubeRRs = session.QueryOver<ReferenceRecord>()
.Where(x => (x.Code == rec.Code))
.OrderBy(x => x.TimeStamp).Desc
.List();
foreach (var rr in flowtubeRRs) refRecords.Add(rr);
}
}
}
}
new Results.Forms.MoreWMResultsDlg(wm, refRecords).ShowDialog();
}
}
}
private void BatchResultsDlg_FormClosing(object sender, FormClosingEventArgs e)
{
PopupResultsLeft = Left;
@@ -422,6 +276,7 @@ namespace Results.Forms
PopupResultsHeight = Height;
}
private void flowLayoutPanel_SizeChanged(object sender, EventArgs e)
{
lastSizeChange = DateTime.Now;
@@ -431,13 +286,40 @@ namespace Results.Forms
{
if (DateTime.Compare(lastSizeChange, lastRedraw) > 0)
{
/// The last size change was later then the last redraw
/// The last size change was more recent then the last redraw
DateTime now = DateTime.Now;
if (DateTime.Compare(lastSizeChange + new TimeSpan(0, 0, 1), now) < 0)
{
/// More then 1s since the last size change
Redraw();
/// More then 1 second since the last panel size change
/// Calculate geometry
int oneWidth;
int oneHeight;
///
if (MetersArrangement == MetersArrangement.Horizontally)
{
flowLayoutPanel.FlowDirection = FlowDirection.LeftToRight;
oneWidth = Math.Max(MinWidth, flowLayoutPanel.Width / metersInOneGroup - 6);
oneHeight = Math.Max(MinHeight, flowLayoutPanel.Height / nrGroups - 6);
}
else
{
flowLayoutPanel.FlowDirection = FlowDirection.TopDown;
oneWidth = Math.Max(MinWidth, flowLayoutPanel.Width / nrGroups - 6);
oneHeight = Math.Max(MinHeight, flowLayoutPanel.Height / metersInOneGroup - 6);
}
/// Update size of controls
flowLayoutPanel.SuspendLayout();
///
foreach (var oneCtrl in wmRsltsCtrl)
{
oneCtrl.Width = oneWidth;
oneCtrl.Height = oneHeight;
}
///
flowLayoutPanel.ResumeLayout();
}
}
}
+25
View File
@@ -0,0 +1,25 @@
///
/// Copyright (c) 2019 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
namespace Results.Forms
{
public interface IOneWMResultsCtrl
{
event EventHandler<WaterMeterEventArgs> WMResultsClickedHandler;
bool Disabled { get; } /// true when water meter position is disabled
int WMPosition { get; } /// 1-based WM position
int Width { get; set; } /// Control width
int Height { get; set; } /// Control height
ListView.ColumnHeaderCollection Columns { get; } /// Embedded ListView control columns
void Update(int[] columnWidths);
void Update(IList<Results.WMeterRsltItemSpec> items);
void Update(Results.Entities.WaterMeter wMtr);
}
}
+164
View File
@@ -0,0 +1,164 @@
namespace Results.Forms
{
partial class MoreWMResultsDlg
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.tabControl1 = new System.Windows.Forms.TabControl();
this.graphsTabPage = new System.Windows.Forms.TabPage();
this.productionTracingTabPage = new System.Windows.Forms.TabPage();
this.productionTracingSplitContainer = new System.Windows.Forms.SplitContainer();
this.messageLabel = new System.Windows.Forms.Label();
this.tracingResultsListView = new System.Windows.Forms.ListView();
this.allResultsTabPage = new System.Windows.Forms.TabPage();
this.tabControl1.SuspendLayout();
this.productionTracingTabPage.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.productionTracingSplitContainer)).BeginInit();
this.productionTracingSplitContainer.Panel1.SuspendLayout();
this.productionTracingSplitContainer.Panel2.SuspendLayout();
this.productionTracingSplitContainer.SuspendLayout();
this.SuspendLayout();
//
// tabControl1
//
this.tabControl1.Controls.Add(this.allResultsTabPage);
this.tabControl1.Controls.Add(this.graphsTabPage);
this.tabControl1.Controls.Add(this.productionTracingTabPage);
this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tabControl1.Location = new System.Drawing.Point(0, 0);
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0;
this.tabControl1.Size = new System.Drawing.Size(1195, 448);
this.tabControl1.TabIndex = 0;
//
// graphsTabPage
//
this.graphsTabPage.Location = new System.Drawing.Point(4, 22);
this.graphsTabPage.Name = "graphsTabPage";
this.graphsTabPage.Padding = new System.Windows.Forms.Padding(3);
this.graphsTabPage.Size = new System.Drawing.Size(1187, 422);
this.graphsTabPage.TabIndex = 1;
this.graphsTabPage.Text = "Graphs";
this.graphsTabPage.UseVisualStyleBackColor = true;
//
// productionTracingTabPage
//
this.productionTracingTabPage.Controls.Add(this.productionTracingSplitContainer);
this.productionTracingTabPage.Location = new System.Drawing.Point(4, 22);
this.productionTracingTabPage.Name = "productionTracingTabPage";
this.productionTracingTabPage.Size = new System.Drawing.Size(1187, 422);
this.productionTracingTabPage.TabIndex = 2;
this.productionTracingTabPage.Text = "Production tracing";
this.productionTracingTabPage.UseVisualStyleBackColor = true;
//
// productionTracingSplitContainer
//
this.productionTracingSplitContainer.BackColor = System.Drawing.SystemColors.Control;
this.productionTracingSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
this.productionTracingSplitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.productionTracingSplitContainer.IsSplitterFixed = true;
this.productionTracingSplitContainer.Location = new System.Drawing.Point(0, 0);
this.productionTracingSplitContainer.Name = "productionTracingSplitContainer";
this.productionTracingSplitContainer.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// productionTracingSplitContainer.Panel1
//
this.productionTracingSplitContainer.Panel1.Controls.Add(this.messageLabel);
this.productionTracingSplitContainer.Panel1MinSize = 55;
//
// productionTracingSplitContainer.Panel2
//
this.productionTracingSplitContainer.Panel2.Controls.Add(this.tracingResultsListView);
this.productionTracingSplitContainer.Panel2MinSize = 60;
this.productionTracingSplitContainer.Size = new System.Drawing.Size(1187, 422);
this.productionTracingSplitContainer.SplitterDistance = 55;
this.productionTracingSplitContainer.SplitterWidth = 1;
this.productionTracingSplitContainer.TabIndex = 0;
//
// messageLabel
//
this.messageLabel.AutoSize = true;
this.messageLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
this.messageLabel.Location = new System.Drawing.Point(12, 9);
this.messageLabel.Name = "messageLabel";
this.messageLabel.Size = new System.Drawing.Size(152, 37);
this.messageLabel.TabIndex = 1;
this.messageLabel.Text = "Message";
//
// tracingResultsListView
//
this.tracingResultsListView.Dock = System.Windows.Forms.DockStyle.Fill;
this.tracingResultsListView.GridLines = true;
this.tracingResultsListView.Location = new System.Drawing.Point(0, 0);
this.tracingResultsListView.Name = "tracingResultsListView";
this.tracingResultsListView.Size = new System.Drawing.Size(1187, 366);
this.tracingResultsListView.TabIndex = 0;
this.tracingResultsListView.UseCompatibleStateImageBehavior = false;
this.tracingResultsListView.View = System.Windows.Forms.View.Details;
//
// allResultsTabPage
//
this.allResultsTabPage.Location = new System.Drawing.Point(4, 22);
this.allResultsTabPage.Name = "allResultsTabPage";
this.allResultsTabPage.Padding = new System.Windows.Forms.Padding(3);
this.allResultsTabPage.Size = new System.Drawing.Size(1187, 422);
this.allResultsTabPage.TabIndex = 0;
this.allResultsTabPage.Text = "All results";
this.allResultsTabPage.UseVisualStyleBackColor = true;
//
// MoreWMResultsDlg
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1195, 448);
this.Controls.Add(this.tabControl1);
this.Name = "MoreWMResultsDlg";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Water meter results";
this.tabControl1.ResumeLayout(false);
this.productionTracingTabPage.ResumeLayout(false);
this.productionTracingSplitContainer.Panel1.ResumeLayout(false);
this.productionTracingSplitContainer.Panel1.PerformLayout();
this.productionTracingSplitContainer.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.productionTracingSplitContainer)).EndInit();
this.productionTracingSplitContainer.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TabControl tabControl1;
private OneWMResultsRowsCtrl oneWMResultsCtrl;
private System.Windows.Forms.TabPage graphsTabPage;
private System.Windows.Forms.TabPage productionTracingTabPage;
private System.Windows.Forms.SplitContainer productionTracingSplitContainer;
private System.Windows.Forms.Label messageLabel;
private System.Windows.Forms.ListView tracingResultsListView;
private System.Windows.Forms.TabPage allResultsTabPage;
}
}
+188
View File
@@ -0,0 +1,188 @@
///
/// Copyright (c) 2019 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using TracingDB.Entities;
using Results.Resources;
using Config.Entities;
using System.Drawing;
using System.Windows.Forms.DataVisualization.Charting;
namespace Results.Forms
{
public partial class MoreWMResultsDlg : Form
{
public MoreWMResultsDlg(Results.Entities.WaterMeter wm, IList<ReferenceRecord> refRecords)
{
InitializeComponent();
Localize();
ShowAllResults(wm);
ShowChart(wm);
if (refRecords == null)
{
tabControl1.SelectTab(1);
tabControl1.TabPages.RemoveAt(2);
}
else
{
tabControl1.SelectTab(2);
ShowTracingResults(wm, refRecords);
}
}
void Localize()
{
Text = Strings.Water_meter_results;
tabControl1.TabPages[0].Text = Strings.All_results;
tabControl1.TabPages[1].Text = Strings.Graphs;
tabControl1.TabPages[2].Text = Strings.Production_tracing_results;
}
/// <summary>
/// Display all results for this water meter in the 1st tab page
/// </summary>
/// <param name="wMtr">Water meter entity</param>
void ShowAllResults(Results.Entities.WaterMeter wMtr)
{
// string message;
// Color commonBackColor = wMtr.GetColorOfResults(false, out message); /// Ony message is used later on
//#if ORACLE_DB
// oneWMResultsCtrl.Caption = string.Format("{0} ({1}) {2}", (string.IsNullOrEmpty(wMtr.SerialNr) ? string.Empty : wMtr.SerialNr), (wMtr.Pruefindex % 100), message);
//#else
// oneWMResultsCtrl.Caption = string.Format("s/n = {0}", string.IsNullOrEmpty(wMtr.SerialNr) ? string.Empty : wMtr.SerialNr);
//#endif
// IList<Results.WMeterRsltItemSpec> items = Results.WMeterRsltItemSpec.AllItems;
// // Header
// oneWMResultsCtrl.Columns.Add(wMtr.WMPosition.ToString(), 100);
// int i = 1;
// foreach (var str in wMtr.GetAllDecoratedTestNames())
// {
// oneWMResultsCtrl.Columns.Add(str, 100);
// i++;
// }
// foreach (var item in items)
// {
// ListViewItem lvi = new ListViewItem(item.Name);
// foreach (var mtr in wMtr.MeterTestRslts)
// {
// if (mtr != null && mtr.IsPilotRslt() && mtr.TestDone && mtr.Publish() != Config.Entities.Publish.Never &&
// mtr.Publish() != Config.Entities.Publish.Internal)
// {
// string str = item.Print(wMtr, mtr.Name());
// string[] texts = str.Split(new char[] { '|' });
// if (texts.Length == 1)
// {
// lvi.SubItems.Add(str);
// }
// else if (texts.Length == 2)
// {
// Color color = texts[1].Equals("Green") ? Color.Green : (texts[1].Equals("Red") ? Color.Red : Color.White);
// lvi.UseItemStyleForSubItems = false;
// lvi.SubItems.Add(texts[0]);
// lvi.SubItems[lvi.SubItems.Count - 1].BackColor = color;
// }
// else
// {
// lvi.SubItems.Add(string.Empty);
// }
// }
// }
// oneWMResultsCtrl.Items.Add(lvi);
// }
}
void ShowChart(Results.Entities.WaterMeter wm)
{
//chart.ChartAreas[0].AxisX.LabelStyle.Format = "dd.MM.yy";
//chart.ChartAreas[0].AxisX.Interval = 1;
//chart.ChartAreas[0].AxisX.IntervalType = ;
tabControl1.TabPages[1].Controls.Add(Results.Output.WMChart.GetChart(wm, false));
}
/// <summary>
/// Display tracing results in the 3rd tab page
/// </summary>
/// <param name="wm">Water meter entity</param>
/// <param name="refRecords">ReferenceRecord-s from tracing DB</param>
void ShowTracingResults(Results.Entities.WaterMeter wm, IList<ReferenceRecord> refRecords)
{
tracingResultsListView.Columns.Add(Strings.Date_and_time, 110);
tracingResultsListView.Columns.Add(Strings.Step, 100);
tracingResultsListView.Columns.Add(Strings.Workplace, 100);
tracingResultsListView.Columns.Add(Strings.Name, 100);
tracingResultsListView.Columns.Add(Strings.Result, 70);
tracingResultsListView.Columns.Add(Strings.Part, 90);
tracingResultsListView.Columns.Add(Strings.Code, 150);
tracingResultsListView.Columns.Add(Strings.Workflow, 450);
if (refRecords == null || refRecords.Count == 0)
{
messageLabel.Text = "V sledovaní výroby nie sú žiadne záznamy";
}
else
{
Process proc = refRecords[0].Process;
bool[] isMissing = new bool[proc.Worksteps.Count];
for (int i = 0; i < isMissing.Length; i++) isMissing[i] = true;
foreach (var rr in refRecords)
{
tracingResultsListView.Items.Add(new ListViewItem(new string[]
{
rr.TimeStamp.ToString("dd.MM.yyyy HH:mm"),
rr.Workstep.Name,
rr.Workplace,
rr.UserName,
rr.Result == 0 ? "OK" : "NOK",
rr.Workstep.ReferencePart.Name,
rr.Code,
rr.Process.Name,
}));
for (int i = 0; i < isMissing.Length; i++)
{
if (proc.Worksteps[i] == rr.Workstep) isMissing[i] = false;
}
}
string missingWorkplace = null;
for (int i = 0; i < isMissing.Length; i++)
{
if (isMissing[i])
{
if (missingWorkplace == null)
{
missingWorkplace = proc.Worksteps[i].Name;
messageLabel.Text = string.Format("Chýba záznam z pracoviska {0}", missingWorkplace);
}
else
{
messageLabel.Text = string.Format("Chýba záznam z pracoviska {0} aj z nasledujúcich pracovísk", missingWorkplace);
}
}
}
if (missingWorkplace == null)
{
messageLabel.Text = "Všetko je OK";
}
}
}
}
}
+103
View File
@@ -0,0 +1,103 @@
namespace Results.Forms
{
partial class OneWMResultsColumnsCtrl
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.tBox = new System.Windows.Forms.TextBox();
this.lView = new System.Windows.Forms.ListView();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.SuspendLayout();
//
// splitContainer1
//
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Name = "splitContainer1";
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.tBox);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.lView);
this.splitContainer1.Size = new System.Drawing.Size(352, 318);
this.splitContainer1.SplitterDistance = 25;
this.splitContainer1.SplitterWidth = 1;
this.splitContainer1.TabIndex = 0;
//
// tBox
//
this.tBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.tBox.Location = new System.Drawing.Point(0, 0);
this.tBox.Name = "tBox";
this.tBox.Size = new System.Drawing.Size(352, 20);
this.tBox.TabIndex = 0;
this.tBox.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.tBox_MouseDoubleClick);
//
// lView
//
this.lView.Dock = System.Windows.Forms.DockStyle.Fill;
this.lView.FullRowSelect = true;
this.lView.GridLines = true;
this.lView.Location = new System.Drawing.Point(0, 0);
this.lView.Name = "lView";
this.lView.Size = new System.Drawing.Size(352, 292);
this.lView.TabIndex = 0;
this.lView.UseCompatibleStateImageBehavior = false;
this.lView.View = System.Windows.Forms.View.Details;
//
// OneWMResultsCtrl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.splitContainer1);
this.Name = "OneWMResultsCtrl";
this.Size = new System.Drawing.Size(352, 318);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel1.PerformLayout();
this.splitContainer1.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.TextBox tBox;
private System.Windows.Forms.ListView lView;
}
}
+159
View File
@@ -0,0 +1,159 @@
///
/// Copyright (c) 2019 Sensus Slovensko a.s.
///
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Collections.Generic;
namespace Results.Forms
{
public partial class OneWMResultsColumnsCtrl : UserControl, IOneWMResultsCtrl
{
public event EventHandler<WaterMeterEventArgs> WMResultsClickedHandler;
///
private void tBox_MouseDoubleClick(object sender, MouseEventArgs e)
{
try
{
if (WMResultsClickedHandler != null) WMResultsClickedHandler(sender, new WaterMeterEventArgs(wmPosition));
}
catch (Exception)
{
}
}
bool disabled;
int wmPosition; /// 1-based water meter position
string caption;
Color bkColor;
int[] columnWidths;
IList<Results.WMeterRsltItemSpec> items;
public bool Disabled { get { return disabled; } } /// Read only
public int WMPosition { get { return wmPosition; } } /// Read only
public ListView.ColumnHeaderCollection Columns { get { return lView.Columns; } } /// Read only
public OneWMResultsColumnsCtrl()
{
InitializeComponent();
disabled = false;
wmPosition = 0;
tBox.Text = caption = "---";
tBox.BackColor = lView.BackColor = bkColor = Color.White;
items = new List<Results.WMeterRsltItemSpec>();
columnWidths = new int[0];
}
public void Update(int[] columnWidths)
{
this.columnWidths = columnWidths;
/// Always update ListView column widths
int col = 0;
foreach (ColumnHeader column in lView.Columns)
{
column.Width = (columnWidths != null && columnWidths.Length > col) ? columnWidths[col] : ((col == 0) ? 40 : 70);
col++;
}
}
public void Update(IList<Results.WMeterRsltItemSpec> items)
{
this.items = items;
}
public void Update(Results.Entities.WaterMeter wMtr)
{
if (wMtr == null || wMtr.Disabled)
{
/// Water meter position is disabled
this.disabled = true;
lView.Items.Clear();
tBox.Text = caption = "---";
tBox.BackColor = lView.BackColor = bkColor = Color.White;
return;
}
/// Update background color
string message = string.Empty;
Update(wMtr.GetColorOfResults(false, out message));
/// Update caption
#if ORACLE_DB
tBox.Text = caption = string.Format("{0} ({1}) {2}", (string.IsNullOrEmpty(wMtr.SerialNr) ? string.Empty : wMtr.SerialNr), (wMtr.Pruefindex % 100), message);
#else
tBox.Text = caption = string.Format("s/n = {0}", string.IsNullOrEmpty(wMtr.SerialNr) ? string.Empty : wMtr.SerialNr);
#endif
/// Header
lView.Columns.Add(wmPosition.ToString(), (columnWidths != null && columnWidths.Length > 0) ? columnWidths[0] : 40);
int col = 1;
foreach (var str in wMtr.GetAllDecoratedTestNames())
{
lView.Columns.Add(str, (columnWidths != null && columnWidths.Length > col) ? columnWidths[col] : 70);
col++;
}
lView.Items.Clear();
if (items == null || items.Count == 0) return;
foreach (var item in items)
{
ListViewItem lvi = new ListViewItem(item.Caption);
foreach (var mtr in wMtr.MeterTestRslts)
{
if (mtr != null && mtr.IsPilotRslt() && mtr.TestDone && mtr.Publish() != Config.Entities.Publish.Never &&
mtr.Publish() != Config.Entities.Publish.Internal)
{
string str = item.Print(wMtr, mtr.Name());
string[] texts = str.Split(new char[] { '|' });
if (texts.Length == 1)
{
lvi.SubItems.Add(str);
}
else if (texts.Length == 2)
{
Color color = texts[1].Equals("Green") ? Color.Green : (texts[1].Equals("Red") ? Color.Red : Color.White);
lvi.UseItemStyleForSubItems = false;
lvi.SubItems.Add(texts[0]);
lvi.SubItems[lvi.SubItems.Count - 1].BackColor = color;
}
else
{
lvi.SubItems.Add(string.Empty);
}
}
}
lView.Items.Add(lvi);
}
}
///
/// Private
///
void Update(int wmPosition)
{
this.wmPosition = wmPosition;
if (lView.Columns.Count > 0)
{
lView.Columns[0].Text = wmPosition.ToString();
}
}
void Update(Color backColor)
{
if (this.bkColor != backColor)
{
tBox.BackColor = lView.BackColor = this.bkColor = backColor;
}
}
}
}
-26
View File
@@ -1,26 +0,0 @@
using System.Drawing;
using System.Windows.Forms;
namespace Results.Forms
{
public partial class OneWMResultsCtrl : UserControl
{
public OneWMResultsCtrl()
{
InitializeComponent();
}
public OneWMResultsCtrl(Color backColor, int lvWidth, int lvHeight)
: this()
{
lView.BackColor = backColor;
tBox.BackColor = backColor;
Size = new System.Drawing.Size(lvWidth, lvHeight);
}
public string Caption { get { return tBox.Text; } set { tBox.Text = value; } }
public ListView.ColumnHeaderCollection Columns { get { return lView.Columns; } }
public ListView.ListViewItemCollection Items { get { return lView.Items; } }
public Color BColor { set { lView.BackColor = value; tBox.BackColor = value; } }
}
}
@@ -1,6 +1,6 @@
namespace Results.Forms
{
partial class OneWMResultsCtrl
partial class OneWMResultsRowsCtrl
{
/// <summary>
/// Required designer variable.
@@ -64,6 +64,7 @@
this.tBox.Name = "tBox";
this.tBox.Size = new System.Drawing.Size(352, 20);
this.tBox.TabIndex = 0;
this.tBox.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.tBox_MouseDoubleClick);
//
// lView
//
+169
View File
@@ -0,0 +1,169 @@
///
/// Copyright (c) 2019 Sensus Slovensko a.s.
///
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Collections.Generic;
namespace Results.Forms
{
public partial class OneWMResultsRowsCtrl : UserControl, IOneWMResultsCtrl
{
public event EventHandler<WaterMeterEventArgs> WMResultsClickedHandler;
///
private void tBox_MouseDoubleClick(object sender, MouseEventArgs e)
{
try
{
if (WMResultsClickedHandler != null) WMResultsClickedHandler(sender, new WaterMeterEventArgs(wmPosition));
}
catch (Exception)
{
}
}
bool disabled;
int wmPosition; /// 1-based water meter position
string caption;
Color bkColor;
int[] columnWidths;
IList<Results.WMeterRsltItemSpec> items;
public bool Disabled { get { return disabled; } } /// Read only
public int WMPosition { get { return wmPosition; } } /// Read only
public ListView.ColumnHeaderCollection Columns { get { return lView.Columns; } } /// Read only
public OneWMResultsRowsCtrl()
{
InitializeComponent();
disabled = false;
wmPosition = 0;
tBox.Text = caption = "---";
tBox.BackColor = lView.BackColor = bkColor = Color.White;
items = new List<Results.WMeterRsltItemSpec>();
columnWidths = new int[0];
}
public void Update(int[] columnWidths)
{
this.columnWidths = columnWidths;
/// Always update ListView column widths
int col = 0;
foreach (ColumnHeader column in lView.Columns)
{
column.Width = (columnWidths != null && columnWidths.Length > col) ? columnWidths[col] : ((col == 0) ? 40 : 70);
col++;
}
}
public void Update(IList<Results.WMeterRsltItemSpec> items)
{
this.items = items;
/// Always draw ListView header
lView.Columns.Clear();
lView.Columns.Add(wmPosition.ToString(), (columnWidths != null && columnWidths.Length > 0) ? columnWidths[0] : 40);
if (items == null || items.Count == 0) return;
int col = 1;
foreach (var item in items)
{
lView.Columns.Add(item.Caption, (columnWidths != null && columnWidths.Length > col) ? columnWidths[col] : 70);
col++;
}
}
public void Update(Results.Entities.WaterMeter wMtr)
{
if (wMtr == null || wMtr.Disabled)
{
/// Water meter position is disabled
this.disabled = true;
lView.Items.Clear();
tBox.Text = caption = "---";
tBox.BackColor = lView.BackColor = bkColor = Color.White;
return;
}
/// Update background color
string message = string.Empty;
Update(wMtr.GetColorOfResults(false, out message));
/// Update caption
#if ORACLE_DB
tBox.Text = caption = string.Format("{0} ({1}) {2}", (string.IsNullOrEmpty(wMtr.SerialNr) ? string.Empty : wMtr.SerialNr), (wMtr.Pruefindex % 100), message);
#else
tBox.Text = caption = string.Format("s/n = {0}", string.IsNullOrEmpty(wMtr.SerialNr) ? string.Empty : wMtr.SerialNr);
#endif
Update(wMtr.WMPosition);
/// Update test results
IList<string> testNames = wMtr.GetAllDecoratedTestNames();
int ix = 0;
lView.Items.Clear();
foreach (var mtr in wMtr.MeterTestRslts)
{
if (mtr != null && mtr.IsPilotRslt() && mtr.TestDone && mtr.Publish() != Config.Entities.Publish.Never
&& mtr.Publish() != Config.Entities.Publish.Internal)
{
ListViewItem lvi = new ListViewItem(testNames[ix++]);
if (items != null)
{
for (int i = 0; i < items.Count; i++)
{
string str = items[i].Print(wMtr, mtr.Name());
/// Extract and use color information
string[] texts = str.Split(new char[] { '|' });
if (texts.Length == 1)
{
lvi.SubItems.Add(str);
}
else if (texts.Length == 2)
{
Color color = texts[1].Equals("Green") ? Color.Green : (texts[1].Equals("Red") ? Color.Red : Color.White);
lvi.UseItemStyleForSubItems = false;
lvi.SubItems.Add(texts[0]);
lvi.SubItems[lvi.SubItems.Count - 1].BackColor = color;
}
else
{
lvi.SubItems.Add(string.Empty);
}
}
}
lView.Items.Add(lvi);
}
}
}
///
/// Private
///
void Update(int wmPosition)
{
this.wmPosition = wmPosition;
if (lView.Columns.Count > 0)
{
lView.Columns[0].Text = wmPosition.ToString();
}
}
void Update(Color backColor)
{
if (this.bkColor != backColor)
{
tBox.BackColor = lView.BackColor = this.bkColor = backColor;
}
}
}
}
+65
View File
@@ -0,0 +1,65 @@
namespace Results.Forms
{
partial class TracingResultsDlg
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.tracingResultsListView = new System.Windows.Forms.ListView();
this.SuspendLayout();
//
// tracingResultsListView
//
this.tracingResultsListView.Dock = System.Windows.Forms.DockStyle.Fill;
this.tracingResultsListView.GridLines = true;
this.tracingResultsListView.Location = new System.Drawing.Point(0, 0);
this.tracingResultsListView.Name = "tracingResultsListView";
this.tracingResultsListView.Size = new System.Drawing.Size(1228, 178);
this.tracingResultsListView.TabIndex = 0;
this.tracingResultsListView.UseCompatibleStateImageBehavior = false;
this.tracingResultsListView.View = System.Windows.Forms.View.Details;
//
// TracingResultsDlg
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1228, 178);
this.Controls.Add(this.tracingResultsListView);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "TracingResultsDlg";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "TracingResultsDlg";
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.ListView tracingResultsListView;
}
}
+44
View File
@@ -0,0 +1,44 @@
///
/// Copyright (c) 2019 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using TracingDB.Entities;
using Results.Resources;
namespace Results.Forms
{
public partial class TracingResultsDlg : Form
{
public TracingResultsDlg(IList<ReferenceRecord> rRecords)
{
InitializeComponent();
Text = Strings.Production_tracing_results;
tracingResultsListView.Columns.Add(Strings.Date_and_time, 110);
tracingResultsListView.Columns.Add(Strings.Step, 100);
tracingResultsListView.Columns.Add(Strings.Workplace, 100);
tracingResultsListView.Columns.Add(Strings.Name, 100);
tracingResultsListView.Columns.Add(Strings.Result, 70);
tracingResultsListView.Columns.Add(Strings.Part, 90);
tracingResultsListView.Columns.Add(Strings.Code, 150);
tracingResultsListView.Columns.Add(Strings.Workflow, 450);
foreach (var rr in rRecords)
{
tracingResultsListView.Items.Add(new ListViewItem(new string[] {
rr.TimeStamp.ToString("dd.MM.yyyy HH:mm"),
rr.Workstep.Name,
rr.Workplace,
rr.UserName,
rr.Result == 0 ? "OK" : "NOK",
rr.Workstep.ReferencePart.Name,
rr.Code,
rr.Process.Name,
}));
}
}
}
}
+14
View File
@@ -0,0 +1,14 @@
///
/// Copyright (c) 2019 Sensus Slovensko a.s.
///
using System;
namespace Results.Forms
{
public class WaterMeterEventArgs : EventArgs
{
public int WMPosition;
public WaterMeterEventArgs(int wmPosition) { WMPosition = wmPosition; }
}
}
+30 -4
View File
@@ -287,10 +287,36 @@ namespace Results
Prod_Q2CorrLR, /// 246
TestPartStr, /// 247
Error_heat_mtr_vol, /// 248
Energy_start,
Energy_end,
Error_heat_mtr_vol, /// 248
Energy_start, /// 249
Energy_end, /// 250
OraWMTypeID, /// 251
OraWMTypeRev, /// 252
E25, /// 253
E26, /// 254
E27, /// 255
E28, /// 256
RefFlowmeter, /// 257
Test_Method_Elde, /// 258
Counter1, /// 259 counterIdx0 = 0
Counter2, /// 260 counterIdx0 = 1
Counter3, /// 261 counterIdx0 = 2
Counter4, /// 262 counterIdx0 = 3
Counter5, /// 263 counterIdx0 = 4
Counter6, /// 264 counterIdx0 = 5
Counter7, /// 265 counterIdx0 = 6
Counter8, /// 266 counterIdx0 = 7
Counter9, /// 267 counterIdx0 = 8
Counter10, /// 268 counterIdx0 = 9
ConstMasterCorr, /// 269
TimeBtwnMassMsrmnts, /// 270
TestTimeCorrection, /// 271
Count,
}
-2
View File
@@ -33,8 +33,6 @@ namespace Results.Mappings
Map(x => x.OrigCalibFactorLNA);
Map(x => x.CalibFactorLNA);
Map(x => x.Q2ErrWOCorrection);
Map(x => x.Q2CorrectionDone);
Map(x => x.Q2Correction);
Map(x => x.Q2CorrRL);
Map(x => x.Q2CorrLR);
Map(x => x.Q2CorrFlowRight);
@@ -1,19 +1,24 @@
///
/// Copyright (c) 2017 Sensus Metering Systems
/// Copyright (c) 2017-2020 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Printing;
using System.IO;
using Config.Entities;
using GenCode128;
using Gma.QrCodeNet.Encoding;
using Results.Resources;
namespace Results.Output.Printers.Enhanced
{
public class EnhancedPrintDocument : PrintDocument
{
/// Size of the printed area without margins, after taking into account 'pageOrientation'
static QrEncoder encoder = new QrEncoder();
/// Size of the printed area without margins, after taking into account 'pageOrientation'
readonly int printHeight;
readonly int printWidth;
@@ -23,12 +28,14 @@ namespace Results.Output.Printers.Enhanced
readonly int TitleX;
readonly int TitleY; /// Depends on the size of the header
readonly int SpacingOne;
readonly int SpacingOneAndHalf;
readonly int SpacingOne4Header;
readonly int SpacingOneAndHalf4Header;
readonly int spacingOne;
readonly int spacingOneAndHalf;
readonly int spacingOne4Header;
readonly int spacingOneAndHalf4Header;
readonly int spacingOne4Footer;
readonly int SpacingOne4Footer;
int spacingAboveTable;
int spacingBelowTable;
int CommonTop; /// = TitleY + 60
int BodyTop; /// = HdrTop + 160
@@ -124,11 +131,11 @@ namespace Results.Output.Printers.Enhanced
}
/// Document outline preliminary calculations
SpacingOne = System.Windows.Forms.TextRenderer.MeasureText("Abcgq", font).Height;
SpacingOneAndHalf = (3 * SpacingOne) / 2;
SpacingOne4Header = System.Windows.Forms.TextRenderer.MeasureText("Abcgq", headerFont).Height;
SpacingOneAndHalf4Header = (3 * SpacingOne4Header) / 2;
SpacingOne4Footer = System.Windows.Forms.TextRenderer.MeasureText("Abcgq", footerFont).Height;
spacingOne = System.Windows.Forms.TextRenderer.MeasureText("Abcgq", font).Height;
spacingOneAndHalf = (3 * spacingOne) / 2;
spacingOne4Header = System.Windows.Forms.TextRenderer.MeasureText("Abcgq", headerFont).Height;
spacingOneAndHalf4Header = (3 * spacingOne4Header) / 2;
spacingOne4Footer = System.Windows.Forms.TextRenderer.MeasureText("Abcgq", footerFont).Height;
TitleX = cfg.LeftMargin;
TitleY = cfg.TopMargin;
@@ -178,17 +185,27 @@ namespace Results.Output.Printers.Enhanced
/// Prepare document outline
///----------
titleHeight = System.Windows.Forms.TextRenderer.MeasureText(header, titleFont).Height;
CommonTop = TitleY + titleHeight + SpacingOne4Header;
CommonTop = TitleY + titleHeight + spacingOne4Header;
commonHeight = commonItems.Count * SpacingOne;
BodyTop = CommonTop + commonHeight + SpacingOne4Header;
commonHeight = commonItems.Count * spacingOne;
BodyTop = CommonTop + commonHeight + spacingOne4Header;
Table table0 = Table.Create_TestsAreRows(batch.WaterMeters[0], testItems, style);
SizeF tableSize = table0.Measure(e);
int wmSectionHeight = (int)tableSize.Height + SpacingOne4Header * ((tableSize.Height > 0) ? 3 : 2);
nrWMsOnFirstPage = (printHeight - BodyTop + TitleY - 2 * SpacingOne) / wmSectionHeight;
nrWMsOnNextPage = (printHeight - 2 * SpacingOne) / wmSectionHeight;
if (cfg.BarcodeType == BarcodeType.None)
{
spacingAboveTable = spacingOneAndHalf4Header;
}
else
{
spacingAboveTable = Math.Max(spacingOneAndHalf4Header, cfg.BarcodeHeight + spacingOne4Header / 2);
}
spacingBelowTable = (tableSize.Height > 0) ? spacingOneAndHalf4Header : (spacingOne4Header / 2);
int wmSectionHeight = (int)tableSize.Height + spacingAboveTable + spacingBelowTable;
nrWMsOnFirstPage = (printHeight - BodyTop + TitleY - 2 * spacingOne) / wmSectionHeight;
nrWMsOnNextPage = (printHeight - 2 * spacingOne) / wmSectionHeight;
nrWMsOnNextPage = Math.Max(nrWMsOnNextPage, 1); /// Prevent division by zero if there are too many WM tests
nrPages = 1 + (batch.WaterMeters.Count - nrWMsOnFirstPage + nrWMsOnNextPage - 1) / nrWMsOnNextPage;
@@ -221,8 +238,8 @@ namespace Results.Output.Printers.Enhanced
/// Write aligned columns
for (int i = 0; i < Math.Min(leftColumn.Length, rightColumn.Length); i++)
{
PrintAt(e, leftMargin, CommonTop + SpacingOne * i, leftColumn[i]);
PrintAt(e, 300, CommonTop + SpacingOne * i, rightColumn[i]);
PrintAt(e, leftMargin, CommonTop + spacingOne * i, leftColumn[i]);
PrintAt(e, 300, CommonTop + spacingOne * i, rightColumn[i]);
}
}
@@ -241,7 +258,7 @@ namespace Results.Output.Printers.Enhanced
int wmPosition = true ? batch.WaterMeters[wmNr].WMPosition : (wmNr + 1);
if (!cfg.GoodOnly || batch.WaterMeters[wmNr].Passed)
{
nextWmTop = (int)PrintWM(e, batch.WaterMeters[wmNr], wmPosition, nextWmTop) + SpacingOneAndHalf4Header;
nextWmTop = (int)PrintWM(e, batch.WaterMeters[wmNr], wmPosition, nextWmTop) + spacingBelowTable;
}
}
@@ -252,11 +269,11 @@ namespace Results.Output.Printers.Enhanced
/// Footer
///----------
int footerWidth = (int)e.Graphics.MeasureString(footer, footerFont).Width;
PrintFooterAt(e, leftMargin + (printWidth - footerWidth) / 2, topMargin + printHeight - 2 * SpacingOne, footer);
PrintFooterAt(e, leftMargin + (printWidth - footerWidth) / 2, topMargin + printHeight - 2 * spacingOne, footer);
string pageNrText = string.Format("{0} {1}/{2}", Strings.Page, pageNr++, nrPages);
int pageNrWidth = (int)e.Graphics.MeasureString(pageNrText, font).Width;
PrintAt(e, leftMargin + (printWidth - pageNrWidth) / 2, topMargin + printHeight - SpacingOne, pageNrText);
PrintAt(e, leftMargin + (printWidth - pageNrWidth) / 2, topMargin + printHeight - spacingOne, pageNrText);
}
@@ -270,25 +287,48 @@ namespace Results.Output.Printers.Enhanced
float PrintWM(System.Drawing.Printing.PrintPageEventArgs e,
Results.Entities.WaterMeter wm, int printedWMNr, int top)
{
int tableTop = top + spacingAboveTable;
/// Print the water meter number and the serial number
string wmText = string.Format("{0} {1}", Strings.Water_Meter, printedWMNr);
PrintHeaderAt(e, leftMargin, top, wmText);
if (!string.IsNullOrEmpty(wm.SerialNr))
if (string.IsNullOrEmpty(wm.SerialNr))
{
PrintHeaderAt(e, leftMargin + (int)e.Graphics.MeasureString(wmText, headerFont).Width, top,
string.Format(" {0} = {1}", Strings.sn, wm.SerialNr));
string wmText = string.Format("{0} {1}", Strings.Water_Meter, printedWMNr);
int wmTextWidth = (int)e.Graphics.MeasureString(wmText, headerFont).Width;
PrintHeaderAt(e, leftMargin, tableTop - spacingOneAndHalf4Header, wmText);
}
else
{
string wmText = string.Format("{0} {1} {2} = {3}", Strings.Water_Meter, printedWMNr, Strings.sn, wm.SerialNr);
int wmTextWidth = (int)e.Graphics.MeasureString(wmText, headerFont).Width;
PrintHeaderAt(e, leftMargin, tableTop - spacingOneAndHalf4Header, wmText);
switch (cfg.BarcodeType)
{
case BarcodeType.Code_128_Horizontally:
{
Image img = Code128Rendering.MakeBarcodeImage(wm.SerialNr, 1, true);
e.Graphics.DrawImage(img, leftMargin + wmTextWidth + spacingOne4Header, top, cfg.BarcodeWidth, cfg.BarcodeHeight);
break;
}
case BarcodeType.Code_128_Vertically:
{
Image img = Code128Rendering.MakeBarcodeImage(wm.SerialNr, 1, true);
img.RotateFlip(RotateFlipType.Rotate90FlipNone);
e.Graphics.DrawImage(img, leftMargin + wmTextWidth + spacingOne4Header, top, cfg.BarcodeWidth, cfg.BarcodeHeight);
break;
}
case BarcodeType.QR_Code:
{
QrCode qrCode = encoder.Encode(wm.SerialNr);
DrawQR(e.Graphics, qrCode, leftMargin + wmTextWidth + spacingOne4Header, top, cfg.BarcodeWidth, cfg.BarcodeHeight);
break;
}
}
}
Table table = Table.Create_TestsAreRows(wm, testItems, style);
if (table.IsEmpty())
{
return top;
}
else
{
return table.Draw(e, leftMargin, top + SpacingOneAndHalf4Header);
}
return table.IsEmpty() ? tableTop : table.Draw(e, leftMargin, tableTop);
}
@@ -298,7 +338,7 @@ namespace Results.Output.Printers.Enhanced
}
void PrintAt(System.Drawing.Printing.PrintPageEventArgs e, int x, int y, string text)
{
RectangleF printArea = new RectangleF(x, y, 2000, SpacingOne);
RectangleF printArea = new RectangleF(x, y, 2000, spacingOne);
e.Graphics.DrawString(text, this.font, Brushes.Black, printArea);
}
@@ -309,7 +349,7 @@ namespace Results.Output.Printers.Enhanced
}
void PrintHeaderAt(System.Drawing.Printing.PrintPageEventArgs e, int x, int y, string text)
{
RectangleF printArea = new RectangleF(x, y, 2000, SpacingOne4Header);
RectangleF printArea = new RectangleF(x, y, 2000, spacingOne4Header);
e.Graphics.DrawString(text, this.headerFont, Brushes.Black, printArea);
}
@@ -320,8 +360,33 @@ namespace Results.Output.Printers.Enhanced
}
void PrintFooterAt(System.Drawing.Printing.PrintPageEventArgs e, int x, int y, string text)
{
RectangleF printArea = new RectangleF(x, y, 2000, SpacingOne4Footer);
RectangleF printArea = new RectangleF(x, y, 2000, spacingOne4Footer);
e.Graphics.DrawString(text, this.footerFont, Brushes.Black, printArea);
}
public static void DrawQR(Graphics g, QrCode qrCode, float left, float top, float width, float height)
{
/// Assuming 100 dpi (printer)
g.SmoothingMode = SmoothingMode.AntiAlias;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
float qrPixWidth = width / qrCode.Matrix.Width;
float qrPixHeight = height / qrCode.Matrix.Height;
for (int i = 0; i < qrCode.Matrix.Height; i++)
{
for (int j = 0; j < qrCode.Matrix.Width; j++)
{
if (qrCode.Matrix[j, i])
{
g.FillRectangle(Brushes.Black, new RectangleF(left + j * qrPixWidth,
top + i * qrPixHeight,
qrPixWidth,
qrPixHeight));
}
}
}
}
}
}
@@ -1,5 +1,5 @@
///
/// Copyright (c) 2017 Sensus Slovensko a.s.
/// Copyright (c) 2017-2020 Sensus Slovensko a.s.
///
namespace Results.Output.Printers.Enhanced
@@ -30,5 +30,8 @@ namespace Results.Output.Printers.Enhanced
public string[] CommonItems;
public string[] TestItems;
public string Footer;
}
public BarcodeType BarcodeType; /// s/n is printed as barcode when valid (BarcodeType.None < BarcodeType < BarcodeType.Count)
public int BarcodeWidth;
public int BarcodeHeight;
}
}
+13
View File
@@ -0,0 +1,13 @@
using System;
namespace Results.Output.Printers
{
public enum BarcodeType
{
None,
Code_128_Horizontally,
Code_128_Vertically,
QR_Code,
Count
}
}
@@ -1,19 +1,24 @@
///
/// Copyright (c) 2018 Sensus Slovensko a.s.
/// Copyright (c) 2020 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Printing;
using System.IO;
using Gma.QrCodeNet.Encoding;
using Config.Entities;
using Results.Resources;
using GenCode128;
namespace Results.Output.Printers.Label
{
public class LabelPrintDocument : PrintersCommon
{
/// Size of the printed area without margins, after taking into account 'pageOrientation'
static QrEncoder encoder = new QrEncoder();
/// Size of the printed area without margins, after taking into account 'pageOrientation'
readonly int printHeight;
readonly int printWidth;
@@ -93,6 +98,55 @@ namespace Results.Output.Printers.Label
e.Graphics.DrawString(item.Print(wm), this.font, Brushes.Black, printArea);
}
}
if (cfg.BarcodeType != BarcodeType.None && cfg.BarcodeType < BarcodeType.Count)
{
try
{
if (cfg.BarcodeType == BarcodeType.QR_Code)
{
QrCode qrCode = encoder.Encode(wm.SerialNr);
DrawQR(e.Graphics, qrCode, cfg.BarcodeLeft, cfg.BarcodeTop, cfg.BarcodeWidth, cfg.BarcodeHeight);
}
else if (cfg.BarcodeType == BarcodeType.Code_128_Horizontally || cfg.BarcodeType == BarcodeType.Code_128_Vertically)
{
Image img = Code128Rendering.MakeBarcodeImage(wm.SerialNr, 1, true);
if (cfg.BarcodeType == BarcodeType.Code_128_Vertically)
{
img.RotateFlip(RotateFlipType.Rotate90FlipNone);
}
e.Graphics.DrawImage(img, cfg.BarcodeLeft, cfg.BarcodeTop, cfg.BarcodeWidth, cfg.BarcodeHeight);
}
}
catch (Exception)
{
}
}
}
public static void DrawQR(Graphics g, QrCode qrCode, float left, float top, float width, float height)
{
/// Assuming 100 dpi (printer)
g.SmoothingMode = SmoothingMode.AntiAlias;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
float qrPixWidth = width / qrCode.Matrix.Width;
float qrPixHeight = height / qrCode.Matrix.Height;
for (int i = 0; i < qrCode.Matrix.Height; i++)
{
for (int j = 0; j < qrCode.Matrix.Width; j++)
{
if (qrCode.Matrix[j, i])
{
g.FillRectangle(Brushes.Black, new RectangleF(left + j * qrPixWidth,
top + i * qrPixHeight,
qrPixWidth,
qrPixHeight));
}
}
}
}
}
}
@@ -1,5 +1,5 @@
///
/// Copyright (c) 2018 Sensus Slovensko a.s.
/// Copyright (c) 2018-2020 Sensus Slovensko a.s.
///
namespace Results.Output.Printers.Label
@@ -16,6 +16,10 @@ namespace Results.Output.Printers.Label
public int FontStyle;
public System.Globalization.CultureInfo CultureInfo;
public bool GoodOnly;
public bool SupressPrinting; /// true = Bypass printing
}
public BarcodeType BarcodeType; /// s/n is printed as barcode when valid (BarcodeType.None < BarcodeType < BarcodeType.Count)
public int BarcodeLeft;
public int BarcodeTop;
public int BarcodeWidth;
public int BarcodeHeight;
}
}
@@ -1,12 +1,15 @@
///
/// Copyright (c) 2017-2018 Sensus Slovensko a.s.
/// Copyright (c) 2017-2020 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Printing;
using System.IO;
using Config.Entities;
using GenCode128;
using Gma.QrCodeNet.Encoding;
using Results.Resources;
namespace Results.Output.Printers.OnePerMeter
@@ -16,7 +19,9 @@ namespace Results.Output.Printers.OnePerMeter
const float GapBetweenTableColumns = 10;
const float GapBetweenCommonColumns = 10;
/// Size of the printed area without margins, after taking into account 'pageOrientation'
static QrEncoder encoder = new QrEncoder();
/// Size of the printed area without margins, after taking into account 'pageOrientation'
readonly int printHeight;
readonly int printWidth;
@@ -152,6 +157,36 @@ namespace Results.Output.Printers.OnePerMeter
}
}
if ((cfg.GraphHgh != 0) && (cfg.GraphWid != 0))
{
Rectangle pos = new Rectangle(cfg.GraphLeft, cfg.GraphTop, cfg.GraphWid, cfg.GraphHgh);
WMChart.GetChart(wm, true).Printing.PrintPaint(e.Graphics, pos);
}
if (cfg.BarcodeType != BarcodeType.None && cfg.BarcodeType < BarcodeType.Count && !string.IsNullOrEmpty(wm.SerialNr))
{
try
{
if (cfg.BarcodeType == BarcodeType.QR_Code)
{
QrCode qrCode = encoder.Encode(wm.SerialNr);
DrawQR(e.Graphics, qrCode, cfg.BarcodeLeft, cfg.BarcodeTop, cfg.BarcodeWidth, cfg.BarcodeHeight);
}
else if (cfg.BarcodeType == BarcodeType.Code_128_Horizontally || cfg.BarcodeType == BarcodeType.Code_128_Vertically)
{
Image img = Code128Rendering.MakeBarcodeImage(wm.SerialNr, 1, true);
if (cfg.BarcodeType == BarcodeType.Code_128_Vertically)
{
img.RotateFlip(RotateFlipType.Rotate90FlipNone);
}
e.Graphics.DrawImage(img, cfg.BarcodeLeft, cfg.BarcodeTop, cfg.BarcodeWidth, cfg.BarcodeHeight);
}
}
catch (Exception)
{
}
}
float tableTop = cfg.TopMargin;
if (pageNr == 1)
@@ -345,5 +380,30 @@ namespace Results.Output.Printers.OnePerMeter
pageNr++;
}
public static void DrawQR(Graphics g, QrCode qrCode, float left, float top, float width, float height)
{
/// Assuming 100 dpi (printer)
g.SmoothingMode = SmoothingMode.AntiAlias;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
float qrPixWidth = width / qrCode.Matrix.Width;
float qrPixHeight = height / qrCode.Matrix.Height;
for (int i = 0; i < qrCode.Matrix.Height; i++)
{
for (int j = 0; j < qrCode.Matrix.Width; j++)
{
if (qrCode.Matrix[j, i])
{
g.FillRectangle(Brushes.Black, new RectangleF(left + j * qrPixWidth,
top + i * qrPixHeight,
qrPixWidth,
qrPixHeight));
}
}
}
}
}
}
@@ -1,5 +1,5 @@
///
/// Copyright (c) 2017 Sensus Slovensko a.s.
/// Copyright (c) 2017-2020 Sensus Slovensko a.s.
///
namespace Results.Output.Printers.OnePerMeter
@@ -45,10 +45,19 @@ namespace Results.Output.Printers.OnePerMeter
public string[] BelowItems3;
public string Footer;
public bool TestsAreRows;
public string ImgFullPathName;
public int GraphLeft;
public int GraphTop;
public int GraphWid;
public int GraphHgh;
public int ImgLeft;
public int ImgTop;
public int ImgWid;
public int ImgHgh;
public string ImgFullPathName;
public BarcodeType BarcodeType; /// s/n is printed as barcode when valid (BarcodeType.None < BarcodeType < BarcodeType.Count)
public int BarcodeLeft;
public int BarcodeTop;
public int BarcodeWidth;
public int BarcodeHeight;
}
}
@@ -7,7 +7,7 @@ using System.Drawing;
using System.Drawing.Printing;
using Config.Entities;
namespace Results.Output.Printers
namespace Results.Output
{
public enum TableLines
{
@@ -94,7 +94,7 @@ namespace Results.Output.Printers
else
{
bool isHeader = (colIx < Style.LeftHeadersCount) || (rowIx < Style.TopHeadersCount);
SizeF size = PrintersCommon.Measure(e, Rows[rowIx][colIx], isHeader ? Style.HeaderFont : Style.Font);
SizeF size = Printers.PrintersCommon.Measure(e, Rows[rowIx][colIx], isHeader ? Style.HeaderFont : Style.Font);
if (size.Width > columnWidth[colIx]) columnWidth[colIx] = size.Width;
if (size.Height > rowHeight[rowIx]) rowHeight[rowIx] = size.Height;
}
@@ -157,7 +157,7 @@ namespace Results.Output.Printers
{
/// In not a separator line
bool isHeader = (colIx < Style.LeftHeadersCount) || (rowIx < Style.TopHeadersCount);
SizeF size = PrintersCommon.Measure(e, Rows[rowIx][colIx], isHeader ? Style.HeaderFont : Style.Font);
SizeF size = Printers.PrintersCommon.Measure(e, Rows[rowIx][colIx], isHeader ? Style.HeaderFont : Style.Font);
if ((Style.ColumnWidths != null) && (Style.ColumnWidths.Length > colIx))
{
size.Width = Style.ColumnWidths[colIx]; /// Override measurement if column width is defined
@@ -244,14 +244,14 @@ namespace Results.Output.Printers
for (int colIndex = 0; colIndex < tblColumnsCount; colIndex++)
{
bool isHeader = (colIndex < Style.LeftHeadersCount) || (rowIndex < Style.TopHeadersCount);
PrintersCommon.PrintAt(e, oneTableRow[colIndex],
isHeader ? Style.HeaderFont : Style.Font,
columnPos[colIndex],
rowPos[rowIndex],
columnWidth[colIndex],
rowHeight[rowIndex],
horizAlignment[colIndex],
vertAlignment[colIndex]);
Printers.PrintersCommon.PrintAt(e, oneTableRow[colIndex],
isHeader ? Style.HeaderFont : Style.Font,
columnPos[colIndex],
rowPos[rowIndex],
columnWidth[colIndex],
rowHeight[rowIndex],
horizAlignment[colIndex],
vertAlignment[colIndex]);
}
}
}
+151
View File
@@ -0,0 +1,151 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms.DataVisualization.Charting;
using Config.Entities;
using Results.Entities;
using Results.Resources;
namespace Results.Output
{
public class WMChart
{
public static Chart GetChart(WaterMeter wm, bool isPrinter)
{
return GetChart(wm, isPrinter, Config.Unit.lph);
}
public static Chart GetChart(WaterMeter wm, bool isPrinter, Config.Unit flowUnit)
{
double maxFlow_m3h = 0;
IList<PointF> unsortedPoints = new List<PointF>();
foreach (var mtr in wm.MeterTestRslts)
{
if (mtr.IsPilotRslt() && mtr.TestRslt.TestData.Evaluate && (mtr.TestRslt.TestTime > 0) && (mtr.TestRslt.PulsesMaster > 0))
{
double flow_m3h = (mtr.TestTime != 0)
? (3.6 * mtr.TestRslt.VolumeCTV / mtr.TestTime * mtr.PulsesMaster / mtr.TestRslt.PulsesMaster)
: (3.6 * mtr.TestRslt.VolumeCTV / mtr.TestRslt.TestTime);
if (flow_m3h > maxFlow_m3h) maxFlow_m3h = flow_m3h;
double flow = Config.Units.ConvertTo(flowUnit, flow_m3h); /// Convert to specified units
if (flow > 0)
{
unsortedPoints.Add(new PointF((float)flow, (float)mtr.Error));
}
}
}
IEnumerable<PointF> sortedPoints = unsortedPoints.OrderBy(x => x.X);
bool isQ4 = (maxFlow_m3h > 1.1 * wm.WaterMeterData.Q3_Qn);
Chart chart = new Chart
{
Name = "chart",
Text = "chart",
Dock = System.Windows.Forms.DockStyle.Fill,
TabIndex = 0,
Size = new System.Drawing.Size(5, 5),
Location = new System.Drawing.Point(3, 3),
};
ChartArea chArea = new ChartArea { Name = "ChartArea1" };
chArea.AxisX.Title = Strings.Flow;
chArea.AxisX.IsLogarithmic = true;
chArea.AxisX.LogarithmBase = 10;
chArea.AxisX.IsLabelAutoFit = true;
List<double> xs = new List<double>() { 0.0001, 0.0002, 0.0005,
0.001, 0.002, 0.005,
0.01, 0.02, 0.05,
0.1, 0.2, 0.5,
1, 2, 5,
10, 20, 50,
100, 200, 500,
1000, 2000, 5000,
10000, 20000, 50000,
100000, 200000, 500000,
1000000, 2000000, 5000000,
10000000 };
double spacer = 0.8;
double from = Config.Units.ConvertTo(flowUnit, wm.WaterMeterData.Q1_Qmin);
double to = Config.Units.ConvertTo(flowUnit, isQ4 ? wm.WaterMeterData.Q4_Qmax : wm.WaterMeterData.Q3_Qn);
bool inRange = false;
for (int i = 0; i < xs.Count - 3; i += 3)
{
if (xs[i] <= from && from < xs[i + 3])
{
chArea.AxisX.Minimum = xs[i];
inRange = true;
}
if (inRange)
{
for (int j = i; j < i + 3; j++)
{
CustomLabel cl = new CustomLabel();
cl.Text = string.Format("{0} {1}", xs[j], flowUnit.ToDescription());
cl.FromPosition = Math.Log10(xs[j] * spacer);
cl.ToPosition = Math.Log10(xs[j] / spacer);
chArea.AxisX.CustomLabels.Add(cl);
}
}
if (xs[i] < to && to <= xs[i + 3])
{
chArea.AxisX.Maximum = xs[i + 3];
CustomLabel cl = new CustomLabel();
cl.Text = string.Format("{0} {1}", xs[i + 3], flowUnit.ToDescription());
cl.FromPosition = Math.Log10(xs[i + 3] * spacer);
cl.ToPosition = Math.Log10(xs[i + 3] / spacer);
chArea.AxisX.CustomLabels.Add(cl);
break;
}
}
chArea.AxisY.Title = Strings.Relative_error;
chArea.AxisY.Interval = 3;
chArea.AxisY.LabelStyle.Format = "{#} %";
Legend legend1 = new Legend { Name = "Legend1" };
Series upperLimit = new Series { Name = Strings.Upper_limit, ChartArea = "ChartArea1", ChartType = SeriesChartType.Line, Color = Color.Red };
upperLimit.Points.AddXY(Config.Units.ConvertTo(flowUnit, wm.WaterMeterData.Q1_Qmin), 5);
upperLimit.Points.AddXY(Config.Units.ConvertTo(flowUnit, wm.WaterMeterData.Q2_Qt), 5);
upperLimit.Points.AddXY(Config.Units.ConvertTo(flowUnit, wm.WaterMeterData.Q2_Qt), 2);
upperLimit.Points.AddXY(Config.Units.ConvertTo(flowUnit, wm.WaterMeterData.Q3_Qn), 2);
if (isQ4) upperLimit.Points.AddXY(Config.Units.ConvertTo(flowUnit, wm.WaterMeterData.Q4_Qmax), 2);
Series lowerLimit = new Series { Name = Strings.Lower_limit, ChartArea = "ChartArea1", ChartType = SeriesChartType.Line, Color = Color.Red };
lowerLimit.Points.AddXY(Config.Units.ConvertTo(flowUnit, wm.WaterMeterData.Q1_Qmin), -5);
lowerLimit.Points.AddXY(Config.Units.ConvertTo(flowUnit, wm.WaterMeterData.Q2_Qt), -5);
lowerLimit.Points.AddXY(Config.Units.ConvertTo(flowUnit, wm.WaterMeterData.Q2_Qt), -2);
lowerLimit.Points.AddXY(Config.Units.ConvertTo(flowUnit, wm.WaterMeterData.Q3_Qn), -2);
if (isQ4) lowerLimit.Points.AddXY(Config.Units.ConvertTo(flowUnit, wm.WaterMeterData.Q4_Qmax), -2);
Series line = new Series { Name = Strings.Relative_error, ChartArea = "ChartArea1", ChartType = SeriesChartType.Line, Color = Color.DeepSkyBlue };
Series dots = new Series { Name = Strings.Relative_error + " ", ChartArea = "ChartArea1", ChartType = SeriesChartType.Point, Color = Color.RoyalBlue };
dots.MarkerStyle = MarkerStyle.Circle;
if (isPrinter) dots.MarkerSize = 1;
foreach (var point in sortedPoints)
{
line.Points.AddXY(point.X, point.Y);
dots.Points.AddXY(point.X, point.Y);
}
chart.ChartAreas.Add(chArea);
chart.Legends.Add(legend1);
chart.Series.Add(upperLimit);
chart.Series.Add(lowerLimit);
chart.Series.Add(dots);
chart.Series.Add(line);
return chart;
}
}
}
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.18.1166.0")]
[assembly: AssemblyFileVersion("2.18.1166.0")]
[assembly: AssemblyVersion("2.18.1340.0")]
[assembly: AssemblyFileVersion("2.18.1340.0")]
+162
View File
@@ -87,6 +87,15 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to All results.
/// </summary>
internal static string All_results {
get {
return ResourceManager.GetString("All_results", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Approval.
/// </summary>
@@ -186,6 +195,15 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Code.
/// </summary>
internal static string Code {
get {
return ResourceManager.GetString("Code", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Compound.
/// </summary>
@@ -204,6 +222,24 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Counter {0}.
/// </summary>
internal static string Counter_0 {
get {
return ResourceManager.GetString("Counter_0", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Date and time.
/// </summary>
internal static string Date_and_time {
get {
return ResourceManager.GetString("Date_and_time", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Density.
/// </summary>
@@ -438,6 +474,15 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Graphs.
/// </summary>
internal static string Graphs {
get {
return ResourceManager.GetString("Graphs", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to H amb.
/// </summary>
@@ -483,6 +528,15 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Lower limit.
/// </summary>
internal static string Lower_limit {
get {
return ResourceManager.GetString("Lower_limit", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to main.
/// </summary>
@@ -519,6 +573,15 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Name.
/// </summary>
internal static string Name {
get {
return ResourceManager.GetString("Name", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to No.
/// </summary>
@@ -528,6 +591,15 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to No water meter.
/// </summary>
internal static string No_water_meter {
get {
return ResourceManager.GetString("No_water_meter", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to OK.
/// </summary>
@@ -645,6 +717,15 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Part.
/// </summary>
internal static string Part {
get {
return ResourceManager.GetString("Part", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to OK.
/// </summary>
@@ -726,6 +807,15 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Production tracing results.
/// </summary>
internal static string Production_tracing_results {
get {
return ResourceManager.GetString("Production_tracing_results", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Protocol.
/// </summary>
@@ -807,6 +897,15 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Relative error.
/// </summary>
internal static string Relative_error {
get {
return ResourceManager.GetString("Relative_error", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Remark.
/// </summary>
@@ -897,6 +996,15 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Serial number is missing.
/// </summary>
internal static string Serial_number_is_missing {
get {
return ResourceManager.GetString("Serial_number_is_missing", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Single.
/// </summary>
@@ -978,6 +1086,15 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Step.
/// </summary>
internal static string Step {
get {
return ResourceManager.GetString("Step", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to T amb.
/// </summary>
@@ -1113,6 +1230,15 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to This position is disabled.
/// </summary>
internal static string This_position_is_disabled {
get {
return ResourceManager.GetString("This_position_is_disabled", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to to.
/// </summary>
@@ -1788,6 +1914,15 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Upper limit.
/// </summary>
internal static string Upper_limit {
get {
return ResourceManager.GetString("Upper_limit", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to User.
/// </summary>
@@ -1950,6 +2085,15 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Water meter results.
/// </summary>
internal static string Water_meter_results {
get {
return ResourceManager.GetString("Water_meter_results", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Width.
/// </summary>
@@ -1977,6 +2121,24 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Workflow.
/// </summary>
internal static string Workflow {
get {
return ResourceManager.GetString("Workflow", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Workplace.
/// </summary>
internal static string Workplace {
get {
return ResourceManager.GetString("Workplace", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Wrong iPerl counting direction.
/// </summary>
+57
View File
@@ -279,4 +279,61 @@
<data name="Test_in_progress" xml:space="preserve">
<value>Probíhá test</value>
</data>
<data name="Date_and_time" xml:space="preserve">
<value>Datum a čas</value>
</data>
<data name="Name" xml:space="preserve">
<value>Jméno</value>
</data>
<data name="Step" xml:space="preserve">
<value>Krok</value>
</data>
<data name="Workplace" xml:space="preserve">
<value>Pracovisko</value>
</data>
<data name="Workflow" xml:space="preserve">
<value>Pracovný postup</value>
</data>
<data name="Production_tracing_results" xml:space="preserve">
<value>Výsledky sledování výroby</value>
</data>
<data name="Code" xml:space="preserve">
<value>Kód</value>
</data>
<data name="Part" xml:space="preserve">
<value>Součástka</value>
</data>
<data name="All_results" xml:space="preserve">
<value>Všechny výsledky</value>
</data>
<data name="Graphs" xml:space="preserve">
<value>Grafy</value>
</data>
<data name="No_water_meter" xml:space="preserve">
<value>Žádný vodoměr</value>
</data>
<data name="Serial_number_is_missing" xml:space="preserve">
<value>Chybí sériové číslo</value>
</data>
<data name="Error" xml:space="preserve">
<value>Chyba</value>
</data>
<data name="Lower_limit" xml:space="preserve">
<value>Dolní hranice</value>
</data>
<data name="Upper_limit" xml:space="preserve">
<value>Horní hranice</value>
</data>
<data name="Water_meter_results" xml:space="preserve">
<value>Výsledky vodoměru</value>
</data>
<data name="Relative_error" xml:space="preserve">
<value>Relativní chyba</value>
</data>
<data name="Flow" xml:space="preserve">
<value>Průtok</value>
</data>
<data name="This_position_is_disabled" xml:space="preserve">
<value>Taro pozice je vypnuta</value>
</data>
</root>
+807
View File
@@ -0,0 +1,807 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Add" xml:space="preserve">
<value>Ajouter &gt;</value>
</data>
<data name="Alignment" xml:space="preserve">
<value>Alignement</value>
</data>
<data name="Approval" xml:space="preserve">
<value>Approbation</value>
</data>
<data name="Available_results" xml:space="preserve">
<value>Résultats disponibles</value>
</data>
<data name="Batch_nr" xml:space="preserve">
<value>Numéro de lot</value>
</data>
<data name="Bench" xml:space="preserve">
<value>Banc</value>
</data>
<data name="CancelBtnText" xml:space="preserve">
<value>Annuler</value>
</data>
<data name="Caption" xml:space="preserve">
<value>Légende</value>
</data>
<data name="Configuration" xml:space="preserve">
<value>Configuration</value>
</data>
<data name="Density" xml:space="preserve">
<value>Densité</value>
</data>
<data name="DownBtnText" xml:space="preserve">
<value>Vers le bas</value>
</data>
<data name="End" xml:space="preserve">
<value>Fin</value>
</data>
<data name="EndState_aux" xml:space="preserve">
<value>État final aux</value>
</data>
<data name="EndState_main" xml:space="preserve">
<value>État final principal</value>
</data>
<data name="End_state" xml:space="preserve">
<value>État final</value>
</data>
<data name="ErrLimHi" xml:space="preserve">
<value>Err LimHi</value>
</data>
<data name="ErrLimLo" xml:space="preserve">
<value>Err LimLo</value>
</data>
<data name="Error" xml:space="preserve">
<value>Erreur</value>
</data>
<data name="ErrRef" xml:space="preserve">
<value>Err Ref</value>
</data>
<data name="Err_aux" xml:space="preserve">
<value>Err aux</value>
</data>
<data name="Err_main" xml:space="preserve">
<value>Err principale</value>
</data>
<data name="Flow" xml:space="preserve">
<value>Couler</value>
</data>
<data name="Format" xml:space="preserve">
<value>Format</value>
</data>
<data name="H_amb" xml:space="preserve">
<value>Hamb</value>
</data>
<data name="Item" xml:space="preserve">
<value>Article</value>
</data>
<data name="MClass" xml:space="preserve">
<value>MClass</value>
</data>
<data name="OkBtnText" xml:space="preserve">
<value>Oui</value>
</data>
<data name="PO" xml:space="preserve">
<value>Commande</value>
</data>
<data name="Pos" xml:space="preserve">
<value>Pos.</value>
</data>
<data name="Precision" xml:space="preserve">
<value>Précision</value>
</data>
<data name="Procedure" xml:space="preserve">
<value>Procédure</value>
</data>
<data name="Producer" xml:space="preserve">
<value>Producteur</value>
</data>
<data name="Protocol" xml:space="preserve">
<value>Protocole</value>
</data>
<data name="Pulses" xml:space="preserve">
<value>Impulsion</value>
</data>
<data name="PulsesLiter" xml:space="preserve">
<value>Impulsion/litre</value>
</data>
<data name="P_amb" xml:space="preserve">
<value>P amb</value>
</data>
<data name="P_dn_end" xml:space="preserve">
<value>P dn fin</value>
</data>
<data name="P_dn" xml:space="preserve">
<value>P dn</value>
</data>
<data name="P_dn_start" xml:space="preserve">
<value>P dn début</value>
</data>
<data name="P_up_end" xml:space="preserve">
<value>P up fin</value>
</data>
<data name="P_up" xml:space="preserve">
<value>P up</value>
</data>
<data name="P_up_start" xml:space="preserve">
<value>P up début</value>
</data>
<data name="Q_fall" xml:space="preserve">
<value>Q tomber</value>
</data>
<data name="Q_from" xml:space="preserve">
<value>Q de</value>
</data>
<data name="Q_rise" xml:space="preserve">
<value>Q monter</value>
</data>
<data name="Q_to" xml:space="preserve">
<value>Q à</value>
</data>
<data name="RefPulses" xml:space="preserve">
<value>Ref Puls</value>
</data>
<data name="Remove" xml:space="preserve">
<value>&lt; Retirer</value>
</data>
<data name="Remove_all" xml:space="preserve">
<value>Enlever tout</value>
</data>
<data name="Result" xml:space="preserve">
<value>Résultat</value>
</data>
<data name="Selected_results" xml:space="preserve">
<value>Résultats sélectionnés</value>
</data>
<data name="sn" xml:space="preserve">
<value>s/n</value>
</data>
<data name="sn_aux" xml:space="preserve">
<value>s/n aux</value>
</data>
<data name="sn_main" xml:space="preserve">
<value>s/n principale</value>
</data>
<data name="Start" xml:space="preserve">
<value>Début</value>
</data>
<data name="Test" xml:space="preserve">
<value>Test</value>
</data>
<data name="Test_ID" xml:space="preserve">
<value>Test ID</value>
</data>
<data name="Test_method" xml:space="preserve">
<value>Méthode d'essai</value>
</data>
<data name="Test_vol" xml:space="preserve">
<value>Test vol</value>
</data>
<data name="T_amb" xml:space="preserve">
<value>T amb</value>
</data>
<data name="T_div" xml:space="preserve">
<value>T div</value>
</data>
<data name="T_end" xml:space="preserve">
<value>T fin</value>
</data>
<data name="T_in" xml:space="preserve">
<value>T dans</value>
</data>
<data name="T_out" xml:space="preserve">
<value>T en dehors</value>
</data>
<data name="T_s" xml:space="preserve">
<value>T [s]</value>
</data>
<data name="T_start" xml:space="preserve">
<value>T début</value>
</data>
<data name="Uncertainty" xml:space="preserve">
<value>Incertitude</value>
</data>
<data name="Units" xml:space="preserve">
<value>Unités</value>
</data>
<data name="UpBtnText" xml:space="preserve">
<value>En haut</value>
</data>
<data name="User" xml:space="preserve">
<value>Utilisateur</value>
</data>
<data name="User_nr" xml:space="preserve">
<value>N° Utilisateur</value>
</data>
<data name="Ver" xml:space="preserve">
<value>Ver.</value>
</data>
<data name="VolRef" xml:space="preserve">
<value>Vol ref.</value>
</data>
<data name="Volume" xml:space="preserve">
<value>Le volume</value>
</data>
<data name="Width" xml:space="preserve">
<value>Largeur</value>
</data>
<data name="WMs" xml:space="preserve">
<value>CEs</value>
</data>
<data name="WM_Type" xml:space="preserve">
<value>CE Type</value>
</data>
<data name="Year" xml:space="preserve">
<value>Année</value>
</data>
<data name="Results" xml:space="preserve">
<value>Résultats</value>
</data>
<data name="Remark" xml:space="preserve">
<value>Remarque</value>
</data>
<data name="Result_code" xml:space="preserve">
<value>Code de résultat</value>
</data>
<data name="Mounting" xml:space="preserve">
<value>Montage</value>
</data>
<data name="Energy" xml:space="preserve">
<value>Énergie</value>
</data>
<data name="Energy_ref" xml:space="preserve">
<value>Énergie ref</value>
</data>
<data name="P_delta" xml:space="preserve">
<value>P delta</value>
</data>
<data name="P_delta_end" xml:space="preserve">
<value>P delta fin</value>
</data>
<data name="P_delta_mean" xml:space="preserve">
<value>P delta moyenne</value>
</data>
<data name="P_delta_start" xml:space="preserve">
<value>P delta début</value>
</data>
<data name="Meter_type" xml:space="preserve">
<value>Type de compteur</value>
</data>
<data name="Compound" xml:space="preserve">
<value>Composé</value>
</data>
<data name="Heat_meter" xml:space="preserve">
<value>Thermomètre</value>
</data>
<data name="Single" xml:space="preserve">
<value>Unique</value>
</data>
<data name="Page" xml:space="preserve">
<value>Page</value>
</data>
<data name="End_volume" xml:space="preserve">
<value>Volume fin</value>
</data>
<data name="Start_volume" xml:space="preserve">
<value>Volume début</value>
</data>
<data name="End_volume_aux" xml:space="preserve">
<value>Fin volume aux</value>
</data>
<data name="End_volume_main" xml:space="preserve">
<value>Fin volume principale</value>
</data>
<data name="Start_volume_aux" xml:space="preserve">
<value>Début volume aux</value>
</data>
<data name="Start_volume_main" xml:space="preserve">
<value>Début volume principale</value>
</data>
<data name="Volume_aux" xml:space="preserve">
<value>Volume aux</value>
</data>
<data name="Volume_main" xml:space="preserve">
<value>Volume principale</value>
</data>
<data name="End_mass" xml:space="preserve">
<value>Fin masse</value>
</data>
<data name="Start_mass" xml:space="preserve">
<value>Début masse</value>
</data>
<data name="Category" xml:space="preserve">
<value>Catégorie</value>
</data>
<data name="Quantity" xml:space="preserve">
<value>Quantité</value>
</data>
<data name="Water_Meter" xml:space="preserve">
<value>Compteur d'eau</value>
</data>
<data name="VName_Flow" xml:space="preserve">
<value>Q</value>
</data>
<data name="VName_Press" xml:space="preserve">
<value>Press.</value>
</data>
<data name="VName_Temp" xml:space="preserve">
<value>Temp.</value>
</data>
<data name="VName_Dens" xml:space="preserve">
<value>Ro</value>
</data>
<data name="VName_Humi" xml:space="preserve">
<value>Hu.</value>
</data>
<data name="VName_Mass" xml:space="preserve">
<value>Masse</value>
</data>
<data name="VName_TstTime" xml:space="preserve">
<value>Tau</value>
</data>
<data name="VName_Vol" xml:space="preserve">
<value>Vol.</value>
</data>
<data name="Tooltip_P_de_ac" xml:space="preserve">
<value>Différence de pression mesurée par delta P mètre - réelle</value>
</data>
<data name="Tooltip_P_de_avg" xml:space="preserve">
<value>Différence de pression mesurée par delta P mètre - moyenne</value>
</data>
<data name="Tooltip_P_de_en" xml:space="preserve">
<value>Différence de pression mesurée par delta P mètre - à la fin de l'essai</value>
</data>
<data name="Tooltip_P_de_me" xml:space="preserve">
<value>Différence de pression mesurée par delta P mètre - moyenne</value>
</data>
<data name="Tooltip_P_de_st" xml:space="preserve">
<value>Différence de pression mesurée par delta P mètre - au début de l'essai</value>
</data>
<data name="Tooltip_P_dw_ac" xml:space="preserve">
<value>Pression à la sortie réelle</value>
</data>
<data name="Tooltip_P_dw_avg" xml:space="preserve">
<value>Pression moyenne à la sortie</value>
</data>
<data name="Tooltip_P_dw_en" xml:space="preserve">
<value>Pression à la sortie à la fin du test</value>
</data>
<data name="Tooltip_P_dw_me" xml:space="preserve">
<value>Pression moyenne à la sortie</value>
</data>
<data name="Tooltip_P_dw_st" xml:space="preserve">
<value>Pression à la sortie au début du test</value>
</data>
<data name="Tooltip_P_up_ac" xml:space="preserve">
<value>Pression à l'entrée réelle</value>
</data>
<data name="Tooltip_P_up_avg" xml:space="preserve">
<value>Pression moyenne à l'entrée</value>
</data>
<data name="Tooltip_P_up_en" xml:space="preserve">
<value>Pression à l'entrée à la fin de l'essai</value>
</data>
<data name="Tooltip_P_up_me" xml:space="preserve">
<value>Pression moyenne à l'entrée</value>
</data>
<data name="Tooltip_P_up_st" xml:space="preserve">
<value>Pression à l'entrée au début de l'essai</value>
</data>
<data name="Tooltip_Q_m_r" xml:space="preserve">
<value>Débit calculé à partir de la masse vraie et du temps conventionnels</value>
</data>
<data name="Tooltip_Q_riac" xml:space="preserve">
<value>Débit obtenu à partir du compteur principal - réel</value>
</data>
<data name="Tooltip_Q_rim" xml:space="preserve">
<value>Débit obtenu à partir du compteur principal - moyenne</value>
</data>
<data name="Tooltip_Q_v_r" xml:space="preserve">
<value>Débit mesuré par le débitmètre de référence</value>
</data>
<data name="Tooltip_T_di_ac" xml:space="preserve">
<value>Température réelle au déviateur</value>
</data>
<data name="Tooltip_T_di_avg" xml:space="preserve">
<value>Température moyenne au déviateur</value>
</data>
<data name="Tooltip_T_di_en" xml:space="preserve">
<value>Température au déviateur à la fin du test - 4 dernières mesures avant la fin</value>
</data>
<data name="Tooltip_T_di_me" xml:space="preserve">
<value>Température moyenne au déviateur</value>
</data>
<data name="Tooltip_T_di_st" xml:space="preserve">
<value>Température au déviateur au début du test - 4 premières mesures après le début</value>
</data>
<data name="Tooltip_T_dw_ac" xml:space="preserve">
<value>Température réelle à la sortie</value>
</data>
<data name="Tooltip_T_dw_avg" xml:space="preserve">
<value>Température moyenne à la sortie</value>
</data>
<data name="Tooltip_T_dw_en" xml:space="preserve">
<value>Température à la sortie à la fin du test - 4 dernières mesures avant la fin</value>
</data>
<data name="Tooltip_T_dw_me" xml:space="preserve">
<value>Température moyenne à la sortie</value>
</data>
<data name="Tooltip_T_dw_st" xml:space="preserve">
<value>Température à la sortie au début du test - 4 premières mesures après le début</value>
</data>
<data name="Tooltip_T_up_ac" xml:space="preserve">
<value>Température réelle à l'entrée</value>
</data>
<data name="Tooltip_T_up_avg" xml:space="preserve">
<value>Température moyenne à l'entrée lors d'un test</value>
</data>
<data name="Tooltip_T_up_en" xml:space="preserve">
<value>Température à l'entrée à la fin de l'essai - 4 dernières mesures avant la fin</value>
</data>
<data name="Tooltip_T_up_me" xml:space="preserve">
<value>Température moyenne à l'entrée lors d'un test</value>
</data>
<data name="Tooltip_T_up_st" xml:space="preserve">
<value>Température d'entrée au début du test - 4 premières mesures après le début</value>
</data>
<data name="aux" xml:space="preserve">
<value>aux.</value>
</data>
<data name="main" xml:space="preserve">
<value>principale</value>
</data>
<data name="Tooltip_E_rel" xml:space="preserve">
<value>Erreur relative d'un compteur</value>
</data>
<data name="Tooltip_E_rel_ref" xml:space="preserve">
<value>Erreur relative du compteur maître</value>
</data>
<data name="Tooltip_sn" xml:space="preserve">
<value>Numéro de série du compteur</value>
</data>
<data name="Tooltip_sn_aux" xml:space="preserve">
<value>Numéro de série du compteur auxiliaire d'un compteur d'eau composé</value>
</data>
<data name="Tooltip_sn_main" xml:space="preserve">
<value>Numéro de série du compteur principal d'un compteur d'eau composé</value>
</data>
<data name="Tooltip_Vol_Mt" xml:space="preserve">
<value>Volume mesuré par le compteur testé</value>
</data>
<data name="Tooltip_Vol_rm" xml:space="preserve">
<value>Volume de référence pour compteur testé</value>
</data>
<data name="VName_Error" xml:space="preserve">
<value>E</value>
</data>
<data name="fall" xml:space="preserve">
<value>tomber</value>
</data>
<data name="from" xml:space="preserve">
<value>de</value>
</data>
<data name="rise" xml:space="preserve">
<value>monter</value>
</data>
<data name="to" xml:space="preserve">
<value>à</value>
</data>
<data name="Tooltip_Hu_Amb_M" xml:space="preserve">
<value>Humidité ambiante pendant le test</value>
</data>
<data name="Tooltip_P_Amb_M" xml:space="preserve">
<value>Pression ambiante pendant le test</value>
</data>
<data name="Tooltip_T_Amb_M" xml:space="preserve">
<value>Température ambiante pendant le test</value>
</data>
<data name="Test_done" xml:space="preserve">
<value>Test fait</value>
</data>
<data name="Test_passed" xml:space="preserve">
<value>Test réussi</value>
</data>
<data name="No" xml:space="preserve">
<value>Non</value>
</data>
<data name="Yes" xml:space="preserve">
<value>Oui</value>
</data>
<data name="Density_correction" xml:space="preserve">
<value>Correction densité</value>
</data>
<data name="Error_flags" xml:space="preserve">
<value>Drapeaux erreur</value>
</data>
<data name="Legalizator" xml:space="preserve">
<value>Légalisateur</value>
</data>
<data name="User_description" xml:space="preserve">
<value>Description utilisateur</value>
</data>
<data name="Failed_meters_count" xml:space="preserve">
<value>Compteur échoué</value>
</data>
<data name="Passed_meters_count" xml:space="preserve">
<value>Mètres passés</value>
</data>
<data name="sensitivity" xml:space="preserve">
<value>sensibilité</value>
</data>
<data name="Tooltip_Q_end" xml:space="preserve">
<value>Débit obtenu à partir du compteur principal - fin</value>
</data>
<data name="Tooltip_Q_max" xml:space="preserve">
<value>Débit obtenu à partir du compteur principal - max.</value>
</data>
<data name="Tooltip_Q_min" xml:space="preserve">
<value>Débit obtenu à partir du compteur principal - min</value>
</data>
<data name="Tooltip_Q_start" xml:space="preserve">
<value>Débit obtenu à partir du compteur principal - départ</value>
</data>
<data name="Tooltip_P_dw_max" xml:space="preserve">
<value>Pression maximale à la sortie pendant le test</value>
</data>
<data name="Tooltip_P_dw_min" xml:space="preserve">
<value>Pression minimale à la sortie pendant le test</value>
</data>
<data name="Tooltip_P_up_max" xml:space="preserve">
<value>Pression maximale à l'entrée pendant l'essai</value>
</data>
<data name="Tooltip_P_up_min" xml:space="preserve">
<value>Pression minimale à l'entrée lors de l'essai</value>
</data>
<data name="Tooltip_T_di_max" xml:space="preserve">
<value>Température maximale au déviateur pendant le test</value>
</data>
<data name="Tooltip_T_di_min" xml:space="preserve">
<value>Température minimale au déviateur pendant le test</value>
</data>
<data name="Tooltip_T_dw_max" xml:space="preserve">
<value>Température maximale à la sortie pendant le test</value>
</data>
<data name="Tooltip_T_dw_min" xml:space="preserve">
<value>Température minimale à la sortie pendant le test</value>
</data>
<data name="Tooltip_T_up_max" xml:space="preserve">
<value>Température maximale à l'entrée pendant le test</value>
</data>
<data name="Tooltip_T_up_min" xml:space="preserve">
<value>Température minimale à l'entrée pendant l'essai</value>
</data>
<data name="Tooltip_P_de_max" xml:space="preserve">
<value>Différence de pression mesurée par delta P mètre - maximum pendant le test</value>
</data>
<data name="Tooltip_P_de_min" xml:space="preserve">
<value>Différence de pression mesurée par delta P mètre - minimum pendant l'essai</value>
</data>
<data name="Tooltip_Rho_Wa_calc" xml:space="preserve">
<value>Densité calculée de l'eau à partir d'une table ou d'une formule à la température d'étalonnage de la densité de l'eau (r)</value>
</data>
<data name="Tooltip_T_rho_0" xml:space="preserve">
<value>Température de l'échantillon d'eau lors de l'étalonnage de la densité de l'eau</value>
</data>
<data name="Tooltip_T_ln_ac" xml:space="preserve">
<value>Température réelle dans la ligne</value>
</data>
<data name="Tooltip_T_ln_avg" xml:space="preserve">
<value>Température moyenne dans la ligne pendant un test</value>
</data>
<data name="Tooltip_T_ln_en" xml:space="preserve">
<value>Température dans la ligne à la fin du test - 4 dernières mesures avant la fin</value>
</data>
<data name="Tooltip_T_ln_max" xml:space="preserve">
<value>Température maximale dans la ligne pendant le test</value>
</data>
<data name="Tooltip_T_ln_me" xml:space="preserve">
<value>Température moyenne dans la ligne pendant un test</value>
</data>
<data name="Tooltip_T_ln_min" xml:space="preserve">
<value>Température minimale dans la ligne pendant le test</value>
</data>
<data name="Tooltip_T_ln_st" xml:space="preserve">
<value>Température dans la ligne au début du test - 4 premières mesures après le début</value>
</data>
<data name="Unit" xml:space="preserve">
<value>Unité</value>
</data>
<data name="Procedure_description" xml:space="preserve">
<value>Description procédure</value>
</data>
<data name="Bench_ID" xml:space="preserve">
<value>ID banc</value>
</data>
<data name="Bench_name" xml:space="preserve">
<value>Nom banc</value>
</data>
<data name="Address" xml:space="preserve">
<value>Adresse</value>
</data>
<data name="Tooltip_E_rel_last" xml:space="preserve">
<value>Erreur relative d'un compteur dans un test précédent / en production</value>
</data>
<data name="Batch" xml:space="preserve">
<value>Lot</value>
</data>
<data name="repetition" xml:space="preserve">
<value>répétition</value>
</data>
<data name="Invalid_Q2_correction_factors" xml:space="preserve">
<value>Facteurs correction Q2 non valides</value>
</data>
<data name="Previous_step_is_missing_or_NOK" xml:space="preserve">
<value>L'étape précédente est manquante ou NOK</value>
</data>
<data name="Test_repetition_count_exceeded_upper_limit" xml:space="preserve">
<value>nombre répétitions test dépasse limite supérieure</value>
</data>
<data name="Wrong_iPerl_counting_direction" xml:space="preserve">
<value>Mauvais sens comptage iPerl</value>
</data>
<data name="Failed" xml:space="preserve">
<value>Échoué</value>
</data>
<data name="Passed" xml:space="preserve">
<value>Passé</value>
</data>
<data name="Test_in_progress" xml:space="preserve">
<value>Test en cours</value>
</data>
<data name="Counter_0" xml:space="preserve">
<value>Compteur {0}</value>
</data>
<data name="Date_and_time" xml:space="preserve">
<value>Date et heure</value>
</data>
<data name="Name" xml:space="preserve">
<value>Prénom</value>
</data>
<data name="Step" xml:space="preserve">
<value>Étape</value>
</data>
<data name="Workplace" xml:space="preserve">
<value>Lieu travail</value>
</data>
<data name="Workflow" xml:space="preserve">
<value>Flux travail</value>
</data>
<data name="Production_tracing_results" xml:space="preserve">
<value>Résultats production</value>
</data>
<data name="Code" xml:space="preserve">
<value>Code</value>
</data>
<data name="Part" xml:space="preserve">
<value>Partie</value>
</data>
<data name="All_results" xml:space="preserve">
<value>Tous résultats</value>
</data>
<data name="Graphs" xml:space="preserve">
<value>Graphiques</value>
</data>
<data name="No_water_meter" xml:space="preserve">
<value>Pas de compteur</value>
</data>
<data name="Serial_number_is_missing" xml:space="preserve">
<value>Numérotation en série</value>
</data>
</root>
+54
View File
@@ -765,4 +765,58 @@
<data name="Test_in_progress" xml:space="preserve">
<value>Test in progress</value>
</data>
<data name="Counter_0" xml:space="preserve">
<value>Counter {0}</value>
</data>
<data name="Date_and_time" xml:space="preserve">
<value>Date and time</value>
</data>
<data name="Name" xml:space="preserve">
<value>Name</value>
</data>
<data name="Step" xml:space="preserve">
<value>Step</value>
</data>
<data name="Workplace" xml:space="preserve">
<value>Workplace</value>
</data>
<data name="Workflow" xml:space="preserve">
<value>Workflow</value>
</data>
<data name="Production_tracing_results" xml:space="preserve">
<value>Production tracing results</value>
</data>
<data name="Code" xml:space="preserve">
<value>Code</value>
</data>
<data name="Part" xml:space="preserve">
<value>Part</value>
</data>
<data name="All_results" xml:space="preserve">
<value>All results</value>
</data>
<data name="Graphs" xml:space="preserve">
<value>Graphs</value>
</data>
<data name="No_water_meter" xml:space="preserve">
<value>No water meter</value>
</data>
<data name="Serial_number_is_missing" xml:space="preserve">
<value>Serial number is missing</value>
</data>
<data name="Lower_limit" xml:space="preserve">
<value>Lower limit</value>
</data>
<data name="Upper_limit" xml:space="preserve">
<value>Upper limit</value>
</data>
<data name="Water_meter_results" xml:space="preserve">
<value>Water meter results</value>
</data>
<data name="Relative_error" xml:space="preserve">
<value>Relative error</value>
</data>
<data name="This_position_is_disabled" xml:space="preserve">
<value>This position is disabled</value>
</data>
</root>
+52 -8
View File
@@ -18,7 +18,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;SLM_50;HEAT_METERS;LANG_SK</DefineConstants>
<DefineConstants>TRACE;DEBUG;CEVAK_200;LANG_CS</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x86</PlatformTarget>
@@ -27,7 +27,7 @@
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE;SLM_50;HEAT_METERS;LANG_SK</DefineConstants>
<DefineConstants>TRACE;CEVAK_200;LANG_CS</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
@@ -35,6 +35,9 @@
<Reference Include="FluentNHibernate">
<HintPath>..\packages\FluentNHibernate.2.0.3.0\lib\net40\FluentNHibernate.dll</HintPath>
</Reference>
<Reference Include="Gma.QrCodeNet.Encoding">
<HintPath>..\packages\QrCode.Net.0.4.0.0\net40\Gma.QrCodeNet.Encoding.dll</HintPath>
</Reference>
<Reference Include="Iesi.Collections">
<HintPath>..\packages\Iesi.Collections.4.0.0.4000\lib\net40\Iesi.Collections.dll</HintPath>
</Reference>
@@ -51,6 +54,7 @@
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Windows.Forms.DataVisualization" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
@@ -74,17 +78,30 @@
<Compile Include="Forms\BatchResultsDlg.Designer.cs">
<DependentUpon>BatchResultsDlg.cs</DependentUpon>
</Compile>
<Compile Include="Forms\IOneWMResultsCtrl.cs" />
<Compile Include="Forms\ListViewEx.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Forms\ListViewExtensions.cs" />
<Compile Include="Forms\LviIntColumnComparer.cs" />
<Compile Include="Forms\LviTextColumnComparer.cs" />
<Compile Include="Forms\OneWMResultsCtrl.cs">
<Compile Include="Forms\MoreWMResultsDlg.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\MoreWMResultsDlg.Designer.cs">
<DependentUpon>MoreWMResultsDlg.cs</DependentUpon>
</Compile>
<Compile Include="Forms\OneWMResultsColumnsCtrl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Forms\OneWMResultsCtrl.Designer.cs">
<DependentUpon>OneWMResultsCtrl.cs</DependentUpon>
<Compile Include="Forms\OneWMResultsColumnsCtrl.designer.cs">
<DependentUpon>OneWMResultsColumnsCtrl.cs</DependentUpon>
</Compile>
<Compile Include="Forms\OneWMResultsRowsCtrl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Forms\OneWMResultsRowsCtrl.Designer.cs">
<DependentUpon>OneWMResultsRowsCtrl.cs</DependentUpon>
</Compile>
<Compile Include="Forms\ResultsConfigCtrl.cs">
<SubType>UserControl</SubType>
@@ -98,6 +115,13 @@
<Compile Include="Forms\ResultsConfigDlg.designer.cs">
<DependentUpon>ResultsConfigDlg.cs</DependentUpon>
</Compile>
<Compile Include="Forms\TracingResultsDlg.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\TracingResultsDlg.Designer.cs">
<DependentUpon>TracingResultsDlg.cs</DependentUpon>
</Compile>
<Compile Include="Forms\WaterMeterEventArgs.cs" />
<Compile Include="ItemID.cs" />
<Compile Include="Mappings\BatchMap.cs" />
<Compile Include="Mappings\ComponentsMap.cs" />
@@ -110,6 +134,7 @@
<SubType>Component</SubType>
</Compile>
<Compile Include="Output\Printers\Enhanced\EnhancedPrinterCfg.cs" />
<Compile Include="Output\Printers\Enums.cs" />
<Compile Include="Output\Printers\Label\LabelPrintDocument.cs">
<SubType>Component</SubType>
</Compile>
@@ -124,11 +149,12 @@
<SubType>Component</SubType>
</Compile>
<Compile Include="Output\Printers\OnePerMeter\OnePerMeterPrinterCfg.cs" />
<Compile Include="Output\Printers\Table.cs" />
<Compile Include="Output\Printers\Zapiska\ZapiskaPrintDocument.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Output\Printers\Zapiska\ZapiskaPrinterCfg.cs" />
<Compile Include="Output\Table.cs" />
<Compile Include="Output\WMChart.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
@@ -148,6 +174,14 @@
<Project>{743DF7DB-C7B6-42EB-986D-0F485E5588E4}</Project>
<Name>Config</Name>
</ProjectReference>
<ProjectReference Include="..\GenCode128\GenCode128.csproj">
<Project>{32817bf9-e380-4467-9c7f-936f4b122bc7}</Project>
<Name>GenCode128</Name>
</ProjectReference>
<ProjectReference Include="..\TracingDB\TracingDB.csproj">
<Project>{EFEC8A31-3022-4DA7-A8F6-16D30A94C3FF}</Project>
<Name>TracingDB</Name>
</ProjectReference>
<ProjectReference Include="..\Users\Users.csproj">
<Project>{6E5CB0E9-E1B6-4E5D-AC6E-B1049E180F2B}</Project>
<Name>Users</Name>
@@ -165,8 +199,14 @@
<EmbeddedResource Include="Forms\ListViewEx.resx">
<DependentUpon>ListViewEx.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\OneWMResultsCtrl.resx">
<DependentUpon>OneWMResultsCtrl.cs</DependentUpon>
<EmbeddedResource Include="Forms\MoreWMResultsDlg.resx">
<DependentUpon>MoreWMResultsDlg.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\OneWMResultsColumnsCtrl.resx">
<DependentUpon>OneWMResultsColumnsCtrl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\OneWMResultsRowsCtrl.resx">
<DependentUpon>OneWMResultsRowsCtrl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ResultsConfigCtrl.resx">
<DependentUpon>ResultsConfigCtrl.cs</DependentUpon>
@@ -174,6 +214,9 @@
<EmbeddedResource Include="Forms\ResultsConfigDlg.resx">
<DependentUpon>ResultsConfigDlg.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\TracingResultsDlg.resx">
<DependentUpon>TracingResultsDlg.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
@@ -182,6 +225,7 @@
<EmbeddedResource Include="Resources\Strings.de.resx">
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Strings.fr.resx" />
<EmbeddedResource Include="Resources\Strings.it.resx" />
<EmbeddedResource Include="Resources\Strings.pl.resx" />
<EmbeddedResource Include="Resources\Strings.resx">
+29 -2
View File
@@ -1,5 +1,5 @@
///
/// Copyright (c) 2016-2018 Sensus Slovensko a.s.
/// Copyright (c) 2016-2019 Sensus Slovensko a.s.
///
using System;
using System.Text;
@@ -11,6 +11,7 @@ namespace Results
{
public static string GetTestName(string name, int repeats, int repetitionNr)
{
if (name == null) return null;
if (repeats == 1) return name;
return string.Format("{0} ({1}/{2})", name, repetitionNr, repeats);
}
@@ -26,7 +27,11 @@ namespace Results
case 7: return 29; /// PT7, special
case 8: return 36; /// WR13
case 9: return 37; /// WR15
case 10: return 38; /// WR16
case 10: return 38; /// WR14
case 11: return 39; /// WR18
case 12: return 40; /// WR19
case 13: return 41; /// WR20
case 14: return 42; /// WR21
default: return 0;
}
}
@@ -42,6 +47,10 @@ namespace Results
case 8: return "WR13";
case 9: return "WR15";
case 10: return "WR14";
case 11: return "WR18";
case 12: return "WR19";
case 13: return "WR20";
case 14: return "WR21";
default: return string.Empty;
}
}
@@ -81,5 +90,23 @@ namespace Results
return (useRedGreenColor) ? (passed ? "OK|Green" : "NOK|Red") : (passed ? "OK|White" : "NOK|White");
#endif
}
public static void GetCounterStates(Results.Entities.Batch batch, int[] counters)
{
if (batch != null)
{
batch.Counter1 = ((counters != null) && (counters.Length >= 1)) ? counters[0] : 0;
batch.Counter2 = ((counters != null) && (counters.Length >= 2)) ? counters[1] : 0;
batch.Counter3 = ((counters != null) && (counters.Length >= 3)) ? counters[2] : 0;
batch.Counter4 = ((counters != null) && (counters.Length >= 4)) ? counters[3] : 0;
batch.Counter5 = ((counters != null) && (counters.Length >= 5)) ? counters[4] : 0;
batch.Counter6 = ((counters != null) && (counters.Length >= 6)) ? counters[5] : 0;
batch.Counter7 = ((counters != null) && (counters.Length >= 7)) ? counters[6] : 0;
batch.Counter8 = ((counters != null) && (counters.Length >= 8)) ? counters[7] : 0;
batch.Counter9 = ((counters != null) && (counters.Length >= 9)) ? counters[8] : 0;
batch.Counter10 = ((counters != null) && (counters.Length >= 10)) ? counters[9] : 0;
}
}
}
}
+49 -27
View File
@@ -149,6 +149,7 @@ namespace Results
AllItems.Add(new WMeterRsltItemSpec(ItemID.Proc_description, Strings.Procedure_description, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => FormatStr(f, w.Batch.ProcedureDescription)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Batch_number, Strings.Batch_nr, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.BatchNr())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_method, Strings.Test_method + "()", Quantity.String, ItemCategory.TestData, (w, t, u, f, p) => FormatStr(f, (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Method())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_Method_Elde, Strings.Test_method + " Elde ()", Quantity.String, ItemCategory.TestData, (w, t, u, f, p) => FormatStr(f, (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).MethodElde())));
///
/// Volume
@@ -195,8 +196,10 @@ namespace Results
AllItems.Add(new WMeterRsltItemSpec(ItemID.Timestamp_start, "Timestamp start ()", Quantity.Time, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null || !w.GetTestRslt(t).IsRelErrTest()) ? "" : FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t).TimestampStart)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Timestamp_end, "Timestamp end ()", Quantity.Time, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null || !w.GetTestRslt(t).IsRelErrTest()) ? "" : FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t).TimestampEnd)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_time_ni, Strings.T_s + "_ni()", Quantity.Time, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null || !w.GetTestRslt(t).IsRelErrTest()) ? "" : FormatDbl(u, f, p, "V3", w.GetMeterTestRslt(t).TestTime)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_time, Strings.T_s + "()", Quantity.Time, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null || !w.GetTestRslt(t).IsRelErrTest()) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).TestTime)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.PMax_test_time, "Pressure test time ()", "Pressure test time", Quantity.Time, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null || !w.GetTestRslt(t).IsPMaxTest()) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).TestTime)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_time, Strings.T_s + "()", Quantity.Time, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null || !w.GetTestRslt(t).IsRelErrTest()) ? "" : FormatDbl(u, f, p, "F1", w.GetTestRslt(t).TestTime)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.TestTimeCorrection, "Test time correction ()", Quantity.Time, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null || !w.GetTestRslt(t).IsRelErrTest()) ? "" : FormatDbl(u, f, p, "F3", w.GetTestRslt(t).TestTimeCorrection)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.TimeBtwnMassMsrmnts, "Time between mass measurements ()", Quantity.Time, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null || !w.GetTestRslt(t).IsRelErrTest()) ? "" : FormatDbl(u, f, p, "F0", w.GetTestRslt(t).TimeBtwnMassMsrmnts)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.PMax_test_time, "Pressure test time ()", "Pressure test time", Quantity.Time, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null || !w.GetTestRslt(t).IsPMaxTest()) ? "" : FormatDbl(u, f, p, "F0", w.GetTestRslt(t).TestTime)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Diverter_start_time, "Diverter start time ()", "Diverter start time", Quantity.Time, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null || !w.GetTestRslt(t).IsDiverter()) ? "" : FormatDbl(u, f, p, "F3", w.GetTestRslt(t).DiverterStart)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Diverter_end_time, "Diverter end time ()", "Diverter end time", Quantity.Time, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null || !w.GetTestRslt(t).IsDiverter()) ? "" : FormatDbl(u, f, p, "F3", w.GetTestRslt(t).DiverterEnd)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Start_valve_open_time, "Start valve open time ()", "Start valve open time", Quantity.Time, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null || !w.GetTestRslt(t).IsStartStop()) ? "" : FormatDbl(u, f, p, "F3", w.GetTestRslt(t).DiverterStart)));
@@ -208,13 +211,13 @@ namespace Results
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_from, string.Format("{0} {1}", Strings.VName_Flow, Strings.from), Quantity.Flow, ItemCategory.TestData, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).Qfrom())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_to, string.Format("{0} {1}", Strings.VName_Flow, Strings.to), Quantity.Flow, ItemCategory.TestData, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).Qto())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Flow, string.Format("{0} v r", Strings.VName_Flow), Strings.Tooltip_Q_v_r, Quantity.Flow, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).FlowVolume)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Qc, string.Format("Qc"), "Calculated water meter flow", Quantity.Flow, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).VolumeCTV / w.GetMeterTestRslt(t).TestTime * 3.6 * w.GetMeterTestRslt(t).PulsesMaster / w.GetTestRslt(t).PulsesMaster)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_ref_mean, string.Format("{0} rim ()", Strings.VName_Flow), Strings.Tooltip_Q_rim, Quantity.Flow, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).FlowMean)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_ref_min, string.Format("{0} ref min ()", Strings.VName_Flow), Strings.Tooltip_Q_min, Quantity.Flow, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).FlowMin)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_ref_max, string.Format("{0} ref max ()", Strings.VName_Flow), Strings.Tooltip_Q_max, Quantity.Flow, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).FlowMax)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_ref_start, string.Format("{0} ref start ()",Strings.VName_Flow),Strings.Tooltip_Q_start, Quantity.Flow, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).FlowStart)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_ref_end, string.Format("{0} ref end ()", Strings.VName_Flow), Strings.Tooltip_Q_end, Quantity.Flow, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).FlowEnd)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Flow_ctv, string.Format("{0} ctv ()", Strings.VName_Flow), "CTV of the flow (mean val.)",Quantity.Flow, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", (w.GetTestRslt(t).TestTime == 0) ? 0 : 3.6 * w.GetTestRslt(t).VolumeCTV / w.GetTestRslt(t).TestTime)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Qc, string.Format("Qc"), "Calculated water meter flow", Quantity.Flow, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V5", (w.GetMeterTestRslt(t).TestTime == 0 || w.GetTestRslt(t).PulsesMaster == 0) ? 0 : w.GetTestRslt(t).VolumeCTV / w.GetMeterTestRslt(t).TestTime * 3.6 * w.GetMeterTestRslt(t).PulsesMaster / w.GetTestRslt(t).PulsesMaster)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Flow_ctv, string.Format("{0} ctv ()", Strings.VName_Flow), "CTV of the flow (mean val.)", Quantity.Flow, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V5", (w.GetMeterTestRslt(t).TestTime == 0 || w.GetTestRslt(t).PulsesMaster == 0) ? 0 : w.GetTestRslt(t).VolumeCTV / w.GetMeterTestRslt(t).TestTime * 3.6 * w.GetMeterTestRslt(t).PulsesMaster / w.GetTestRslt(t).PulsesMaster)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Flow_ctv_min, string.Format("{0} ctv min ()", Strings.VName_Flow), "Min. CTV of the flow", Quantity.Flow, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", (w.GetTestRslt(t).VolumeMaster == 0) ? 0 : w.GetTestRslt(t).VolumeCTV * w.GetTestRslt(t).FlowMin / w.GetTestRslt(t).VolumeMaster)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Flow_ctv_max, string.Format("{0} ctv max ()", Strings.VName_Flow), "Max. CTV of the flow", Quantity.Flow, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", (w.GetTestRslt(t).VolumeMaster == 0) ? 0 : w.GetTestRslt(t).VolumeCTV * w.GetTestRslt(t).FlowMax / w.GetTestRslt(t).VolumeMaster)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Flow_ctv_start, string.Format("{0} ctv start ()", Strings.VName_Flow), "Start flow CTV", Quantity.Flow, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", (w.GetTestRslt(t).VolumeMaster == 0) ? 0 : w.GetTestRslt(t).VolumeCTV * w.GetTestRslt(t).FlowStart / w.GetTestRslt(t).VolumeMaster)));
@@ -223,8 +226,9 @@ namespace Results
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_fall, string.Format("{0} {1}", Strings.VName_Flow, Strings.fall), Quantity.Flow, ItemCategory.MeterResult, (w, t, u, f, p) => (string.IsNullOrEmpty(t) || (w.GetTestRslt(t) != null)) ? ((w.QFall == 0) ? "-" : FormatDbl(u, f, p, "V3", w.QFall)) : ""));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_sensitivity, string.Format("{0} {1}", Strings.VName_Flow, Strings.sensitivity), Quantity.Flow, ItemCategory.MeterResult, (w, t, u, f, p) => (string.IsNullOrEmpty(t) || (w.GetTestRslt(t) != null)) ? ((w.QRise == 0) ? "-" : FormatDbl(u, f, p, "V3", w.QRise)) : ""));
AllItems.Add(new WMeterRsltItemSpec(ItemID.ConstMaster, string.Format("k MID ()"), "Const. of the reference flow meter", Quantity.PulsePerLtr, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", ((w.GetTestRslt(t).ConstMaster < float.Epsilon) ? 0 : (1 / w.GetTestRslt(t).ConstMaster)))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.ConstMasterRaw, string.Format("k MID raw ()"), "Const. of the ref. flow meter uncorrected",Quantity.PulsePerLtr, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", ((w.GetTestRslt(t).ConstMasterRaw < float.Epsilon) ? 0 : (1 / w.GetTestRslt(t).ConstMasterRaw)))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.ConstMaster, string.Format("k MID ()"), "Const. of the reference flow meter", Quantity.PulsePerLtr, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V4", ((w.GetTestRslt(t).ConstMaster < float.Epsilon) ? 0 : (1 / w.GetTestRslt(t).ConstMaster)))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.ConstMasterRaw, string.Format("k MID raw ()"),"Const. of the ref. flow meter uncorrected", Quantity.PulsePerLtr, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V4", ((w.GetTestRslt(t).ConstMasterRaw < float.Epsilon) ? 0 : (1 / w.GetTestRslt(t).ConstMasterRaw)))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.ConstMasterCorr,string.Format("k MID corr ()"), "Const. of the ref. flow meter corrected", Quantity.PulsePerLtr, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V4", ((w.GetTestRslt(t).ConstMasterRaw < float.Epsilon) ? 0 : (1 / w.GetTestRslt(t).ConstMasterCorr)))));
///
/// Temperature
@@ -320,7 +324,8 @@ namespace Results
AllItems.Add(new WMeterRsltItemSpec(ItemID.Passed, Strings.Result, Quantity.Boolean, ItemCategory.MeterResult, (w, t, u, f, p) => string.IsNullOrEmpty(t) ? w.PassedColorStr(f)
: ((w.GetMeterTestRslt(t) == null) ? "" : w.GetMeterTestRslt(t).PassedColorStr(f))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.ResultOrErrorFlags, "Winiki lub E", Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => FormatStr(f, w.PassedOrErrorFlagsStr()))); /// PL specific result
AllItems.Add(new WMeterRsltItemSpec(ItemID.RefFlowmeter, "Ref. flowmeter", Quantity.String, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null) ? FormatStr(f, w.GetTestRslt(t).RefFlowmeter()) : string.Empty));
AllItems.Add(new WMeterRsltItemSpec(ItemID.ResultOrErrorFlags, "Winiki lub E", Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => FormatStr(f, w.PassedOrErrorFlagsStr()))); /// PL specific result
///
/// Water meter info
@@ -420,13 +425,15 @@ namespace Results
AllItems.Add(new WMeterRsltItemSpec(ItemID.OrigCalibFactorLNA,"iPerl OrigCalibFactorLNA",Quantity.Number, ItemCategory.MeterResult, (w, t, u, f, p) => FormatDbl(u, f, p, "V3", w.OrigCalibFactorLNA)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.CalibFactorLNA, "iPerl CalibFactorLNA", Quantity.Number, ItemCategory.MeterResult, (w, t, u, f, p) => FormatDbl(u, f, p, "V3", w.CalibFactorLNA)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q2ErrWOCorrection, "iPerl Q2ErrWOCorrection", Quantity.Error, ItemCategory.MeterResult, (w, t, u, f, p) => FormatDbl(u, f, p, "V3", w.Q2ErrWOCorrection)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q2CorrectionDone, "iPerl Q2CorrectionDone", Quantity.Boolean,ItemCategory.MeterResult, (w, t, u, f, p) => (w.Q2CorrectionDone ? Strings.Yes : Strings.No)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q2CorrectionDone, "iPerl Q2CorrectionDone", Quantity.Boolean,ItemCategory.MeterResult, (w, t, u, f, p) => (((w.Q2CorrRL != 0) || (w.Q2CorrLR != 0)) ? Strings.Yes : Strings.No)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q2CorrRFlow, "iPerl Q2Corr RL", Quantity.Number, ItemCategory.MeterResult, (w, t, u, f, p) => FormatInt(f, w.Q2CorrRL)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q2CorrLFlow, "iPerl Q2Corr LR", Quantity.Number, ItemCategory.MeterResult, (w, t, u, f, p) => FormatInt(f, w.Q2CorrLR)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q2CorrFlowRight, "iPerl Q2CorrFlowRight", Quantity.Volume, ItemCategory.MeterResult, (w, t, u, f, p) => FormatInt(f, w.Q2CorrFlowRight)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.FW_Version, "iPerl FW version", Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => FormatStr(f, w.FWVersion)));
#if ORACLE_DB
AllItems.Add(new WMeterRsltItemSpec(ItemID.Max_test_index, "iPerl test index", Quantity.Number, ItemCategory.MeterResult, (w, t, u, f, p) => FormatInt(f, (w.Pruefindex % 100))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Max_test_index, "iPerl test index", Quantity.Number, ItemCategory.MeterResult, (w, t, u, f, p) => FormatInt(f, (w.Pruefindex % 100))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.OraWMTypeID, "OraDB WM Type ID", Quantity.Number, ItemCategory.MeterData, (w, t, u, f, p) => FormatInt(f, w.WaterMeterData.WMTypeId)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.OraWMTypeRev, "OraDB WM Type Rev.", Quantity.Number, ItemCategory.MeterResult, (w, t, u, f, p) => FormatInt(f, w.WMTypeRevision)));
#endif
#endif
@@ -450,29 +457,44 @@ namespace Results
AllItems.Add(new WMeterRsltItemSpec(ItemID.TestPassed, Strings.Test_passed + "()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => FormatBool(f, (w.GetMeterTestRslt(t) != null) && w.GetMeterTestRslt(t).Passed)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.ErrorFlags, Strings.Error_flags + "()", Quantity.String, ItemCategory.TestResult, (w, t, u, f, p) => FormatStr(f, (w.GetTestRslt(t) != null) ? w.GetTestRslt(t).ErrorFlagsStr() : w.ErrorFlagsStr())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.ErrorFlagsEx, Strings.Error_flags + "Ex", Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => FormatStr(f, w.ErrorFlagsStrEx())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E1, "E1 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x0001) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E2, "E2 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x0002) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E3, "E3 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x0004) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E4, "E4 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x0008) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E5, "E5 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x0010) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E6, "E6 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x0020) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E7, "E7 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x0040) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E8, "E8 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x0080) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E9, "E9 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x0100) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E10, "E10 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x0200) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E11, "E11 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x0400) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E12, "E12 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x0800) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E13, "E13 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x1000) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E14, "E14 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x2000) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E15, "E15 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x4000) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E16, "E16 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x8000) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E21, "E21 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x100000) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E1, "E1 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & (int)ErrorFlagMask.E1) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E2, "E2 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & (int)ErrorFlagMask.E2) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E3, "E3 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & (int)ErrorFlagMask.E3) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E4, "E4 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & (int)ErrorFlagMask.E4) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E5, "E5 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & (int)ErrorFlagMask.E5) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E6, "E6 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & (int)ErrorFlagMask.E6) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E7, "E7 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & (int)ErrorFlagMask.E7) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E8, "E8 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & (int)ErrorFlagMask.E8) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E9, "E9 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & (int)ErrorFlagMask.E9) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E10, "E10 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & (int)ErrorFlagMask.E10) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E11, "E11 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & (int)ErrorFlagMask.E11) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E12, "E12 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & (int)ErrorFlagMask.E12) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E13, "E13 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & (int)ErrorFlagMask.E13) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E14, "E14 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & (int)ErrorFlagMask.E14) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E15, "E15 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & (int)ErrorFlagMask.E15) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E16, "E16 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & (int)ErrorFlagMask.E16) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E21, "E21 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & (int)ErrorFlagMask.E21) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E25, "E25 ()", Quantity.Boolean, ItemCategory.MeterResult, (w, t, u, f, p) => ((w.ErrorFlags & (int)ErrorFlagMask.E25) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E26, "E26 ()", Quantity.Boolean, ItemCategory.MeterResult, (w, t, u, f, p) => ((w.ErrorFlags & (int)ErrorFlagMask.E26) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E27, "E27 ()", Quantity.Boolean, ItemCategory.MeterResult, (w, t, u, f, p) => ((w.ErrorFlags & (int)ErrorFlagMask.E27) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E28, "E28 ()", Quantity.Boolean, ItemCategory.MeterResult, (w, t, u, f, p) => ((w.ErrorFlags & (int)ErrorFlagMask.E28) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.TestPartStr, "Test part str.", Quantity.String, ItemCategory.TestResult, (w, t, u, f, p) => FormatEnum(f, (w.GetMeterTestRslt(t) != null) ? w.GetMeterTestRslt(t).TestRslt.Part : 0)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Table_row_nr, "Table row #", Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => string.IsNullOrEmpty(f) ? TableRowNr.ToString() : string.Format(f, TableRowNr)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Table_column_nr, "Table column #", Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => string.IsNullOrEmpty(f) ? TableColumnNr.ToString() : string.Format(f, TableColumnNr)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.WMRemark, string.Format("{0} {1}", Strings.Water_Meter, Strings.Remark), Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => FormatStr(f, w.Remark)));
}
AllItems.Add(new WMeterRsltItemSpec(ItemID.Counter1, string.Format(Strings.Counter_0, 1), Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.Batch.Counter1)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Counter2, string.Format(Strings.Counter_0, 2), Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.Batch.Counter2)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Counter3, string.Format(Strings.Counter_0, 3), Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.Batch.Counter3)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Counter4, string.Format(Strings.Counter_0, 4), Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.Batch.Counter4)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Counter5, string.Format(Strings.Counter_0, 5), Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.Batch.Counter5)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Counter6, string.Format(Strings.Counter_0, 6), Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.Batch.Counter6)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Counter7, string.Format(Strings.Counter_0, 7), Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.Batch.Counter7)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Counter8, string.Format(Strings.Counter_0, 8), Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.Batch.Counter8)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Counter9, string.Format(Strings.Counter_0, 9), Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.Batch.Counter9)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Counter10, string.Format(Strings.Counter_0, 10), Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.Batch.Counter10)));
}
/// To be updated by Output.FileWriter or Output.Printer
public static int TableRowNr;
@@ -1,8 +1,6 @@
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using ResultsBrowser.Resources;
using TBF.BenchControl;
namespace ResultsBrowser.Forms
{
+1 -1
View File
@@ -91,7 +91,7 @@ namespace ResultsBrowser.Forms
cfgControl.Config = printerCfg;
cfgControl.Config.ItemNr = 0;
TBF.ComponentParametersDlg cfgForm = new TBF.ComponentParametersDlg();
TBF.BenchControl.ComponentParametersDlg cfgForm = new TBF.BenchControl.ComponentParametersDlg();
cfgForm.TbfComponents = new List<Component>();
cfgForm.ComponentCfgCtrl = cfgControl;
+1 -1
View File
@@ -109,7 +109,7 @@ namespace ResultsBrowser
public LocalSettings()
{
#if TURA_IPERL || TURA_SPECIAL
#if TURA_IPERL || TURA_IPERL_NEW || TURA_SPECIAL
Bench1 = "WR10";
Bench2 = "WR11";
Bench3 = "WR13";
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.18.1146.0")]
[assembly: AssemblyFileVersion("2.18.1146.0")]
[assembly: AssemblyVersion("2.18.1273.0")]
[assembly: AssemblyFileVersion("2.18.1273.0")]
+70 -16
View File
@@ -129,9 +129,6 @@
<data name="Columns" xml:space="preserve">
<value>Slopuce</value>
</data>
<data name="CombinedBtnText" xml:space="preserve">
<value>Kombinovaný</value>
</data>
<data name="Connection_string" xml:space="preserve">
<value>Řetězec pro spojní s databázou</value>
</data>
@@ -198,8 +195,8 @@
<data name="Save_filters" xml:space="preserve">
<value>Uložit filtry</value>
</data>
<data name="Selected_results" xml:space="preserve">
<value>Vybrané výsledky</value>
<data name="Selected_language_not_supported" xml:space="preserve">
<value>Vybraný jazyk není podporován.</value>
</data>
<data name="Select_a_filter" xml:space="preserve">
<value>Vyberte filtr</value>
@@ -210,9 +207,6 @@
<data name="Settings" xml:space="preserve">
<value>Nastavení</value>
</data>
<data name="SingleBtnText" xml:space="preserve">
<value>Jednoduchý</value>
</data>
<data name="Statistics" xml:space="preserve">
<value>Statistiky</value>
</data>
@@ -228,19 +222,79 @@
<data name="To" xml:space="preserve">
<value>Do</value>
</data>
<data name="UnlockBtnText" xml:space="preserve">
<value>Odemknout</value>
</data>
<data name="Water_Meter" xml:space="preserve">
<value>Vodoměr</value>
</data>
<data name="Print" xml:space="preserve">
<value>Vytisknout</value>
</data>
<data name="Add_data_from_Oracle" xml:space="preserve">
<value>Dohledej údaje z Oracle</value>
<data name="Add" xml:space="preserve">
<value>&amp;Přidat &gt;</value>
</data>
<data name="Histograms" xml:space="preserve">
<value>Histogramy</value>
</data>
<data name="All_files" xml:space="preserve">
<value>Všechny soubory</value>
</data>
<data name="Count" xml:space="preserve">
<value>Počet</value>
</data>
<data name="Data" xml:space="preserve">
<value>Údaje</value>
</data>
<data name="Error_exporting_results" xml:space="preserve">
<value>Chyba při exportování výsledků</value>
</data>
<data name="Format" xml:space="preserve">
<value>Formát</value>
</data>
<data name="Message" xml:space="preserve">
<value>Správa</value>
</data>
<data name="Name" xml:space="preserve">
<value>Jméno</value>
</data>
<data name="No_printer_defined" xml:space="preserve">
<value>Není zadefinována tiskárna</value>
</data>
<data name="No_program_settings_found" xml:space="preserve">
<value>Nebyli nalezeny nastavení programu.</value>
</data>
<data name="Page_orientation" xml:space="preserve">
<value>Otočení strany</value>
</data>
<data name="Printer" xml:space="preserve">
<value>Tiskárna</value>
</data>
<data name="Printing_completed" xml:space="preserve">
<value>Tisk ukončen</value>
</data>
<data name="Printing_failed" xml:space="preserve">
<value>Chyba při tisku</value>
</data>
<data name="Query_files" xml:space="preserve">
<value>Definice dotazů</value>
</data>
<data name="Question" xml:space="preserve">
<value>Otázka</value>
</data>
<data name="Using_default_settings" xml:space="preserve">
<value>Budou použity výchozí nastavení.</value>
</data>
<data name="Using_English" xml:space="preserve">
<value>Bude použita Angličtina.</value>
</data>
<data name="Warning" xml:space="preserve">
<value>Upozornění</value>
</data>
<data name="Yes_Portrait_No_Landscape" xml:space="preserve">
<value>Ano = na výšku, Ne = na šířku</value>
</data>
<data name="Component" xml:space="preserve">
<value>Komponent</value>
</data>
<data name="Configure" xml:space="preserve">
<value>Nakonfigurovat</value>
</data>
<data name="Configure_printer" xml:space="preserve">
<value>Nakonfigurovat tiskárnu</value>
</data>
</root>
-15
View File
@@ -186,9 +186,6 @@
<data name="Save_filters" xml:space="preserve">
<value>Filter speichern</value>
</data>
<data name="Selected_results" xml:space="preserve">
<value>Ergebnisse ausgewählt</value>
</data>
<data name="Select_a_filter" xml:space="preserve">
<value>Wählen Sie einen Filter</value>
</data>
@@ -198,9 +195,6 @@
<data name="Settings" xml:space="preserve">
<value>Einstellungen</value>
</data>
<data name="SingleBtnText" xml:space="preserve">
<value>Einzel</value>
</data>
<data name="Statistics" xml:space="preserve">
<value>Statistiken</value>
</data>
@@ -216,12 +210,6 @@
<data name="To" xml:space="preserve">
<value>Zu</value>
</data>
<data name="UnlockBtnText" xml:space="preserve">
<value>Ändern</value>
</data>
<data name="Water_Meter" xml:space="preserve">
<value>Wasserzähler</value>
</data>
<data name="Error_displaying_results" xml:space="preserve">
<value>Fehler beim Anzeigen der Ergebnisse</value>
</data>
@@ -231,9 +219,6 @@
<data name="Error_serializing_filters" xml:space="preserve">
<value>Fehler Serialisierung Filter</value>
</data>
<data name="CombinedBtnText" xml:space="preserve">
<value>Verbund</value>
</data>
<data name="Count" xml:space="preserve">
<value>Anzahl</value>
</data>
+306
View File
@@ -0,0 +1,306 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Error" xml:space="preserve">
<value>Erreur</value>
</data>
<data name="Test_bench" xml:space="preserve">
<value>Banc essai</value>
</data>
<data name="Name" xml:space="preserve">
<value>Prénom</value>
</data>
<data name="CancelBtnText" xml:space="preserve">
<value>Annuler</value>
</data>
<data name="OkBtnText" xml:space="preserve">
<value>Ok</value>
</data>
<data name="ConfigureDatabaseText" xml:space="preserve">
<value>Configurer les bancs d'essai (mot de passe requis)</value>
</data>
<data name="ExitBtnText" xml:space="preserve">
<value>Quitter </value>
</data>
<data name="Procedure" xml:space="preserve">
<value>Procédure</value>
</data>
<data name="Test" xml:space="preserve">
<value>Tester</value>
</data>
<data name="Component" xml:space="preserve">
<value>Composant</value>
</data>
<data name="Configure" xml:space="preserve">
<value>Configurer</value>
</data>
<data name="Printer" xml:space="preserve">
<value>Imprimante</value>
</data>
<data name="Question" xml:space="preserve">
<value>Question</value>
</data>
<data name="Connection_string" xml:space="preserve">
<value>Chaîne connexion</value>
</data>
<data name="Add" xml:space="preserve">
<value>&amp;Ajouter &gt;</value>
</data>
<data name="Message" xml:space="preserve">
<value>Message</value>
</data>
<data name="Data" xml:space="preserve">
<value>Données</value>
</data>
<data name="Protocol" xml:space="preserve">
<value>Protocole</value>
</data>
<data name="Serial_Number" xml:space="preserve">
<value>Numéro série</value>
</data>
<data name="Language" xml:space="preserve">
<value>Langue</value>
</data>
<data name="Add_filter" xml:space="preserve">
<value>Ajouter filtre</value>
</data>
<data name="Clear_filters" xml:space="preserve">
<value>Effacer filtres</value>
</data>
<data name="Execute_query" xml:space="preserve">
<value>Exécuter ordre</value>
</data>
<data name="Export_query_results" xml:space="preserve">
<value>Résultats exportation</value>
</data>
<data name="Filters" xml:space="preserve">
<value>Filtres</value>
</data>
<data name="Format_of_results" xml:space="preserve">
<value>Configurer la sortie</value>
</data>
<data name="Load_filters" xml:space="preserve">
<value>charge filters</value>
</data>
<data name="Print_query_results" xml:space="preserve">
<value>Résultats impression</value>
</data>
<data name="Query_results" xml:space="preserve">
<value>Résultats requête</value>
</data>
<data name="Results_Browser" xml:space="preserve">
<value>Résultats Browser</value>
</data>
<data name="Save_filters" xml:space="preserve">
<value>Enregistrer filtres</value>
</data>
<data name="Settings" xml:space="preserve">
<value>Réglages</value>
</data>
<data name="Test_benches" xml:space="preserve">
<value>Bancs essai</value>
</data>
<data name="RetryDatabaseText" xml:space="preserve">
<value>Recommencez</value>
</data>
<data name="Date" xml:space="preserve">
<value>Date</value>
</data>
<data name="From" xml:space="preserve">
<value>De</value>
</data>
<data name="To" xml:space="preserve">
<value>À</value>
</data>
<data name="Statistics" xml:space="preserve">
<value>Statistiques</value>
</data>
<data name="Columns" xml:space="preserve">
<value>colonnes</value>
</data>
<data name="Rows" xml:space="preserve">
<value>Lignes</value>
</data>
<data name="Select_a_filter" xml:space="preserve">
<value>Sélectionnez filtre</value>
</data>
<data name="Error_displaying_results" xml:space="preserve">
<value>Erreur affichage résultats</value>
</data>
<data name="All_files" xml:space="preserve">
<value>Tous fichiers</value>
</data>
<data name="Error_saving_file" xml:space="preserve">
<value>Fichier sauvegarde erreurs</value>
</data>
<data name="Error_serializing_filters" xml:space="preserve">
<value>Erreurs sérialisation filtres</value>
</data>
<data name="Query_files" xml:space="preserve">
<value>Fichiers requête</value>
</data>
<data name="No_program_settings_found" xml:space="preserve">
<value>Aucun paramètre programme trouvé</value>
</data>
<data name="Using_default_settings" xml:space="preserve">
<value>Utilisation valeurs par défaut</value>
</data>
<data name="Selected_language_not_supported" xml:space="preserve">
<value>Langue sélectionnée non prise en charge</value>
</data>
<data name="Using_English" xml:space="preserve">
<value>Utilisation anglais</value>
</data>
<data name="Warning" xml:space="preserve">
<value>Attention</value>
</data>
<data name="Count" xml:space="preserve">
<value>Compter</value>
</data>
<data name="Format" xml:space="preserve">
<value>Format</value>
</data>
<data name="Page_orientation" xml:space="preserve">
<value>Page orientation</value>
</data>
<data name="Yes_Portrait_No_Landscape" xml:space="preserve">
<value>Oui portrait non paysage</value>
</data>
<data name="Print" xml:space="preserve">
<value>Impression</value>
</data>
<data name="Configure_printer" xml:space="preserve">
<value>Configurer impréssion</value>
</data>
<data name="No_printer_defined" xml:space="preserve">
<value>Aucune imprimante définie</value>
</data>
<data name="Printing_failed" xml:space="preserve">
<value>Impression échouée</value>
</data>
<data name="Printing_completed" xml:space="preserve">
<value>Impression terminée</value>
</data>
<data name="Error_exporting_results" xml:space="preserve">
<value>Erreur exportation résultats</value>
</data>
<data name="Histograms" xml:space="preserve">
<value>histogrammes</value>
</data>
</root>
-525
View File
@@ -117,579 +117,66 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Confirmation" xml:space="preserve">
<value>conferma</value>
</data>
<data name="Do_you_want_to_save_the_procedure" xml:space="preserve">
<value>vuoi salvare la procedura?</value>
</data>
<data name="Error" xml:space="preserve">
<value>errore</value>
</data>
<data name="Error_loading_users_from_the_database" xml:space="preserve">
<value>errore del caricamento del data base</value>
</data>
<data name="Failed_to_create_a_sample_database" xml:space="preserve">
<value>Impossibile creare un database di esempio:</value>
</data>
<data name="Failed_to_export_the_database" xml:space="preserve">
<value>impossibile esportare il database</value>
</data>
<data name="Invalid_user_password_or_bench" xml:space="preserve">
<value>utente password o banco non valido</value>
</data>
<data name="Test_bench" xml:space="preserve">
<value>banco prova</value>
</data>
<data name="MaxChars" xml:space="preserve">
<value>max _X_ caratteri alfanumerici</value>
</data>
<data name="close" xml:space="preserve">
<value>Chiudi</value>
</data>
<data name="Diverter" xml:space="preserve">
<value>deviatore</value>
</data>
<data name="Emptying_valve" xml:space="preserve">
<value>valvola di svuotamento</value>
</data>
<data name="Name" xml:space="preserve">
<value>nome</value>
</data>
<data name="Reference" xml:space="preserve">
<value>riferimento</value>
</data>
<data name="Reg_valve" xml:space="preserve">
<value>regolazione valvola</value>
</data>
<data name="Balance" xml:space="preserve">
<value>bilancia</value>
</data>
<data name="Duration_s" xml:space="preserve">
<value>durata [s]</value>
</data>
<data name="no" xml:space="preserve">
<value>no</value>
</data>
<data name="New_bench_path_name" xml:space="preserve">
<value>P banco</value>
</data>
<data name="New_feeding_path_name" xml:space="preserve">
<value>P di avanzamento</value>
</data>
<data name="New_output_path_name" xml:space="preserve">
<value>PQ</value>
</data>
<data name="New_procedure_name" xml:space="preserve">
<value>procedura</value>
</data>
<data name="New_sensors_path_name" xml:space="preserve">
<value>P sens</value>
</data>
<data name="New_test_name" xml:space="preserve">
<value>prova</value>
</data>
<data name="New_name_copy" xml:space="preserve">
<value>Copia</value>
</data>
<data name="Correction_g" xml:space="preserve">
<value>correzione [g]</value>
</data>
<data name="Nr" xml:space="preserve">
<value>numero</value>
</data>
<data name="Mass_kg" xml:space="preserve">
<value>massa [kg]</value>
</data>
<data name="AddBtnText" xml:space="preserve">
<value>inserisci</value>
</data>
<data name="CancelBtnText" xml:space="preserve">
<value>Annulla</value>
</data>
<data name="CloseBtnText" xml:space="preserve">
<value>Chiudi</value>
</data>
<data name="LockBtnText" xml:space="preserve">
<value>serratura</value>
</data>
<data name="RemoveBtnText" xml:space="preserve">
<value>rimuovere</value>
</data>
<data name="OkBtnText" xml:space="preserve">
<value>ok</value>
</data>
<data name="Correction_lph" xml:space="preserve">
<value>correzione [l/h]</value>
</data>
<data name="Correction_mbar" xml:space="preserve">
<value>correzione [mbar]</value>
</data>
<data name="Flow_m3h" xml:space="preserve">
<value>flusso [m3/h]</value>
</data>
<data name="Invalid_username_or_password" xml:space="preserve">
<value>Username o password non validi</value>
</data>
<data name="CopyBtnText" xml:space="preserve">
<value>copia</value>
</data>
<data name="DownBtnText" xml:space="preserve">
<value>Giù</value>
</data>
<data name="EditBtnText" xml:space="preserve">
<value>Modifica</value>
</data>
<data name="UpBtnText" xml:space="preserve">
<value>Su</value>
</data>
<data name="NoDatabaseMsg" xml:space="preserve">
<value>Impossibile collegarsi al database</value>
</data>
<data name="ConfigureDatabaseText" xml:space="preserve">
<value>configurare il banco prova (richiesta password)</value>
</data>
<data name="ExitBtnText" xml:space="preserve">
<value>uscita</value>
</data>
<data name="Enter_password" xml:space="preserve">
<value>password di ingresso</value>
</data>
<data name="Invalid_password" xml:space="preserve">
<value>Password non valida</value>
</data>
<data name="Bench_name_conflict_Use_another_name_pls" xml:space="preserve">
<value>conflitto nome per banco prova, cambiare nome</value>
</data>
<data name="DB_was_successfully_created" xml:space="preserve">
<value>Il database è stato creato con successo!</value>
</data>
<data name="DB_will_be_overwritten" xml:space="preserve">
<value>il database verrà sovrascritto</value>
</data>
<data name="Do_you_want_to_proceed" xml:space="preserve">
<value>vuoi procedere?</value>
</data>
<data name="Notification" xml:space="preserve">
<value>notifica</value>
</data>
<data name="NoBenchMsg" xml:space="preserve">
<value>nessun banco prova nella configurazione del programma</value>
</data>
<data name="DescriptionColHdr" xml:space="preserve">
<value>Descrizione</value>
</data>
<data name="Procedure" xml:space="preserve">
<value>procedura</value>
</data>
<data name="Test" xml:space="preserve">
<value>tester</value>
</data>
<data name="Corrected" xml:space="preserve">
<value>corretto</value>
</data>
<data name="Measured" xml:space="preserve">
<value>misurato</value>
</data>
<data name="Bench_is_not_running" xml:space="preserve">
<value>il banco prova non è in funzionamento tuttavia è possibile modificare le impostazioni per risolvere il problema</value>
</data>
<data name="Emptying_chdr" xml:space="preserve">
<value>svuotamento</value>
</data>
<data name="Bench_chdr" xml:space="preserve">
<value>banco</value>
</data>
<data name="Err_cor_neg_pct_chdr" xml:space="preserve">
<value>correzione errore - [%]</value>
</data>
<data name="Err_cor_pos_pct_chdr" xml:space="preserve">
<value>correzione errore + [%]</value>
</data>
<data name="Err_limit_neg_pct_chdr" xml:space="preserve">
<value>limite errore - [%]</value>
</data>
<data name="Err_limit_pos_pct_chdr" xml:space="preserve">
<value>limite errore + [%]</value>
</data>
<data name="Feeding_chdr" xml:space="preserve">
<value>alimentazione</value>
</data>
<data name="Red_type_chdr" xml:space="preserve">
<value>tipo rosso</value>
</data>
<data name="Error_while_creating_DB_Reason" xml:space="preserve">
<value>errore durante la creazione del data base , motivi:</value>
</data>
<data name="Metrology" xml:space="preserve">
<value>metrologia</value>
</data>
<data name="_offline" xml:space="preserve">
<value>(disconnesso)</value>
</data>
<data name="Administrator" xml:space="preserve">
<value>Amministratore</value>
</data>
<data name="Calibration_Specialist" xml:space="preserve">
<value>esperto di calibrazione</value>
</data>
<data name="Head_of_Lab" xml:space="preserve">
<value>capo del laboratorio</value>
</data>
<data name="Maintenance_Specialist" xml:space="preserve">
<value>esperto in manutenzione</value>
</data>
<data name="Metrologist" xml:space="preserve">
<value>metrologista</value>
</data>
<data name="Close_emptying_valve" xml:space="preserve">
<value>chiudere la valvola di svuotamento</value>
</data>
<data name="Get_mass_of_water_in_the_tank" xml:space="preserve">
<value>prendi la massa d'acqua nel serbatoio</value>
</data>
<data name="Ignore" xml:space="preserve">
<value>Ignora</value>
</data>
<data name="Loading_the_procedure" xml:space="preserve">
<value>scarica la procedura</value>
</data>
<data name="Make_tank_empty" xml:space="preserve">
<value>svuotare il serbatoio</value>
</data>
<data name="Measure_the_mass" xml:space="preserve">
<value>misura la massa</value>
</data>
<data name="Ready" xml:space="preserve">
<value>pronto</value>
</data>
<data name="BackBtnText" xml:space="preserve">
<value>&lt; indietro</value>
</data>
<data name="FinishBtnText" xml:space="preserve">
<value>finire</value>
</data>
<data name="NextBtnText" xml:space="preserve">
<value>avanti &gt;</value>
</data>
<data name="Flow_selection" xml:space="preserve">
<value>selezionare il flusso</value>
</data>
<data name="Method_chdr" xml:space="preserve">
<value>metodo di prova</value>
</data>
<data name="RelativeQfrom" xml:space="preserve">
<value>Q relativo da</value>
</data>
<data name="RelativeQto" xml:space="preserve">
<value>Q relativo a</value>
</data>
<data name="Combined_meters" xml:space="preserve">
<value>misuratori combinati</value>
</data>
<data name="DetectionThresholdPct" xml:space="preserve">
<value>soglia di rilevazione [%]</value>
</data>
<data name="RateOfChangePct" xml:space="preserve">
<value>tasso di cambio [%]</value>
</data>
<data name="Component" xml:space="preserve">
<value>componenti</value>
</data>
<data name="_none_" xml:space="preserve">
<value>&lt;none&gt;</value>
</data>
<data name="Method_selection" xml:space="preserve">
<value>selezione del metodo di prova</value>
</data>
<data name="Clear_results" xml:space="preserve">
<value>cancella risultati</value>
</data>
<data name="Configure" xml:space="preserve">
<value>configurare</value>
</data>
<data name="Arrangement_of_meters" xml:space="preserve">
<value>disposizioni di misuratori testati</value>
</data>
<data name="Arrangement_of_tests" xml:space="preserve">
<value>disposizione dei test</value>
</data>
<data name="Horizontally" xml:space="preserve">
<value>orizzontalmente</value>
</data>
<data name="Configuration" xml:space="preserve">
<value>configurazione</value>
</data>
<data name="Failed" xml:space="preserve">
<value>NOK</value>
</data>
<data name="ClearBtnText" xml:space="preserve">
<value>chiaro</value>
</data>
<data name="Emptying_tank" xml:space="preserve">
<value>svuotare il serbatorio</value>
</data>
<data name="Measuring_the_weight" xml:space="preserve">
<value>misurazione del peso</value>
</data>
<data name="Emptying_i_n" xml:space="preserve">
<value>svuotamento {0}: passo {1}/{2}</value>
</data>
<data name="Activity" xml:space="preserve">
<value>Attività</value>
</data>
<data name="Approval_info" xml:space="preserve">
<value>Info approvazione</value>
</data>
<data name="Metrological_class" xml:space="preserve">
<value>classe metrologica</value>
</data>
<data name="Producer" xml:space="preserve">
<value>produttore</value>
</data>
<data name="Printer" xml:space="preserve">
<value>stampante</value>
</data>
<data name="Version" xml:space="preserve">
<value>versione</value>
</data>
<data name="nothing_to_configure" xml:space="preserve">
<value>&lt;niente da configurare&gt;</value>
</data>
<data name="Fill_with_water" xml:space="preserve">
<value>riempire il banco prova con acqua?</value>
</data>
<data name="NoBtn" xml:space="preserve">
<value>no</value>
</data>
<data name="Question" xml:space="preserve">
<value>domanda</value>
</data>
<data name="Bench_parameters" xml:space="preserve">
<value>parametri del banco</value>
</data>
<data name="Connection_string" xml:space="preserve">
<value>stringa di connessione</value>
</data>
<data name="Create_DB" xml:space="preserve">
<value>Crea DB</value>
</data>
<data name="Database_type" xml:space="preserve">
<value>tipo di database</value>
</data>
<data name="Logging" xml:space="preserve">
<value>registrazione</value>
</data>
<data name="Mode" xml:space="preserve">
<value>modalità</value>
</data>
<data name="NewTabBtnText" xml:space="preserve">
<value>nuova scheda</value>
</data>
<data name="New_transition_name" xml:space="preserve">
<value>nuovo nome di transizione</value>
</data>
<data name="Detection_completed" xml:space="preserve">
<value>rilevazione completata</value>
</data>
<data name="Emergency_STOP" xml:space="preserve">
<value>STOP di emergenza</value>
</data>
<data name="Add" xml:space="preserve">
<value>&amp;Aggiungi &gt;</value>
</data>
<data name="Available_results" xml:space="preserve">
<value>Risultati disponibili:</value>
</data>
<data name="Remove" xml:space="preserve">
<value>&lt; &amp;rimuovere</value>
</data>
<data name="Remove_all" xml:space="preserve">
<value>r&amp;imuovere tutto</value>
</data>
<data name="Message" xml:space="preserve">
<value>messaggio</value>
</data>
<data name="dflt" xml:space="preserve">
<value>dflt</value>
</data>
<data name="Detection_failed" xml:space="preserve">
<value>rilevazione fallita</value>
</data>
<data name="Camera_error" xml:space="preserve">
<value>errore della fotocamera</value>
</data>
<data name="remaining_time" xml:space="preserve">
<value>tempo restante</value>
</data>
<data name="LessBtnText" xml:space="preserve">
<value>di meno</value>
</data>
<data name="MoreBtnText" xml:space="preserve">
<value>di più</value>
</data>
<data name="Changes_will_be_lost_Do_you_want_to_proceed" xml:space="preserve">
<value>le modifiche andranno perse vuoi procedere?</value>
</data>
<data name="Flowmeter" xml:space="preserve">
<value>misuratore di flusso</value>
</data>
<data name="CombinedBtnText" xml:space="preserve">
<value>combinato</value>
</data>
<data name="Device" xml:space="preserve">
<value>Dispositivo</value>
</data>
<data name="PrinterBtnText" xml:space="preserve">
<value>stampante</value>
</data>
<data name="Aux_Water_Meter" xml:space="preserve">
<value>contatore acqua ausiliario</value>
</data>
<data name="Aux_Water_Meter_State" xml:space="preserve">
<value>stato contatore acqua ausiliario</value>
</data>
<data name="Data" xml:space="preserve">
<value>dati</value>
</data>
<data name="End_State" xml:space="preserve">
<value>fine stato</value>
</data>
<data name="Main_Water_Meter" xml:space="preserve">
<value>contatore acqua principale</value>
</data>
<data name="Main_Water_Meter_State" xml:space="preserve">
<value>stato contatore acqua principale</value>
</data>
<data name="Protocol" xml:space="preserve">
<value>protocollo</value>
</data>
<data name="Serial_Number" xml:space="preserve">
<value>Numero Seriale</value>
</data>
<data name="Aux_WM_SerialNr" xml:space="preserve">
<value>numero seriale contatore acqua ausiliario</value>
</data>
<data name="Main_WM_SerialNr" xml:space="preserve">
<value>numero seriale contatore acqua principale</value>
</data>
<data name="Adjustment_in_progress" xml:space="preserve">
<value>aggiustamento in corso</value>
</data>
<data name="Error_pct" xml:space="preserve">
<value>Errore [%]</value>
</data>
<data name="Duration_Leak_s" xml:space="preserve">
<value>durata delle perdite [s]</value>
</data>
<data name="Duration_PMax_s" xml:space="preserve">
<value>durata portata massima [s]</value>
</data>
<data name="Closing_valve_Pump_off" xml:space="preserve">
<value>chiudere la valvola di ingresso spegnendo la pompa</value>
</data>
<data name="Purchase_Order" xml:space="preserve">
<value>ordine acquisto</value>
</data>
<data name="Ambient_humidity_" xml:space="preserve">
<value>Umidità dell'ambiente:</value>
</data>
<data name="Ambient_pressure_" xml:space="preserve">
<value>Pressione dell'ambiente:</value>
</data>
<data name="Ambient_temperature_" xml:space="preserve">
<value>Temperatura dell'ambiente:</value>
</data>
<data name="Approval_" xml:space="preserve">
<value>Approvazione:</value>
</data>
<data name="Date_and_time_" xml:space="preserve">
<value>Data e ora:</value>
</data>
<data name="End" xml:space="preserve">
<value>Fine</value>
</data>
<data name="AtTemperature_C" xml:space="preserve">
<value>@temperatura [gradiC]</value>
</data>
<data name="Density_kg_m3" xml:space="preserve">
<value>densità [kg/m3]</value>
</data>
<data name="Density" xml:space="preserve">
<value>densità</value>
</data>
<data name="Nr_meters_in_a_group" xml:space="preserve">
<value>numero contatori di un gruppo:</value>
</data>
<data name="End_Condition" xml:space="preserve">
<value>condizioni finali</value>
</data>
<data name="Communication" xml:space="preserve">
<value>Comunicazione</value>
</data>
<data name="Aux_" xml:space="preserve">
<value>ausiliario:</value>
</data>
<data name="Main_" xml:space="preserve">
<value>principale:</value>
</data>
<data name="cold" xml:space="preserve">
<value>freddo</value>
</data>
<data name="hot" xml:space="preserve">
<value>caldo</value>
</data>
<data name="Product_name" xml:space="preserve">
<value>nome prodotto</value>
</data>
<data name="Address" xml:space="preserve">
<value>Indirizzo</value>
</data>
<data name="Approval_date" xml:space="preserve">
<value>Data di approvazione</value>
</data>
<data name="Approval_ID" xml:space="preserve">
<value>ID approvazione</value>
</data>
<data name="Approved_by" xml:space="preserve">
<value>Approvato da</value>
</data>
<data name="Evaluate" xml:space="preserve">
<value>Valuta</value>
</data>
<data name="iPerl_Communication_in_progress" xml:space="preserve">
<value>iPerl comunicazione in corso</value>
</data>
<data name="Language" xml:space="preserve">
<value>lingua</value>
</data>
<data name="Available_Components_" xml:space="preserve">
<value>componenti disponibili:</value>
</data>
<data name="Database_Settings" xml:space="preserve">
<value>impostazioni del data base</value>
</data>
<data name="About_Test_Bench_Framework" xml:space="preserve">
<value>informazioni circa la prova del banco </value>
</data>
<data name="BuildDateStr" xml:space="preserve">
<value>data di costruzione _BUILD_DATE_</value>
</data>
<data name="CopyrightStr" xml:space="preserve">
<value>Copyright © 2013 - {0}</value>
</data>
<data name="Edit_User" xml:space="preserve">
<value>Copyright © 2013 - {0}</value>
</data>
<data name="Groups" xml:space="preserve">
<value>gruppi</value>
</data>
<data name="An_unhandled_error_occured" xml:space="preserve">
<value>Si è verificato un errore imprevisto</value>
</data>
<data name="IgnoreBtnText" xml:space="preserve">
<value>Ignora</value>
</data>
<data name="Add_filter" xml:space="preserve">
<value>aggiungi filtro</value>
</data>
@@ -732,18 +219,6 @@
<data name="RetryDatabaseText" xml:space="preserve">
<value>riprova</value>
</data>
<data name="Selected_results" xml:space="preserve">
<value>selezionare risultati</value>
</data>
<data name="SingleBtnText" xml:space="preserve">
<value>singolo</value>
</data>
<data name="UnlockBtnText" xml:space="preserve">
<value>sbloccare</value>
</data>
<data name="Water_Meter" xml:space="preserve">
<value>contatore acqua</value>
</data>
<data name="Date" xml:space="preserve">
<value>Data </value>
</data>
-525
View File
@@ -117,579 +117,66 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Confirmation" xml:space="preserve">
<value>Potwierdzenie</value>
</data>
<data name="Do_you_want_to_save_the_procedure" xml:space="preserve">
<value>Zachować procedurę ?</value>
</data>
<data name="Error" xml:space="preserve">
<value>Błąd</value>
</data>
<data name="Error_loading_users_from_the_database" xml:space="preserve">
<value>Błąd przy ładowaniu użytkowników z bazy danych:</value>
</data>
<data name="Failed_to_create_a_sample_database" xml:space="preserve">
<value>Nie udało się utworzyć bazy danych:</value>
</data>
<data name="Failed_to_export_the_database" xml:space="preserve">
<value>Nie powódł się eksport bazy danych:</value>
</data>
<data name="Invalid_user_password_or_bench" xml:space="preserve">
<value>Niezgodny użytkownik, hasło lub stanowisko</value>
</data>
<data name="Test_bench" xml:space="preserve">
<value>Stanowisko pomiarowe</value>
</data>
<data name="MaxChars" xml:space="preserve">
<value>Max._X_znaków alfanumerycznych </value>
</data>
<data name="close" xml:space="preserve">
<value>Zamknąć</value>
</data>
<data name="Diverter" xml:space="preserve">
<value>Zawór</value>
</data>
<data name="Emptying_valve" xml:space="preserve">
<value>Zawór spustowy</value>
</data>
<data name="Name" xml:space="preserve">
<value>Imię</value>
</data>
<data name="Reference" xml:space="preserve">
<value>Odniesienie</value>
</data>
<data name="Reg_valve" xml:space="preserve">
<value>Zawór regulacyjny</value>
</data>
<data name="Balance" xml:space="preserve">
<value>Waga</value>
</data>
<data name="Duration_s" xml:space="preserve">
<value>Czas trwania [s]</value>
</data>
<data name="no" xml:space="preserve">
<value>nie</value>
</data>
<data name="New_bench_path_name" xml:space="preserve">
<value>P stanowisko</value>
</data>
<data name="New_feeding_path_name" xml:space="preserve">
<value>P zasilania</value>
</data>
<data name="New_output_path_name" xml:space="preserve">
<value>PQ</value>
</data>
<data name="New_procedure_name" xml:space="preserve">
<value>Procedura</value>
</data>
<data name="New_sensors_path_name" xml:space="preserve">
<value>P czujnków</value>
</data>
<data name="New_test_name" xml:space="preserve">
<value>Test</value>
</data>
<data name="New_name_copy" xml:space="preserve">
<value>-Kopiuj'</value>
</data>
<data name="Correction_g" xml:space="preserve">
<value>Korekcja [r]</value>
</data>
<data name="Nr" xml:space="preserve">
<value>Nr</value>
</data>
<data name="Mass_kg" xml:space="preserve">
<value>Masa [kg]</value>
</data>
<data name="AddBtnText" xml:space="preserve">
<value>Dodać</value>
</data>
<data name="CancelBtnText" xml:space="preserve">
<value>Anuluj</value>
</data>
<data name="CloseBtnText" xml:space="preserve">
<value>Zamknąć</value>
</data>
<data name="LockBtnText" xml:space="preserve">
<value>Zablokować </value>
</data>
<data name="RemoveBtnText" xml:space="preserve">
<value>Usunąć</value>
</data>
<data name="OkBtnText" xml:space="preserve">
<value>OK</value>
</data>
<data name="Correction_lph" xml:space="preserve">
<value>Korekcja [l/h]</value>
</data>
<data name="Correction_mbar" xml:space="preserve">
<value>Korekcja [mBar]</value>
</data>
<data name="Flow_m3h" xml:space="preserve">
<value>Przepływ [m3/h]</value>
</data>
<data name="Invalid_username_or_password" xml:space="preserve">
<value>Nieprawidłowa nazwa użytkownika lub hasło</value>
</data>
<data name="CopyBtnText" xml:space="preserve">
<value>Kupiuj</value>
</data>
<data name="DownBtnText" xml:space="preserve">
<value>Na dół </value>
</data>
<data name="EditBtnText" xml:space="preserve">
<value>Redagować</value>
</data>
<data name="UpBtnText" xml:space="preserve">
<value>Do góry</value>
</data>
<data name="NoDatabaseMsg" xml:space="preserve">
<value>Nie udane połaczenie z bazą danych</value>
</data>
<data name="ConfigureDatabaseText" xml:space="preserve">
<value>Konfiguracja testowa (wymagane hasło)</value>
</data>
<data name="ExitBtnText" xml:space="preserve">
<value>Wyjście</value>
</data>
<data name="Enter_password" xml:space="preserve">
<value>Wprowadź hasło</value>
</data>
<data name="Invalid_password" xml:space="preserve">
<value>Nieprawidłowe hasło</value>
</data>
<data name="Bench_name_conflict_Use_another_name_pls" xml:space="preserve">
<value>Nazwa stanowiska nieprawidłowa, użyj innej nazwy</value>
</data>
<data name="DB_was_successfully_created" xml:space="preserve">
<value>Utworzono bazę danych !</value>
</data>
<data name="DB_will_be_overwritten" xml:space="preserve">
<value>Baza danych zostanie nadpisana</value>
</data>
<data name="Do_you_want_to_proceed" xml:space="preserve">
<value>Chcesz kontynuować ?</value>
</data>
<data name="Notification" xml:space="preserve">
<value>Powiadomienie</value>
</data>
<data name="NoBenchMsg" xml:space="preserve">
<value>W konfiguracji oprogramowania nie ma stanowiska </value>
</data>
<data name="DescriptionColHdr" xml:space="preserve">
<value>Opis</value>
</data>
<data name="Procedure" xml:space="preserve">
<value>Procedura</value>
</data>
<data name="Test" xml:space="preserve">
<value>Test</value>
</data>
<data name="Corrected" xml:space="preserve">
<value>Poprawiono</value>
</data>
<data name="Measured" xml:space="preserve">
<value>Zmierzono</value>
</data>
<data name="Bench_is_not_running" xml:space="preserve">
<value>Stanowisko nie jest włączone ale można dokonać korekty nastaw dla usunięcia tego błedu.</value>
</data>
<data name="Emptying_chdr" xml:space="preserve">
<value>Spust</value>
</data>
<data name="Bench_chdr" xml:space="preserve">
<value>Stanowisko</value>
</data>
<data name="Err_cor_neg_pct_chdr" xml:space="preserve">
<value>Błąd kor. - [%]</value>
</data>
<data name="Err_cor_pos_pct_chdr" xml:space="preserve">
<value>Błąd kor. +[%]</value>
</data>
<data name="Err_limit_neg_pct_chdr" xml:space="preserve">
<value>Błąd limit - [%]</value>
</data>
<data name="Err_limit_pos_pct_chdr" xml:space="preserve">
<value>Błąd limit + [%]</value>
</data>
<data name="Feeding_chdr" xml:space="preserve">
<value>Zasilanie</value>
</data>
<data name="Red_type_chdr" xml:space="preserve">
<value>Red. Type</value>
</data>
<data name="Error_while_creating_DB_Reason" xml:space="preserve">
<value>Błąd przy tworzeniu bazy danych. Przyczyna:</value>
</data>
<data name="Metrology" xml:space="preserve">
<value>Metrologia</value>
</data>
<data name="_offline" xml:space="preserve">
<value>Ofline</value>
</data>
<data name="Administrator" xml:space="preserve">
<value>Administrator</value>
</data>
<data name="Calibration_Specialist" xml:space="preserve">
<value>Specjalista ds. kalibracji</value>
</data>
<data name="Head_of_Lab" xml:space="preserve">
<value>Kierownik laboratorium</value>
</data>
<data name="Maintenance_Specialist" xml:space="preserve">
<value>Konserwator</value>
</data>
<data name="Metrologist" xml:space="preserve">
<value>Metrolog</value>
</data>
<data name="Close_emptying_valve" xml:space="preserve">
<value>Zamknąć zawór spustowy</value>
</data>
<data name="Get_mass_of_water_in_the_tank" xml:space="preserve">
<value>Uzyskaj masę wody w zbiorniku</value>
</data>
<data name="Ignore" xml:space="preserve">
<value>Wyłączyć</value>
</data>
<data name="Loading_the_procedure" xml:space="preserve">
<value>Procedura ładowania</value>
</data>
<data name="Make_tank_empty" xml:space="preserve">
<value>Opróżnić zbiornik</value>
</data>
<data name="Measure_the_mass" xml:space="preserve">
<value>Pomiar masy</value>
</data>
<data name="Ready" xml:space="preserve">
<value>Gotowe</value>
</data>
<data name="BackBtnText" xml:space="preserve">
<value>&lt; z powrotem</value>
</data>
<data name="FinishBtnText" xml:space="preserve">
<value>Koniec</value>
</data>
<data name="NextBtnText" xml:space="preserve">
<value>Następny &gt;</value>
</data>
<data name="Flow_selection" xml:space="preserve">
<value>Wybór przypływu</value>
</data>
<data name="Method_chdr" xml:space="preserve">
<value>Metoda badania</value>
</data>
<data name="RelativeQfrom" xml:space="preserve">
<value>Q względne od</value>
</data>
<data name="RelativeQto" xml:space="preserve">
<value>Q względne do</value>
</data>
<data name="Combined_meters" xml:space="preserve">
<value>Wodomierze sprzężone</value>
</data>
<data name="DetectionThresholdPct" xml:space="preserve">
<value>Próg detekcji [%]</value>
</data>
<data name="RateOfChangePct" xml:space="preserve">
<value>Prędkość zmiany [%]</value>
</data>
<data name="Component" xml:space="preserve">
<value>Element</value>
</data>
<data name="_none_" xml:space="preserve">
<value>&lt;nie&gt;</value>
</data>
<data name="Method_selection" xml:space="preserve">
<value>Wybór metody badania</value>
</data>
<data name="Clear_results" xml:space="preserve">
<value>Usunąć wyniki</value>
</data>
<data name="Configure" xml:space="preserve">
<value>Konfigurować</value>
</data>
<data name="Arrangement_of_meters" xml:space="preserve">
<value>Połozenie badanych liczników</value>
</data>
<data name="Arrangement_of_tests" xml:space="preserve">
<value>Położenie badań</value>
</data>
<data name="Horizontally" xml:space="preserve">
<value>Poziomo</value>
</data>
<data name="Configuration" xml:space="preserve">
<value>Konfiguracja</value>
</data>
<data name="Failed" xml:space="preserve">
<value>NOK</value>
</data>
<data name="ClearBtnText" xml:space="preserve">
<value>Usunąć</value>
</data>
<data name="Emptying_tank" xml:space="preserve">
<value>Opróżnianie zbiornika</value>
</data>
<data name="Measuring_the_weight" xml:space="preserve">
<value>Pomair wagi</value>
</data>
<data name="Emptying_i_n" xml:space="preserve">
<value>Spust ({0}: krok {1} / {2}</value>
</data>
<data name="Activity" xml:space="preserve">
<value>Aktywny</value>
</data>
<data name="Approval_info" xml:space="preserve">
<value>Informacja o zatwierdzeniu</value>
</data>
<data name="Metrological_class" xml:space="preserve">
<value>Klasa metrologiczna</value>
</data>
<data name="Producer" xml:space="preserve">
<value>Producent</value>
</data>
<data name="Printer" xml:space="preserve">
<value>Drukarka</value>
</data>
<data name="Version" xml:space="preserve">
<value>Wersja</value>
</data>
<data name="nothing_to_configure" xml:space="preserve">
<value>&lt;nie konfigurować&gt;</value>
</data>
<data name="Fill_with_water" xml:space="preserve">
<value>Napełnić stanowisko wodą ?</value>
</data>
<data name="NoBtn" xml:space="preserve">
<value>Nie</value>
</data>
<data name="Question" xml:space="preserve">
<value>Pytanie</value>
</data>
<data name="Bench_parameters" xml:space="preserve">
<value>Parametry stanowiska</value>
</data>
<data name="Connection_string" xml:space="preserve">
<value>Parametry połączenia</value>
</data>
<data name="Create_DB" xml:space="preserve">
<value>Utwórz DB</value>
</data>
<data name="Database_type" xml:space="preserve">
<value>Typ bazy danych</value>
</data>
<data name="Logging" xml:space="preserve">
<value>Logowanie</value>
</data>
<data name="Mode" xml:space="preserve">
<value>Cykl pracy</value>
</data>
<data name="NewTabBtnText" xml:space="preserve">
<value>Nowa Tab</value>
</data>
<data name="New_transition_name" xml:space="preserve">
<value>Nowa nazwa przejścia</value>
</data>
<data name="Detection_completed" xml:space="preserve">
<value>Wykrywanie zakończono</value>
</data>
<data name="Emergency_STOP" xml:space="preserve">
<value>Zatrzymanie awaryjne</value>
</data>
<data name="Add" xml:space="preserve">
<value>&amp;Dodać &gt;</value>
</data>
<data name="Available_results" xml:space="preserve">
<value>Dostępne wyniki:</value>
</data>
<data name="Remove" xml:space="preserve">
<value>&lt;&amp;Usunąć</value>
</data>
<data name="Remove_all" xml:space="preserve">
<value>&lt;&lt;Usunąć wszystko</value>
</data>
<data name="Message" xml:space="preserve">
<value>Wiadomość</value>
</data>
<data name="dflt" xml:space="preserve">
<value>dflt</value>
</data>
<data name="Detection_failed" xml:space="preserve">
<value>Nie udana próba wykrywania</value>
</data>
<data name="Camera_error" xml:space="preserve">
<value>Błąd kamery</value>
</data>
<data name="remaining_time" xml:space="preserve">
<value>pozostały czas</value>
</data>
<data name="LessBtnText" xml:space="preserve">
<value>Mniej</value>
</data>
<data name="MoreBtnText" xml:space="preserve">
<value>Więcej</value>
</data>
<data name="Changes_will_be_lost_Do_you_want_to_proceed" xml:space="preserve">
<value>Zmiany zostaną stracone. Chcesz kontynuować ?</value>
</data>
<data name="Flowmeter" xml:space="preserve">
<value>Przepływomierz</value>
</data>
<data name="CombinedBtnText" xml:space="preserve">
<value>Sprzężony</value>
</data>
<data name="Device" xml:space="preserve">
<value>Urządzenie</value>
</data>
<data name="PrinterBtnText" xml:space="preserve">
<value>Drukarka</value>
</data>
<data name="Aux_Water_Meter" xml:space="preserve">
<value>Wodomierz dodatkowy</value>
</data>
<data name="Aux_Water_Meter_State" xml:space="preserve">
<value>Stan dodatkowego wodomierza</value>
</data>
<data name="Data" xml:space="preserve">
<value>Dane</value>
</data>
<data name="End_State" xml:space="preserve">
<value>Stan końcowy</value>
</data>
<data name="Main_Water_Meter" xml:space="preserve">
<value>Główny wodomierz</value>
</data>
<data name="Main_Water_Meter_State" xml:space="preserve">
<value>Stan wodomierza głównego</value>
</data>
<data name="Protocol" xml:space="preserve">
<value>Zapiska</value>
</data>
<data name="Serial_Number" xml:space="preserve">
<value>Nr seryjny</value>
</data>
<data name="Aux_WM_SerialNr" xml:space="preserve">
<value>Nr seryjny dodatkowego wodomierza</value>
</data>
<data name="Main_WM_SerialNr" xml:space="preserve">
<value>Nr seryjny głównego wodomierza</value>
</data>
<data name="Adjustment_in_progress" xml:space="preserve">
<value>Regulacja trwa</value>
</data>
<data name="Error_pct" xml:space="preserve">
<value>Błąd [%]</value>
</data>
<data name="Duration_Leak_s" xml:space="preserve">
<value>Czas trwania przepływu [s]</value>
</data>
<data name="Duration_PMax_s" xml:space="preserve">
<value>Czas trwania Pmax [s]</value>
</data>
<data name="Closing_valve_Pump_off" xml:space="preserve">
<value>Zamnięcie zaworu zasilania, wyłączenie pompy</value>
</data>
<data name="Purchase_Order" xml:space="preserve">
<value>Zamówienie</value>
</data>
<data name="Ambient_humidity_" xml:space="preserve">
<value>Wilgotność względna otoczenia</value>
</data>
<data name="Ambient_pressure_" xml:space="preserve">
<value>Ciśnienie względne:</value>
</data>
<data name="Ambient_temperature_" xml:space="preserve">
<value>Temperatura otoczenia:</value>
</data>
<data name="Approval_" xml:space="preserve">
<value>Zatwierdzenie:</value>
</data>
<data name="Date_and_time_" xml:space="preserve">
<value>Data i czas:</value>
</data>
<data name="End" xml:space="preserve">
<value>Koniec</value>
</data>
<data name="AtTemperature_C" xml:space="preserve">
<value>@temperatura [degC]</value>
</data>
<data name="Density_kg_m3" xml:space="preserve">
<value>Gęstość [kg/m3]</value>
</data>
<data name="Density" xml:space="preserve">
<value>Gęstość</value>
</data>
<data name="Nr_meters_in_a_group" xml:space="preserve">
<value>Nr liczników w grupie</value>
</data>
<data name="End_Condition" xml:space="preserve">
<value>Stan końcowy</value>
</data>
<data name="Communication" xml:space="preserve">
<value>Połączenie</value>
</data>
<data name="Aux_" xml:space="preserve">
<value>Dodadkowy</value>
</data>
<data name="Main_" xml:space="preserve">
<value>Główny</value>
</data>
<data name="cold" xml:space="preserve">
<value>zimna</value>
</data>
<data name="hot" xml:space="preserve">
<value>ciepła</value>
</data>
<data name="Product_name" xml:space="preserve">
<value>Nazwa produktu</value>
</data>
<data name="Address" xml:space="preserve">
<value>Adres</value>
</data>
<data name="Approval_date" xml:space="preserve">
<value>Data zatwierdzenia</value>
</data>
<data name="Approval_ID" xml:space="preserve">
<value>ID Zatwierdzenia</value>
</data>
<data name="Approved_by" xml:space="preserve">
<value>Zatwierdzono</value>
</data>
<data name="Evaluate" xml:space="preserve">
<value>Ocena</value>
</data>
<data name="iPerl_Communication_in_progress" xml:space="preserve">
<value>Połączenie z iPERL w trakcie</value>
</data>
<data name="Language" xml:space="preserve">
<value>Język</value>
</data>
<data name="Available_Components_" xml:space="preserve">
<value>Dostępne elementy:</value>
</data>
<data name="Database_Settings" xml:space="preserve">
<value>Ustawienia bazy danych:</value>
</data>
<data name="About_Test_Bench_Framework" xml:space="preserve">
<value>O Framework stanowiska</value>
</data>
<data name="BuildDateStr" xml:space="preserve">
<value>Build Data _BUILD_Data_</value>
</data>
<data name="CopyrightStr" xml:space="preserve">
<value>Praw autorskie © 2013 - {0}</value>
</data>
<data name="Edit_User" xml:space="preserve">
<value>Edytuj użytkownika</value>
</data>
<data name="Groups" xml:space="preserve">
<value>Grupy</value>
</data>
<data name="An_unhandled_error_occured" xml:space="preserve">
<value>Wystąpił nieobsługiwany błąd </value>
</data>
<data name="IgnoreBtnText" xml:space="preserve">
<value>Wyłączyć</value>
</data>
<data name="Add_filter" xml:space="preserve">
<value>Dodać filtr</value>
</data>
@@ -732,18 +219,6 @@
<data name="RetryDatabaseText" xml:space="preserve">
<value>Powtórka</value>
</data>
<data name="Selected_results" xml:space="preserve">
<value>Wybrane wyniki:</value>
</data>
<data name="SingleBtnText" xml:space="preserve">
<value>Pojedynczy</value>
</data>
<data name="UnlockBtnText" xml:space="preserve">
<value>Odblokować</value>
</data>
<data name="Water_Meter" xml:space="preserve">
<value>Licznik wody</value>
</data>
<data name="Date" xml:space="preserve">
<value>Data</value>
</data>
-528
View File
@@ -117,579 +117,66 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Confirmation" xml:space="preserve">
<value>Confirmation</value>
</data>
<data name="Do_you_want_to_save_the_procedure" xml:space="preserve">
<value>Do you want to save the procedure?</value>
</data>
<data name="Error" xml:space="preserve">
<value>Error</value>
</data>
<data name="Error_loading_users_from_the_database" xml:space="preserve">
<value>Error loading users from the database:</value>
</data>
<data name="Failed_to_create_a_sample_database" xml:space="preserve">
<value>Failed to create a sample database:</value>
</data>
<data name="Failed_to_export_the_database" xml:space="preserve">
<value>Failed to export the database:</value>
</data>
<data name="Invalid_user_password_or_bench" xml:space="preserve">
<value>Invalid user, password, or bench</value>
</data>
<data name="Test_bench" xml:space="preserve">
<value>Test bench</value>
</data>
<data name="MaxChars" xml:space="preserve">
<value>(max. _X_ alphanumeric characters)</value>
</data>
<data name="close" xml:space="preserve">
<value>close</value>
</data>
<data name="Diverter" xml:space="preserve">
<value>Diverter</value>
</data>
<data name="Emptying_valve" xml:space="preserve">
<value>Emptying valve</value>
</data>
<data name="Name" xml:space="preserve">
<value>Name</value>
</data>
<data name="Reference" xml:space="preserve">
<value>Reference</value>
</data>
<data name="Reg_valve" xml:space="preserve">
<value>Reg. valve</value>
</data>
<data name="Balance" xml:space="preserve">
<value>Balance</value>
</data>
<data name="Duration_s" xml:space="preserve">
<value>Duration [s]</value>
</data>
<data name="no" xml:space="preserve">
<value>no</value>
</data>
<data name="New_bench_path_name" xml:space="preserve">
<value>PBench</value>
</data>
<data name="New_feeding_path_name" xml:space="preserve">
<value>PFeed</value>
</data>
<data name="New_output_path_name" xml:space="preserve">
<value>PQ</value>
</data>
<data name="New_procedure_name" xml:space="preserve">
<value>Procedure</value>
</data>
<data name="New_sensors_path_name" xml:space="preserve">
<value>PSens</value>
</data>
<data name="New_test_name" xml:space="preserve">
<value>Test</value>
</data>
<data name="New_name_copy" xml:space="preserve">
<value> - Copy</value>
</data>
<data name="Correction_g" xml:space="preserve">
<value>Correction [g]</value>
</data>
<data name="Nr" xml:space="preserve">
<value>Nr.</value>
</data>
<data name="Mass_kg" xml:space="preserve">
<value>Mass [kg]</value>
</data>
<data name="AddBtnText" xml:space="preserve">
<value>Add</value>
</data>
<data name="CancelBtnText" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="CloseBtnText" xml:space="preserve">
<value>Close</value>
</data>
<data name="LockBtnText" xml:space="preserve">
<value>Lock</value>
</data>
<data name="RemoveBtnText" xml:space="preserve">
<value>Remove</value>
</data>
<data name="OkBtnText" xml:space="preserve">
<value>OK</value>
</data>
<data name="Correction_lph" xml:space="preserve">
<value>Correction [l/h]</value>
</data>
<data name="Correction_mbar" xml:space="preserve">
<value>Correction [mbar]</value>
</data>
<data name="Flow_m3h" xml:space="preserve">
<value>Flow [m3/h]</value>
</data>
<data name="Invalid_username_or_password" xml:space="preserve">
<value>Invalid username or password</value>
</data>
<data name="CopyBtnText" xml:space="preserve">
<value>Copy</value>
</data>
<data name="DownBtnText" xml:space="preserve">
<value>Down</value>
</data>
<data name="EditBtnText" xml:space="preserve">
<value>Edit</value>
</data>
<data name="UpBtnText" xml:space="preserve">
<value>Up</value>
</data>
<data name="NoDatabaseMsg" xml:space="preserve">
<value>Cannot connect to the database.</value>
</data>
<data name="ConfigureDatabaseText" xml:space="preserve">
<value>Configure test benches (password required)</value>
</data>
<data name="ExitBtnText" xml:space="preserve">
<value>Exit</value>
</data>
<data name="Enter_password" xml:space="preserve">
<value>Enter password</value>
</data>
<data name="Invalid_password" xml:space="preserve">
<value>Invalid password</value>
</data>
<data name="Bench_name_conflict_Use_another_name_pls" xml:space="preserve">
<value>Test bench name conflict, use another name please</value>
</data>
<data name="DB_was_successfully_created" xml:space="preserve">
<value>The database was successfully created!</value>
</data>
<data name="DB_will_be_overwritten" xml:space="preserve">
<value>The database will be overwritten</value>
</data>
<data name="Do_you_want_to_proceed" xml:space="preserve">
<value>Do you want to proceed?</value>
</data>
<data name="Notification" xml:space="preserve">
<value>Notification</value>
</data>
<data name="NoBenchMsg" xml:space="preserve">
<value>No test bench in the program configuration.</value>
</data>
<data name="DescriptionColHdr" xml:space="preserve">
<value>Description</value>
</data>
<data name="Procedure" xml:space="preserve">
<value>Procedure</value>
</data>
<data name="Test" xml:space="preserve">
<value>Test</value>
</data>
<data name="Corrected" xml:space="preserve">
<value>Corrected</value>
</data>
<data name="Measured" xml:space="preserve">
<value>Measured</value>
</data>
<data name="Bench_is_not_running" xml:space="preserve">
<value>Test bench is not running, however you can change the settings to resolve the problem.</value>
</data>
<data name="Emptying_chdr" xml:space="preserve">
<value>Emptying</value>
</data>
<data name="Bench_chdr" xml:space="preserve">
<value>Bench</value>
</data>
<data name="Err_cor_neg_pct_chdr" xml:space="preserve">
<value>Err. cor. - [%]</value>
</data>
<data name="Err_cor_pos_pct_chdr" xml:space="preserve">
<value>Err. cor. +[%]</value>
</data>
<data name="Err_limit_neg_pct_chdr" xml:space="preserve">
<value>Err. Limit - [%]</value>
</data>
<data name="Err_limit_pos_pct_chdr" xml:space="preserve">
<value>Err. Limit + [%]</value>
</data>
<data name="Feeding_chdr" xml:space="preserve">
<value>Feeding</value>
</data>
<data name="Red_type_chdr" xml:space="preserve">
<value>Red. type</value>
</data>
<data name="Error_while_creating_DB_Reason" xml:space="preserve">
<value>Error while creating the database. Reason: </value>
</data>
<data name="Metrology" xml:space="preserve">
<value>Metrology</value>
</data>
<data name="_offline" xml:space="preserve">
<value>(offline)</value>
</data>
<data name="Administrator" xml:space="preserve">
<value>Administrator</value>
</data>
<data name="Calibration_Specialist" xml:space="preserve">
<value>Calibration Specialist</value>
</data>
<data name="Head_of_Lab" xml:space="preserve">
<value>Head of Lab</value>
</data>
<data name="Maintenance_Specialist" xml:space="preserve">
<value>Maintenance Specialist</value>
</data>
<data name="Metrologist" xml:space="preserve">
<value>Metrologist</value>
</data>
<data name="Close_emptying_valve" xml:space="preserve">
<value>Close emptying valve</value>
</data>
<data name="Get_mass_of_water_in_the_tank" xml:space="preserve">
<value>Get mass of water in the tank</value>
</data>
<data name="Ignore" xml:space="preserve">
<value>Ignore</value>
</data>
<data name="Loading_the_procedure" xml:space="preserve">
<value>Loading the procedure</value>
</data>
<data name="Make_tank_empty" xml:space="preserve">
<value>Make tank empty</value>
</data>
<data name="Measure_the_mass" xml:space="preserve">
<value>Measure the mass</value>
</data>
<data name="Ready" xml:space="preserve">
<value>Ready</value>
</data>
<data name="BackBtnText" xml:space="preserve">
<value>&lt; Back</value>
</data>
<data name="FinishBtnText" xml:space="preserve">
<value>Finish</value>
</data>
<data name="NextBtnText" xml:space="preserve">
<value>Next &gt;</value>
</data>
<data name="Flow_selection" xml:space="preserve">
<value>Flow Selection</value>
</data>
<data name="Method_chdr" xml:space="preserve">
<value>Test method</value>
</data>
<data name="RelativeQfrom" xml:space="preserve">
<value>Relative Q from</value>
</data>
<data name="RelativeQto" xml:space="preserve">
<value>Relative Q to</value>
</data>
<data name="Combined_meters" xml:space="preserve">
<value>Combined meters</value>
</data>
<data name="DetectionThresholdPct" xml:space="preserve">
<value>Detection threshold [%]</value>
</data>
<data name="RateOfChangePct" xml:space="preserve">
<value>Rate of change [%]</value>
</data>
<data name="Component" xml:space="preserve">
<value>Component</value>
</data>
<data name="_none_" xml:space="preserve">
<value>&lt;none&gt;</value>
</data>
<data name="Method_selection" xml:space="preserve">
<value>Test method selection</value>
</data>
<data name="Clear_results" xml:space="preserve">
<value>Clear results</value>
</data>
<data name="Configure" xml:space="preserve">
<value>Configure</value>
</data>
<data name="Arrangement_of_meters" xml:space="preserve">
<value>Arrangements of tested meters</value>
</data>
<data name="Arrangement_of_tests" xml:space="preserve">
<value>Arrangement of tests</value>
</data>
<data name="Horizontally" xml:space="preserve">
<value>Horizontally</value>
</data>
<data name="Configuration" xml:space="preserve">
<value>Configuration</value>
</data>
<data name="Failed" xml:space="preserve">
<value>NOK</value>
</data>
<data name="ClearBtnText" xml:space="preserve">
<value>Clear</value>
</data>
<data name="Emptying_tank" xml:space="preserve">
<value>Emptying the tank</value>
</data>
<data name="Measuring_the_weight" xml:space="preserve">
<value>Measuring the weight</value>
</data>
<data name="Emptying_i_n" xml:space="preserve">
<value>Emptying ({0}: step {1}/{2})</value>
</data>
<data name="Activity" xml:space="preserve">
<value>Activity</value>
</data>
<data name="Approval_info" xml:space="preserve">
<value>Approval info.</value>
</data>
<data name="Metrological_class" xml:space="preserve">
<value>Metrological class</value>
</data>
<data name="Producer" xml:space="preserve">
<value>Producer</value>
</data>
<data name="Printer" xml:space="preserve">
<value>Printer</value>
</data>
<data name="Version" xml:space="preserve">
<value>Version</value>
</data>
<data name="nothing_to_configure" xml:space="preserve">
<value>&lt;nothing to configure&gt;</value>
</data>
<data name="Fill_with_water" xml:space="preserve">
<value>Fill the test bench with water?</value>
</data>
<data name="NoBtn" xml:space="preserve">
<value>No</value>
</data>
<data name="Question" xml:space="preserve">
<value>Question</value>
</data>
<data name="Bench_parameters" xml:space="preserve">
<value>Bench parameters</value>
</data>
<data name="Connection_string" xml:space="preserve">
<value>Connection string</value>
</data>
<data name="Create_DB" xml:space="preserve">
<value>Create DB</value>
</data>
<data name="Database_type" xml:space="preserve">
<value>Database type</value>
</data>
<data name="Logging" xml:space="preserve">
<value>Logging</value>
</data>
<data name="Mode" xml:space="preserve">
<value>Mode</value>
</data>
<data name="NewTabBtnText" xml:space="preserve">
<value>New Tab</value>
</data>
<data name="New_transition_name" xml:space="preserve">
<value>New transition name</value>
</data>
<data name="Detection_completed" xml:space="preserve">
<value>Detection completed</value>
</data>
<data name="Emergency_STOP" xml:space="preserve">
<value>Emergency STOP</value>
</data>
<data name="Add" xml:space="preserve">
<value>&amp;Add &gt;</value>
</data>
<data name="Available_results" xml:space="preserve">
<value>Available results:</value>
</data>
<data name="Remove" xml:space="preserve">
<value>&lt; &amp;Remove</value>
</data>
<data name="Remove_all" xml:space="preserve">
<value>&lt;&lt; R&amp;emove all</value>
</data>
<data name="Message" xml:space="preserve">
<value>Message</value>
</data>
<data name="dflt" xml:space="preserve">
<value>dflt</value>
</data>
<data name="Detection_failed" xml:space="preserve">
<value>Detection failed</value>
</data>
<data name="Camera_error" xml:space="preserve">
<value>Camera error</value>
</data>
<data name="remaining_time" xml:space="preserve">
<value>remaining time</value>
</data>
<data name="LessBtnText" xml:space="preserve">
<value>Less</value>
</data>
<data name="MoreBtnText" xml:space="preserve">
<value>More</value>
</data>
<data name="Changes_will_be_lost_Do_you_want_to_proceed" xml:space="preserve">
<value>Changes will be lost. Do you want to proceed?</value>
</data>
<data name="Flowmeter" xml:space="preserve">
<value>Flowmeter</value>
</data>
<data name="CombinedBtnText" xml:space="preserve">
<value>Combined</value>
</data>
<data name="Device" xml:space="preserve">
<value>Device</value>
</data>
<data name="PrinterBtnText" xml:space="preserve">
<value>Printer</value>
</data>
<data name="Aux_Water_Meter" xml:space="preserve">
<value>Aux Water Meter</value>
</data>
<data name="Aux_Water_Meter_State" xml:space="preserve">
<value>Aux. WM State</value>
</data>
<data name="Data" xml:space="preserve">
<value>Data</value>
</data>
<data name="End_State" xml:space="preserve">
<value>End State</value>
</data>
<data name="Main_Water_Meter" xml:space="preserve">
<value>Main Water Meter</value>
</data>
<data name="Main_Water_Meter_State" xml:space="preserve">
<value>Main WM State</value>
</data>
<data name="Protocol" xml:space="preserve">
<value>Protocol</value>
</data>
<data name="Serial_Number" xml:space="preserve">
<value>Serial Number</value>
</data>
<data name="Aux_WM_SerialNr" xml:space="preserve">
<value>Aux. WM Serial Nr.</value>
</data>
<data name="Main_WM_SerialNr" xml:space="preserve">
<value>Main WM Serial Nr.</value>
</data>
<data name="Adjustment_in_progress" xml:space="preserve">
<value>Adjustment in progress</value>
</data>
<data name="Error_pct" xml:space="preserve">
<value>Error [%]</value>
</data>
<data name="Duration_Leak_s" xml:space="preserve">
<value>Leak duration [s]</value>
</data>
<data name="Duration_PMax_s" xml:space="preserve">
<value>PMax duration [s]</value>
</data>
<data name="Closing_valve_Pump_off" xml:space="preserve">
<value>Closing input valve, switching the pump off</value>
</data>
<data name="Purchase_Order" xml:space="preserve">
<value>Purchase Order</value>
</data>
<data name="Ambient_humidity_" xml:space="preserve">
<value>Ambient humidity: </value>
</data>
<data name="Ambient_pressure_" xml:space="preserve">
<value>Ambient pressure: </value>
</data>
<data name="Ambient_temperature_" xml:space="preserve">
<value>Ambient temperature: </value>
</data>
<data name="Approval_" xml:space="preserve">
<value>Approval: </value>
</data>
<data name="Date_and_time_" xml:space="preserve">
<value>Date and time: </value>
</data>
<data name="End" xml:space="preserve">
<value>End</value>
</data>
<data name="AtTemperature_C" xml:space="preserve">
<value>@temperature [degC]</value>
</data>
<data name="Density_kg_m3" xml:space="preserve">
<value>Density [kg/m3]</value>
</data>
<data name="Density" xml:space="preserve">
<value>Density</value>
</data>
<data name="Nr_meters_in_a_group" xml:space="preserve">
<value>Nr. meters in a group:</value>
</data>
<data name="End_Condition" xml:space="preserve">
<value>End condition</value>
</data>
<data name="Communication" xml:space="preserve">
<value>Communication</value>
</data>
<data name="Aux_" xml:space="preserve">
<value>Aux:</value>
</data>
<data name="Main_" xml:space="preserve">
<value>Main:</value>
</data>
<data name="cold" xml:space="preserve">
<value>cold</value>
</data>
<data name="hot" xml:space="preserve">
<value>hot</value>
</data>
<data name="Product_name" xml:space="preserve">
<value>Product name</value>
</data>
<data name="Address" xml:space="preserve">
<value>Address</value>
</data>
<data name="Approval_date" xml:space="preserve">
<value>Approval date</value>
</data>
<data name="Approval_ID" xml:space="preserve">
<value>Approval ID</value>
</data>
<data name="Approved_by" xml:space="preserve">
<value>Approved by</value>
</data>
<data name="Evaluate" xml:space="preserve">
<value>Evaluate</value>
</data>
<data name="iPerl_Communication_in_progress" xml:space="preserve">
<value>iPerl Communication in progress</value>
</data>
<data name="Language" xml:space="preserve">
<value>Language</value>
</data>
<data name="Available_Components_" xml:space="preserve">
<value>Available Components:</value>
</data>
<data name="Database_Settings" xml:space="preserve">
<value>Database Settings</value>
</data>
<data name="About_Test_Bench_Framework" xml:space="preserve">
<value>About Test Bench Framework</value>
</data>
<data name="BuildDateStr" xml:space="preserve">
<value>Build date _BUILD_DATE_</value>
</data>
<data name="CopyrightStr" xml:space="preserve">
<value>Copyright © 2013 - {0}</value>
</data>
<data name="Edit_User" xml:space="preserve">
<value>Edit User</value>
</data>
<data name="Groups" xml:space="preserve">
<value>Groups</value>
</data>
<data name="An_unhandled_error_occured" xml:space="preserve">
<value>An unhandled error occured</value>
</data>
<data name="IgnoreBtnText" xml:space="preserve">
<value>Ignore</value>
</data>
<data name="Add_filter" xml:space="preserve">
<value>Add filter</value>
</data>
@@ -732,18 +219,6 @@
<data name="RetryDatabaseText" xml:space="preserve">
<value>Retry</value>
</data>
<data name="Selected_results" xml:space="preserve">
<value>Selected results</value>
</data>
<data name="SingleBtnText" xml:space="preserve">
<value>Single</value>
</data>
<data name="UnlockBtnText" xml:space="preserve">
<value>Unlock</value>
</data>
<data name="Water_Meter" xml:space="preserve">
<value>Water Meter</value>
</data>
<data name="Date" xml:space="preserve">
<value>Date</value>
</data>
@@ -825,9 +300,6 @@
<data name="Error_exporting_results" xml:space="preserve">
<value>Error exporting results</value>
</data>
<data name="Add_data_from_Oracle" xml:space="preserve">
<value>Add data from Oracle</value>
</data>
<data name="Histograms" xml:space="preserve">
<value>Histograms</value>
</data>
-525
View File
@@ -117,579 +117,66 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Confirmation" xml:space="preserve">
<value>Подтверждение</value>
</data>
<data name="Do_you_want_to_save_the_procedure" xml:space="preserve">
<value>Хотите сохранить процедуру?</value>
</data>
<data name="Error" xml:space="preserve">
<value>Ошибка</value>
</data>
<data name="Error_loading_users_from_the_database" xml:space="preserve">
<value>Ошибка при загрузке пользователей из базы данных:</value>
</data>
<data name="Failed_to_create_a_sample_database" xml:space="preserve">
<value>Не удалось создать базу данных:</value>
</data>
<data name="Failed_to_export_the_database" xml:space="preserve">
<value>Не удалось экспортировать базу данных:</value>
</data>
<data name="Invalid_user_password_or_bench" xml:space="preserve">
<value>Неверный пользователь, пароль, или установка</value>
</data>
<data name="Test_bench" xml:space="preserve">
<value>Поверочная установка</value>
</data>
<data name="MaxChars" xml:space="preserve">
<value>(Макс. _X_ Буквенно-цифровых символов)</value>
</data>
<data name="close" xml:space="preserve">
<value>закрыть</value>
</data>
<data name="Diverter" xml:space="preserve">
<value>Клапан</value>
</data>
<data name="Emptying_valve" xml:space="preserve">
<value>Выпускной клапан</value>
</data>
<data name="Name" xml:space="preserve">
<value>Имя</value>
</data>
<data name="Reference" xml:space="preserve">
<value>Ссылка</value>
</data>
<data name="Reg_valve" xml:space="preserve">
<value>Рег. вентиль</value>
</data>
<data name="Balance" xml:space="preserve">
<value>Весы</value>
</data>
<data name="Duration_s" xml:space="preserve">
<value>Продолжительность [с]</value>
</data>
<data name="no" xml:space="preserve">
<value>нет</value>
</data>
<data name="New_bench_path_name" xml:space="preserve">
<value>PУстановка</value>
</data>
<data name="New_feeding_path_name" xml:space="preserve">
<value>PFeed</value>
</data>
<data name="New_output_path_name" xml:space="preserve">
<value>PQ</value>
</data>
<data name="New_procedure_name" xml:space="preserve">
<value>Процедура</value>
</data>
<data name="New_sensors_path_name" xml:space="preserve">
<value>PSens</value>
</data>
<data name="New_test_name" xml:space="preserve">
<value>Тест</value>
</data>
<data name="New_name_copy" xml:space="preserve">
<value> - Копировать</value>
</data>
<data name="Correction_g" xml:space="preserve">
<value>Коррекция [г]</value>
</data>
<data name="Nr" xml:space="preserve">
<value>№</value>
</data>
<data name="Mass_kg" xml:space="preserve">
<value>Масса [кг]</value>
</data>
<data name="AddBtnText" xml:space="preserve">
<value>Добавить</value>
</data>
<data name="CancelBtnText" xml:space="preserve">
<value>Отмена</value>
</data>
<data name="CloseBtnText" xml:space="preserve">
<value>Закрыть</value>
</data>
<data name="LockBtnText" xml:space="preserve">
<value>Заблокировать</value>
</data>
<data name="RemoveBtnText" xml:space="preserve">
<value>Удалить</value>
</data>
<data name="OkBtnText" xml:space="preserve">
<value>OK</value>
</data>
<data name="Correction_lph" xml:space="preserve">
<value>Коррекция [л/ч]</value>
</data>
<data name="Correction_mbar" xml:space="preserve">
<value>Коррекция [мбар]</value>
</data>
<data name="Flow_m3h" xml:space="preserve">
<value>Расход [м3/ч]</value>
</data>
<data name="Invalid_username_or_password" xml:space="preserve">
<value>Неправильное имя пользователя или пароль</value>
</data>
<data name="CopyBtnText" xml:space="preserve">
<value>Копировать</value>
</data>
<data name="DownBtnText" xml:space="preserve">
<value>Вниз</value>
</data>
<data name="EditBtnText" xml:space="preserve">
<value>Редактировать</value>
</data>
<data name="UpBtnText" xml:space="preserve">
<value>Вверх</value>
</data>
<data name="NoDatabaseMsg" xml:space="preserve">
<value>Не удается подключиться к базе данных.</value>
</data>
<data name="ConfigureDatabaseText" xml:space="preserve">
<value>Тестовая конфигурация установки (требуется пароль)</value>
</data>
<data name="ExitBtnText" xml:space="preserve">
<value>Выход</value>
</data>
<data name="Enter_password" xml:space="preserve">
<value>Введите пароль</value>
</data>
<data name="Invalid_password" xml:space="preserve">
<value>Неверный пароль</value>
</data>
<data name="Bench_name_conflict_Use_another_name_pls" xml:space="preserve">
<value>Имя поверочной установки неверно, используйте другое имя, пожалуйста</value>
</data>
<data name="DB_was_successfully_created" xml:space="preserve">
<value>База данных была успешно создана!</value>
</data>
<data name="DB_will_be_overwritten" xml:space="preserve">
<value>База данных будет перезаписана</value>
</data>
<data name="Do_you_want_to_proceed" xml:space="preserve">
<value>Вы хотите продолжить?</value>
</data>
<data name="Notification" xml:space="preserve">
<value>Уведомление</value>
</data>
<data name="NoBenchMsg" xml:space="preserve">
<value>Нет поверочной установки в конфигурации программы.</value>
</data>
<data name="DescriptionColHdr" xml:space="preserve">
<value>Описание</value>
</data>
<data name="Procedure" xml:space="preserve">
<value>Процедура</value>
</data>
<data name="Test" xml:space="preserve">
<value>Тест</value>
</data>
<data name="Corrected" xml:space="preserve">
<value>Исправлено</value>
</data>
<data name="Measured" xml:space="preserve">
<value>Измерено</value>
</data>
<data name="Bench_is_not_running" xml:space="preserve">
<value>Поверочная установка не запущена, однако вы можете изменить настройки, чтобы решить эту проблему.</value>
</data>
<data name="Emptying_chdr" xml:space="preserve">
<value>Выпуск</value>
</data>
<data name="Bench_chdr" xml:space="preserve">
<value>Установка</value>
</data>
<data name="Err_cor_neg_pct_chdr" xml:space="preserve">
<value>Err. cor. - [%]</value>
</data>
<data name="Err_cor_pos_pct_chdr" xml:space="preserve">
<value>Err. cor. +[%]</value>
</data>
<data name="Err_limit_neg_pct_chdr" xml:space="preserve">
<value>Err. Limit - [%]</value>
</data>
<data name="Err_limit_pos_pct_chdr" xml:space="preserve">
<value>Err. Limit + [%]</value>
</data>
<data name="Feeding_chdr" xml:space="preserve">
<value>Feeding</value>
</data>
<data name="Red_type_chdr" xml:space="preserve">
<value>Red. type</value>
</data>
<data name="Error_while_creating_DB_Reason" xml:space="preserve">
<value>Ошибка при создании базы данных. Причина:</value>
</data>
<data name="Metrology" xml:space="preserve">
<value>Метрология</value>
</data>
<data name="_offline" xml:space="preserve">
<value>(не в сети)</value>
</data>
<data name="Administrator" xml:space="preserve">
<value>Администратор</value>
</data>
<data name="Calibration_Specialist" xml:space="preserve">
<value>Специалист по калибровке</value>
</data>
<data name="Head_of_Lab" xml:space="preserve">
<value>Руководитель лаборатории</value>
</data>
<data name="Maintenance_Specialist" xml:space="preserve">
<value>Специалист по техобслуживанию</value>
</data>
<data name="Metrologist" xml:space="preserve">
<value>Метролог</value>
</data>
<data name="Close_emptying_valve" xml:space="preserve">
<value>Закрыть выпускной клапан</value>
</data>
<data name="Get_mass_of_water_in_the_tank" xml:space="preserve">
<value>Получить массу воды в резервуаре</value>
</data>
<data name="Ignore" xml:space="preserve">
<value>Отклонить</value>
</data>
<data name="Loading_the_procedure" xml:space="preserve">
<value>Процедура загрузки</value>
</data>
<data name="Make_tank_empty" xml:space="preserve">
<value>Оборожнить бак</value>
</data>
<data name="Measure_the_mass" xml:space="preserve">
<value>Измерьте массу</value>
</data>
<data name="Ready" xml:space="preserve">
<value>Готов</value>
</data>
<data name="BackBtnText" xml:space="preserve">
<value>&lt; Назад</value>
</data>
<data name="FinishBtnText" xml:space="preserve">
<value>Завершить</value>
</data>
<data name="NextBtnText" xml:space="preserve">
<value>Дальше &gt;</value>
</data>
<data name="Flow_selection" xml:space="preserve">
<value>Выбор расхода</value>
</data>
<data name="Method_chdr" xml:space="preserve">
<value>Метод испытания</value>
</data>
<data name="RelativeQfrom" xml:space="preserve">
<value>Относительный Q от</value>
</data>
<data name="RelativeQto" xml:space="preserve">
<value>Относительный Q до</value>
</data>
<data name="Combined_meters" xml:space="preserve">
<value>Комбинированные счетчики</value>
</data>
<data name="DetectionThresholdPct" xml:space="preserve">
<value>Порог [%]</value>
</data>
<data name="RateOfChangePct" xml:space="preserve">
<value>Скорость изменения [%]</value>
</data>
<data name="Component" xml:space="preserve">
<value>Компонент</value>
</data>
<data name="_none_" xml:space="preserve">
<value>&lt;нет&gt;</value>
</data>
<data name="Method_selection" xml:space="preserve">
<value>Выбор метода испытаний</value>
</data>
<data name="Clear_results" xml:space="preserve">
<value>Очистить Результаты</value>
</data>
<data name="Configure" xml:space="preserve">
<value>Конфигурировать</value>
</data>
<data name="Arrangement_of_meters" xml:space="preserve">
<value>Расположение испытуемых счетчиков</value>
</data>
<data name="Arrangement_of_tests" xml:space="preserve">
<value>Расположение испытаний</value>
</data>
<data name="Horizontally" xml:space="preserve">
<value>Горизонтально</value>
</data>
<data name="Configuration" xml:space="preserve">
<value>Конфигурация</value>
</data>
<data name="Failed" xml:space="preserve">
<value>NOK</value>
</data>
<data name="ClearBtnText" xml:space="preserve">
<value>Очистить</value>
</data>
<data name="Emptying_tank" xml:space="preserve">
<value>Опорожнение бака</value>
</data>
<data name="Measuring_the_weight" xml:space="preserve">
<value>Измерение веса</value>
</data>
<data name="Emptying_i_n" xml:space="preserve">
<value>Слив ({0}: шаг {1} / {2})</value>
</data>
<data name="Activity" xml:space="preserve">
<value>Активность</value>
</data>
<data name="Approval_info" xml:space="preserve">
<value>Информация об утверждении</value>
</data>
<data name="Metrological_class" xml:space="preserve">
<value>Метрологический класс</value>
</data>
<data name="Producer" xml:space="preserve">
<value>Производитель</value>
</data>
<data name="Printer" xml:space="preserve">
<value>Принтер</value>
</data>
<data name="Version" xml:space="preserve">
<value>Версия</value>
</data>
<data name="nothing_to_configure" xml:space="preserve">
<value>&lt;нечего настраивать&gt;</value>
</data>
<data name="Fill_with_water" xml:space="preserve">
<value>Заполнить установку водой?</value>
</data>
<data name="NoBtn" xml:space="preserve">
<value>Нет</value>
</data>
<data name="Question" xml:space="preserve">
<value>Вопрос</value>
</data>
<data name="Bench_parameters" xml:space="preserve">
<value>Установка параметров</value>
</data>
<data name="Connection_string" xml:space="preserve">
<value>Строка подключения БД</value>
</data>
<data name="Create_DB" xml:space="preserve">
<value>Создание БД</value>
</data>
<data name="Database_type" xml:space="preserve">
<value>Тип БД</value>
</data>
<data name="Logging" xml:space="preserve">
<value>Логирование</value>
</data>
<data name="Mode" xml:space="preserve">
<value>Режим</value>
</data>
<data name="NewTabBtnText" xml:space="preserve">
<value>Новая вкладка</value>
</data>
<data name="New_transition_name" xml:space="preserve">
<value>Новое имя перехода</value>
</data>
<data name="Detection_completed" xml:space="preserve">
<value>Обнаружение завершено</value>
</data>
<data name="Emergency_STOP" xml:space="preserve">
<value>Аварийная остановка</value>
</data>
<data name="Add" xml:space="preserve">
<value>&amp;Добавить &gt;</value>
</data>
<data name="Available_results" xml:space="preserve">
<value>Доступные результаты</value>
</data>
<data name="Remove" xml:space="preserve">
<value>&lt; &amp;Удалить</value>
</data>
<data name="Remove_all" xml:space="preserve">
<value>&lt;&lt; Удалить все</value>
</data>
<data name="Message" xml:space="preserve">
<value>Сообщение</value>
</data>
<data name="dflt" xml:space="preserve">
<value>dflt</value>
</data>
<data name="Detection_failed" xml:space="preserve">
<value>Обнаружение не удалось</value>
</data>
<data name="Camera_error" xml:space="preserve">
<value>Ошибка камеры</value>
</data>
<data name="remaining_time" xml:space="preserve">
<value>оставшееся время</value>
</data>
<data name="LessBtnText" xml:space="preserve">
<value>Меньше</value>
</data>
<data name="MoreBtnText" xml:space="preserve">
<value>Больше</value>
</data>
<data name="Changes_will_be_lost_Do_you_want_to_proceed" xml:space="preserve">
<value>Изменения будут потеряны. Вы хотите продолжить?</value>
</data>
<data name="Flowmeter" xml:space="preserve">
<value>Расходомер</value>
</data>
<data name="CombinedBtnText" xml:space="preserve">
<value>Комбинированный</value>
</data>
<data name="Device" xml:space="preserve">
<value>Устройство</value>
</data>
<data name="PrinterBtnText" xml:space="preserve">
<value>Принтер</value>
</data>
<data name="Aux_Water_Meter" xml:space="preserve">
<value>Доп.счетчик воды</value>
</data>
<data name="Aux_Water_Meter_State" xml:space="preserve">
<value>Статус доп.счетчика</value>
</data>
<data name="Data" xml:space="preserve">
<value>Данные</value>
</data>
<data name="End_State" xml:space="preserve">
<value>Конечное состояние</value>
</data>
<data name="Main_Water_Meter" xml:space="preserve">
<value>Главный счетчик воды</value>
</data>
<data name="Main_Water_Meter_State" xml:space="preserve">
<value>Статус главного счетчика</value>
</data>
<data name="Protocol" xml:space="preserve">
<value>Протокол</value>
</data>
<data name="Serial_Number" xml:space="preserve">
<value>Серийный номер</value>
</data>
<data name="Aux_WM_SerialNr" xml:space="preserve">
<value>Сер. № доп. счетчика</value>
</data>
<data name="Main_WM_SerialNr" xml:space="preserve">
<value>Сер. № главн. счетчика</value>
</data>
<data name="Adjustment_in_progress" xml:space="preserve">
<value>Настройка выполняется</value>
</data>
<data name="Error_pct" xml:space="preserve">
<value>Погрешность [%]</value>
</data>
<data name="Duration_Leak_s" xml:space="preserve">
<value>Продолжительность расхода [с]</value>
</data>
<data name="Duration_PMax_s" xml:space="preserve">
<value>Продолжительность Pмакс [с]</value>
</data>
<data name="Closing_valve_Pump_off" xml:space="preserve">
<value>Закрытие впускного клапана, выключение насоса</value>
</data>
<data name="Purchase_Order" xml:space="preserve">
<value>Заказ</value>
</data>
<data name="Ambient_humidity_" xml:space="preserve">
<value>Относительная влажность окружающей среды:</value>
</data>
<data name="Ambient_pressure_" xml:space="preserve">
<value>Относительное давление: </value>
</data>
<data name="Ambient_temperature_" xml:space="preserve">
<value>Температура окружающей среды: </value>
</data>
<data name="Approval_" xml:space="preserve">
<value>Утверждение: </value>
</data>
<data name="Date_and_time_" xml:space="preserve">
<value>Дата и время: </value>
</data>
<data name="End" xml:space="preserve">
<value>Конец</value>
</data>
<data name="AtTemperature_C" xml:space="preserve">
<value>температура [degC]</value>
</data>
<data name="Density_kg_m3" xml:space="preserve">
<value>Плотность [кг/м3]</value>
</data>
<data name="Density" xml:space="preserve">
<value>Плотность</value>
</data>
<data name="Nr_meters_in_a_group" xml:space="preserve">
<value>№ счетчиков в группе</value>
</data>
<data name="End_Condition" xml:space="preserve">
<value>Конечное состояние</value>
</data>
<data name="Communication" xml:space="preserve">
<value>Соединение</value>
</data>
<data name="Aux_" xml:space="preserve">
<value>Доп.</value>
</data>
<data name="Main_" xml:space="preserve">
<value>Главн:</value>
</data>
<data name="cold" xml:space="preserve">
<value>холодный</value>
</data>
<data name="hot" xml:space="preserve">
<value>горячий</value>
</data>
<data name="Product_name" xml:space="preserve">
<value>Наименование продукта</value>
</data>
<data name="Address" xml:space="preserve">
<value>Адрес</value>
</data>
<data name="Approval_date" xml:space="preserve">
<value>Дата утверждения</value>
</data>
<data name="Approval_ID" xml:space="preserve">
<value>ID Утверждения </value>
</data>
<data name="Approved_by" xml:space="preserve">
<value>Утверждено</value>
</data>
<data name="Evaluate" xml:space="preserve">
<value>Оценка</value>
</data>
<data name="iPerl_Communication_in_progress" xml:space="preserve">
<value>Осуществляется связь с iPerl </value>
</data>
<data name="Language" xml:space="preserve">
<value>Язык</value>
</data>
<data name="Available_Components_" xml:space="preserve">
<value>Доступные компоненты:</value>
</data>
<data name="Database_Settings" xml:space="preserve">
<value>Настройки Базы данных</value>
</data>
<data name="About_Test_Bench_Framework" xml:space="preserve">
<value>О Framework поверочной установки</value>
</data>
<data name="BuildDateStr" xml:space="preserve">
<value>Build Data _BUILD_Data_</value>
</data>
<data name="CopyrightStr" xml:space="preserve">
<value>Copyright © 2013 - {0}</value>
</data>
<data name="Edit_User" xml:space="preserve">
<value>Редактировать пользователя</value>
</data>
<data name="Groups" xml:space="preserve">
<value>Группы</value>
</data>
<data name="An_unhandled_error_occured" xml:space="preserve">
<value>Произошла необрабатываемая ошибка</value>
</data>
<data name="IgnoreBtnText" xml:space="preserve">
<value>Отклонить</value>
</data>
<data name="Add_filter" xml:space="preserve">
<value>Добавить фильтр</value>
</data>
@@ -732,18 +219,6 @@
<data name="RetryDatabaseText" xml:space="preserve">
<value>Повтор</value>
</data>
<data name="Selected_results" xml:space="preserve">
<value>Выбанные результаты</value>
</data>
<data name="SingleBtnText" xml:space="preserve">
<value>Единый</value>
</data>
<data name="UnlockBtnText" xml:space="preserve">
<value>Разблокировать</value>
</data>
<data name="Water_Meter" xml:space="preserve">
<value>Счетчик воды</value>
</data>
<data name="Date" xml:space="preserve">
<value>Дата</value>
</data>
File diff suppressed because it is too large Load Diff
+3 -2
View File
@@ -21,7 +21,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;SLM_50;HEAT_METERS;LANG_SK</DefineConstants>
<DefineConstants>TRACE;DEBUG;CEVAK_200;LANG_CS</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
@@ -31,7 +31,7 @@
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE;SLM_50;HEAT_METERS;LANG_SK</DefineConstants>
<DefineConstants>TRACE;CEVAK_200;LANG_CS</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
@@ -254,6 +254,7 @@
</Compile>
<EmbeddedResource Include="Resources\Strings.cs.resx" />
<EmbeddedResource Include="Resources\Strings.de.resx" />
<EmbeddedResource Include="Resources\Strings.fr.resx" />
<EmbeddedResource Include="Resources\Strings.it.resx" />
<EmbeddedResource Include="Resources\Strings.pl.resx">
<SubType>Designer</SubType>
+38 -10
View File
@@ -1,14 +1,12 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TBF", "TBF\TBF.csproj", "{8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}"
ProjectSection(ProjectDependencies) = postProject
{EFEC8A31-3022-4DA7-A8F6-16D30A94C3FF} = {EFEC8A31-3022-4DA7-A8F6-16D30A94C3FF}
{0C0A1F4D-1363-4544-A7C5-196C76D26CCA} = {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}
EndProjectSection
EndProject
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "TBFSetup", "TBFSetup\TBFSetup.vdproj", "{4890DE5C-9F68-40D7-B075-92C8EAB79833}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Results", "Results\Results.csproj", "{9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Config", "Config\Config.csproj", "{743DF7DB-C7B6-42EB-986D-0F485E5588E4}"
@@ -48,6 +46,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GemCard", "GemCard\GemCard.
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Statistics", "Statistics\Statistics.csproj", "{36755E1D-6FC3-4D9C-8DD3-0250D51532E0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Decrypt", "Decrypt\Decrypt.csproj", "{D476ABBE-A455-4476-8A8D-3F6151217B51}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Encrypt", "Encrypt\Encrypt.csproj", "{DA9B09F3-A99D-4883-A954-537560453674}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GenCode128", "GenCode128\GenCode128.csproj", "{32817BF9-E380-4467-9C7F-936F4B122BC7}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -70,12 +74,6 @@ Global
{8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Release|Mixed Platforms.Build.0 = Release|x86
{8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Release|x86.ActiveCfg = Release|x86
{8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Release|x86.Build.0 = Release|x86
{4890DE5C-9F68-40D7-B075-92C8EAB79833}.Debug|Any CPU.ActiveCfg = Debug
{4890DE5C-9F68-40D7-B075-92C8EAB79833}.Debug|Mixed Platforms.ActiveCfg = Debug
{4890DE5C-9F68-40D7-B075-92C8EAB79833}.Debug|x86.ActiveCfg = Debug
{4890DE5C-9F68-40D7-B075-92C8EAB79833}.Release|Any CPU.ActiveCfg = Release
{4890DE5C-9F68-40D7-B075-92C8EAB79833}.Release|Mixed Platforms.ActiveCfg = Release
{4890DE5C-9F68-40D7-B075-92C8EAB79833}.Release|x86.ActiveCfg = Release
{9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
@@ -186,6 +184,36 @@ Global
{36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Release|Mixed Platforms.Build.0 = Release|x86
{36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Release|x86.ActiveCfg = Release|x86
{36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Release|x86.Build.0 = Release|x86
{D476ABBE-A455-4476-8A8D-3F6151217B51}.Debug|Any CPU.ActiveCfg = Debug|x86
{D476ABBE-A455-4476-8A8D-3F6151217B51}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
{D476ABBE-A455-4476-8A8D-3F6151217B51}.Debug|Mixed Platforms.Build.0 = Debug|x86
{D476ABBE-A455-4476-8A8D-3F6151217B51}.Debug|x86.ActiveCfg = Debug|x86
{D476ABBE-A455-4476-8A8D-3F6151217B51}.Debug|x86.Build.0 = Debug|x86
{D476ABBE-A455-4476-8A8D-3F6151217B51}.Release|Any CPU.ActiveCfg = Release|x86
{D476ABBE-A455-4476-8A8D-3F6151217B51}.Release|Mixed Platforms.ActiveCfg = Release|x86
{D476ABBE-A455-4476-8A8D-3F6151217B51}.Release|Mixed Platforms.Build.0 = Release|x86
{D476ABBE-A455-4476-8A8D-3F6151217B51}.Release|x86.ActiveCfg = Release|x86
{D476ABBE-A455-4476-8A8D-3F6151217B51}.Release|x86.Build.0 = Release|x86
{DA9B09F3-A99D-4883-A954-537560453674}.Debug|Any CPU.ActiveCfg = Debug|x86
{DA9B09F3-A99D-4883-A954-537560453674}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
{DA9B09F3-A99D-4883-A954-537560453674}.Debug|Mixed Platforms.Build.0 = Debug|x86
{DA9B09F3-A99D-4883-A954-537560453674}.Debug|x86.ActiveCfg = Debug|x86
{DA9B09F3-A99D-4883-A954-537560453674}.Debug|x86.Build.0 = Debug|x86
{DA9B09F3-A99D-4883-A954-537560453674}.Release|Any CPU.ActiveCfg = Release|x86
{DA9B09F3-A99D-4883-A954-537560453674}.Release|Mixed Platforms.ActiveCfg = Release|x86
{DA9B09F3-A99D-4883-A954-537560453674}.Release|Mixed Platforms.Build.0 = Release|x86
{DA9B09F3-A99D-4883-A954-537560453674}.Release|x86.ActiveCfg = Release|x86
{DA9B09F3-A99D-4883-A954-537560453674}.Release|x86.Build.0 = Release|x86
{32817BF9-E380-4467-9C7F-936F4B122BC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{32817BF9-E380-4467-9C7F-936F4B122BC7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{32817BF9-E380-4467-9C7F-936F4B122BC7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{32817BF9-E380-4467-9C7F-936F4B122BC7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{32817BF9-E380-4467-9C7F-936F4B122BC7}.Debug|x86.ActiveCfg = Debug|Any CPU
{32817BF9-E380-4467-9C7F-936F4B122BC7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{32817BF9-E380-4467-9C7F-936F4B122BC7}.Release|Any CPU.Build.0 = Release|Any CPU
{32817BF9-E380-4467-9C7F-936F4B122BC7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{32817BF9-E380-4467-9C7F-936F4B122BC7}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{32817BF9-E380-4467-9C7F-936F4B122BC7}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
-176
View File
@@ -1,176 +0,0 @@
///
/// Copyright (c) 2013-2015 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace TBF
{
/// <summary>
/// Data types and orientation of the table layout panel attached data.
/// </summary>
public enum Arrangement
{
RowOfIntegers,
RowOfDoubles,
RowOfStrings,
ColumnOfIntegers,
ColumnOfDoubles,
ColumnOfStrings,
}
/// <summary>
/// This class represents TextBox controls and data modified by them
/// that are attached to (=displayed inside) a TableLayoutPanel control.
/// </summary>
public class AttachedTextBoxes
{
///
/// Private fields
///
int count; /// Number of attached TextBoxes / cells
Arrangement arngmnt; /// Type of attachemnt (see above)
bool isRow; /// true if it is a row
TextBox[] textBoxes; /// TextBox controls to be aded to TableLayoutPanel
int[] intData; /// integer data |
double[] doubleData; /// double data |-> one of these three arrays is used
string[] stringData; /// string data |
/// <summary>
/// Constructor, which creates TextBox controls and adds them to the table layout panel.
/// </summary>
public AttachedTextBoxes(TableLayoutPanel tblLtPnl, Arrangement arngmnt, int firstColumn, int firstRow, int size)
{
this.count = size;
this.arngmnt = arngmnt;
isRow = (arngmnt == Arrangement.RowOfIntegers || arngmnt == Arrangement.RowOfDoubles || arngmnt == Arrangement.RowOfStrings);
textBoxes = new TextBox[count];
intData = new int[count];
doubleData = new double[count];
stringData = new string[count];
for (int i = 0; i < count; i++)
{
textBoxes[i] = new TextBox(); /// Crete a new TextBox control
if (isRow)
{
tblLtPnl.Controls.Add(textBoxes[i], firstColumn + i, firstRow);
}
else
{
tblLtPnl.Controls.Add(textBoxes[i], firstColumn, firstRow + i);
}
}
}
/// <summary>
/// Attached data array size
/// </summary>
public int Count { get { return count; } }
/// <summary>
/// Indexer returning a TextBox
/// </summary>
/// <param name="index">Index</param>
/// <returns>TextBox object reference</returns>
public TextBox this[int index]
{
get
{
if (index < 0 || index >= count)
{
return null;
}
else
{
return textBoxes[index];
}
}
}
/// <summary>
/// Retrieves data from the controls or detects a format error.
/// Wrong format in a cell interrupts data retrieving, so when the first control
/// contains data with wrong format, no data are retrieved at all.
/// </summary>
/// <returns>true if all data have correct format</returns>
public bool ValidateData()
{
switch (arngmnt)
{
case Arrangement.RowOfIntegers:
case Arrangement.ColumnOfIntegers:
for (int i = 0; i < count; i++)
{
if (!Int32.TryParse(textBoxes[i].Text, out intData[i])) return false;
}
return true;
case Arrangement.RowOfDoubles:
case Arrangement.ColumnOfDoubles:
for (int i = 0; i < count; i++)
{
if (!Double.TryParse(textBoxes[i].Text, out doubleData[i])) return false;
}
return true;
case Arrangement.RowOfStrings:
case Arrangement.ColumnOfStrings:
default:
return true;
}
}
/// <summary>
/// The following three methods provide initialization of controls with original data.
/// </summary>
public void SetData(int index, int value)
{
if (index < 0 || index >= count) return;
intData[index] = value;
textBoxes[index].Text = value.ToString();
}
public void SetData(int index, double value)
{
if (index < 0 || index >= count) return;
doubleData[index] = value;
textBoxes[index].Text = value.ToString();
}
public void SetData(int index, string value)
{
if (index < 0 || index >= count) return;
stringData[index] = value;
textBoxes[index].Text = value;
}
/// <summary>
/// The following three methods provide retrieving data from controls.
/// ValidateData() must be called first. The return value must be true.
/// </summary>
public int GetIntData(int index)
{
if (index < 0 || index >= count) return 0;
return intData[index];
}
public double GetDoubleData(int index)
{
if (index < 0 || index >= count) return 0;
return doubleData[index];
}
public string GetStringData(int index)
{
if (index < 0 || index >= count) return null;
return textBoxes[index].Text;
}
}
}
-75
View File
@@ -1,75 +0,0 @@
///
/// Copyright (c) 2013-2015 Sensus Metering Systems
///
using System;
using System.Drawing;
using System.Windows.Forms;
namespace TBF
{
public class BarGraph
{
int originX; /// Left coordinate of the bar
int originY; /// Top coordinate of the bar
int barWidth; /// Bar width, the bar is actualy 1 pixel wider
int barHeight; /// Bar height the bat is actualy 1 pixel higher
Color barColor; /// Bar color
Color backColor; /// Background color (above the bar)
/// Bar border is always black, 1 pixel wide
int barValue; /// The actual bar size (the bar is drawn from bottom)
System.Windows.Forms.Control control;
Rectangle rect;
/// Use this setter to update the bar size
public float FValue
{
get { return (float)barValue/(float)barHeight; }
set
{
Value = (int)(value * (float)barHeight);
control.Invalidate();
}
}
/// Use this setter to update the bar size
public int Value
{
get { return barValue; }
set
{
if (value < 0) barValue = 0;
else if (value >= barHeight) barValue = barHeight;
else barValue = value;
control.Invalidate();
}
}
/// <summary>
/// Constructor
/// </summary>
public BarGraph(System.Windows.Forms.Control control, int originX, int originY, int barWidth, int barHeight, Color barColor, Color backColor)
{
this.control = control;
this.originX = originX;
this.originY = originY;
this.barWidth = barWidth;
this.barHeight = barHeight;
this.barColor = barColor;
this.backColor = backColor;
rect = new Rectangle(originX, originY, barWidth + 1, barHeight + 1);
barValue = 0;
}
/// <summary>
/// Call this function in Form1_Paint(..), pass the arguments without any modifications
/// </summary>
public void Paint(Graphics g)
{
g.FillRectangle(new SolidBrush(backColor), originX + 1, originY + 1, barWidth, barHeight - barValue);
g.FillRectangle(new SolidBrush(barColor), originX + 1, originY + barHeight + 1 - barValue, barWidth, barValue);
g.DrawRectangle(new Pen(Color.Black, 2.0F), originX, originY, barWidth + 1, barHeight + 1);
}
}
}
+8 -2
View File
@@ -1,5 +1,5 @@
///
/// Copyright (c) 2013-2016 Sensus Metering Systems
/// Copyright (c) 2013-2019 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
@@ -71,6 +71,10 @@ namespace TBF.BenchControl.Ambient.Comet
serialPort = new SerialPort(comPortName, ambientCfg.BaudRate, ambientCfg.Parity, ambientCfg.DataBits, ambientCfg.StopBits);
serialPort.Handshake = ambientCfg.Handshake;
serialPort.Open();
if (ambientCfg.SetDtrToOne)
{
serialPort.DtrEnable = true;
}
msrmntTimeStamp = 0;
msrmntState = MsrmntState.Busy;
@@ -107,9 +111,11 @@ namespace TBF.BenchControl.Ambient.Comet
value = (int)byteArr[9] * 256 + (int)byteArr[10];
pressure = (float)value / 10000.0f;
UpdateProcessData(temperature, pressure, humidity);
msrmntTimeStamp = StateMachine.Time;
msrmntState = MsrmntState.Valid;
UpdateProcessData(temperature, pressure, humidity);
log.InfoFormat("Ambient: temperature = {0:F1} C, humidity = {1:F1} %, pressure = {2:F0} mbar", temperature, humidity, 1000 * pressure);
}
}
@@ -25,6 +25,7 @@ namespace TBF.BenchControl.Ambient.Comet
public int DataBits;
public StopBits StopBits;
public Handshake Handshake;
public bool SetDtrToOne;
/// Private parameterless constructor invoked by all other (public) constructors
AmbientCfg()
@@ -37,6 +38,7 @@ namespace TBF.BenchControl.Ambient.Comet
DataBits = 8;
StopBits = System.IO.Ports.StopBits.Two;
Handshake = System.IO.Ports.Handshake.None;
SetDtrToOne = false;
}
public AmbientCfg(IComponentFactory factory)
+187 -173
View File
@@ -31,179 +31,192 @@ namespace TBF.BenchControl.Ambient.Comet
/// </summary>
private void InitializeComponent()
{
this.comPortNrTextBox = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.baudRateLabel = new System.Windows.Forms.Label();
this.baudRateTextBox = new System.Windows.Forms.TextBox();
this.partityLabel = new System.Windows.Forms.Label();
this.dataBitsLabel = new System.Windows.Forms.Label();
this.dataBitsTextBox = new System.Windows.Forms.TextBox();
this.stopBitsLabel = new System.Windows.Forms.Label();
this.handshakeLabel = new System.Windows.Forms.Label();
this.nameTextBox = new System.Windows.Forms.TextBox();
this.nameLabel = new System.Windows.Forms.Label();
this.classNameLabel = new System.Windows.Forms.Label();
this.parityComboBox = new System.Windows.Forms.ComboBox();
this.stopBitsComboBox = new System.Windows.Forms.ComboBox();
this.handshakeComboBox = new System.Windows.Forms.ComboBox();
this.SuspendLayout();
//
// comPortNrTextBox
//
this.comPortNrTextBox.Enabled = false;
this.comPortNrTextBox.Location = new System.Drawing.Point(140, 52);
this.comPortNrTextBox.Name = "comPortNrTextBox";
this.comPortNrTextBox.Size = new System.Drawing.Size(34, 20);
this.comPortNrTextBox.TabIndex = 4;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(29, 55);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(98, 13);
this.label1.TabIndex = 3;
this.label1.Text = "Serial Port Number:";
//
// baudRateLabel
//
this.baudRateLabel.AutoSize = true;
this.baudRateLabel.Location = new System.Drawing.Point(29, 79);
this.baudRateLabel.Name = "baudRateLabel";
this.baudRateLabel.Size = new System.Drawing.Size(58, 13);
this.baudRateLabel.TabIndex = 5;
this.baudRateLabel.Text = "Baud Rate";
//
// baudRateTextBox
//
this.baudRateTextBox.Enabled = false;
this.baudRateTextBox.Location = new System.Drawing.Point(140, 76);
this.baudRateTextBox.Name = "baudRateTextBox";
this.baudRateTextBox.Size = new System.Drawing.Size(130, 20);
this.baudRateTextBox.TabIndex = 6;
//
// partityLabel
//
this.partityLabel.AutoSize = true;
this.partityLabel.Location = new System.Drawing.Point(29, 103);
this.partityLabel.Name = "partityLabel";
this.partityLabel.Size = new System.Drawing.Size(33, 13);
this.partityLabel.TabIndex = 7;
this.partityLabel.Text = "Parity";
//
// dataBitsLabel
//
this.dataBitsLabel.AutoSize = true;
this.dataBitsLabel.Location = new System.Drawing.Point(29, 127);
this.dataBitsLabel.Name = "dataBitsLabel";
this.dataBitsLabel.Size = new System.Drawing.Size(50, 13);
this.dataBitsLabel.TabIndex = 9;
this.dataBitsLabel.Text = "Data Bits";
//
// dataBitsTextBox
//
this.dataBitsTextBox.Enabled = false;
this.dataBitsTextBox.Location = new System.Drawing.Point(140, 124);
this.dataBitsTextBox.Name = "dataBitsTextBox";
this.dataBitsTextBox.Size = new System.Drawing.Size(34, 20);
this.dataBitsTextBox.TabIndex = 10;
//
// stopBitsLabel
//
this.stopBitsLabel.AutoSize = true;
this.stopBitsLabel.Location = new System.Drawing.Point(29, 151);
this.stopBitsLabel.Name = "stopBitsLabel";
this.stopBitsLabel.Size = new System.Drawing.Size(49, 13);
this.stopBitsLabel.TabIndex = 11;
this.stopBitsLabel.Text = "Stop Bits";
//
// handshakeLabel
//
this.handshakeLabel.AutoSize = true;
this.handshakeLabel.Location = new System.Drawing.Point(29, 175);
this.handshakeLabel.Name = "handshakeLabel";
this.handshakeLabel.Size = new System.Drawing.Size(62, 13);
this.handshakeLabel.TabIndex = 13;
this.handshakeLabel.Text = "Handshake";
//
// nameTextBox
//
this.nameTextBox.Enabled = false;
this.nameTextBox.Location = new System.Drawing.Point(140, 28);
this.nameTextBox.Name = "nameTextBox";
this.nameTextBox.Size = new System.Drawing.Size(130, 20);
this.nameTextBox.TabIndex = 2;
//
// nameLabel
//
this.nameLabel.AutoSize = true;
this.nameLabel.Location = new System.Drawing.Point(30, 31);
this.nameLabel.Name = "nameLabel";
this.nameLabel.Size = new System.Drawing.Size(35, 13);
this.nameLabel.TabIndex = 1;
this.nameLabel.Text = "Name";
//
// classNameLabel
//
this.classNameLabel.AutoSize = true;
this.classNameLabel.Location = new System.Drawing.Point(137, 7);
this.classNameLabel.Name = "classNameLabel";
this.classNameLabel.Size = new System.Drawing.Size(83, 13);
this.classNameLabel.TabIndex = 0;
this.classNameLabel.Text = "ComonentName";
//
// parityComboBox
//
this.parityComboBox.Enabled = false;
this.parityComboBox.FormattingEnabled = true;
this.parityComboBox.Location = new System.Drawing.Point(140, 100);
this.parityComboBox.Name = "parityComboBox";
this.parityComboBox.Size = new System.Drawing.Size(130, 21);
this.parityComboBox.TabIndex = 8;
//
// stopBitsComboBox
//
this.stopBitsComboBox.Enabled = false;
this.stopBitsComboBox.FormattingEnabled = true;
this.stopBitsComboBox.Location = new System.Drawing.Point(140, 148);
this.stopBitsComboBox.Name = "stopBitsComboBox";
this.stopBitsComboBox.Size = new System.Drawing.Size(130, 21);
this.stopBitsComboBox.TabIndex = 12;
//
// handshakeComboBox
//
this.handshakeComboBox.Enabled = false;
this.handshakeComboBox.FormattingEnabled = true;
this.handshakeComboBox.Location = new System.Drawing.Point(140, 172);
this.handshakeComboBox.Name = "handshakeComboBox";
this.handshakeComboBox.Size = new System.Drawing.Size(130, 21);
this.handshakeComboBox.TabIndex = 14;
//
// AmbientCfgCtrl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.Control;
this.Controls.Add(this.handshakeComboBox);
this.Controls.Add(this.stopBitsComboBox);
this.Controls.Add(this.parityComboBox);
this.Controls.Add(this.nameTextBox);
this.Controls.Add(this.nameLabel);
this.Controls.Add(this.classNameLabel);
this.Controls.Add(this.handshakeLabel);
this.Controls.Add(this.stopBitsLabel);
this.Controls.Add(this.dataBitsTextBox);
this.Controls.Add(this.dataBitsLabel);
this.Controls.Add(this.partityLabel);
this.Controls.Add(this.baudRateTextBox);
this.Controls.Add(this.baudRateLabel);
this.Controls.Add(this.comPortNrTextBox);
this.Controls.Add(this.label1);
this.Name = "AmbientCfgCtrl";
this.Size = new System.Drawing.Size(300, 240);
this.Load += new System.EventHandler(this.AbbientCfgCtrl_Load);
this.ResumeLayout(false);
this.PerformLayout();
this.comPortNrTextBox = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.baudRateLabel = new System.Windows.Forms.Label();
this.baudRateTextBox = new System.Windows.Forms.TextBox();
this.partityLabel = new System.Windows.Forms.Label();
this.dataBitsLabel = new System.Windows.Forms.Label();
this.dataBitsTextBox = new System.Windows.Forms.TextBox();
this.stopBitsLabel = new System.Windows.Forms.Label();
this.handshakeLabel = new System.Windows.Forms.Label();
this.nameTextBox = new System.Windows.Forms.TextBox();
this.nameLabel = new System.Windows.Forms.Label();
this.classNameLabel = new System.Windows.Forms.Label();
this.parityComboBox = new System.Windows.Forms.ComboBox();
this.stopBitsComboBox = new System.Windows.Forms.ComboBox();
this.handshakeComboBox = new System.Windows.Forms.ComboBox();
this.setDtrCheckBox = new System.Windows.Forms.CheckBox();
this.SuspendLayout();
//
// comPortNrTextBox
//
this.comPortNrTextBox.Enabled = false;
this.comPortNrTextBox.Location = new System.Drawing.Point(140, 52);
this.comPortNrTextBox.Name = "comPortNrTextBox";
this.comPortNrTextBox.Size = new System.Drawing.Size(34, 20);
this.comPortNrTextBox.TabIndex = 4;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(29, 55);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(98, 13);
this.label1.TabIndex = 3;
this.label1.Text = "Serial Port Number:";
//
// baudRateLabel
//
this.baudRateLabel.AutoSize = true;
this.baudRateLabel.Location = new System.Drawing.Point(29, 79);
this.baudRateLabel.Name = "baudRateLabel";
this.baudRateLabel.Size = new System.Drawing.Size(58, 13);
this.baudRateLabel.TabIndex = 5;
this.baudRateLabel.Text = "Baud Rate";
//
// baudRateTextBox
//
this.baudRateTextBox.Enabled = false;
this.baudRateTextBox.Location = new System.Drawing.Point(140, 76);
this.baudRateTextBox.Name = "baudRateTextBox";
this.baudRateTextBox.Size = new System.Drawing.Size(130, 20);
this.baudRateTextBox.TabIndex = 6;
//
// partityLabel
//
this.partityLabel.AutoSize = true;
this.partityLabel.Location = new System.Drawing.Point(29, 103);
this.partityLabel.Name = "partityLabel";
this.partityLabel.Size = new System.Drawing.Size(33, 13);
this.partityLabel.TabIndex = 7;
this.partityLabel.Text = "Parity";
//
// dataBitsLabel
//
this.dataBitsLabel.AutoSize = true;
this.dataBitsLabel.Location = new System.Drawing.Point(29, 127);
this.dataBitsLabel.Name = "dataBitsLabel";
this.dataBitsLabel.Size = new System.Drawing.Size(50, 13);
this.dataBitsLabel.TabIndex = 9;
this.dataBitsLabel.Text = "Data Bits";
//
// dataBitsTextBox
//
this.dataBitsTextBox.Enabled = false;
this.dataBitsTextBox.Location = new System.Drawing.Point(140, 124);
this.dataBitsTextBox.Name = "dataBitsTextBox";
this.dataBitsTextBox.Size = new System.Drawing.Size(34, 20);
this.dataBitsTextBox.TabIndex = 10;
//
// stopBitsLabel
//
this.stopBitsLabel.AutoSize = true;
this.stopBitsLabel.Location = new System.Drawing.Point(29, 151);
this.stopBitsLabel.Name = "stopBitsLabel";
this.stopBitsLabel.Size = new System.Drawing.Size(49, 13);
this.stopBitsLabel.TabIndex = 11;
this.stopBitsLabel.Text = "Stop Bits";
//
// handshakeLabel
//
this.handshakeLabel.AutoSize = true;
this.handshakeLabel.Location = new System.Drawing.Point(29, 175);
this.handshakeLabel.Name = "handshakeLabel";
this.handshakeLabel.Size = new System.Drawing.Size(62, 13);
this.handshakeLabel.TabIndex = 13;
this.handshakeLabel.Text = "Handshake";
//
// nameTextBox
//
this.nameTextBox.Enabled = false;
this.nameTextBox.Location = new System.Drawing.Point(140, 28);
this.nameTextBox.Name = "nameTextBox";
this.nameTextBox.Size = new System.Drawing.Size(130, 20);
this.nameTextBox.TabIndex = 2;
//
// nameLabel
//
this.nameLabel.AutoSize = true;
this.nameLabel.Location = new System.Drawing.Point(30, 31);
this.nameLabel.Name = "nameLabel";
this.nameLabel.Size = new System.Drawing.Size(35, 13);
this.nameLabel.TabIndex = 1;
this.nameLabel.Text = "Name";
//
// classNameLabel
//
this.classNameLabel.AutoSize = true;
this.classNameLabel.Location = new System.Drawing.Point(137, 7);
this.classNameLabel.Name = "classNameLabel";
this.classNameLabel.Size = new System.Drawing.Size(83, 13);
this.classNameLabel.TabIndex = 0;
this.classNameLabel.Text = "ComonentName";
//
// parityComboBox
//
this.parityComboBox.Enabled = false;
this.parityComboBox.FormattingEnabled = true;
this.parityComboBox.Location = new System.Drawing.Point(140, 100);
this.parityComboBox.Name = "parityComboBox";
this.parityComboBox.Size = new System.Drawing.Size(130, 21);
this.parityComboBox.TabIndex = 8;
//
// stopBitsComboBox
//
this.stopBitsComboBox.Enabled = false;
this.stopBitsComboBox.FormattingEnabled = true;
this.stopBitsComboBox.Location = new System.Drawing.Point(140, 148);
this.stopBitsComboBox.Name = "stopBitsComboBox";
this.stopBitsComboBox.Size = new System.Drawing.Size(130, 21);
this.stopBitsComboBox.TabIndex = 12;
//
// handshakeComboBox
//
this.handshakeComboBox.Enabled = false;
this.handshakeComboBox.FormattingEnabled = true;
this.handshakeComboBox.Location = new System.Drawing.Point(140, 172);
this.handshakeComboBox.Name = "handshakeComboBox";
this.handshakeComboBox.Size = new System.Drawing.Size(130, 21);
this.handshakeComboBox.TabIndex = 14;
//
// setDtrCheckBox
//
this.setDtrCheckBox.AutoSize = true;
this.setDtrCheckBox.Enabled = false;
this.setDtrCheckBox.Location = new System.Drawing.Point(140, 201);
this.setDtrCheckBox.Name = "setDtrCheckBox";
this.setDtrCheckBox.Size = new System.Drawing.Size(89, 17);
this.setDtrCheckBox.TabIndex = 15;
this.setDtrCheckBox.Text = "Set DTR to 1";
this.setDtrCheckBox.UseVisualStyleBackColor = true;
//
// AmbientCfgCtrl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.Control;
this.Controls.Add(this.setDtrCheckBox);
this.Controls.Add(this.handshakeComboBox);
this.Controls.Add(this.stopBitsComboBox);
this.Controls.Add(this.parityComboBox);
this.Controls.Add(this.nameTextBox);
this.Controls.Add(this.nameLabel);
this.Controls.Add(this.classNameLabel);
this.Controls.Add(this.handshakeLabel);
this.Controls.Add(this.stopBitsLabel);
this.Controls.Add(this.dataBitsTextBox);
this.Controls.Add(this.dataBitsLabel);
this.Controls.Add(this.partityLabel);
this.Controls.Add(this.baudRateTextBox);
this.Controls.Add(this.baudRateLabel);
this.Controls.Add(this.comPortNrTextBox);
this.Controls.Add(this.label1);
this.Name = "AmbientCfgCtrl";
this.Size = new System.Drawing.Size(300, 240);
this.Load += new System.EventHandler(this.AbbientCfgCtrl_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
@@ -224,6 +237,7 @@ namespace TBF.BenchControl.Ambient.Comet
private System.Windows.Forms.ComboBox parityComboBox;
private System.Windows.Forms.ComboBox stopBitsComboBox;
private System.Windows.Forms.ComboBox handshakeComboBox;
private System.Windows.Forms.CheckBox setDtrCheckBox;
}
}
@@ -110,6 +110,7 @@ namespace TBF.BenchControl.Ambient.Comet
dataBitsTextBox.Text = config.DataBits.ToString();
stopBitsComboBox.Text = config.StopBits.ToString();
handshakeComboBox.Text = config.Handshake.ToString();
setDtrCheckBox.Checked = config.SetDtrToOne;
}
public void Unlock()
@@ -121,6 +122,7 @@ namespace TBF.BenchControl.Ambient.Comet
dataBitsTextBox.Enabled = true;
stopBitsComboBox.Enabled = true;
handshakeComboBox.Enabled = true;
setDtrCheckBox.Enabled = true;
}
public CfgUpdateFlags UpdateCfg()
@@ -136,6 +138,7 @@ namespace TBF.BenchControl.Ambient.Comet
config.DataBits = int.Parse(dataBitsTextBox.Text);
config.StopBits = GetStopBits(stopBitsComboBox.SelectedItem.ToString());
config.Handshake = GetHandshake(handshakeComboBox.SelectedItem.ToString());
config.SetDtrToOne = setDtrCheckBox.Checked;
return flags;
}
@@ -0,0 +1,38 @@
///
/// Copyright (c) 2019 Sensus Slovensko a.s.
///
using System;
using Users;
using log4net;
namespace TBF.BenchControl.BackupAndSecurity.Default
{
/// <summary>
/// Holds backup and security options.
/// </summary>
public class Component : ComponentBase, GenericDevices.IBackupAndSecurity
{
private static readonly ILog log = LogManager.GetLogger(typeof(Component));
public override string ToString() { return string.Format("BackupAndSecurity.Default({0})", Cfg.ToString(1)); }
readonly ComponentCfg myCfg;
public int MinPasswdLength { get { return myCfg.MinPasswdLength; } }
public int PasswdExpirationPeriodDays { get { return myCfg.PasswdExpirationPeriodDays; } }
public Component()
{
}
public Component(Generic.IComponentCfg cfg)
: base(cfg)
{
myCfg = cfg as ComponentCfg;
GlobalData.MinPasswdLength = myCfg.MinPasswdLength;
GlobalData.PasswdExpirationPeriodDays = myCfg.PasswdExpirationPeriodDays;
log.Debug(this.ToString());
}
}
}
@@ -0,0 +1,125 @@
///
/// Copyright (c) 2019 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using Config.Entities;
using TBF.BenchControl.Generic;
namespace TBF.BenchControl.BackupAndSecurity.Default
{
/// <summary>
/// Holds backup and security options - serializable configuration.
/// </summary>
public class ComponentCfg : ComponentCfgBase, Generic.IComponentCfg, Config.Entities.IParamsProvider
{
public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(ComponentCfg) })[0];
public override XmlSerializer GetSerializer() { return Serializer; }
public IComponentCfgCtrl GetControl() { return new Configs.ParamsProvider.ComponentCfgCtrl(this, null); }
///
/// Serialized parameters
///
public int MinPasswdLength;
public int PasswdExpirationPeriodDays; /// 0 = validity is not limited
/// Private parameterless constructor invoked by all other (public) constructors
ComponentCfg() {}
public ComponentCfg(IComponentFactory factory)
: this()
{
Factory = factory;
Name = "BackupAndSecurity";
ParentName = string.Empty;
InitializeAll();
}
public string ComponentName { get { return Name; } }
public void InitializeAll()
{
MinPasswdLength = 6;
PasswdExpirationPeriodDays = 0;
}
string[] paramNames = new string[]
{
"Minimum password length (characters)",
"Password expiration period (days)",
};
public string ParamName(int i) { return paramNames[i]; }
public int ParamsCount() { return paramNames.Length; }
public IList<string> ParamValues(int i)
{
return null;
}
public string ToString(int i)
{
if (i == -1)
{
return string.Format("{0}: Min. password length = {1} characters, Password expiration period = {2} days", Name, MinPasswdLength, PasswdExpirationPeriodDays);
}
switch (i)
{
case 0: return MinPasswdLength.ToString();
case 1: return PasswdExpirationPeriodDays.ToString();;
default: return string.Empty;
}
}
public CfgUpdateFlags UpdateParam(int i, string strValue)
{
switch (i)
{
case 0: MinPasswdLength = int.Parse(strValue); return CfgUpdateFlags.RestartRqrd;
case 1: PasswdExpirationPeriodDays = int.Parse(strValue); return CfgUpdateFlags.RestartRqrd;
default: return CfgUpdateFlags.None;
}
}
public bool ValidateParam(int i, string strValue, out string message)
{
message = string.Empty;
int idummy;
switch (i)
{
case 0:
case 1:
/// Positive integers and zero are allowed
if (int.TryParse(strValue, out idummy) && (idummy >= 0)) return true;
break;
default:
message = "Invalid index";
return false;
}
message = ParamName(i) + " is invalid";
return false;
}
void CopyContentTo(ComponentCfg prms)
{
prms.MinPasswdLength = this.MinPasswdLength;
prms.PasswdExpirationPeriodDays = this.PasswdExpirationPeriodDays;
}
public Config.Entities.IParamsProvider Clone()
{
ComponentCfg pars = new ComponentCfg();
CopyContentTo(pars);
return pars;
}
public bool UpdateEmbeddedDbEntity()
{
return true; /// =OK, do nothing
}
}
}
@@ -0,0 +1,26 @@
///
/// Copyright (c) 2019 Sensus Slovensko a.s.
///
using System.Collections.Generic;
using TBF.BenchControl.Generic;
namespace TBF.BenchControl.BackupAndSecurity.Default
{
public class ComponentFactory : IComponentFactory
{
public string ClassName { get { return this.GetType().Namespace.Substring(17); } }
public void ResetStaticProperties() { Component.ResetStaticProperties(); }
public IComponent DummyComponent() { return new Component(); }
public IComponent GetComponent(IComponentCfg cfg, IList<IComponent> components) { return new Component(cfg); }
public IComponentCfg DefaultConfig() { return new ComponentCfg(this); }
public IComponentCfg CmpntCfgFromCmpntEntity(Config.Entities.Component component)
{
return ComponentCfgBase.CreateFromDbEntity(ComponentCfg.Serializer, component, this);
}
}
}
+5 -1
View File
@@ -20,7 +20,11 @@ namespace TBF.BenchControl
public int ItemNr { get { return cfg.ItemNr; } }
public DebugMode DebugLevel { get { return cfg.DebugLevel; } set { cfg.DebugLevel = value; } }
public LogLevel LogLevel { get { return cfg.LogLevel; } }
public IList<MeasurementCorrection> Corrections { get { return cfg.Corrections; } }
public IList<MeasurementCorrection> Corrections
{
get { return cfg.Corrections; }
set { cfg.Corrections = value; }
}
/// Constructor, components created in this way is used by
@@ -1,7 +1,7 @@
///
/// Copyright (c) 2013-2015 Sensus Metering Systems
/// Copyright (c) 2013-2015 Sensus Slovensko a.s.
///
namespace TBF
namespace TBF.BenchControl
{
partial class ComponentParametersDlg
{
@@ -32,7 +32,7 @@ namespace TBF
private void InitializeComponent()
{
this.splitContainer = new System.Windows.Forms.SplitContainer();
this.sharedButtons = new TBF.UiControls.SharedButtons();
this.sharedButtons = new TBF.UI.Shared.SharedButtons();
((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit();
this.splitContainer.Panel2.SuspendLayout();
this.splitContainer.SuspendLayout();
@@ -84,6 +84,6 @@ namespace TBF
#endregion
private System.Windows.Forms.SplitContainer splitContainer;
private UiControls.SharedButtons sharedButtons;
private TBF.UI.Shared.SharedButtons sharedButtons;
}
}
@@ -1,5 +1,5 @@
///
/// Copyright (c) 2013-2015 Sensus Metering Systems
/// Copyright (c) 2013-2015 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
@@ -7,10 +7,10 @@ using System.Windows.Forms;
using Config.Entities;
using TBF.BenchControl;
using TBF.BenchControl.Generic;
using TBF.UiControls;
using TBF.Resources;
using TBF.UI.Shared;
namespace TBF
namespace TBF.BenchControl
{
public partial class ComponentParametersDlg : Form
{
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,431 @@
///
/// Copyright (c) 2019 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using log4net;
using TBF.Resources;
namespace TBF.BenchControl.DataEntry.Fewa
{
public partial class CycleBeginningForm : Form, GenericDevices.IHasCompleted
{
private static readonly ILog log = LogManager.GetLogger(typeof(CycleBeginningForm));
/// <summary> Number of water meters </summary>
public readonly int WMsCount;
/// To be retrieved after the form is closed
public string PurchaseOrder;
public string[] SNText;
public string[] SN2Text;
string[] suffixText;
public bool[] Disabled;
/// Set to 'true' when the form closes
public bool Completed { get { return completed; } }
bool completed;
/// <summary> Number of text boxes for serial numbers </summary>
int textBoxesCount;
Label[] labels;
ComboBox[] comboBoxes;
ComboBox[] suffixComboBoxes;
CheckBox[] checkBoxes;
IList<ComboBox> enabledComboBoxes;
/// <summary> Parameterless constructor for common functionality </summary>
public CycleBeginningForm()
{
InitializeComponent();
ControlBox = false;
textBoxesCount = 24;
labels = new Label[]
{
label1, label2, label3, label4, label5, label6, label7, label8, label9, label10,
label11, label12, label13, label14, label15, label16, label17, label18, label19, label20,
label21, label22, label23, label24,
};
comboBoxes = new ComboBox[]
{
comboBox1, comboBox2, comboBox3, comboBox4, comboBox5, comboBox6,
comboBox7, comboBox8, comboBox9, comboBox10, comboBox11, comboBox12,
comboBox13, comboBox14, comboBox15, comboBox16, comboBox17, comboBox18,
comboBox19, comboBox20, comboBox21, comboBox22, comboBox23, comboBox24,
};
suffixComboBoxes = new ComboBox[]
{
suffixComboBox1, suffixComboBox2, suffixComboBox3, suffixComboBox4, suffixComboBox5, suffixComboBox6,
suffixComboBox7, suffixComboBox8, suffixComboBox9, suffixComboBox10, suffixComboBox11, suffixComboBox12,
suffixComboBox13, suffixComboBox14, suffixComboBox15, suffixComboBox16, suffixComboBox17, suffixComboBox18,
suffixComboBox19, suffixComboBox20, suffixComboBox21, suffixComboBox22, suffixComboBox23, suffixComboBox24,
};
checkBoxes = new CheckBox[]
{
checkBox1, checkBox2, checkBox3, checkBox4, checkBox5, checkBox6,
checkBox7, checkBox8, checkBox9, checkBox10, checkBox11, checkBox12,
checkBox13, checkBox14, checkBox15, checkBox16, checkBox17, checkBox18,
checkBox19, checkBox20, checkBox21, checkBox22, checkBox23, checkBox24,
};
enabledComboBoxes = new List<ComboBox>();
completed = false;
StartForceCloseHandler();
}
/// <summary>
/// Constructor
/// </summary>
/// <param name="waterMetersCount">Number of text boxes for serial numbers</param>
public CycleBeginningForm(int waterMetersCount)
: this()
{
this.WMsCount = waterMetersCount;
SNText = new string[WMsCount];
SN2Text = new string[WMsCount];
suffixText = new string[WMsCount];
Disabled = new bool[WMsCount];
ShuffleTextBoxes(Config.Data.WMsCount, Config.Data.LineSize);
//Height = 147 + WaterMetersCount * 90;
}
/// <summary>
/// Make sure the layout of labels/text boxes on the screen
/// corresponds to the layout of watermeters of the test bench.
/// </summary>
/// <param name="wmsCount">Number of watermeters</param>
/// <param name="lineSize">Number of watermeters in one line</param>
void ShuffleTextBoxes(int wmsCount, int lineSize)
{
if (wmsCount < textBoxesCount && lineSize > 0)
{
int nrLines = (wmsCount + lineSize - 1) / lineSize;
int gap = (textBoxesCount - wmsCount) / nrLines;
int dest = 0;
for (int l = 0; l < nrLines; l++)
{
for (int i = 0; i < lineSize; i++)
{
labels[dest] = labels[l * lineSize + l * gap + i];
comboBoxes[dest] = comboBoxes[l * lineSize + l * gap + i];
suffixComboBoxes[dest] = suffixComboBoxes[l * lineSize + l * gap + i];
checkBoxes[dest] = checkBoxes[l * lineSize + l * gap + i];
dest++;
}
}
textBoxesCount = wmsCount;
}
}
private void CycleBeginningForm_Load(object sender, EventArgs e)
{
Localize();
PrepareOrderCombo(orderComboBox);
PreparePrefixCombo(prefixComboBox);
for (int i = 0; i < textBoxesCount; i++)
{
if (Program.LocalSettings.LastSNTextsCount == textBoxesCount)
{
comboBoxes[i].Items.Add((Program.LocalSettings.LastSNTexts[i] == null) ? string.Empty : Program.LocalSettings.LastSNTexts[i]);
suffixComboBoxes[i].Items.Add((Program.LocalSettings.LastAuxSNTexts[i] == null) ? string.Empty : Program.LocalSettings.LastAuxSNTexts[i]);
}
labels[i].Visible = comboBoxes[i].Visible = suffixComboBoxes[i].Visible = checkBoxes[i].Visible = true;
enabledComboBoxes.Add(comboBoxes[i]);
enabledComboBoxes.Add(suffixComboBoxes[i]);
}
}
void Localize()
{
Text = Strings.Data;
orderGroupBox.Text = Strings.Purchase_order;
for (int i = 0; i < textBoxesCount; i++)
{
labels[i].Text = Strings.Serial_Number + " " + (i + 1).ToString();
}
okButton.Text = Strings.OkBtnText;
clearButton.Text = Strings.ClearBtnText;
}
/// <summary>
/// Load Purchase order combo box items from the LocalSettings PurchaseOrderHistory array
/// </summary>
/// <param name="orderComboBox">Puchase order ComboBox</param>
void PrepareOrderCombo(ComboBox orderComboBox)
{
for (int i = 0; i < Program.LocalSettings.PurchaseOrderHistoryCount; i++)
{
orderComboBox.Items.Add(Program.LocalSettings.PurchaseOrderHistory[i]);
}
if (orderComboBox.Items.Count > 0) orderComboBox.Text = orderComboBox.Items[0].ToString();
}
/// <summary>
/// Load Prefix combo box items from the LocalSettings PrefixHistory array
/// </summary>
/// <param name="orderComboBox">Prefix ComboBox</param>
void PreparePrefixCombo(ComboBox prefixComboBox)
{
for (int i = 0; i < Program.LocalSettings.PrefixHistoryCount; i++)
{
prefixComboBox.Items.Add(Program.LocalSettings.PrefixHistory[i]);
}
if (prefixComboBox.Items.Count > 0) prefixComboBox.Text = prefixComboBox.Items[0].ToString();
}
private void okButton_Click(object sender, EventArgs e)
{
for (int i = 0; i < Math.Min(WMsCount, textBoxesCount); i++)
{
SNText[i] = comboBoxes[i].Text;
suffixText[i] = suffixComboBoxes[i].Text;
SN2Text[i] = string.Format("{0}{1}", prefixComboBox.Text, suffixComboBoxes[i].Text);
Disabled[i] = !checkBoxes[i].Checked;
}
PurchaseOrder = orderComboBox.Text;
Program.LocalSettings.UpdateHistory(orderComboBox.Text, ref Program.LocalSettings.PurchaseOrderHistory);
Program.LocalSettings.UpdateHistory(prefixComboBox.Text, ref Program.LocalSettings.PrefixHistory);
Program.LocalSettings.LastSNTexts = SNText;
Program.LocalSettings.LastAuxSNTexts = suffixText;
completed = true;
Close();
}
private void clearButton_Click(object sender, EventArgs e)
{
for (int i = 0; i < Math.Min(WMsCount, textBoxesCount); i++)
{
comboBoxes[i].Text = string.Empty;
checkBoxes[i].Checked = false;
}
}
private void comboBox1_SelectedIndexChanged(object s, EventArgs e) { if (comboBox1.Text.Equals(comboBox1.Items[0])) UpdateAllCombos(); }
private void comboBox2_SelectedIndexChanged(object s, EventArgs e) { if (comboBox2.Text.Equals(comboBox2.Items[0])) UpdateAllCombos(); }
private void comboBox3_SelectedIndexChanged(object s, EventArgs e) { if (comboBox3.Text.Equals(comboBox3.Items[0])) UpdateAllCombos(); }
private void comboBox4_SelectedIndexChanged(object s, EventArgs e) { if (comboBox4.Text.Equals(comboBox4.Items[0])) UpdateAllCombos(); }
private void comboBox5_SelectedIndexChanged(object s, EventArgs e) { if (comboBox5.Text.Equals(comboBox5.Items[0])) UpdateAllCombos(); }
private void comboBox6_SelectedIndexChanged(object s, EventArgs e) { if (comboBox6.Text.Equals(comboBox6.Items[0])) UpdateAllCombos(); }
private void comboBox7_SelectedIndexChanged(object s, EventArgs e) { if (comboBox7.Text.Equals(comboBox7.Items[0])) UpdateAllCombos(); }
private void comboBox8_SelectedIndexChanged(object s, EventArgs e) { if (comboBox8.Text.Equals(comboBox8.Items[0])) UpdateAllCombos(); }
private void comboBox9_SelectedIndexChanged(object s, EventArgs e) { if (comboBox9.Text.Equals(comboBox9.Items[0])) UpdateAllCombos(); }
private void comboBox10_SelectedIndexChanged(object s, EventArgs e) { if (comboBox10.Text.Equals(comboBox10.Items[0])) UpdateAllCombos(); }
private void comboBox11_SelectedIndexChanged(object s, EventArgs e) { if (comboBox11.Text.Equals(comboBox11.Items[0])) UpdateAllCombos(); }
private void comboBox12_SelectedIndexChanged(object s, EventArgs e) { if (comboBox12.Text.Equals(comboBox12.Items[0])) UpdateAllCombos(); }
private void comboBox13_SelectedIndexChanged(object s, EventArgs e) { if (comboBox13.Text.Equals(comboBox13.Items[0])) UpdateAllCombos(); }
private void comboBox14_SelectedIndexChanged(object s, EventArgs e) { if (comboBox14.Text.Equals(comboBox14.Items[0])) UpdateAllCombos(); }
private void comboBox15_SelectedIndexChanged(object s, EventArgs e) { if (comboBox15.Text.Equals(comboBox15.Items[0])) UpdateAllCombos(); }
private void comboBox16_SelectedIndexChanged(object s, EventArgs e) { if (comboBox16.Text.Equals(comboBox16.Items[0])) UpdateAllCombos(); }
private void comboBox17_SelectedIndexChanged(object s, EventArgs e) { if (comboBox17.Text.Equals(comboBox17.Items[0])) UpdateAllCombos(); }
private void comboBox18_SelectedIndexChanged(object s, EventArgs e) { if (comboBox18.Text.Equals(comboBox18.Items[0])) UpdateAllCombos(); }
private void comboBox19_SelectedIndexChanged(object s, EventArgs e) { if (comboBox19.Text.Equals(comboBox19.Items[0])) UpdateAllCombos(); }
private void comboBox20_SelectedIndexChanged(object s, EventArgs e) { if (comboBox20.Text.Equals(comboBox20.Items[0])) UpdateAllCombos(); }
private void comboBox21_SelectedIndexChanged(object s, EventArgs e) { if (comboBox21.Text.Equals(comboBox21.Items[0])) UpdateAllCombos(); }
private void comboBox22_SelectedIndexChanged(object s, EventArgs e) { if (comboBox22.Text.Equals(comboBox22.Items[0])) UpdateAllCombos(); }
private void comboBox23_SelectedIndexChanged(object s, EventArgs e) { if (comboBox23.Text.Equals(comboBox23.Items[0])) UpdateAllCombos(); }
private void comboBox24_SelectedIndexChanged(object s, EventArgs e) { if (comboBox24.Text.Equals(comboBox24.Items[0])) UpdateAllCombos(); }
private void suffixComboBox1_SelectedIndexChanged(object s, EventArgs e) { if (suffixComboBox1.Text.Equals(suffixComboBox1.Items[0])) UpdateAllCombos(); }
private void suffixComboBox2_SelectedIndexChanged(object s, EventArgs e) { if (suffixComboBox2.Text.Equals(suffixComboBox2.Items[0])) UpdateAllCombos(); }
private void suffixComboBox3_SelectedIndexChanged(object s, EventArgs e) { if (suffixComboBox3.Text.Equals(suffixComboBox3.Items[0])) UpdateAllCombos(); }
private void suffixComboBox4_SelectedIndexChanged(object s, EventArgs e) { if (suffixComboBox4.Text.Equals(suffixComboBox4.Items[0])) UpdateAllCombos(); }
private void suffixComboBox5_SelectedIndexChanged(object s, EventArgs e) { if (suffixComboBox5.Text.Equals(suffixComboBox5.Items[0])) UpdateAllCombos(); }
private void suffixComboBox6_SelectedIndexChanged(object s, EventArgs e) { if (suffixComboBox6.Text.Equals(suffixComboBox6.Items[0])) UpdateAllCombos(); }
private void suffixComboBox7_SelectedIndexChanged(object s, EventArgs e) { if (suffixComboBox7.Text.Equals(suffixComboBox7.Items[0])) UpdateAllCombos(); }
private void suffixComboBox8_SelectedIndexChanged(object s, EventArgs e) { if (suffixComboBox8.Text.Equals(suffixComboBox8.Items[0])) UpdateAllCombos(); }
private void suffixComboBox9_SelectedIndexChanged(object s, EventArgs e) { if (suffixComboBox9.Text.Equals(suffixComboBox9.Items[0])) UpdateAllCombos(); }
private void suffixComboBox10_SelectedIndexChanged(object s, EventArgs e) { if (suffixComboBox10.Text.Equals(suffixComboBox10.Items[0])) UpdateAllCombos(); }
private void suffixComboBox11_SelectedIndexChanged(object s, EventArgs e) { if (suffixComboBox11.Text.Equals(suffixComboBox11.Items[0])) UpdateAllCombos(); }
private void suffixComboBox12_SelectedIndexChanged(object s, EventArgs e) { if (suffixComboBox12.Text.Equals(suffixComboBox12.Items[0])) UpdateAllCombos(); }
private void suffixComboBox13_SelectedIndexChanged(object s, EventArgs e) { if (suffixComboBox13.Text.Equals(suffixComboBox13.Items[0])) UpdateAllCombos(); }
private void suffixComboBox14_SelectedIndexChanged(object s, EventArgs e) { if (suffixComboBox14.Text.Equals(suffixComboBox14.Items[0])) UpdateAllCombos(); }
private void suffixComboBox15_SelectedIndexChanged(object s, EventArgs e) { if (suffixComboBox15.Text.Equals(suffixComboBox15.Items[0])) UpdateAllCombos(); }
private void suffixComboBox16_SelectedIndexChanged(object s, EventArgs e) { if (suffixComboBox16.Text.Equals(suffixComboBox16.Items[0])) UpdateAllCombos(); }
private void suffixComboBox17_SelectedIndexChanged(object s, EventArgs e) { if (suffixComboBox17.Text.Equals(suffixComboBox17.Items[0])) UpdateAllCombos(); }
private void suffixComboBox18_SelectedIndexChanged(object s, EventArgs e) { if (suffixComboBox18.Text.Equals(suffixComboBox18.Items[0])) UpdateAllCombos(); }
private void suffixComboBox19_SelectedIndexChanged(object s, EventArgs e) { if (suffixComboBox19.Text.Equals(suffixComboBox19.Items[0])) UpdateAllCombos(); }
private void suffixComboBox20_SelectedIndexChanged(object s, EventArgs e) { if (suffixComboBox20.Text.Equals(suffixComboBox20.Items[0])) UpdateAllCombos(); }
private void suffixComboBox21_SelectedIndexChanged(object s, EventArgs e) { if (suffixComboBox21.Text.Equals(suffixComboBox21.Items[0])) UpdateAllCombos(); }
private void suffixComboBox22_SelectedIndexChanged(object s, EventArgs e) { if (suffixComboBox22.Text.Equals(suffixComboBox22.Items[0])) UpdateAllCombos(); }
private void suffixComboBox23_SelectedIndexChanged(object s, EventArgs e) { if (suffixComboBox23.Text.Equals(suffixComboBox23.Items[0])) UpdateAllCombos(); }
private void suffixComboBox24_SelectedIndexChanged(object s, EventArgs e) { if (suffixComboBox24.Text.Equals(suffixComboBox24.Items[0])) UpdateAllCombos(); }
/// <summary>
/// When one combo box is updated using drop-down menu, all combo boxes
/// are updated by this function.
/// </summary>
private void UpdateAllCombos()
{
for (int i = 0; i < Math.Min(WMsCount, textBoxesCount); i++)
{
if (Program.LocalSettings.LastSNTextsCount > i) comboBoxes[i].Text = Program.LocalSettings.LastSNTexts[i];
if (Program.LocalSettings.LastAuxSNTextsCount > i) suffixComboBoxes[i].Text = Program.LocalSettings.LastAuxSNTexts[i];
checkBoxes[i].Checked = !string.IsNullOrEmpty(comboBoxes[i].Text) || !string.IsNullOrEmpty(suffixComboBoxes[i].Text);
}
}
private void comboBox1_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox1); }
private void comboBox2_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox2); }
private void comboBox3_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox3); }
private void comboBox4_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox4); }
private void comboBox5_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox5); }
private void comboBox6_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox6); }
private void comboBox7_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox7); }
private void comboBox8_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox8); }
private void comboBox9_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox9); }
private void comboBox10_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox10); }
private void comboBox11_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox11); }
private void comboBox12_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox12); }
private void comboBox13_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox13); }
private void comboBox14_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox14); }
private void comboBox15_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox15); }
private void comboBox16_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox16); }
private void comboBox17_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox17); }
private void comboBox18_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox18); }
private void comboBox19_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox19); }
private void comboBox20_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox20); }
private void comboBox21_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox21); }
private void comboBox22_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox22); }
private void comboBox23_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox23); }
private void comboBox24_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox24); }
private void suffixComboBox1_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, suffixComboBox1); }
private void suffixComboBox2_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, suffixComboBox2); }
private void suffixComboBox3_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, suffixComboBox3); }
private void suffixComboBox4_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, suffixComboBox4); }
private void suffixComboBox5_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, suffixComboBox5); }
private void suffixComboBox6_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, suffixComboBox6); }
private void suffixComboBox7_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, suffixComboBox7); }
private void suffixComboBox8_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, suffixComboBox8); }
private void suffixComboBox9_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, suffixComboBox9); }
private void suffixComboBox10_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, suffixComboBox10); }
private void suffixComboBox11_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, suffixComboBox11); }
private void suffixComboBox12_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, suffixComboBox12); }
private void suffixComboBox13_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, suffixComboBox13); }
private void suffixComboBox14_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, suffixComboBox14); }
private void suffixComboBox15_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, suffixComboBox15); }
private void suffixComboBox16_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, suffixComboBox16); }
private void suffixComboBox17_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, suffixComboBox17); }
private void suffixComboBox18_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, suffixComboBox18); }
private void suffixComboBox19_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, suffixComboBox19); }
private void suffixComboBox20_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, suffixComboBox20); }
private void suffixComboBox21_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, suffixComboBox21); }
private void suffixComboBox22_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, suffixComboBox22); }
private void suffixComboBox23_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, suffixComboBox23); }
private void suffixComboBox24_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, suffixComboBox24); }
/// <summary>
/// Process a key press within any enabled text boxe
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
/// <param name="currentFocusOwner">TextBox control which received the event</param>
private void ProcKeyPress(object sender, KeyPressEventArgs e, ComboBox currentFocusOwner)
{
if (e.KeyChar == '+')
{
/// Process '+' key ..... Form completed
okButton_Click(sender, e);
}
if (e.KeyChar == '\r')
{
/// Process <enter> key ..... Next text field
if (enabledComboBoxes.Count < 2) return; /// There is just one enabled textbox
for (int i = 0; i < enabledComboBoxes.Count; i++)
{
if (enabledComboBoxes[i] == currentFocusOwner)
{
/// Change focus to the next enabled text box
enabledComboBoxes[(i + 1) % enabledComboBoxes.Count].Focus();
return;
}
}
}
}
private void comboBox1_TextChanged(object sender, EventArgs e) { checkBox1.Checked = true; }
private void comboBox2_TextChanged(object sender, EventArgs e) { checkBox2.Checked = true; }
private void comboBox3_TextChanged(object sender, EventArgs e) { checkBox3.Checked = true; }
private void comboBox4_TextChanged(object sender, EventArgs e) { checkBox4.Checked = true; }
private void comboBox5_TextChanged(object sender, EventArgs e) { checkBox5.Checked = true; }
private void comboBox6_TextChanged(object sender, EventArgs e) { checkBox6.Checked = true; }
private void comboBox7_TextChanged(object sender, EventArgs e) { checkBox7.Checked = true; }
private void comboBox8_TextChanged(object sender, EventArgs e) { checkBox8.Checked = true; }
private void comboBox9_TextChanged(object sender, EventArgs e) { checkBox9.Checked = true; }
private void comboBox10_TextChanged(object sender, EventArgs e) { checkBox10.Checked = true; }
private void comboBox11_TextChanged(object sender, EventArgs e) { checkBox11.Checked = true; }
private void comboBox12_TextChanged(object sender, EventArgs e) { checkBox12.Checked = true; }
private void comboBox13_TextChanged(object sender, EventArgs e) { checkBox13.Checked = true; }
private void comboBox14_TextChanged(object sender, EventArgs e) { checkBox14.Checked = true; }
private void comboBox15_TextChanged(object sender, EventArgs e) { checkBox15.Checked = true; }
private void comboBox16_TextChanged(object sender, EventArgs e) { checkBox16.Checked = true; }
private void comboBox17_TextChanged(object sender, EventArgs e) { checkBox17.Checked = true; }
private void comboBox18_TextChanged(object sender, EventArgs e) { checkBox18.Checked = true; }
private void comboBox19_TextChanged(object sender, EventArgs e) { checkBox19.Checked = true; }
private void comboBox20_TextChanged(object sender, EventArgs e) { checkBox20.Checked = true; }
private void comboBox21_TextChanged(object sender, EventArgs e) { checkBox21.Checked = true; }
private void comboBox22_TextChanged(object sender, EventArgs e) { checkBox22.Checked = true; }
private void comboBox23_TextChanged(object sender, EventArgs e) { checkBox23.Checked = true; }
private void comboBox24_TextChanged(object sender, EventArgs e) { checkBox24.Checked = true; }
private void suffixComboBox1_TextChanged(object sender, EventArgs e) { checkBox1.Checked = true; }
private void suffixComboBox2_TextChanged(object sender, EventArgs e) { checkBox2.Checked = true; }
private void suffixComboBox3_TextChanged(object sender, EventArgs e) { checkBox3.Checked = true; }
private void suffixComboBox4_TextChanged(object sender, EventArgs e) { checkBox4.Checked = true; }
private void suffixComboBox5_TextChanged(object sender, EventArgs e) { checkBox5.Checked = true; }
private void suffixComboBox6_TextChanged(object sender, EventArgs e) { checkBox6.Checked = true; }
private void suffixComboBox7_TextChanged(object sender, EventArgs e) { checkBox7.Checked = true; }
private void suffixComboBox8_TextChanged(object sender, EventArgs e) { checkBox8.Checked = true; }
private void suffixComboBox9_TextChanged(object sender, EventArgs e) { checkBox9.Checked = true; }
private void suffixComboBox10_TextChanged(object sender, EventArgs e) { checkBox10.Checked = true; }
private void suffixComboBox11_TextChanged(object sender, EventArgs e) { checkBox11.Checked = true; }
private void suffixComboBox12_TextChanged(object sender, EventArgs e) { checkBox12.Checked = true; }
private void suffixComboBox13_TextChanged(object sender, EventArgs e) { checkBox13.Checked = true; }
private void suffixComboBox14_TextChanged(object sender, EventArgs e) { checkBox14.Checked = true; }
private void suffixComboBox15_TextChanged(object sender, EventArgs e) { checkBox15.Checked = true; }
private void suffixComboBox16_TextChanged(object sender, EventArgs e) { checkBox16.Checked = true; }
private void suffixComboBox17_TextChanged(object sender, EventArgs e) { checkBox17.Checked = true; }
private void suffixComboBox18_TextChanged(object sender, EventArgs e) { checkBox18.Checked = true; }
private void suffixComboBox19_TextChanged(object sender, EventArgs e) { checkBox19.Checked = true; }
private void suffixComboBox20_TextChanged(object sender, EventArgs e) { checkBox20.Checked = true; }
private void suffixComboBox21_TextChanged(object sender, EventArgs e) { checkBox21.Checked = true; }
private void suffixComboBox22_TextChanged(object sender, EventArgs e) { checkBox22.Checked = true; }
private void suffixComboBox23_TextChanged(object sender, EventArgs e) { checkBox23.Checked = true; }
private void suffixComboBox24_TextChanged(object sender, EventArgs e) { checkBox24.Checked = true; }
#region Forced close handling
public void StartForceCloseHandler()
{
UiBridge.Bridge.CloseModelessFormHandler += delegate(object sender, EventArgs args)
{
if (InvokeRequired) { Invoke(new EventHandler<EventArgs>(OnForceClose), sender, args); }
else OnForceClose(sender, args);
};
}
private void OnForceClose(object sender, EventArgs args)
{
DialogResult = DialogResult.Cancel;
Close();
}
#endregion
}
}
File diff suppressed because it is too large Load Diff
+652
View File
@@ -0,0 +1,652 @@
///
/// Copyright (c) 2019 Sensus Slovensko a.s.
///
namespace TBF.BenchControl.DataEntry.Fewa
{
partial class CycleEndForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.textBox2 = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.textBox1 = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.okButton = new System.Windows.Forms.Button();
this.textBox3 = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.textBox4 = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.textBox5 = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
this.textBox6 = new System.Windows.Forms.TextBox();
this.label6 = new System.Windows.Forms.Label();
this.textBox7 = new System.Windows.Forms.TextBox();
this.label7 = new System.Windows.Forms.Label();
this.textBox8 = new System.Windows.Forms.TextBox();
this.label8 = new System.Windows.Forms.Label();
this.textBox9 = new System.Windows.Forms.TextBox();
this.label9 = new System.Windows.Forms.Label();
this.textBox10 = new System.Windows.Forms.TextBox();
this.label10 = new System.Windows.Forms.Label();
this.textBox11 = new System.Windows.Forms.TextBox();
this.label11 = new System.Windows.Forms.Label();
this.textBox12 = new System.Windows.Forms.TextBox();
this.label12 = new System.Windows.Forms.Label();
this.textBox13 = new System.Windows.Forms.TextBox();
this.label13 = new System.Windows.Forms.Label();
this.textBox14 = new System.Windows.Forms.TextBox();
this.label14 = new System.Windows.Forms.Label();
this.textBox15 = new System.Windows.Forms.TextBox();
this.label15 = new System.Windows.Forms.Label();
this.textBox16 = new System.Windows.Forms.TextBox();
this.label16 = new System.Windows.Forms.Label();
this.textBox17 = new System.Windows.Forms.TextBox();
this.label17 = new System.Windows.Forms.Label();
this.textBox18 = new System.Windows.Forms.TextBox();
this.label18 = new System.Windows.Forms.Label();
this.textBox19 = new System.Windows.Forms.TextBox();
this.label19 = new System.Windows.Forms.Label();
this.textBox20 = new System.Windows.Forms.TextBox();
this.label20 = new System.Windows.Forms.Label();
this.textBox21 = new System.Windows.Forms.TextBox();
this.label21 = new System.Windows.Forms.Label();
this.textBox22 = new System.Windows.Forms.TextBox();
this.label22 = new System.Windows.Forms.Label();
this.textBox23 = new System.Windows.Forms.TextBox();
this.label23 = new System.Windows.Forms.Label();
this.textBox24 = new System.Windows.Forms.TextBox();
this.label24 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// textBox2
//
this.textBox2.Location = new System.Drawing.Point(205, 66);
this.textBox2.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(169, 27);
this.textBox2.TabIndex = 1;
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(38, 71);
this.label2.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(62, 18);
this.label2.TabIndex = 0;
this.label2.Text = "Stand:";
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(205, 30);
this.textBox1.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(169, 27);
this.textBox1.TabIndex = 1;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(38, 35);
this.label1.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(62, 18);
this.label1.TabIndex = 0;
this.label1.Text = "Stand:";
//
// okButton
//
this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.okButton.Font = new System.Drawing.Font("Verdana", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
this.okButton.ForeColor = System.Drawing.Color.Black;
this.okButton.Location = new System.Drawing.Point(832, 30);
this.okButton.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.okButton.Name = "okButton";
this.okButton.Size = new System.Drawing.Size(90, 60);
this.okButton.TabIndex = 7;
this.okButton.Text = "OK";
this.okButton.UseVisualStyleBackColor = true;
this.okButton.Click += new System.EventHandler(this.okButton_Click);
//
// textBox3
//
this.textBox3.Location = new System.Drawing.Point(205, 102);
this.textBox3.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.textBox3.Name = "textBox3";
this.textBox3.Size = new System.Drawing.Size(169, 27);
this.textBox3.TabIndex = 1;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(38, 107);
this.label3.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(62, 18);
this.label3.TabIndex = 0;
this.label3.Text = "Stand:";
//
// textBox4
//
this.textBox4.Location = new System.Drawing.Point(205, 138);
this.textBox4.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.textBox4.Name = "textBox4";
this.textBox4.Size = new System.Drawing.Size(169, 27);
this.textBox4.TabIndex = 1;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(38, 143);
this.label4.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(62, 18);
this.label4.TabIndex = 0;
this.label4.Text = "Stand:";
//
// textBox5
//
this.textBox5.Location = new System.Drawing.Point(205, 174);
this.textBox5.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.textBox5.Name = "textBox5";
this.textBox5.Size = new System.Drawing.Size(169, 27);
this.textBox5.TabIndex = 1;
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(38, 179);
this.label5.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(62, 18);
this.label5.TabIndex = 0;
this.label5.Text = "Stand:";
//
// textBox6
//
this.textBox6.Location = new System.Drawing.Point(205, 210);
this.textBox6.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.textBox6.Name = "textBox6";
this.textBox6.Size = new System.Drawing.Size(169, 27);
this.textBox6.TabIndex = 1;
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(38, 215);
this.label6.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(62, 18);
this.label6.TabIndex = 0;
this.label6.Text = "Stand:";
//
// textBox7
//
this.textBox7.Location = new System.Drawing.Point(205, 246);
this.textBox7.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.textBox7.Name = "textBox7";
this.textBox7.Size = new System.Drawing.Size(169, 27);
this.textBox7.TabIndex = 9;
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(38, 251);
this.label7.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(62, 18);
this.label7.TabIndex = 8;
this.label7.Text = "Stand:";
//
// textBox8
//
this.textBox8.Location = new System.Drawing.Point(205, 282);
this.textBox8.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.textBox8.Name = "textBox8";
this.textBox8.Size = new System.Drawing.Size(169, 27);
this.textBox8.TabIndex = 11;
//
// label8
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(38, 287);
this.label8.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(62, 18);
this.label8.TabIndex = 10;
this.label8.Text = "Stand:";
//
// textBox9
//
this.textBox9.Location = new System.Drawing.Point(205, 318);
this.textBox9.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.textBox9.Name = "textBox9";
this.textBox9.Size = new System.Drawing.Size(169, 27);
this.textBox9.TabIndex = 13;
//
// label9
//
this.label9.AutoSize = true;
this.label9.Location = new System.Drawing.Point(38, 323);
this.label9.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(62, 18);
this.label9.TabIndex = 12;
this.label9.Text = "Stand:";
//
// textBox10
//
this.textBox10.Location = new System.Drawing.Point(205, 354);
this.textBox10.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.textBox10.Name = "textBox10";
this.textBox10.Size = new System.Drawing.Size(169, 27);
this.textBox10.TabIndex = 15;
//
// label10
//
this.label10.AutoSize = true;
this.label10.Location = new System.Drawing.Point(38, 359);
this.label10.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(62, 18);
this.label10.TabIndex = 14;
this.label10.Text = "Stand:";
//
// textBox11
//
this.textBox11.Location = new System.Drawing.Point(205, 390);
this.textBox11.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.textBox11.Name = "textBox11";
this.textBox11.Size = new System.Drawing.Size(169, 27);
this.textBox11.TabIndex = 17;
//
// label11
//
this.label11.AutoSize = true;
this.label11.Location = new System.Drawing.Point(38, 395);
this.label11.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(62, 18);
this.label11.TabIndex = 16;
this.label11.Text = "Stand:";
//
// textBox12
//
this.textBox12.Location = new System.Drawing.Point(205, 426);
this.textBox12.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.textBox12.Name = "textBox12";
this.textBox12.Size = new System.Drawing.Size(169, 27);
this.textBox12.TabIndex = 19;
//
// label12
//
this.label12.AutoSize = true;
this.label12.Location = new System.Drawing.Point(38, 431);
this.label12.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(62, 18);
this.label12.TabIndex = 18;
this.label12.Text = "Stand:";
//
// textBox13
//
this.textBox13.Location = new System.Drawing.Point(623, 30);
this.textBox13.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.textBox13.Name = "textBox13";
this.textBox13.Size = new System.Drawing.Size(169, 27);
this.textBox13.TabIndex = 21;
//
// label13
//
this.label13.AutoSize = true;
this.label13.Location = new System.Drawing.Point(456, 35);
this.label13.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.label13.Name = "label13";
this.label13.Size = new System.Drawing.Size(62, 18);
this.label13.TabIndex = 20;
this.label13.Text = "Stand:";
//
// textBox14
//
this.textBox14.Location = new System.Drawing.Point(623, 66);
this.textBox14.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.textBox14.Name = "textBox14";
this.textBox14.Size = new System.Drawing.Size(169, 27);
this.textBox14.TabIndex = 23;
//
// label14
//
this.label14.AutoSize = true;
this.label14.Location = new System.Drawing.Point(456, 71);
this.label14.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.label14.Name = "label14";
this.label14.Size = new System.Drawing.Size(62, 18);
this.label14.TabIndex = 22;
this.label14.Text = "Stand:";
//
// textBox15
//
this.textBox15.Location = new System.Drawing.Point(623, 102);
this.textBox15.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.textBox15.Name = "textBox15";
this.textBox15.Size = new System.Drawing.Size(169, 27);
this.textBox15.TabIndex = 25;
//
// label15
//
this.label15.AutoSize = true;
this.label15.Location = new System.Drawing.Point(456, 107);
this.label15.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.label15.Name = "label15";
this.label15.Size = new System.Drawing.Size(62, 18);
this.label15.TabIndex = 24;
this.label15.Text = "Stand:";
//
// textBox16
//
this.textBox16.Location = new System.Drawing.Point(623, 138);
this.textBox16.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.textBox16.Name = "textBox16";
this.textBox16.Size = new System.Drawing.Size(169, 27);
this.textBox16.TabIndex = 27;
//
// label16
//
this.label16.AutoSize = true;
this.label16.Location = new System.Drawing.Point(456, 143);
this.label16.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.label16.Name = "label16";
this.label16.Size = new System.Drawing.Size(62, 18);
this.label16.TabIndex = 26;
this.label16.Text = "Stand:";
//
// textBox17
//
this.textBox17.Location = new System.Drawing.Point(623, 174);
this.textBox17.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.textBox17.Name = "textBox17";
this.textBox17.Size = new System.Drawing.Size(169, 27);
this.textBox17.TabIndex = 29;
//
// label17
//
this.label17.AutoSize = true;
this.label17.Location = new System.Drawing.Point(456, 179);
this.label17.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.label17.Name = "label17";
this.label17.Size = new System.Drawing.Size(62, 18);
this.label17.TabIndex = 28;
this.label17.Text = "Stand:";
//
// textBox18
//
this.textBox18.Location = new System.Drawing.Point(623, 210);
this.textBox18.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.textBox18.Name = "textBox18";
this.textBox18.Size = new System.Drawing.Size(169, 27);
this.textBox18.TabIndex = 31;
//
// label18
//
this.label18.AutoSize = true;
this.label18.Location = new System.Drawing.Point(456, 215);
this.label18.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.label18.Name = "label18";
this.label18.Size = new System.Drawing.Size(62, 18);
this.label18.TabIndex = 30;
this.label18.Text = "Stand:";
//
// textBox19
//
this.textBox19.Location = new System.Drawing.Point(623, 246);
this.textBox19.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.textBox19.Name = "textBox19";
this.textBox19.Size = new System.Drawing.Size(169, 27);
this.textBox19.TabIndex = 33;
//
// label19
//
this.label19.AutoSize = true;
this.label19.Location = new System.Drawing.Point(456, 251);
this.label19.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.label19.Name = "label19";
this.label19.Size = new System.Drawing.Size(62, 18);
this.label19.TabIndex = 32;
this.label19.Text = "Stand:";
//
// textBox20
//
this.textBox20.Location = new System.Drawing.Point(623, 282);
this.textBox20.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.textBox20.Name = "textBox20";
this.textBox20.Size = new System.Drawing.Size(169, 27);
this.textBox20.TabIndex = 35;
//
// label20
//
this.label20.AutoSize = true;
this.label20.Location = new System.Drawing.Point(456, 287);
this.label20.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.label20.Name = "label20";
this.label20.Size = new System.Drawing.Size(62, 18);
this.label20.TabIndex = 34;
this.label20.Text = "Stand:";
//
// textBox21
//
this.textBox21.Location = new System.Drawing.Point(623, 318);
this.textBox21.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.textBox21.Name = "textBox21";
this.textBox21.Size = new System.Drawing.Size(169, 27);
this.textBox21.TabIndex = 37;
//
// label21
//
this.label21.AutoSize = true;
this.label21.Location = new System.Drawing.Point(456, 323);
this.label21.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.label21.Name = "label21";
this.label21.Size = new System.Drawing.Size(62, 18);
this.label21.TabIndex = 36;
this.label21.Text = "Stand:";
//
// textBox22
//
this.textBox22.Location = new System.Drawing.Point(623, 354);
this.textBox22.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.textBox22.Name = "textBox22";
this.textBox22.Size = new System.Drawing.Size(169, 27);
this.textBox22.TabIndex = 39;
//
// label22
//
this.label22.AutoSize = true;
this.label22.Location = new System.Drawing.Point(456, 359);
this.label22.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.label22.Name = "label22";
this.label22.Size = new System.Drawing.Size(62, 18);
this.label22.TabIndex = 38;
this.label22.Text = "Stand:";
//
// textBox23
//
this.textBox23.Location = new System.Drawing.Point(623, 390);
this.textBox23.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.textBox23.Name = "textBox23";
this.textBox23.Size = new System.Drawing.Size(169, 27);
this.textBox23.TabIndex = 41;
//
// label23
//
this.label23.AutoSize = true;
this.label23.Location = new System.Drawing.Point(456, 395);
this.label23.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.label23.Name = "label23";
this.label23.Size = new System.Drawing.Size(62, 18);
this.label23.TabIndex = 40;
this.label23.Text = "Stand:";
//
// textBox24
//
this.textBox24.Location = new System.Drawing.Point(623, 426);
this.textBox24.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.textBox24.Name = "textBox24";
this.textBox24.Size = new System.Drawing.Size(169, 27);
this.textBox24.TabIndex = 43;
//
// label24
//
this.label24.AutoSize = true;
this.label24.Location = new System.Drawing.Point(456, 431);
this.label24.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.label24.Name = "label24";
this.label24.Size = new System.Drawing.Size(62, 18);
this.label24.TabIndex = 42;
this.label24.Text = "Stand:";
//
// CycleEndForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 18F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.DarkGoldenrod;
this.ClientSize = new System.Drawing.Size(959, 489);
this.Controls.Add(this.textBox24);
this.Controls.Add(this.label24);
this.Controls.Add(this.textBox23);
this.Controls.Add(this.label23);
this.Controls.Add(this.textBox22);
this.Controls.Add(this.label22);
this.Controls.Add(this.textBox21);
this.Controls.Add(this.label21);
this.Controls.Add(this.textBox20);
this.Controls.Add(this.label20);
this.Controls.Add(this.textBox19);
this.Controls.Add(this.label19);
this.Controls.Add(this.textBox18);
this.Controls.Add(this.label18);
this.Controls.Add(this.textBox17);
this.Controls.Add(this.label17);
this.Controls.Add(this.textBox16);
this.Controls.Add(this.label16);
this.Controls.Add(this.textBox15);
this.Controls.Add(this.label15);
this.Controls.Add(this.textBox14);
this.Controls.Add(this.label14);
this.Controls.Add(this.textBox13);
this.Controls.Add(this.label13);
this.Controls.Add(this.textBox12);
this.Controls.Add(this.label12);
this.Controls.Add(this.textBox11);
this.Controls.Add(this.label11);
this.Controls.Add(this.textBox10);
this.Controls.Add(this.label10);
this.Controls.Add(this.textBox9);
this.Controls.Add(this.label9);
this.Controls.Add(this.textBox8);
this.Controls.Add(this.label8);
this.Controls.Add(this.textBox7);
this.Controls.Add(this.label7);
this.Controls.Add(this.textBox6);
this.Controls.Add(this.label6);
this.Controls.Add(this.textBox5);
this.Controls.Add(this.label5);
this.Controls.Add(this.textBox4);
this.Controls.Add(this.label4);
this.Controls.Add(this.textBox3);
this.Controls.Add(this.label3);
this.Controls.Add(this.textBox2);
this.Controls.Add(this.label2);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.label1);
this.Controls.Add(this.okButton);
this.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.Name = "CycleEndForm";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.Text = "Daten";
this.TopMost = true;
this.Load += new System.EventHandler(this.CycleEndForm_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button okButton;
private System.Windows.Forms.TextBox textBox3;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox textBox4;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.TextBox textBox5;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.TextBox textBox6;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.TextBox textBox7;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.TextBox textBox8;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.TextBox textBox9;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.TextBox textBox10;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.TextBox textBox11;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.TextBox textBox12;
private System.Windows.Forms.Label label12;
private System.Windows.Forms.TextBox textBox13;
private System.Windows.Forms.Label label13;
private System.Windows.Forms.TextBox textBox14;
private System.Windows.Forms.Label label14;
private System.Windows.Forms.TextBox textBox15;
private System.Windows.Forms.Label label15;
private System.Windows.Forms.TextBox textBox16;
private System.Windows.Forms.Label label16;
private System.Windows.Forms.TextBox textBox17;
private System.Windows.Forms.Label label17;
private System.Windows.Forms.TextBox textBox18;
private System.Windows.Forms.Label label18;
private System.Windows.Forms.TextBox textBox19;
private System.Windows.Forms.Label label19;
private System.Windows.Forms.TextBox textBox20;
private System.Windows.Forms.Label label20;
private System.Windows.Forms.TextBox textBox21;
private System.Windows.Forms.Label label21;
private System.Windows.Forms.TextBox textBox22;
private System.Windows.Forms.Label label22;
private System.Windows.Forms.TextBox textBox23;
private System.Windows.Forms.Label label23;
private System.Windows.Forms.TextBox textBox24;
private System.Windows.Forms.Label label24;
}
}

Some files were not shown because too many files have changed in this diff Show More