Compare commits

..
Author SHA1 Message Date
Milan Hanajik c905f251a6 Reconfigured for iPearlSpecial-Camera 2021-03-31 09:22:01 +02:00
Milan Hanajik c86bafd779 UpgradeSelectionDlg/Custom, more logging in Output.DB.SensusOracle.ProcedureParams. 2021-03-31 09:21:43 +02:00
Milan Hanajik c472bfc99d iPerlCommmunication : New Q2 correction for Australia. 2021-03-30 11:36:01 +02:00
Milan Hanajik b8eaaeb64c ProcedureDlg bug fix : Copy button visible for all benches, ver. 2.26.1596 2021-03-30 11:35:40 +02:00
Milan Hanajik b09a057b02 ver. 2.26.1595 2021-03-30 00:08:47 +02:00
Milan Hanajik 9f19df7f3f Support for Statistics off-line mode: change LocalSettings.cs line 244. 2021-03-12 10:01:27 +01:00
Milan Hanajik db9506290a SerialStream simulation : Reads characters from a file instead of a serial port. 2021-03-08 18:01:48 +01:00
Milan Hanajik 4505759115 DataEntry.iPerl : No CycleEndForm, does not implement IHasCycleEndForm. 2021-03-08 13:12:40 +01:00
Milan Hanajik d15497f2b0 InfoFlagsStr in Results as an item in WMeterRsltItemSpec. 2021-02-19 11:18:11 +01:00
Milan Hanajik ec9edbf04c DataEntry.Standard24.CycleBeginningForm : Auto s/n feature. 2021-02-16 15:55:26 +01:00
Milan Hanajik 31b167cd62 MettlerToledo.Standard.BalanceDev/Old/NewDev clean-up, units (oz), 1st after draining, etc. 2021-02-16 11:34:46 +01:00
Milan Hanajik 1d33b9651b Milwaukee : Elde component upgraded, 09.02.2021 2021-02-11 08:51:13 +01:00
Milan Hanajik 3bf8b4fe54 DataEntry.S620 supports production tracing, S/Ns from OraDB + disp., flash and beep, ver. 2.26.1592 2021-02-10 13:58:54 +01:00
Milan Hanajik 2e75d91adc Bug fix in MetrologyDlgFlowMeterTab, etc. when ranges are enabled, ver. 2.26.1588 2021-02-08 10:12:12 +01:00
Milan Hanajik 55d9d58978 BenchControlPanel : Four main buttons are disabled on TBF start. 2021-02-04 15:04:19 +01:00
Milan Hanajik 241bb3aff1 TestTimeCorrection and MassOfEvapWater are stored in SummaryResults columns BK resp. BB 2021-01-29 10:46:45 +01:00
Milan Hanajik 0fa8057324 RealDensity, AtTemperature, Buoyancy are stored in Results DB in Batch table. 2021-01-28 13:55:27 +01:00
Milan Hanajik 4609abe6ea SensusOracle.Database SQL style changes, ver. 2.26.1586 2021-01-28 13:53:06 +01:00
Milan Hanajik cb6d9538c8 ver. 2.26.1585 2021-01-26 16:48:30 +01:00
Milan Hanajik 8ec062b165 DataEntry.S620 changes, ver. 2.26.1584 2021-01-26 14:54:51 +01:00
Milan Hanajik b2df02dd1b Changes in MainSeq, Procedure, BenchControlPanel, TestProgressControls, etc., ver. 2.26.1583 2021-01-25 13:01:59 +01:00
Milan Hanajik c403f9345f (1) FlyingStartMassCollProlonged fixed, more logging, (2) Password of day, ver. 2.26.1579 2021-01-25 13:01:16 +01:00
Milan Hanajik b97b795c93 ResultsBrowser supports 9 test benches, ver. 2.26.1577 2021-01-25 13:01:16 +01:00
Milan Hanajik 4a1c6ef031 Units : Ft3/h and US gal/min added. 2021-01-19 10:50:29 +01:00
Milan Hanajik 40f3aacd32 Milwaukee component updated (18.1.2021, imperial units) 2021-01-19 10:50:29 +01:00
Milan Hanajik 8e9344cc47 1. ResultsBrowserWnd custom query : GetListOfUsedProcedures, DEWA 2. SensusOracle.DB comments 2021-01-19 10:50:29 +01:00
Milan Hanajik b3160799c8 (1) PreviousResultsDlg with filters, (2) Procedure history can be inspected, ver. 2.26.1577 2021-01-19 10:50:10 +01:00
Milan Hanajik 66852682bf Elde.RegulValveMilwaukee, Modbus.Novus added, Elde component updated (18.12.2020), ver. 2.26.1571 2021-01-15 14:15:15 +01:00
Milan Hanajik 3399b07fc0 MainSeqUtils.CreateNewBatchResults( ) bug fix. 2021-01-08 09:16:20 +01:00
Milan Hanajik 844f5573dc Merge branch 'm2' into master-2.26, ver. 2.26.1569 2021-01-07 14:42:07 +01:00
Milan Hanajik e9cc77a2d5 Merge branch 'master-2.26' into m3 2021-01-07 10:09:18 +01:00
Milan Hanajik 2981ab2a5f Milwaukee : ADC-s for diverters can be calibrated, ver. 2.26.1568 2021-01-05 14:06:15 +01:00
Milan Hanajik a3227f356f DataEntry.WMStates restored - has been used in Fuzhou PT300 2021-01-05 09:45:43 +01:00
Milan Hanajik 0d8210614d EtPulsesK and DivSamples() fixed for all Fuzhou test benches, ver. 2.26.1567 2021-01-05 09:45:34 +01:00
Milan Hanajik 97df1250dc DataEntry.S620 added, Results.Entities.WaterMeter.AssignedSerialNr/Prefix/Suffix/CompleteSerialNr/WMTypeRevision mapped to DB. 2020-12-18 08:39:28 +01:00
Milan Hanajik 11eff5c962 EtPulsesK fixed for all Fuzhou test benches, ver. 2.26.1563 2020-12-18 08:39:28 +01:00
Milan Hanajik f95f961a5d Output.FileWriters.Enhanced with formatted WM subtitles 2020-12-18 08:38:16 +01:00
Milan Hanajik 4db2f475cd DataEntry.S620 added, Results.Entities.WaterMeter.AssignedSerialNr/Prefix/Suffix/CompleteSerialNr/WMTypeRevision mapped to DB. 2020-12-17 10:12:05 +01:00
Milan Hanajik 9dbbf03acd Output.FileWriters.Enhanced with formatted WM subtitles 2020-12-17 10:11:56 +01:00
Milan Hanajik d8ed144dee TracingDB synchronized with Production-Monitoring project, ver. 2.26.1562 2020-12-17 09:05:03 +01:00
Milan Hanajik 99cd84fb2a Changes for MILWAUKEE, component dated 16.12.2020, ver. 2.26.1561 2020-12-16 14:46:53 +01:00
Milan Hanajik de0b84076f UpgradeSelectionDlg : Cutom button with an action that is commented out, ver. 2.26.1555 2020-12-10 12:50:19 +01:00
Milan Hanajik 18506390fa Procedure.ProcedureParamsMixedCtrl added. 2020-12-10 12:50:07 +01:00
Milan Hanajik fd9a08406f IperlHead cleanup : No side effect on ProcessData.CompleteTestInfos 2020-12-10 11:20:56 +01:00
Milan Hanajik 6226fbedfc Merge branch 'Australia-169MHz' into master-2.26 2020-12-07 13:22:56 +01:00
Milan Hanajik 86fb107e73 WMPosition saved to SummaryResults, AllResults, column CQ ... 2020-12-07 13:06:46 +01:00
Milan Hanajik b32329cdf7 DiverterTest changes reverted back (Luxemburg: root cause of the isssue was in CB firmware), ver. 2.26.1554 2020-12-07 12:42:22 +01:00
Milan Hanajik 38c7d43a8a DiverterTest changes reverted back (Luxemburg: root cause of the isssue was in CB firmware). 2020-12-07 12:31:24 +01:00
Milan Hanajik c72fb29f36 Constructors of components : Logging level increased to WARN. 2020-12-04 11:59:26 +01:00
Milan Hanajik 0dd5c469f5 Spelling fixed, ver. 2.26.1553 2020-12-03 13:51:52 +01:00
Milan Hanajik df1b4527ba ValveCategory.All removed, cleanup, SequenceBase improvement. 2020-12-03 13:51:43 +01:00
Milan Hanajik 6da5bd92ec Positions of reg. valves are defined in output path 2020-12-02 15:45:59 +01:00
Milan Hanajik d4ac2453b8 Refactorization. 2020-12-02 13:44:59 +01:00
Milan Hanajik 59c1cb76f0 Gelsenwasser component updated (1.12.2020), ver. 2.26.1552 2020-12-02 13:44:42 +01:00
Milan Hanajik 89b47860a5 WARSAW_50 symbol, Warsaw-50 component. 2020-12-02 09:34:09 +01:00
Milan Hanajik 646cebe877 Q2 corr.: Correction inside range -0.5 .. 0.5 %, ver. 2.26.1549 2020-12-02 09:32:55 +01:00
Milan Hanajik f8b8c3bfec ver. 2.26.1551 2020-12-01 16:50:57 +01:00
Milan Hanajik 723c077c64 Q2 corr.: Correction inside range -0.5 .. 0.5 %, ver. 2.26.1550 2020-12-01 16:44:43 +01:00
Milan Hanajik 7e64c9299c WMPosition saved to SummaryResults, AllResults, column CQ ... 2020-11-30 13:32:29 +01:00
Milan Hanajik ea9c0615ee iPerlCommunicationForm bug fix, ver. 2.26.1542 2020-11-27 16:27:29 +01:00
Milan Hanajik 428d100f6c UI.Procedures.ProceduresCtrl : More column content is optional. 2020-11-27 16:27:14 +01:00
Milan Hanajik 8846f16546 ver. 2.26.1545 2020-11-20 11:24:38 +01:00
Milan Hanajik 37ec839807 ver. 2.26.1544 2020-11-18 14:58:52 +01:00
Milan Hanajik 5f44fd4bdb Saving events to Events DB : Fixed bugs when connection string was not defined, ver. 2.26.1543 2020-11-18 10:46:00 +01:00
Milan Hanajik 5f5063663c iPerlCommunicationForm bug fix, ver. 2.26.1542 2020-11-13 08:40:41 +01:00
Milan Hanajik 75f0cb2930 UI.Procedures.ProceduresCtrl : More column content is optional. 2020-11-09 09:18:51 +01:00
Milan Hanajik 1f581a72c1 Register readers cleanup, IRegReaderPulses added. 2020-11-06 14:33:32 +01:00
Milan Hanajik 705f4de0b0 DB.SensusOracle.Database : (1) Procedure params., (2) S620 support, (3) SensusTestInfo for 620. 2020-11-06 14:33:32 +01:00
Milan Hanajik 6ec3b7b287 UI.Procedures.ProcedureDlg 'Copy' a test feature added 2020-11-06 14:33:31 +01:00
Milan Hanajik 9758411519 Statistics : IP addresses updated, export in CSV format implemented. 2020-11-06 14:33:31 +01:00
Milan Hanajik e1a185efdf MettlerToledo.Standard (1) Always reads imm.mass when idle (2) Changes in logging 2020-11-06 14:33:31 +01:00
Milan Hanajik a2556bec35 TBF/CameraBinaryFiles2 folder with synchronization for SD v.2.x (!!! file upload NOK). 2020-11-06 14:33:31 +01:00
Milan Hanajik 483e2b4eb7 DataEntry.Camera (1) loads next image after 'Enter' key, (2) dealing with test parts fixed. 2020-11-06 14:33:31 +01:00
Milan Hanajik f1d46782d3 Luxemburg component, LUXEMBURG_40 symbol incl. StatusP, TestMethods.DiverterTest fixed. 2020-11-06 14:33:23 +01:00
Milan Hanajik d1adde9b63 Changes in FlyingStartMassCollProlong in v 2.26.1522 (Gelsenwasser) reverted back. 2020-11-06 14:31:36 +01:00
Milan Hanajik 95c7257d6f Defined symbols in expressions are sorted. 2020-10-22 10:26:27 +02:00
Milan Hanajik 91392f9452 Camera binary files are only synchronized for SD v.1.x, ver. 2.26.1528 2020-10-16 14:07:57 +02:00
Milan Hanajik b145c71ee3 Improved file name formatting for Output.FileWrites.Basic/Enhanced/Xml/XmlBatch components. 2020-10-14 14:12:00 +02:00
Milan Hanajik 1cf2eb8e06 TODO, ver. 2.26.1527 2020-10-14 14:09:22 +02:00
Milan Hanajik 037a5be3b3 SyncRoute( ) called in RunDeviceBefore( ), this should fix FixedStartMassCollection. 2020-10-09 09:41:03 +02:00
Milan Hanajik 0fc7d831b0 1. Login to camera v.2.x with user 'pi', 2. DeviceTest shutdown fix, ver. 2.26.1525 2020-10-08 12:55:38 +02:00
Milan Hanajik abf54f765f SummaryResults : try/catch and more logging, ver. 2.26.1524 2020-10-08 09:00:50 +02:00
Milan Hanajik 0e7ba933d8 ResultsBrowser : Custom query : Batch numbers and test bench 2020-09-28 13:56:21 +02:00
Milan Hanajik fa03c09f09 DataStreamInterface: (1) supports multiple meters, (2) Shutdown() added 2020-09-25 12:20:56 +02:00
Milan Hanajik 3ac90ee622 TURA_SPECIAL : MaxOptoDataCount = 250000 2020-09-23 11:04:56 +02:00
Milan Hanajik 774f561fcf Gelsenwasser component upgraded, ver. 2.26.1523 2020-09-18 08:52:13 +02:00
Milan Hanajik 3a626740c7 !!! Bug fix in FlyStMassCollProlonged test method, ver. 2.26.1521 2020-09-17 11:19:51 +02:00
Milan Hanajik 97ce601d31 DataStreamInterfaceTest and DataStreamMeter projects added 2020-09-09 10:00:23 +02:00
Milan Hanajik 49d4cf1ac0 HONGKONG_50 symbol added, HongKong component added, ver. 2.26.1519 2020-09-09 09:58:58 +02:00
Milan Hanajik dcb0ee680c ver. 2.26.1518 2020-09-08 09:10:17 +02:00
Milan Hanajik e94eb83c1d ver. 2.26.1517 2020-09-08 09:01:39 +02:00
Milan Hanajik ff3de55593 TracingDB/Enums.cs updated, Output/DB/ProductionTracing/Enums.cs removed 2020-09-03 14:45:51 +02:00
Milan Hanajik 1e50cc6fb7 ver. 2.26.1516 2020-09-03 14:45:51 +02:00
Milan Hanajik 7b31c6b2b6 Modbus.WaterAnalyzer2 : Conductivity comm. and conversion from 4-20 mA 2020-09-03 14:45:07 +02:00
Milan Hanajik 38ee1cc067 English and US units added. 2020-08-28 09:06:27 +02:00
Milan Hanajik e27dfe570d Genesis component updated (21.8.2020). 2020-08-27 16:40:06 +02:00
Milan Hanajik b2f2f595e5 Output.EventTriggers.Standard bug fix (E13 cannot be changed). 2020-08-27 16:40:06 +02:00
Milan Hanajik 67f4683026 FixedStart methods : order of operations fixed (1. open start valve, 2. start measurement) 2020-08-12 10:10:49 +02:00
Milan Hanajik 42f8d02a68 (1) Heat Meters related fixes, (2) SLM50 component upgraded (7.8.2020), ver. 2.26.1513 2020-08-07 14:24:57 +02:00
Milan Hanajik 14717d5d46 ver. 2.26.1512 2020-08-07 12:14:04 +02:00
Milan Hanajik 450530a707 In FIxedStart methods there is a delay after start of a test before the flow regulation starts. 2020-08-07 12:14:04 +02:00
Milan Hanajik adf30d615b (1) MettlerToledo: Zero instead of Taring, (2) RegValveCalib array size fixed for ADC#8..11, ver. 2.26.1511 2020-08-07 11:11:44 +02:00
Milan Hanajik 610387e071 (1) Compound WM results are displayed correctly, ver. 2.26.1510 2020-08-05 10:27:34 +02:00
Milan Hanajik 114e628305 (1) Diverter.flowMtrNr4Cmd for SLM_150, (2) Config.Data cleanup 2020-08-05 09:36:00 +02:00
Milan Hanajik 68d01aab14 Bug fix in CombinedWithDetectionSeq related to test.Part, ver. 2.26.1509 2020-07-31 11:58:30 +02:00
Milan Hanajik eaf0e2cf22 Barcode printing in Output.Printers.Enhanced and Output.Printers.OnePerMeter, ver. 2.26.1508 2020-07-29 10:06:43 +02:00
Milan Hanajik 02ec8d8124 Camera.CLP1611 : More comments, TODO list, ver. 2.26.1505 2020-07-17 14:13:57 +02:00
Milan Hanajik 1dc328746d Gelsenwasser component upgraded. 2020-07-15 10:31:46 +02:00
Milan Hanajik 5bb94666a4 (1) Diverter.nextIdx not incremented when DebugMode.Off, (2) VR1 accepts number entry, ver. 2.26.1499 2020-07-09 13:31:24 +02:00
Milan Hanajik c1f23b8481 ResultsBrowser with a custom query for SUEZ, ver. 2.26.1498 2020-07-09 13:22:52 +02:00
Milan Hanajik 70c11ad6d9 German resources, ver. 2.26.1498 2020-07-08 10:16:33 +02:00
Milan Hanajik 3a8c6b4d3e ResultsBrowser : DEWA custom queries. 2020-07-07 12:57:45 +02:00
Milan Hanajik b8f1b9293a (1) Units : Quantity.Enumerated added, (2) LoginDlgWithBenchSelection : List of benches is alphabetically sorted. 2020-06-25 12:10:55 +02:00
Milan Hanajik 6558951857 ver. 2.26.1497 2020-06-25 09:53:48 +02:00
Milan Hanajik 54e964ffde Flow calculation : TestRslt.FlowVolume is always the most accurate CTV flow (calculated from the measured mass in case of mass collection methods) 2020-06-25 09:35:10 +02:00
Milan Hanajik a5b270eec8 Two documents added. 2020-06-24 14:08:36 +02:00
Milan Hanajik 6f9c6596d5 ResultsBrowser: 1 WR13 IP addr.updated, 2 default DbType=MySql, 3 changes in progress, ver. 2.26.1496 2020-06-24 12:01:37 +02:00
Milan Hanajik d99c53bc8e (1) psi unit, (2) Transition seq. fixed (ISequenceCondition seqCondition null after renaming a component). 2020-06-08 14:34:51 +02:00
Milan Hanajik 3496fcbbba Critical bug fixes in sequences - STOP not working !!! 2020-05-21 16:37:09 +02:00
Milan Hanajik 77a29dadfc ResetBatchNr console application added to solution. 2020-05-18 12:59:17 +02:00
904 changed files with 49601 additions and 19123 deletions
-28
View File
@@ -20,16 +20,12 @@ EventViewer/bin/
EventViewer/obj/
Events/bin/
Events/obj/
FeatureVectorCalculator/bin/
FeatureVectorCalculator/obj/
GemCard/bin
GemCard/obj
GenCode128/bin
GenCode128/obj
GraphLib/bin
GraphLib/obj
MergeResultsDBs/bin
MergeResultsDBs/obj
TracingDB/bin
TracingDB/obj
ResetBatchNr/bin
@@ -40,8 +36,6 @@ Results/bin/
Results/obj/
ResultsBrowser/bin/
ResultsBrowser/obj/
ResultsParser/bin/
ResultsParser/obj/
Statistics/bin/
Statistics/obj/
TBF/bin/
@@ -54,28 +48,6 @@ Users/bin/
Users/obj/
UserManagement/bin/
UserManagement/obj/
DataMatrix4Net/bin/
DataMatrix4Net/obj/
GenericTest/bin/
GenericTest/obj/
LabelPrinting/bin/
LabelPrinting/obj/
OrderManagement/bin/
OrderManagement/obj/
ProductionTracing/bin/
ProductionTracing/obj/
RecordProcessing/bin/
RecordProcessing/obj/
S640TestApp/bin/
S640TestApp/obj/
SchematicDrawing/bin/
SchematicDrawing/obj/
SharedDatabase/bin/
SharedDatabase/obj/
WorkflowConfigurator/bin/
WorkflowConfigurator/obj/
Workplace/bin/
Workplace/obj/
.vs/
*.suo
*.bak
+37
View File
@@ -0,0 +1,37 @@
///
/// Copyright (c) 2021 Sensus Slovensko a.s.
///
using System;
using System.Threading;
namespace Common
{
public class BackgroundBeep
{
static Thread beepThread;
static AutoResetEvent signalBeep;
static BackgroundBeep()
{
signalBeep = new AutoResetEvent(false);
beepThread = new Thread(() =>
{
while (true)
{
signalBeep.WaitOne(); /// waits for an event
Console.Beep(500, 400); /// frequency (Hz), duration (ms)
}
}, 1);
beepThread.IsBackground = true;
beepThread.Start();
}
/// <summary>
/// Invokes one beep in a separate thread (non-blocking function)
/// </summary>
public static void Beep()
{
signalBeep.Set();
}
}
}
+1 -1
View File
@@ -41,8 +41,8 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="BackgroundBeep.cs" />
<Compile Include="SerializableDictionary.cs" />
<Compile Include="Telegram.cs" />
<Compile Include="UIControls\CoolButtonCtrl.cs">
<SubType>UserControl</SubType>
</Compile>
+2 -2
View File
@@ -19,7 +19,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;JUZNA_AFRIKA_NEW</DefineConstants>
<DefineConstants>TRACE;DEBUG;TURA_SPECIAL;IPERL;ORACLE_DB;LANG_SK</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
@@ -30,7 +30,7 @@
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE;JUZNA_AFRIKA_NEW</DefineConstants>
<DefineConstants>TRACE;TURA_SPECIAL;IPERL;ORACLE_DB;LANG_SK</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
+36 -60
View File
@@ -8,31 +8,43 @@ namespace Config
public const string AdminPassword = "staratura";
public const string SQLiteDbFName = "SQLite.db";
#if MUNICH
#if DN100 || BADGER_STREDNA_TRAT || BADGER_VELKA_TRAT || CEVAK_200
public const int WMsCount = 3;
public const int LineSize = 3;
public const int CompoundWMsCount = 1;
public const int HeatMetersCount = 0;
public const int MaxPartNr = 1;
#elif MUNICH
public const int WMsCount = 3;
public const int LineSize = 3;
public const int CompoundWMsCount = 3;
public const int HeatMetersCount = 0;
public const int MaxPartNr = 3;
#elif BADGER_STREDNA_TRAT || BADGER_VELKA_TRAT || CEVAK_200 || DN100
public const int WMsCount = 3;
public const int LineSize = 3;
public const int CompoundWMsCount = 1;
public const int HeatMetersCount = 0;
public const int MaxPartNr = WMsCount / LineSize;
#elif FUZHOU_150 || FUZHOU_300 || GENESIS || IZRAEL_200 || PETERSBURG_200 || SLM_150
#elif MALTA_WSD25
public const int WMsCount = 6;
public const int LineSize = 6;
public const int CompoundWMsCount = 1;
public const int CompoundWMsCount = 0;
public const int HeatMetersCount = 0;
public const int MaxPartNr = 3;
public const int MaxPartNr = 1;
#elif BADGER_MALA_TRAT || BERLIN || FUZHOU_150 || FUZHOU_300 || GELSENWASSER || GENESIS || IZRAEL_200 || PETERSBURG_200 || SENTEC || SLM_150 || TORINO_50 || TURA_SPECIAL
public const int WMsCount = 6;
public const int LineSize = 6;
public const int CompoundWMsCount = 1;
public const int HeatMetersCount = 0;
public const int MaxPartNr = 1;
#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 || ROMA_200
#elif RUM_MOB
public const int WMsCount = 8;
public const int LineSize = 8;
public const int CompoundWMsCount = 1;
public const int HeatMetersCount = 0;
public const int MaxPartNr = WMsCount / LineSize;
#elif DEWA_300 || FUZHOU_100 || ROMA_200 || LUXEMBURG_40
public const int WMsCount = 10;
public const int LineSize = 10;
public const int CompoundWMsCount = 1;
@@ -44,69 +56,33 @@ namespace Config
public const int CompoundWMsCount = 0;
public const int HeatMetersCount = 0;
public const int MaxPartNr = WMsCount / LineSize;
#elif IZRAEL_50
public const int WMsCount = 40;
public const int LineSize = 10;
public const int CompoundWMsCount = 0;
public const int HeatMetersCount = 0;
public const int MaxPartNr = WMsCount / LineSize;
#elif FUZHOU_100
public const int WMsCount = 10;
public const int LineSize = 10;
#elif SLM_END || WARSAW_END
public const int WMsCount = 10;
public const int LineSize = 5;
public const int CompoundWMsCount = 1;
public const int HeatMetersCount = 0;
public const int MaxPartNr = WMsCount / LineSize;
#elif BADGER_MALA_TRAT || BERLIN || GELSENWASSER || TORINO_50
public const int WMsCount = 6;
public const int LineSize = 6;
public const int MaxPartNr = 4;
#elif SLM_50
public const int WMsCount = 12;
public const int LineSize = 12;
public const int CompoundWMsCount = 1;
public const int HeatMetersCount = 0;
public const int MaxPartNr = 1;
#elif ALZIR_25 || BAHRAIN_50 || CEVAK_40 || FEWA_50 || FILIPINY_50 || FUZHOU_50 || IZRAEL_25 || JUZNA_AFRIKA_50 || KEMPNO_50 || KRAKOW_50 || MURES_40 || PETERSBURG_50 || TORUN_50 || ZAMBIA || ZODINO
public const int HeatMetersCount = 6;
public const int MaxPartNr = WMsCount / LineSize;
#elif ALZIR_25 || BAHRAIN_50 || CEVAK_40 || FEWA_50 || FILIPINY_50 || FUZHOU_50 || HONGKONG_50 || IZRAEL_25 || JUZNA_AFRIKA_50 || KEMPNO_50 || KRAKOW_50 || MILWAUKEE || MURES_40 || PETERSBURG_50 || TORUN_50 || WARSAW_50 || ZAMBIA || ZODINO
public const int WMsCount = 20;
public const int LineSize = 10;
public const int CompoundWMsCount = 1;
public const int HeatMetersCount = 0;
public const int MaxPartNr = WMsCount / LineSize;
#elif JUZNA_AFRIKA_NEW
public const int WMsCount = 26;
public const int LineSize = 13;
public const int CompoundWMsCount = 1;
public const int HeatMetersCount = 0;
public const int MaxPartNr = WMsCount / LineSize;
#elif RUM_MOB
public const int WMsCount = 8;
public const int LineSize = 8;
public const int CompoundWMsCount = 1;
public const int HeatMetersCount = 0;
public const int MaxPartNr = WMsCount / LineSize;
#elif TURA_IPERL || TURA_IPERL_NEW
public const int WMsCount = 40;
public const int LineSize = 20;
public const int CompoundWMsCount = 1;
public const int HeatMetersCount = 0;
public const int MaxPartNr = WMsCount / LineSize;
#elif TURA_SPECIAL || SENTEC
public const int WMsCount = 6;
public const int LineSize = 6;
public const int CompoundWMsCount = 1;
public const int HeatMetersCount = 0;
public const int MaxPartNr = WMsCount / LineSize;
#elif SLM_50
public const int WMsCount = 12;
public const int LineSize = 12;
public const int CompoundWMsCount = 1;
public const int HeatMetersCount = 6;
public const int MaxPartNr = WMsCount / LineSize;
#elif SLM_END || WARSAW_END
public const int WMsCount = 10;
public const int LineSize = 5;
public const int CompoundWMsCount = 1;
public const int HeatMetersCount = 0;
public const int MaxPartNr = 4;
#elif MALTA_WSD25
public const int WMsCount = 6;
public const int LineSize = 6;
#elif IZRAEL_50
public const int WMsCount = 40;
public const int LineSize = 10;
public const int CompoundWMsCount = 0;
public const int HeatMetersCount = 0;
public const int MaxPartNr = WMsCount / LineSize;
+3 -3
View File
@@ -1,5 +1,5 @@
///
/// Copyright (c) 2013-2017 Sensus Metering Systems
/// Copyright (c) 2013-2020 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
@@ -21,7 +21,7 @@ namespace Config.Entities
public virtual string Diverter { get; set; }
public virtual string TempDiv { get; set; }
public virtual string Scale { get; set; }
public virtual string EmptyTankValve { get; set; } /// Not used anywhere
public virtual string RegulValvesPct { get; set; } /// Positions of regulation valves in % separated by ';'
/// Valves
public virtual string ValvesOpen { get; set; }
@@ -56,7 +56,7 @@ namespace Config.Entities
result.Diverter = Diverter;
result.TempDiv = TempDiv;
result.Scale = Scale;
result.EmptyTankValve = EmptyTankValve;
result.RegulValvesPct = RegulValvesPct;
result.ValvesOpen = ValvesOpen;
result.ValvesClose = ValvesClose;
+3 -2
View File
@@ -1,5 +1,5 @@
///
/// Copyright (c) 2013-2015 Sensus Metering Systems
/// Copyright (c) 2013-2020 Sensus Slovensko a.s.
///
using FluentNHibernate.Mapping;
using Config.Entities;
@@ -23,7 +23,8 @@ namespace Config.Mappings
Map(x => x.TempDiv);
Map(x => x.Scale)
.Column("Balance");
Map(x => x.EmptyTankValve);
Map(x => x.RegulValvesPct)
.Column("EmptyTankValve");
Map(x => x.ValvesOpen)
.CustomType("StringClob")
.CustomSqlType("varchar(8000)");
+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("3.1.1464.0")]
[assembly: AssemblyFileVersion("3.1.1464.0")]
[assembly: AssemblyVersion("2.26.1519.0")]
[assembly: AssemblyFileVersion("2.26.1519.0")]
+8
View File
@@ -26,7 +26,9 @@ namespace Config
[Description("m3")] m3, /// 1 m3 = 1000 l
[Description("l/h")] lph, /// 1 l/h = 0.001 m3/h
[Description("cf/h")] cfph, /// 1 cf/h = 0.028316846592 m3/h
[Description("l/m")] lpm, /// 1 l/m = 60 l/h = 0.06 m3/h
[Description("US gal/m")] USgalpm, /// 1 US gallon per minute = 0.2271247068 m3/h
[Description("m3/h")] m3ph, /// * 1 m3/h
[Description("l/s")] lps, /// 1 liter/s = 3.6 m3/h
[Description("US gal/s")] USgalps, /// 1 US gallon per second = 13.627482408 m3/h
@@ -268,7 +270,9 @@ namespace Config
return Quantity.Volume;
case Unit.lph:
case Unit.cfph:
case Unit.lpm:
case Unit.USgalpm:
case Unit.m3ph:
case Unit.lps:
case Unit.USgalps:
@@ -385,7 +389,9 @@ namespace Config
/// Flow: internal representation in m3/h
case Unit.lph: return 1000 * v; /// 1 l/h
case Unit.cfph: return 35.3146667214886 * v;/// 1 cf/h
case Unit.lpm: return v / 0.06; /// 1 l/m
case Unit.USgalpm: return 4.40286754395493 * v;/// 1 US gallon per minute
case Unit.lps: return v / 3.6; /// 1 l/s
case Unit.USgalps: return 0.0733811257326 * v; /// 1 US gallon per second
case Unit.m3pm: return v / 60; /// 1 m3/m
@@ -463,7 +469,9 @@ namespace Config
/// Flow: internal representation in m3/h
case Unit.lph: return 0.001 * v; /// 1 l/h
case Unit.cfph: return 0.028316846592 * v; /// 1 cf/h
case Unit.lpm: return 0.06 * v; /// 1 l/m
case Unit.USgalpm: return 0.2271247068 * v; /// 1 US gallon per minute
case Unit.lps: return 3.6 * v; /// 1 l/s
case Unit.USgalps: return 13.627482408 * v; /// 1 US gallon per second
case Unit.m3pm: return 60 * v; /// 1 m3/m
+2 -2
View File
@@ -7,12 +7,12 @@ namespace DataStreamInterface
{
public class DataFrame
{
public readonly UInt64 ID; /// Frame ID
public readonly Int64 ID; /// Frame ID
public readonly double Time; /// Time stamp in units of time
public readonly double Volume; /// Volume in units of volume
public readonly double[] Quantity; /// An array of optional quantities in their respective units
public DataFrame(UInt64 id, double time, double volume, double[] quantity)
public DataFrame(Int64 id, double time, double volume, double[] quantity)
{
ID = id;
Time = time;
@@ -21,6 +21,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
@@ -29,9 +30,11 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
+47 -21
View File
@@ -2,58 +2,82 @@
/// Copyright (c) 2020 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DataStreamInterface
{
public interface IDataStreamMeter
{
/// <summary>
/// Returns count of water meters supported by the data stream component
/// </summary>
/// <returns>Water meters count</returns>
int GetMetersCount();
/// <summary>
/// Get state of the connected data stream meter
/// </summary>
/// <param name="meterIx">Index of the meter in range 0 .. (GetMetersCount() - 1)</param>
/// <param name="state">Current state of the meter</param>
/// <param name="parameter">Current extra parameter of the meter</param>
/// <returns>true when successful</returns>
bool GetState(out int state, out string parameter);
bool GetState(int meterIx, out int state, out string parameter);
/// <summary>
/// Set state of the connected data stream meter
/// </summary>
/// <param name="meterIx">Index of the meter in range 0 .. (GetMetersCount() - 1)</param>
/// <param name="state">Required state of the meter</param>
/// <param name="parameter">Required extra parameter of the meter</param>
/// <returns>true when successful</returns>
bool SetState(int state, string parameter);
bool SetState(int meterIx, int state, string parameter);
bool SetStateAll(int state, string parameter);
/// <summary>
/// Establish connection with a data stream meter
/// </summary>
/// <param name="meterIx">Index of the meter in range 0 .. (GetMetersCount() - 1)</param>
/// <param name="connectionParameters">Connection parameters</param>
/// <param name="meterId">Meter ID (e.g. serial number)</param>
/// <returns>true when successful</returns>
bool OpenConnection(string connectionParameters, out string meterId);
/// <summary>
/// Closes connection with the data stream meter
/// </summary>
/// <returns>true when successful</returns>
bool CloseConnection();
bool OpenConnection(int meterIx, string connectionParameters, out string meterId);
/// <summary>
/// Stars saving measurement results into internal data structures of the component.
/// Each data frame obtains a unique ID.
/// The very first data fraim obrains ID = 0.
/// </summary>
/// <param name="meterIx">Index of the meter in range 0 .. (GetMetersCount() - 1)</param>
/// <returns>true when successful</returns>
bool StartMeasurement();
bool StartMeasurement(int meterIx);
bool StartMeasurementAll();
/// <summary>
/// Stops saving measurement results into internal data structures of the component.
/// Updates ID of the last date frame received from the meter.
/// </summary>
/// <param name="lastFrameID">ID of the last date frame</param>
/// <param name="meterIx">Index of the meter in range 0 .. (GetMetersCount() - 1)</param>
/// <param name="storedFramesCount">Number of stored date frames</param>
/// <returns>true when successful</returns>
bool StopMeasurement(out UInt64 lastFrameID);
bool StopMeasurement(int meterIx, out Int64 storedFramesCount);
bool StopMeasurementAll(out Int64[] storedFramesCounts);
/// <summary>
/// Closes connection with the data stream meter
/// </summary>
/// <param name="meterIx">Index of the meter in range 0 .. (GetMetersCount() - 1)</param>
/// <returns>true when successful</returns>
bool CloseConnection(int meterIx);
bool CloseConnectionAll();
/// <summary>
/// This function is called when TBF program is shutting down.
/// </summary>
/// <returns>true when successful</returns>
bool Shutdown();
///------------------------------------------------
/// Units of time, volume and optional quantities
@@ -70,7 +94,7 @@ namespace DataStreamInterface
Unit GetVolumeUnits();
///-----------------------------------------------
/// Ooptional quantities: count, units, captions
/// Optional quantities: count, units, captions
///-----------------------------------------------
/// <summary>
@@ -83,13 +107,13 @@ namespace DataStreamInterface
/// Returns units of the specified quantity
/// </summary>
/// <param name="quanityNr">Zero based quantity number 0 .. quantites count-1</param>
Unit GetQuantityUnits(int quanityNr);
Unit GetQuantityUnits(int quantityNr);
/// <summary>
/// Returns caption of the specified quantity
/// </summary>
/// <param name="quanityNr">Zero based quantity number 0 .. quantites count-1</param>
string GetQuantityCaption(int quanityNr);
string GetQuantityCaption(int quantityNr);
///---------------------------
/// Datastream data exchange
@@ -98,17 +122,19 @@ namespace DataStreamInterface
/// <summary>
/// Retuns 'count' data frames starting with data frame with ID = 'id'
/// </summary>
/// <param name="meterIx">Index of the meter in range 0 .. (GetMetersCount() - 1)</param>
/// <param name="id">First frame ID</param>
/// <param name="count">Frames count</param>
/// <returns>Selected data frames</returns>
DataFrame[] GetFrames(UInt64 id, int count);
DataFrame[] GetFrames(int meterIx, Int64 id, int count);
/// <summary>
/// Returns ID of the data frame where time equals or exceeds the specified time.
/// When time of the first frame (ID=0) is larger then specified time, function returns 0.
/// </summary>
/// <param name="meterIx">Index of the meter in range 0 .. (GetMetersCount() - 1)</param>
/// <param name="time">Time</param>
/// <returns>ID of the data frame at or after the pecified time</returns>
UInt64 GetID(double time);
Int64 GetID(int meterIx, double time);
}
}
+36
View File
@@ -0,0 +1,36 @@
using System;
using System.Text;
using System.Windows.Forms;
namespace DataStreamInterfaceTest
{
public class ActivityLog
{
const int LinesCount = 50;
TextBox textBox;
string[] lines;
string activity;
public ActivityLog(TextBox textBox)
{
this.textBox = textBox;
lines = new string[LinesCount];
for (int i = 0; i < LinesCount; i++) lines[i] = string.Empty;
}
public void Print(string log)
{
for (int i = LinesCount - 1; i > 0; i--) lines[i] = lines[i - 1];
lines[0] = log;
DisplayLines();
}
private void DisplayLines()
{
StringBuilder sb = new StringBuilder();
foreach (var line in lines) sb.AppendLine(line);
textBox.Text = sb.ToString();
}
}
}
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>
@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{1D1EEF9C-7F41-43D3-BD09-5054D00F7A23}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>DataStreamInterfaceTest</RootNamespace>
<AssemblyName>DataStreamInterfaceTest</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</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|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.ComponentModel.Composition" />
<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.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="ActivityLog.cs" />
<Compile Include="DemoMainWnd.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="DemoMainWnd.Designer.cs">
<DependentUpon>DemoMainWnd.cs</DependentUpon>
</Compile>
<Compile Include="GetDblValueDlg.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="GetDblValueDlg.designer.cs">
<DependentUpon>GetDblValueDlg.cs</DependentUpon>
</Compile>
<Compile Include="GetFrameBoundariesDlg.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="GetFrameBoundariesDlg.designer.cs">
<DependentUpon>GetFrameBoundariesDlg.cs</DependentUpon>
</Compile>
<Compile Include="GetIntegerNumberDlg.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="GetIntegerNumberDlg.Designer.cs">
<DependentUpon>GetIntegerNumberDlg.cs</DependentUpon>
</Compile>
<Compile Include="GetStateDlg.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="GetStateDlg.designer.cs">
<DependentUpon>GetStateDlg.cs</DependentUpon>
</Compile>
<Compile Include="LviIDComparer.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="DemoMainWnd.resx">
<DependentUpon>DemoMainWnd.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="GetDblValueDlg.resx">
<DependentUpon>GetDblValueDlg.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GetFrameBoundariesDlg.resx">
<DependentUpon>GetFrameBoundariesDlg.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GetIntegerNumberDlg.resx">
<DependentUpon>GetIntegerNumberDlg.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GetStateDlg.resx">
<DependentUpon>GetStateDlg.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\DataStreamInterface\DataStreamInterface.csproj">
<Project>{7ebeea14-91c4-48d7-af0a-7a4bc3ff9a28}</Project>
<Name>DataStreamInterface</Name>
</ProjectReference>
</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>
+380
View File
@@ -0,0 +1,380 @@
namespace DataStreamInterfaceTest
{
partial class DemoMainWnd
{
/// <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.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.getIDButton = new System.Windows.Forms.Button();
this.getFramesButton = new System.Windows.Forms.Button();
this.measurementLabel = new System.Windows.Forms.Label();
this.stateLabel = new System.Windows.Forms.Label();
this.capabilitiesLabel = new System.Windows.Forms.Label();
this.getQuantityUnitsButton = new System.Windows.Forms.Button();
this.getQuantityCaptionButton = new System.Windows.Forms.Button();
this.getQuantitiesCountButton = new System.Windows.Forms.Button();
this.getVolumeUnitsButton = new System.Windows.Forms.Button();
this.getTimeUnitsButton = new System.Windows.Forms.Button();
this.setStateButton = new System.Windows.Forms.Button();
this.getStateButton = new System.Windows.Forms.Button();
this.stopMeasurementButton = new System.Windows.Forms.Button();
this.startMeasurementButton = new System.Windows.Forms.Button();
this.closeConnectionButton = new System.Windows.Forms.Button();
this.openConnectionButton = new System.Windows.Forms.Button();
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
this.logsTextBox = new System.Windows.Forms.TextBox();
this.dataTabControl = new System.Windows.Forms.TabControl();
this.tabPage1 = new System.Windows.Forms.TabPage();
this.framesListView = new System.Windows.Forms.ListView();
this.tabPage2 = new System.Windows.Forms.TabPage();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
this.splitContainer2.Panel1.SuspendLayout();
this.splitContainer2.Panel2.SuspendLayout();
this.splitContainer2.SuspendLayout();
this.dataTabControl.SuspendLayout();
this.tabPage1.SuspendLayout();
this.SuspendLayout();
//
// splitContainer1
//
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.splitContainer1.IsSplitterFixed = true;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Name = "splitContainer1";
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.getIDButton);
this.splitContainer1.Panel1.Controls.Add(this.getFramesButton);
this.splitContainer1.Panel1.Controls.Add(this.measurementLabel);
this.splitContainer1.Panel1.Controls.Add(this.stateLabel);
this.splitContainer1.Panel1.Controls.Add(this.capabilitiesLabel);
this.splitContainer1.Panel1.Controls.Add(this.getQuantityUnitsButton);
this.splitContainer1.Panel1.Controls.Add(this.getQuantityCaptionButton);
this.splitContainer1.Panel1.Controls.Add(this.getQuantitiesCountButton);
this.splitContainer1.Panel1.Controls.Add(this.getVolumeUnitsButton);
this.splitContainer1.Panel1.Controls.Add(this.getTimeUnitsButton);
this.splitContainer1.Panel1.Controls.Add(this.setStateButton);
this.splitContainer1.Panel1.Controls.Add(this.getStateButton);
this.splitContainer1.Panel1.Controls.Add(this.stopMeasurementButton);
this.splitContainer1.Panel1.Controls.Add(this.startMeasurementButton);
this.splitContainer1.Panel1.Controls.Add(this.closeConnectionButton);
this.splitContainer1.Panel1.Controls.Add(this.openConnectionButton);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
this.splitContainer1.Size = new System.Drawing.Size(826, 583);
this.splitContainer1.SplitterDistance = 150;
this.splitContainer1.TabIndex = 0;
//
// getIDButton
//
this.getIDButton.Location = new System.Drawing.Point(12, 480);
this.getIDButton.Name = "getIDButton";
this.getIDButton.Size = new System.Drawing.Size(128, 24);
this.getIDButton.TabIndex = 12;
this.getIDButton.Text = "Get ID";
this.getIDButton.UseVisualStyleBackColor = true;
this.getIDButton.Click += new System.EventHandler(this.getIDButton_Click);
//
// getFramesButton
//
this.getFramesButton.Location = new System.Drawing.Point(12, 450);
this.getFramesButton.Name = "getFramesButton";
this.getFramesButton.Size = new System.Drawing.Size(128, 24);
this.getFramesButton.TabIndex = 11;
this.getFramesButton.Text = "Get frames";
this.getFramesButton.UseVisualStyleBackColor = true;
this.getFramesButton.Click += new System.EventHandler(this.getFramesButton_Click);
//
// measurementLabel
//
this.measurementLabel.AutoSize = true;
this.measurementLabel.Location = new System.Drawing.Point(12, 374);
this.measurementLabel.Name = "measurementLabel";
this.measurementLabel.Size = new System.Drawing.Size(74, 13);
this.measurementLabel.TabIndex = 15;
this.measurementLabel.Text = "Measurement:";
//
// stateLabel
//
this.stateLabel.AutoSize = true;
this.stateLabel.Location = new System.Drawing.Point(12, 194);
this.stateLabel.Name = "stateLabel";
this.stateLabel.Size = new System.Drawing.Size(112, 13);
this.stateLabel.TabIndex = 14;
this.stateLabel.Text = "State and connection:";
//
// capabilitiesLabel
//
this.capabilitiesLabel.AutoSize = true;
this.capabilitiesLabel.Location = new System.Drawing.Point(12, 9);
this.capabilitiesLabel.Name = "capabilitiesLabel";
this.capabilitiesLabel.Size = new System.Drawing.Size(63, 13);
this.capabilitiesLabel.TabIndex = 13;
this.capabilitiesLabel.Text = "Capabilities:";
//
// getQuantityUnitsButton
//
this.getQuantityUnitsButton.Location = new System.Drawing.Point(12, 145);
this.getQuantityUnitsButton.Name = "getQuantityUnitsButton";
this.getQuantityUnitsButton.Size = new System.Drawing.Size(128, 24);
this.getQuantityUnitsButton.TabIndex = 4;
this.getQuantityUnitsButton.Text = "Get quantity units";
this.getQuantityUnitsButton.UseVisualStyleBackColor = true;
this.getQuantityUnitsButton.Click += new System.EventHandler(this.getQuantityUnitsButton_Click);
//
// getQuantityCaptionButton
//
this.getQuantityCaptionButton.Location = new System.Drawing.Point(12, 115);
this.getQuantityCaptionButton.Name = "getQuantityCaptionButton";
this.getQuantityCaptionButton.Size = new System.Drawing.Size(128, 24);
this.getQuantityCaptionButton.TabIndex = 3;
this.getQuantityCaptionButton.Text = "Get quantity caption";
this.getQuantityCaptionButton.UseVisualStyleBackColor = true;
this.getQuantityCaptionButton.Click += new System.EventHandler(this.getQuantityCaptionButton_Click);
//
// getQuantitiesCountButton
//
this.getQuantitiesCountButton.Location = new System.Drawing.Point(12, 85);
this.getQuantitiesCountButton.Name = "getQuantitiesCountButton";
this.getQuantitiesCountButton.Size = new System.Drawing.Size(128, 24);
this.getQuantitiesCountButton.TabIndex = 2;
this.getQuantitiesCountButton.Text = "Get quantities count";
this.getQuantitiesCountButton.UseVisualStyleBackColor = true;
this.getQuantitiesCountButton.Click += new System.EventHandler(this.getQuantitiesCountButton_Click);
//
// getVolumeUnitsButton
//
this.getVolumeUnitsButton.Location = new System.Drawing.Point(12, 55);
this.getVolumeUnitsButton.Name = "getVolumeUnitsButton";
this.getVolumeUnitsButton.Size = new System.Drawing.Size(128, 24);
this.getVolumeUnitsButton.TabIndex = 1;
this.getVolumeUnitsButton.Text = "Get volume units";
this.getVolumeUnitsButton.UseVisualStyleBackColor = true;
this.getVolumeUnitsButton.Click += new System.EventHandler(this.getVolumeUnitsButton_Click);
//
// getTimeUnitsButton
//
this.getTimeUnitsButton.Location = new System.Drawing.Point(12, 25);
this.getTimeUnitsButton.Name = "getTimeUnitsButton";
this.getTimeUnitsButton.Size = new System.Drawing.Size(128, 24);
this.getTimeUnitsButton.TabIndex = 0;
this.getTimeUnitsButton.Text = "Get time units";
this.getTimeUnitsButton.UseVisualStyleBackColor = true;
this.getTimeUnitsButton.Click += new System.EventHandler(this.getTimeUnitsButton_Click);
//
// setStateButton
//
this.setStateButton.Location = new System.Drawing.Point(12, 315);
this.setStateButton.Name = "setStateButton";
this.setStateButton.Size = new System.Drawing.Size(128, 24);
this.setStateButton.TabIndex = 8;
this.setStateButton.Text = "Set state";
this.setStateButton.UseVisualStyleBackColor = true;
this.setStateButton.Click += new System.EventHandler(this.setStateButton_Click);
//
// getStateButton
//
this.getStateButton.Location = new System.Drawing.Point(12, 285);
this.getStateButton.Name = "getStateButton";
this.getStateButton.Size = new System.Drawing.Size(128, 24);
this.getStateButton.TabIndex = 7;
this.getStateButton.Text = "Get state";
this.getStateButton.UseVisualStyleBackColor = true;
this.getStateButton.Click += new System.EventHandler(this.getStateButton_Click);
//
// stopMeasurementButton
//
this.stopMeasurementButton.Location = new System.Drawing.Point(12, 420);
this.stopMeasurementButton.Name = "stopMeasurementButton";
this.stopMeasurementButton.Size = new System.Drawing.Size(128, 24);
this.stopMeasurementButton.TabIndex = 10;
this.stopMeasurementButton.Text = "Stop measurement";
this.stopMeasurementButton.UseVisualStyleBackColor = true;
this.stopMeasurementButton.Click += new System.EventHandler(this.stopMeasurementButton_Click);
//
// startMeasurementButton
//
this.startMeasurementButton.Location = new System.Drawing.Point(12, 390);
this.startMeasurementButton.Name = "startMeasurementButton";
this.startMeasurementButton.Size = new System.Drawing.Size(128, 24);
this.startMeasurementButton.TabIndex = 9;
this.startMeasurementButton.Text = "Start measurement";
this.startMeasurementButton.UseVisualStyleBackColor = true;
this.startMeasurementButton.Click += new System.EventHandler(this.startMeasurementButton_Click);
//
// closeConnectionButton
//
this.closeConnectionButton.Location = new System.Drawing.Point(12, 240);
this.closeConnectionButton.Name = "closeConnectionButton";
this.closeConnectionButton.Size = new System.Drawing.Size(128, 24);
this.closeConnectionButton.TabIndex = 6;
this.closeConnectionButton.Text = "Close connection";
this.closeConnectionButton.UseVisualStyleBackColor = true;
this.closeConnectionButton.Click += new System.EventHandler(this.closeConnectionButton_Click);
//
// openConnectionButton
//
this.openConnectionButton.Location = new System.Drawing.Point(12, 210);
this.openConnectionButton.Name = "openConnectionButton";
this.openConnectionButton.Size = new System.Drawing.Size(128, 24);
this.openConnectionButton.TabIndex = 5;
this.openConnectionButton.Text = "Open connection";
this.openConnectionButton.UseVisualStyleBackColor = true;
this.openConnectionButton.Click += new System.EventHandler(this.openConnectionButton_Click);
//
// splitContainer2
//
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer2.Location = new System.Drawing.Point(0, 0);
this.splitContainer2.Name = "splitContainer2";
this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer2.Panel1
//
this.splitContainer2.Panel1.Controls.Add(this.logsTextBox);
//
// splitContainer2.Panel2
//
this.splitContainer2.Panel2.Controls.Add(this.dataTabControl);
this.splitContainer2.Size = new System.Drawing.Size(672, 583);
this.splitContainer2.SplitterDistance = 222;
this.splitContainer2.TabIndex = 0;
//
// logsTextBox
//
this.logsTextBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.logsTextBox.Location = new System.Drawing.Point(0, 0);
this.logsTextBox.Multiline = true;
this.logsTextBox.Name = "logsTextBox";
this.logsTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.logsTextBox.Size = new System.Drawing.Size(672, 222);
this.logsTextBox.TabIndex = 0;
//
// dataTabControl
//
this.dataTabControl.Controls.Add(this.tabPage1);
this.dataTabControl.Controls.Add(this.tabPage2);
this.dataTabControl.Dock = System.Windows.Forms.DockStyle.Fill;
this.dataTabControl.Location = new System.Drawing.Point(0, 0);
this.dataTabControl.Name = "dataTabControl";
this.dataTabControl.SelectedIndex = 0;
this.dataTabControl.Size = new System.Drawing.Size(672, 357);
this.dataTabControl.TabIndex = 0;
//
// tabPage1
//
this.tabPage1.Controls.Add(this.framesListView);
this.tabPage1.Location = new System.Drawing.Point(4, 22);
this.tabPage1.Name = "tabPage1";
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
this.tabPage1.Size = new System.Drawing.Size(664, 331);
this.tabPage1.TabIndex = 0;
this.tabPage1.Text = "Transferred frames";
this.tabPage1.UseVisualStyleBackColor = true;
//
// framesListView
//
this.framesListView.Dock = System.Windows.Forms.DockStyle.Fill;
this.framesListView.GridLines = true;
this.framesListView.Location = new System.Drawing.Point(3, 3);
this.framesListView.Name = "framesListView";
this.framesListView.Size = new System.Drawing.Size(658, 325);
this.framesListView.TabIndex = 0;
this.framesListView.UseCompatibleStateImageBehavior = false;
this.framesListView.View = System.Windows.Forms.View.Details;
//
// tabPage2
//
this.tabPage2.Location = new System.Drawing.Point(4, 22);
this.tabPage2.Name = "tabPage2";
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
this.tabPage2.Size = new System.Drawing.Size(664, 331);
this.tabPage2.TabIndex = 1;
this.tabPage2.Text = "Graph";
this.tabPage2.UseVisualStyleBackColor = true;
//
// DemoMainWnd
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(826, 583);
this.Controls.Add(this.splitContainer1);
this.Name = "DemoMainWnd";
this.Text = "Datastream interface test";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.DemoMainWnd_FormClosing);
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.splitContainer2.Panel1.ResumeLayout(false);
this.splitContainer2.Panel1.PerformLayout();
this.splitContainer2.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
this.splitContainer2.ResumeLayout(false);
this.dataTabControl.ResumeLayout(false);
this.tabPage1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.Button openConnectionButton;
private System.Windows.Forms.Button closeConnectionButton;
private System.Windows.Forms.Button stopMeasurementButton;
private System.Windows.Forms.Button startMeasurementButton;
private System.Windows.Forms.Button setStateButton;
private System.Windows.Forms.Button getStateButton;
private System.Windows.Forms.Button getQuantityUnitsButton;
private System.Windows.Forms.Button getQuantityCaptionButton;
private System.Windows.Forms.Button getQuantitiesCountButton;
private System.Windows.Forms.Button getVolumeUnitsButton;
private System.Windows.Forms.Button getTimeUnitsButton;
private System.Windows.Forms.Label measurementLabel;
private System.Windows.Forms.Label stateLabel;
private System.Windows.Forms.Label capabilitiesLabel;
private System.Windows.Forms.Button getIDButton;
private System.Windows.Forms.Button getFramesButton;
private System.Windows.Forms.SplitContainer splitContainer2;
private System.Windows.Forms.TextBox logsTextBox;
private System.Windows.Forms.TabControl dataTabControl;
private System.Windows.Forms.TabPage tabPage1;
private System.Windows.Forms.ListView framesListView;
private System.Windows.Forms.TabPage tabPage2;
}
}
+292
View File
@@ -0,0 +1,292 @@
using System;
using System.Text;
using System.Windows.Forms;
using DataStreamInterface;
namespace DataStreamInterfaceTest
{
public partial class DemoMainWnd : Form
{
IDataStreamMeter dataStreamMeter;
ActivityLog activityLog;
Unit timeUnits;
Unit volumeUnits;
int quantitiesCount;
string[] quantityCaption;
Unit[] quantityUnit;
Int64 storedFramesCount;
DataFrame[] transferredFrames;
public DemoMainWnd() : this(null) { }
public DemoMainWnd(IDataStreamMeter dataStreamMeter)
{
InitializeComponent();
this.dataStreamMeter = dataStreamMeter;
activityLog = new ActivityLog(logsTextBox);
framesListView.Columns.Add("ID", 100);
framesListView.Columns.Add("Time", 100);
framesListView.Columns.Add("Volume", 100);
framesListView.Columns.Add("Additional quantities", 300);
framesListView.ListViewItemSorter = new LviIDComparer();
}
void ShowNoMeterInterfaceMessage()
{
MessageBox.Show("No datastream meter interface");
}
private void getTimeUnitsButton_Click(object sender, EventArgs e)
{
if (dataStreamMeter == null)
ShowNoMeterInterfaceMessage();
else
{
timeUnits = dataStreamMeter.GetTimeUnits();
activityLog.Print(string.Format("Time units are {0}", timeUnits));
}
}
private void getVolumeUnitsButton_Click(object sender, EventArgs e)
{
if (dataStreamMeter == null)
ShowNoMeterInterfaceMessage();
else
{
volumeUnits = dataStreamMeter.GetVolumeUnits();
activityLog.Print(string.Format("Volume units are {0}", volumeUnits));
}
}
private void getQuantitiesCountButton_Click(object sender, EventArgs e)
{
if (dataStreamMeter == null)
ShowNoMeterInterfaceMessage();
else
{
int quantitesCountOri = quantitiesCount;
quantitiesCount = dataStreamMeter.GetQuantitiesCount();
activityLog.Print(string.Format("There are {0} additional quantites", quantitiesCount));
if (quantitesCountOri == 0)
{
quantityUnit = new Unit[quantitiesCount];
quantityCaption = new string[quantitiesCount];
for (int i = 0; i < quantitiesCount; i++) quantityCaption[i] = string.Empty;
}
else if (quantitiesCount != quantitesCountOri)
{
quantityUnit = new Unit[quantitiesCount];
quantityCaption = new string[quantitiesCount];
for (int i = 0; i < quantitiesCount; i++) quantityCaption[i] = string.Empty;
activityLog.Print(string.Format("Quantities count changed during operation"));
MessageBox.Show("Quantities count changed during operation", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}
private void getQuantityCaptionButton_Click(object sender, EventArgs e)
{
if (dataStreamMeter == null)
ShowNoMeterInterfaceMessage();
else
{
GetIntegerNumberDlg dlg = new GetIntegerNumberDlg(string.Format("Enter index {0} .. {1}", 0, quantitiesCount - 1), 0, quantitiesCount - 1);
if (dlg.ShowDialog() == DialogResult.OK)
{
quantityCaption[dlg.Number] = dataStreamMeter.GetQuantityCaption(dlg.Number);
activityLog.Print(string.Format("Caption of quantity #{0} is {1}", dlg.Number, quantityCaption[dlg.Number]));
}
}
}
private void getQuantityUnitsButton_Click(object sender, EventArgs e)
{
if (dataStreamMeter == null)
ShowNoMeterInterfaceMessage();
else
{
GetIntegerNumberDlg dlg = new GetIntegerNumberDlg(string.Format("Enter index {0} .. {1}", 0, quantitiesCount - 1), 0, quantitiesCount - 1);
if (dlg.ShowDialog() == DialogResult.OK)
{
quantityUnit[dlg.Number] = dataStreamMeter.GetQuantityUnits(dlg.Number);
activityLog.Print(string.Format("Units of quantity #{0} are {1}", dlg.Number, quantityUnit[dlg.Number]));
}
}
}
private void openConnectionButton_Click(object sender, EventArgs e)
{
if (dataStreamMeter == null)
ShowNoMeterInterfaceMessage();
else
{
string meterId;
if (dataStreamMeter.OpenConnection(0, "no connection parameters", out meterId))
{
activityLog.Print(string.Format("Connection established, meter ID is {0}", meterId));
}
else
{
activityLog.Print("Failed to establish a connection");
}
}
}
private void closeConnectionButton_Click(object sender, EventArgs e)
{
if (dataStreamMeter == null)
ShowNoMeterInterfaceMessage();
else
{
if (dataStreamMeter.CloseConnection(0))
{
framesListView.Items.Clear();
activityLog.Print("Connection closed");
}
else
{
activityLog.Print("Failed to close the connection");
}
}
}
private void DemoMainWnd_FormClosing(object sender, FormClosingEventArgs e)
{
if (dataStreamMeter == null)
{
dataStreamMeter.Shutdown();
}
}
private void getStateButton_Click(object sender, EventArgs e)
{
if (dataStreamMeter == null)
ShowNoMeterInterfaceMessage();
else
{
int state;
string parameter;
if (dataStreamMeter.GetState(0, out state, out parameter))
{
activityLog.Print(string.Format("Water meter state is {0} / {1}", state, parameter));
}
else
{
activityLog.Print("Failed to obtain the water meter state");
}
}
}
private void setStateButton_Click(object sender, EventArgs e)
{
if (dataStreamMeter == null)
ShowNoMeterInterfaceMessage();
else
{
GetStateDlg dlg = new GetStateDlg();
if (dlg.ShowDialog() == DialogResult.OK)
{
if (dataStreamMeter.SetState(0, dlg.State, dlg.Parameter))
{
activityLog.Print(string.Format("Water meter state set to {0} / {1}", dlg.State, dlg.Parameter));
}
else
{
activityLog.Print(string.Format("Failed to set the water meter state to {0} / {1}", dlg.State, dlg.Parameter));
}
}
}
}
private void startMeasurementButton_Click(object sender, EventArgs e)
{
if (dataStreamMeter == null)
ShowNoMeterInterfaceMessage();
else
{
if (dataStreamMeter.StartMeasurement(0))
{
framesListView.Items.Clear();
activityLog.Print(string.Format("Measurement started"));
}
else
{
activityLog.Print("Failed to start a measurement");
}
}
}
private void stopMeasurementButton_Click(object sender, EventArgs e)
{
if (dataStreamMeter == null)
ShowNoMeterInterfaceMessage();
else
{
if (dataStreamMeter.StopMeasurement(0, out storedFramesCount))
{
framesListView.Items.Clear();
activityLog.Print(string.Format("Measurement sopped, {0} frames acquired", storedFramesCount));
}
else
{
activityLog.Print("Failed to stop the measurement");
}
}
}
private void getFramesButton_Click(object sender, EventArgs e)
{
if (dataStreamMeter == null)
ShowNoMeterInterfaceMessage();
else
{
GetFrameBoundariesDlg dlg = new GetFrameBoundariesDlg("Enter frames range boundaries", 0, storedFramesCount - 1);
if (dlg.ShowDialog() != DialogResult.OK) return;
DataFrame[] frames = dataStreamMeter.GetFrames(0, dlg.From, Convert.ToInt32(dlg.To - dlg.From + 1));
{
foreach (var frame in frames)
{
if (frame != null) framesListView.Items.Add(GetListViewItem(frame));
}
}
}
}
private void getIDButton_Click(object sender, EventArgs e)
{
if (dataStreamMeter == null)
ShowNoMeterInterfaceMessage();
else
{
GetDblValueDlg dlg = new GetDblValueDlg("Enter time in seconds");
if (dlg.ShowDialog() == DialogResult.OK)
{
Int64 id = dataStreamMeter.GetID(0, dlg.DblValue);
activityLog.Print(string.Format("GetID({0}) returned {1}", dlg.DblValue, id));
}
}
}
ListViewItem GetListViewItem(DataFrame frame)
{
ListViewItem lvi = new ListViewItem(frame.ID.ToString());
lvi.SubItems.Add(frame.Time.ToString());
lvi.SubItems.Add(frame.Volume.ToString());
StringBuilder sb = new StringBuilder();
foreach (var quantity in frame.Quantity)
{
sb.Append(quantity.ToString());
sb.Append(" ");
}
lvi.SubItems.Add(sb.ToString());
lvi.Tag = frame;
return lvi;
}
}
}
+88
View File
@@ -0,0 +1,88 @@
namespace DataStreamInterfaceTest
{
partial class GetDblValueDlg
{
/// <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.valueTextBox = new System.Windows.Forms.TextBox();
this.okButton = new System.Windows.Forms.Button();
this.cancelButton = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// valueTextBox
//
this.valueTextBox.Location = new System.Drawing.Point(35, 20);
this.valueTextBox.Name = "valueTextBox";
this.valueTextBox.Size = new System.Drawing.Size(94, 20);
this.valueTextBox.TabIndex = 0;
//
// okButton
//
this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.okButton.Location = new System.Drawing.Point(216, 16);
this.okButton.Name = "okButton";
this.okButton.Size = new System.Drawing.Size(75, 29);
this.okButton.TabIndex = 1;
this.okButton.Text = "OK";
this.okButton.UseVisualStyleBackColor = true;
this.okButton.Click += new System.EventHandler(this.okButton_Click);
//
// cancelButton
//
this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cancelButton.Location = new System.Drawing.Point(306, 16);
this.cancelButton.Name = "cancelButton";
this.cancelButton.Size = new System.Drawing.Size(75, 29);
this.cancelButton.TabIndex = 2;
this.cancelButton.Text = "Cancel";
this.cancelButton.UseVisualStyleBackColor = true;
//
// GetFlowDlg
//
this.AcceptButton = this.okButton;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.cancelButton;
this.ClientSize = new System.Drawing.Size(396, 58);
this.Controls.Add(this.cancelButton);
this.Controls.Add(this.okButton);
this.Controls.Add(this.valueTextBox);
this.Name = "GetFlowDlg";
this.Text = "Enter flow";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox valueTextBox;
private System.Windows.Forms.Button okButton;
private System.Windows.Forms.Button cancelButton;
}
}
+59
View File
@@ -0,0 +1,59 @@
using System;
using System.Globalization;
using System.Windows.Forms;
namespace DataStreamInterfaceTest
{
public partial class GetDblValueDlg : Form
{
public double DblValue;
double lowerLimit;
double upperLimit;
public GetDblValueDlg()
: this("Enter flow in [m3/h] please")
{
}
public GetDblValueDlg(string title)
: this(title, 0, 100.0)
{
}
public GetDblValueDlg(string title, double lowerLimit, double upperLimit)
{
InitializeComponent();
this.Text = title;
this.lowerLimit = lowerLimit;
this.upperLimit = upperLimit;
}
private void okButton_Click(object sender, EventArgs e)
{
double val;
if (TryParseUDouble(valueTextBox.Text, out val))
{
DblValue = val;
DialogResult = DialogResult.OK;
Close();
}
else
{
MessageBox.Show("Invalid value");
DialogResult = DialogResult.None;
}
}
/// <summary>
/// Parse an unsigned double number
/// </summary>
bool TryParseUDouble(string text, out double result)
{
return double.TryParse(text, NumberStyles.AllowDecimalPoint, CultureInfo.CurrentCulture, out result) ||
double.TryParse(text, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out result);
}
}
}
+126
View File
@@ -0,0 +1,126 @@
namespace DataStreamInterfaceTest
{
partial class GetFrameBoundariesDlg
{
/// <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.fromTextBox = new System.Windows.Forms.TextBox();
this.okButton = new System.Windows.Forms.Button();
this.cancelButton = new System.Windows.Forms.Button();
this.toTextBox = new System.Windows.Forms.TextBox();
this.fromLabel = new System.Windows.Forms.Label();
this.toLabel = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// fromTextBox
//
this.fromTextBox.Location = new System.Drawing.Point(89, 16);
this.fromTextBox.Name = "fromTextBox";
this.fromTextBox.Size = new System.Drawing.Size(100, 20);
this.fromTextBox.TabIndex = 0;
//
// okButton
//
this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.okButton.Location = new System.Drawing.Point(225, 24);
this.okButton.Name = "okButton";
this.okButton.Size = new System.Drawing.Size(75, 36);
this.okButton.TabIndex = 1;
this.okButton.Text = "OK";
this.okButton.UseVisualStyleBackColor = true;
this.okButton.Click += new System.EventHandler(this.okButton_Click);
//
// cancelButton
//
this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cancelButton.Location = new System.Drawing.Point(316, 24);
this.cancelButton.Name = "cancelButton";
this.cancelButton.Size = new System.Drawing.Size(75, 36);
this.cancelButton.TabIndex = 2;
this.cancelButton.Text = "Cancel";
this.cancelButton.UseVisualStyleBackColor = true;
//
// toTextBox
//
this.toTextBox.Location = new System.Drawing.Point(89, 46);
this.toTextBox.Name = "toTextBox";
this.toTextBox.Size = new System.Drawing.Size(100, 20);
this.toTextBox.TabIndex = 3;
//
// fromLabel
//
this.fromLabel.AutoSize = true;
this.fromLabel.Location = new System.Drawing.Point(12, 19);
this.fromLabel.Name = "fromLabel";
this.fromLabel.Size = new System.Drawing.Size(30, 13);
this.fromLabel.TabIndex = 4;
this.fromLabel.Text = "From";
//
// toLabel
//
this.toLabel.AutoSize = true;
this.toLabel.Location = new System.Drawing.Point(12, 49);
this.toLabel.Name = "toLabel";
this.toLabel.Size = new System.Drawing.Size(20, 13);
this.toLabel.TabIndex = 5;
this.toLabel.Text = "To";
//
// GetFrameBoundariesDlg
//
this.AcceptButton = this.okButton;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoSize = true;
this.CancelButton = this.cancelButton;
this.ClientSize = new System.Drawing.Size(419, 79);
this.ControlBox = false;
this.Controls.Add(this.toLabel);
this.Controls.Add(this.fromLabel);
this.Controls.Add(this.toTextBox);
this.Controls.Add(this.cancelButton);
this.Controls.Add(this.okButton);
this.Controls.Add(this.fromTextBox);
this.Name = "GetFrameBoundariesDlg";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Enter frames range boundaries";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox fromTextBox;
private System.Windows.Forms.Button okButton;
private System.Windows.Forms.Button cancelButton;
private System.Windows.Forms.TextBox toTextBox;
private System.Windows.Forms.Label fromLabel;
private System.Windows.Forms.Label toLabel;
}
}
@@ -0,0 +1,88 @@
using System;
using System.Windows.Forms;
namespace DataStreamInterfaceTest
{
public partial class GetFrameBoundariesDlg : Form
{
/// <summary>
/// Integer number entered in this form
/// </summary>
public Int64 From;
public Int64 To;
Int64 lowerLimit;
Int64 upperLimit;
/// <summary>
/// Default constructor
/// </summary>
public GetFrameBoundariesDlg()
: this("Enter state please")
{
}
/// <summary>
/// Constructor with a custom window title.
/// </summary>
/// <param name="title">Window title</param>
public GetFrameBoundariesDlg(string title)
: this(title, Int64.MinValue, Int64.MaxValue)
{
}
/// <summary>
/// Constructor with a custom window title, limits and non-empty initial value.
/// </summary>
/// <param name="title">Window title</param>
/// <param name="lowerLimit">Lower limit</param>
/// <param name="upperLimit">Upper limit</param>
/// <param name="initialValue">Initial value</param>
public GetFrameBoundariesDlg(string title, Int64 lowerLimit, Int64 upperLimit, int initialValue)
: this(title, lowerLimit, upperLimit)
{
fromTextBox.Text = initialValue.ToString();
}
/// <summary>
/// Constructor with a custom window title and lower/upper limits.
/// </summary>
/// <param name="title">Window title</param>
/// <param name="lowerLimit">Lower limit</param>
/// <param name="upperLimit">Upper limit</param>
public GetFrameBoundariesDlg(string title, Int64 lowerLimit, Int64 upperLimit)
{
InitializeComponent();
this.Text = title;
this.lowerLimit = lowerLimit;
this.upperLimit = upperLimit;
}
/// <summary>
/// OK button handler that verifies validity of the entered value.
/// </summary>
private void okButton_Click(object sender, EventArgs e)
{
Int64 from;
Int64 to;
if (Int64.TryParse(fromTextBox.Text, out from) && from >= lowerLimit && from <= upperLimit &&
Int64.TryParse(toTextBox.Text, out to) && to >= lowerLimit && to <= upperLimit &&
to >= from && to < from + Int32.MaxValue)
{
From = from;
To = to;
DialogResult = DialogResult.OK;
}
else
{
string message = (lowerLimit != 0 || upperLimit != Int32.MaxValue)
? string.Format("Invalid boundaries ({0}..{1})", lowerLimit, upperLimit)
: "Invalid boundaries";
MessageBox.Show(message);
DialogResult = DialogResult.None; /// Prevent closing this window
}
}
}
}
+90
View File
@@ -0,0 +1,90 @@
namespace DataStreamInterfaceTest
{
partial class GetIntegerNumberDlg
{
/// <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.numberTextBox = new System.Windows.Forms.TextBox();
this.okButton = new System.Windows.Forms.Button();
this.cancelButton = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// numberTextBox
//
this.numberTextBox.Location = new System.Drawing.Point(36, 16);
this.numberTextBox.Name = "numberTextBox";
this.numberTextBox.Size = new System.Drawing.Size(100, 20);
this.numberTextBox.TabIndex = 0;
//
// okButton
//
this.okButton.Location = new System.Drawing.Point(174, 7);
this.okButton.Name = "okButton";
this.okButton.Size = new System.Drawing.Size(75, 36);
this.okButton.TabIndex = 1;
this.okButton.Text = "OK";
this.okButton.UseVisualStyleBackColor = true;
this.okButton.Click += new System.EventHandler(this.okButton_Click);
//
// cancelButton
//
this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cancelButton.Location = new System.Drawing.Point(265, 7);
this.cancelButton.Name = "cancelButton";
this.cancelButton.Size = new System.Drawing.Size(75, 36);
this.cancelButton.TabIndex = 2;
this.cancelButton.Text = "Cancel";
this.cancelButton.UseVisualStyleBackColor = true;
//
// GetIntegerNumberDlg
//
this.AcceptButton = this.okButton;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoSize = true;
this.CancelButton = this.cancelButton;
this.ClientSize = new System.Drawing.Size(363, 50);
this.ControlBox = false;
this.Controls.Add(this.cancelButton);
this.Controls.Add(this.okButton);
this.Controls.Add(this.numberTextBox);
this.Name = "GetIntegerNumberDlg";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Enter integer number please";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox numberTextBox;
private System.Windows.Forms.Button okButton;
private System.Windows.Forms.Button cancelButton;
}
}
@@ -0,0 +1,83 @@
using System;
using System.Windows.Forms;
namespace DataStreamInterfaceTest
{
public partial class GetIntegerNumberDlg : Form
{
/// <summary>
/// Integer number entered in this form
/// </summary>
public int Number;
int lowerLimit;
int upperLimit;
/// <summary>
/// Default constructor
/// </summary>
public GetIntegerNumberDlg()
: this("Enter integer number please")
{
}
/// <summary>
/// Constructor with a custom window title.
/// </summary>
/// <param name="title">Window title</param>
public GetIntegerNumberDlg(string title)
: this(title, Int32.MinValue, Int32.MaxValue)
{
}
/// <summary>
/// Constructor with a custom window title, limits and non-empty initial value.
/// </summary>
/// <param name="title">Window title</param>
/// <param name="lowerLimit">Lower limit</param>
/// <param name="upperLimit">Upper limit</param>
/// <param name="initialValue">Initial value</param>
public GetIntegerNumberDlg(string title, int lowerLimit, int upperLimit, int initialValue)
: this(title, lowerLimit, upperLimit)
{
numberTextBox.Text = initialValue.ToString();
}
/// <summary>
/// Constructor with a custom window title and lower/upper limits.
/// </summary>
/// <param name="title">Window title</param>
/// <param name="lowerLimit">Lower limit</param>
/// <param name="upperLimit">Upper limit</param>
public GetIntegerNumberDlg(string title, int lowerLimit, int upperLimit)
{
InitializeComponent();
this.Text = title;
this.lowerLimit = lowerLimit;
this.upperLimit = upperLimit;
}
/// <summary>
/// OK button handler that verifies validity of the entered value.
/// </summary>
private void okButton_Click(object sender, EventArgs e)
{
int number;
if (int.TryParse(numberTextBox.Text, out number) && number >= lowerLimit && number <= upperLimit)
{
Number = number;
DialogResult = DialogResult.OK;
}
else
{
string message = (lowerLimit != Int32.MinValue || upperLimit != Int32.MaxValue)
? string.Format("Invalid integer number ({0}..{1})", lowerLimit, upperLimit)
: "Invalid integer number";
MessageBox.Show(message);
DialogResult = DialogResult.None; /// Prevent closing this window
}
}
}
}
+126
View File
@@ -0,0 +1,126 @@
namespace DataStreamInterfaceTest
{
partial class GetStateDlg
{
/// <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.stateTextBox = new System.Windows.Forms.TextBox();
this.okButton = new System.Windows.Forms.Button();
this.cancelButton = new System.Windows.Forms.Button();
this.parameterTextBox = new System.Windows.Forms.TextBox();
this.stateLabel = new System.Windows.Forms.Label();
this.parameterLabel = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// stateTextBox
//
this.stateTextBox.Location = new System.Drawing.Point(89, 16);
this.stateTextBox.Name = "stateTextBox";
this.stateTextBox.Size = new System.Drawing.Size(100, 20);
this.stateTextBox.TabIndex = 0;
//
// okButton
//
this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.okButton.Location = new System.Drawing.Point(225, 24);
this.okButton.Name = "okButton";
this.okButton.Size = new System.Drawing.Size(75, 36);
this.okButton.TabIndex = 1;
this.okButton.Text = "OK";
this.okButton.UseVisualStyleBackColor = true;
this.okButton.Click += new System.EventHandler(this.okButton_Click);
//
// cancelButton
//
this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cancelButton.Location = new System.Drawing.Point(316, 24);
this.cancelButton.Name = "cancelButton";
this.cancelButton.Size = new System.Drawing.Size(75, 36);
this.cancelButton.TabIndex = 2;
this.cancelButton.Text = "Cancel";
this.cancelButton.UseVisualStyleBackColor = true;
//
// parameterTextBox
//
this.parameterTextBox.Location = new System.Drawing.Point(89, 46);
this.parameterTextBox.Name = "parameterTextBox";
this.parameterTextBox.Size = new System.Drawing.Size(100, 20);
this.parameterTextBox.TabIndex = 3;
//
// stateLabel
//
this.stateLabel.AutoSize = true;
this.stateLabel.Location = new System.Drawing.Point(12, 19);
this.stateLabel.Name = "stateLabel";
this.stateLabel.Size = new System.Drawing.Size(32, 13);
this.stateLabel.TabIndex = 4;
this.stateLabel.Text = "State";
//
// parameterLabel
//
this.parameterLabel.AutoSize = true;
this.parameterLabel.Location = new System.Drawing.Point(12, 49);
this.parameterLabel.Name = "parameterLabel";
this.parameterLabel.Size = new System.Drawing.Size(55, 13);
this.parameterLabel.TabIndex = 5;
this.parameterLabel.Text = "Parameter";
//
// GetStateDlg
//
this.AcceptButton = this.okButton;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoSize = true;
this.CancelButton = this.cancelButton;
this.ClientSize = new System.Drawing.Size(419, 79);
this.ControlBox = false;
this.Controls.Add(this.parameterLabel);
this.Controls.Add(this.stateLabel);
this.Controls.Add(this.parameterTextBox);
this.Controls.Add(this.cancelButton);
this.Controls.Add(this.okButton);
this.Controls.Add(this.stateTextBox);
this.Name = "GetStateDlg";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Enter state please";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox stateTextBox;
private System.Windows.Forms.Button okButton;
private System.Windows.Forms.Button cancelButton;
private System.Windows.Forms.TextBox parameterTextBox;
private System.Windows.Forms.Label stateLabel;
private System.Windows.Forms.Label parameterLabel;
}
}
+85
View File
@@ -0,0 +1,85 @@
using System;
using System.Windows.Forms;
namespace DataStreamInterfaceTest
{
public partial class GetStateDlg : Form
{
/// <summary>
/// Integer number entered in this form
/// </summary>
public int State;
public string Parameter;
int lowerLimit;
int upperLimit;
/// <summary>
/// Default constructor
/// </summary>
public GetStateDlg()
: this("Enter state please")
{
}
/// <summary>
/// Constructor with a custom window title.
/// </summary>
/// <param name="title">Window title</param>
public GetStateDlg(string title)
: this(title, Int32.MinValue, Int32.MaxValue)
{
}
/// <summary>
/// Constructor with a custom window title, limits and non-empty initial value.
/// </summary>
/// <param name="title">Window title</param>
/// <param name="lowerLimit">Lower limit</param>
/// <param name="upperLimit">Upper limit</param>
/// <param name="initialValue">Initial value</param>
public GetStateDlg(string title, int lowerLimit, int upperLimit, int initialValue)
: this(title, lowerLimit, upperLimit)
{
stateTextBox.Text = initialValue.ToString();
}
/// <summary>
/// Constructor with a custom window title and lower/upper limits.
/// </summary>
/// <param name="title">Window title</param>
/// <param name="lowerLimit">Lower limit</param>
/// <param name="upperLimit">Upper limit</param>
public GetStateDlg(string title, int lowerLimit, int upperLimit)
{
InitializeComponent();
this.Text = title;
this.lowerLimit = lowerLimit;
this.upperLimit = upperLimit;
}
/// <summary>
/// OK button handler that verifies validity of the entered value.
/// </summary>
private void okButton_Click(object sender, EventArgs e)
{
int number;
if (int.TryParse(stateTextBox.Text, out number) && number >= lowerLimit && number <= upperLimit)
{
State = number;
Parameter = parameterTextBox.Text;
DialogResult = DialogResult.OK;
}
else
{
string message = (lowerLimit != Int32.MinValue || upperLimit != Int32.MaxValue)
? string.Format("Invalid state ({0}..{1})", lowerLimit, upperLimit)
: "Invalid state";
MessageBox.Show(message);
DialogResult = DialogResult.None; /// Prevent closing this window
}
}
}
}
+39
View File
@@ -0,0 +1,39 @@
using System;
using System.Collections;
using System.Windows.Forms;
namespace DataStreamInterfaceTest
{
public class LviIDComparer : IComparer
{
int column;
SortOrder order;
public LviIDComparer()
{
column = 0;
order = SortOrder.Ascending;
}
public LviIDComparer(int column, SortOrder order)
{
this.column = column;
this.order = order;
}
public int Compare(object x, object y)
{
Int64 valX = Int64.Parse(((ListViewItem)x).SubItems[column].Text);
Int64 valY = Int64.Parse(((ListViewItem)y).SubItems[column].Text);
if (order == SortOrder.Ascending)
{
return valX > valY ? 1 : valX == valY ? 0 : -1;
}
else
{
return valX < valY ? 1 : valX == valY ? 0 : -1;
}
}
}
}
+55
View File
@@ -0,0 +1,55 @@
using System;
using System.IO;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
using System.Windows.Forms;
using DataStreamInterface;
namespace DataStreamInterfaceTest
{
class Program
{
#if DEBUG
const string CatalogDir = "..\\..\\..\\DataStreamMeter\\bin\\Debug";
#else
const string CatalogDir = "..\\..\\..\\DataStreamMeter\\bin\\Release";
#endif
[Import(typeof(IDataStreamMeter))]
IDataStreamMeter dataStreamMeter;
private Program()
{
Console.WriteLine("Components found:");
foreach (var file in Directory.EnumerateFiles(CatalogDir))
{
Console.WriteLine(file);
}
try
{
var catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(typeof(DataStreamInterface.IDataStreamMeter).Assembly));
catalog.Catalogs.Add(new DirectoryCatalog(CatalogDir));
(new CompositionContainer(catalog)).ComposeParts(this);
}
catch (CompositionException compositionException)
{
Console.WriteLine(compositionException.ToString());
}
}
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Program p = new Program();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new DemoMainWnd(p.dataStreamMeter));
}
}
}
@@ -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("DataStreamInterfaceTest")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("DataStreamInterfaceTest")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[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("429fdea9-ec3a-47d8-88b3-5df11de8b4c8")]
// 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")]
+71
View File
@@ -0,0 +1,71 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace DataStreamInterfaceTest.Properties
{
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DataStreamMainDemo.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
}
}
@@ -0,0 +1,117 @@
<?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.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: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" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</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" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
+30
View File
@@ -0,0 +1,30 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace DataStreamInterfaceTest.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
return defaultInstance;
}
}
}
}
@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>
+85
View File
@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{E6925701-57A6-4167-B5C4-BF670F1DE310}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>DataStreamMeter</RootNamespace>
<AssemblyName>DataStreamMeter</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<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|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<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="GetDblValueDlg.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="GetDblValueDlg.Designer.cs">
<DependentUpon>GetDblValueDlg.cs</DependentUpon>
</Compile>
<Compile Include="MeterDataEventArgs.cs" />
<Compile Include="MeterSimulationDlg.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MeterSimulationDlg.Designer.cs">
<DependentUpon>MeterSimulationDlg.cs</DependentUpon>
</Compile>
<Compile Include="MeterSimulation.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Sample.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\DataStreamInterface\DataStreamInterface.csproj">
<Project>{7ebeea14-91c4-48d7-af0a-7a4bc3ff9a28}</Project>
<Name>DataStreamInterface</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="GetDblValueDlg.resx">
<DependentUpon>GetDblValueDlg.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="MeterSimulationDlg.resx">
<DependentUpon>MeterSimulationDlg.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
</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>
+88
View File
@@ -0,0 +1,88 @@
namespace DataStreamMeter
{
partial class GetDblValueDlg
{
/// <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.valueTextBox = new System.Windows.Forms.TextBox();
this.okButton = new System.Windows.Forms.Button();
this.cancelButton = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// valueTextBox
//
this.valueTextBox.Location = new System.Drawing.Point(35, 20);
this.valueTextBox.Name = "valueTextBox";
this.valueTextBox.Size = new System.Drawing.Size(94, 20);
this.valueTextBox.TabIndex = 0;
//
// okButton
//
this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.okButton.Location = new System.Drawing.Point(216, 16);
this.okButton.Name = "okButton";
this.okButton.Size = new System.Drawing.Size(75, 29);
this.okButton.TabIndex = 1;
this.okButton.Text = "OK";
this.okButton.UseVisualStyleBackColor = true;
this.okButton.Click += new System.EventHandler(this.okButton_Click);
//
// cancelButton
//
this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cancelButton.Location = new System.Drawing.Point(306, 16);
this.cancelButton.Name = "cancelButton";
this.cancelButton.Size = new System.Drawing.Size(75, 29);
this.cancelButton.TabIndex = 2;
this.cancelButton.Text = "Cancel";
this.cancelButton.UseVisualStyleBackColor = true;
//
// GetFlowDlg
//
this.AcceptButton = this.okButton;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.cancelButton;
this.ClientSize = new System.Drawing.Size(396, 58);
this.Controls.Add(this.cancelButton);
this.Controls.Add(this.okButton);
this.Controls.Add(this.valueTextBox);
this.Name = "GetFlowDlg";
this.Text = "Enter flow";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox valueTextBox;
private System.Windows.Forms.Button okButton;
private System.Windows.Forms.Button cancelButton;
}
}
+59
View File
@@ -0,0 +1,59 @@
using System;
using System.Globalization;
using System.Windows.Forms;
namespace DataStreamMeter
{
public partial class GetDblValueDlg : Form
{
public double DblValue;
double lowerLimit;
double upperLimit;
public GetDblValueDlg()
: this("Enter flow in [m3/h] please")
{
}
public GetDblValueDlg(string title)
: this(title, 0, 100.0)
{
}
public GetDblValueDlg(string title, double lowerLimit, double upperLimit)
{
InitializeComponent();
this.Text = title;
this.lowerLimit = lowerLimit;
this.upperLimit = upperLimit;
}
private void okButton_Click(object sender, EventArgs e)
{
double val;
if (TryParseUDouble(valueTextBox.Text, out val))
{
DblValue = val;
DialogResult = DialogResult.OK;
Close();
}
else
{
MessageBox.Show("Invalid value");
DialogResult = DialogResult.None;
}
}
/// <summary>
/// Parse an unsigned double number
/// </summary>
bool TryParseUDouble(string text, out double result)
{
return double.TryParse(text, NumberStyles.AllowDecimalPoint, CultureInfo.CurrentCulture, out result) ||
double.TryParse(text, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out result);
}
}
}
+20
View File
@@ -0,0 +1,20 @@
using System;
namespace DataStreamMeter
{
public class MeterDataEventArgs : EventArgs
{
public State State;
public double Time;
public double Volume;
public double Flow;
public MeterDataEventArgs(State state, double time, double volume, double flow)
{
State = state;
Time = time;
Volume = volume;
Flow = flow;
}
}
}
+351
View File
@@ -0,0 +1,351 @@
using System;
using System.ComponentModel.Composition;
using DataStreamInterface;
namespace DataStreamMeter
{
[Export(typeof(IDataStreamMeter))]
public class MeterSimulation : IDataStreamMeter
{
MeterSimulationDlg modelessDlg;
/// Water meter specification
public readonly string MeterID = "3141592653";
public const Unit TimeUnits = Unit.s; /// Unit.s, Unit.ms, ...
public const Unit VolumeUnits = Unit.l; /// Unit.l, Unit.USgal, ...
public const Unit FlowUnits = Unit.m3ph; /// Unit.m3ph, Unit.USgalps, Unit.cfs, ...
public const double SamplingPeriodSec = 0.125; /// Sampling period in seconds (here 125 ms, 8 Hz)
public readonly double SamplingPeriod;
public const Int64 MaxSamplesCount = 40000; /// Maximal test time is SamplingPeriod * MaxSamplesCount
Sample[] samples = new Sample[MaxSamplesCount];
Int64 storedSamplesCount;
readonly object stateChangeAndTimerTickLock = new object();
public State State;
string connectionParameters;
/// initialTime is time when simulation started
/// (lastSampleTime - initialTime).TotalSeconds is multiple of Sampling Period
DateTime initialTime;
/// Last user interface tick info
bool lastTickValid;
State lastTickState;
/// Values incrementally updated on each timer tick
double currentTime;
double currentVolume;
double currentFlow;
double currentFlow_m3ph;
DateTime startTimeStamp; /// Measurement start DateTime
double startTime; /// Measurement start time in seconds
DateTime stopTimeStamp; /// Measurement end DateTime
double stopTime; /// Measurement end time in seconds
public MeterSimulation()
{
modelessDlg = null;
State = State.Disconnected;
SamplingPeriod = DataStreamInterface.Units.ConvertTo(TimeUnits, SamplingPeriodSec);
lastTickValid = false;
initialTime = DateTime.Now.Date; /// An arbitrary initial time (in this case the last midnight)
}
public Unit GetTimeUnits()
{
return TimeUnits;
}
public Unit GetVolumeUnits()
{
return VolumeUnits;
}
public int GetQuantitiesCount()
{
return 1;
}
public string GetQuantityCaption(int quantityNr)
{
if (quantityNr == 0) return "Flow";
return string.Empty;
}
public Unit GetQuantityUnits(int quantityNr)
{
if (quantityNr == 0) return FlowUnits;
return Unit.None;
}
public int GetMetersCount()
{
return 1;
}
public bool OpenConnection(int meterIx, string connectionParameters, out string meterID)
{
lock (stateChangeAndTimerTickLock)
{
if (State != State.Disconnected)
{
/// Meter is already connected
meterID = MeterID;
return true;
}
/// Connect the meter
meterID = MeterID;
this.connectionParameters = connectionParameters;
lastTickValid = false;
State = State.Connected;
}
/// Open modeless form
modelessDlg = new MeterSimulationDlg(this, MeterID);
modelessDlg.Show();
return true;
}
public bool CloseConnection(int meterIx)
{
bool closeModelessDlg = false;
lock (stateChangeAndTimerTickLock)
{
if (State != State.Disconnected)
{
State = State.Disconnected;
storedSamplesCount = 0;
closeModelessDlg = true;
}
}
if (closeModelessDlg)
{
if (modelessDlg != null) modelessDlg.Close();
modelessDlg = null;
}
return true;
}
public bool CloseConnectionAll()
{
return CloseConnection(0);
}
public bool Shutdown()
{
return true;
}
public bool GetState(int meterIx, out int state, out string parameter)
{
state = (int)this.State;
parameter = this.connectionParameters;
return true;
}
public bool SetState(int meterIx, int state, string parameter)
{
/// It's not allowed to change the satate in this demo
return false;
}
public bool SetStateAll(int state, string parameter)
{
return SetState(0, state, parameter);
}
public bool StartMeasurement(int meterIx = 0)
{
lock (stateChangeAndTimerTickLock)
{
if (State == State.Connected)
{
startTimeStamp = DateTime.Now;
startTime = TimeInSecondsFromDateTime(startTimeStamp, initialTime, SamplingPeriodSec);
storedSamplesCount = 0;
State = State.MeasurementInProgress;
return true;
}
else
{
return false;
}
}
}
public bool StartMeasurementAll()
{
return StartMeasurement(0);
}
public bool StopMeasurement(int meterIx, out Int64 storedFramesCount)
{
lock (stateChangeAndTimerTickLock)
{
if (State == State.MeasurementInProgress)
{
stopTimeStamp = DateTime.Now;
stopTime = TimeInSecondsFromDateTime(stopTimeStamp, initialTime, SamplingPeriodSec);
int newSamplesCount = Convert.ToInt32(Math.Round((stopTime - currentTime) / SamplingPeriodSec));
double time = Units.ConvertTo(TimeUnits, currentTime);
double volume = currentVolume;
double volumeIncrement = Units.ConvertTo(VolumeUnits, currentFlow_m3ph * (SamplingPeriodSec / 3.6));
for (int i = 0; i < newSamplesCount; i++)
{
time += SamplingPeriod;
volume += volumeIncrement;
if (storedSamplesCount < MaxSamplesCount)
{
samples[storedSamplesCount++] = new Sample(time, volume, currentFlow);
}
}
State = State.Connected;
storedFramesCount = storedSamplesCount;
return true;
}
else
{
storedFramesCount = 0;
return false;
}
}
}
public bool StopMeasurementAll(out Int64[] storedFramesCount)
{
storedFramesCount = new Int64[1];
return StopMeasurement(0, out storedFramesCount[0]);
}
public void TimerTick(double flow_m3ph)
{
lock (stateChangeAndTimerTickLock)
{
double lastSampleTime = TimeInSecondsFromDateTime(DateTime.Now, initialTime, SamplingPeriodSec);
currentFlow_m3ph = flow_m3ph;
currentFlow = Units.ConvertTo(FlowUnits, flow_m3ph);
if (!lastTickValid)
{
currentTime = lastSampleTime;
currentVolume = 0;
lastTickValid = true;
lastTickState = State;
return;
}
else
{
int newSamplesCount = Convert.ToInt32(Math.Round((lastSampleTime - currentTime) / SamplingPeriodSec));
double volumeIncrement = Units.ConvertTo(VolumeUnits, currentFlow_m3ph * (SamplingPeriodSec / 3.6));
for (int i = 0; i < newSamplesCount; i++)
{
currentTime += SamplingPeriodSec;
currentVolume += volumeIncrement;
if (State == State.MeasurementInProgress && currentTime > startTime && storedSamplesCount < MaxSamplesCount)
{
samples[storedSamplesCount++] = new Sample(Units.ConvertTo(TimeUnits, currentTime), currentVolume, currentFlow);
}
}
currentTime = lastSampleTime; /// Rectify, prevent error propagation
lastTickState = State;
}
}
modelessDlg.OnMeterdata(new MeterDataEventArgs(State, currentTime, currentVolume, currentFlow));
}
/// <summary>
/// Obtain the last time instance before 'DateTime time' which is multiple of samplingPeriod-s after 'DateTime initialTime'.
/// </summary>
/// <param name="time">Time to be converted to seconds and rounded to samplingPeriod-s</param>
/// <param name="startTime">Initial time</param>
/// <param name="samplePeriod">Sampling period in seconds</param>
/// <returns></returns>
double TimeInSecondsFromDateTime(DateTime time, DateTime initialTime, double samplingPeriod)
{
TimeSpan span = time - initialTime;
return samplingPeriod * Math.Floor(span.TotalSeconds / samplingPeriod);
}
///---------------------------
/// Datastream data exchange
///---------------------------
/// <summary>
/// Retuns 'count' data frames starting with data frame with ID = 'id'
/// </summary>
/// <param name="id">First frame ID</param>
/// <param name="count">Frames count</param>
/// <returns>Selected data frames</returns>
public DataFrame[] GetFrames(int meterIx, Int64 startID, int count)
{
DataFrame[] frames = new DataFrame[count];
if (State != State.MeasurementInProgress)
{
for (int j = 0; j < count; j++)
{
Int64 id = startID + j;
if (id < storedSamplesCount)
{
frames[j] = new DataFrame(id, samples[id].Time, samples[id].Volume, new double[1] { samples[id].Flow });
}
}
}
return frames;
}
/// <summary>
/// Returns ID of the data frame where time equals or exceeds the specified time.
/// When time of the first frame (ID=0) is larger then specified time, function returns 0.
/// </summary>
/// <param name="time">Time</param>
/// <returns>ID of the data frame at or after the pecified time</returns>
public Int64 GetID(int meterIx, double time)
{
if (storedSamplesCount == 0) return -1;
Int64 lo = 0;
Int64 hi = storedSamplesCount - 1;
if (samples[hi].Time < time) return -1;
while (lo < hi)
{
Int64 mid = (lo + hi) / 2;
if (samples[mid].Time < time)
{
lo = mid + 1;
}
else
{
hi = mid;
}
}
return lo;
}
}
public enum State
{
Disconnected = 0,
Connected = 1,
MeasurementInProgress = 2,
}
}
+323
View File
@@ -0,0 +1,323 @@
namespace DataStreamMeter
{
partial class MeterSimulationDlg
{
/// <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.components = new System.ComponentModel.Container();
this.meterIDGroupBox = new System.Windows.Forms.GroupBox();
this.label3 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.volumeUnitsTextBox = new System.Windows.Forms.TextBox();
this.timeUnitsTextBox = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.meterIDTextBox = new System.Windows.Forms.TextBox();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.setFlowButton = new System.Windows.Forms.Button();
this.flowm3phTextBox = new System.Windows.Forms.TextBox();
this.flowTrackBar = new System.Windows.Forms.TrackBar();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.flowTextBox = new System.Windows.Forms.TextBox();
this.volumeTextBox = new System.Windows.Forms.TextBox();
this.timeTextBox = new System.Windows.Forms.TextBox();
this.stateTextBox = new System.Windows.Forms.TextBox();
this.label8 = new System.Windows.Forms.Label();
this.label7 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.lastUITickTextBox = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.meterIDGroupBox.SuspendLayout();
this.groupBox1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.flowTrackBar)).BeginInit();
this.groupBox2.SuspendLayout();
this.SuspendLayout();
//
// meterIDGroupBox
//
this.meterIDGroupBox.Controls.Add(this.label3);
this.meterIDGroupBox.Controls.Add(this.label2);
this.meterIDGroupBox.Controls.Add(this.volumeUnitsTextBox);
this.meterIDGroupBox.Controls.Add(this.timeUnitsTextBox);
this.meterIDGroupBox.Controls.Add(this.label1);
this.meterIDGroupBox.Controls.Add(this.meterIDTextBox);
this.meterIDGroupBox.Location = new System.Drawing.Point(12, 12);
this.meterIDGroupBox.Name = "meterIDGroupBox";
this.meterIDGroupBox.Size = new System.Drawing.Size(453, 105);
this.meterIDGroupBox.TabIndex = 0;
this.meterIDGroupBox.TabStop = false;
this.meterIDGroupBox.Text = "Water meter info";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(18, 76);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(67, 13);
this.label3.TabIndex = 5;
this.label3.Text = "Volume units";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(18, 50);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(55, 13);
this.label2.TabIndex = 4;
this.label2.Text = "Time units";
//
// volumeUnitsTextBox
//
this.volumeUnitsTextBox.Enabled = false;
this.volumeUnitsTextBox.Location = new System.Drawing.Point(122, 73);
this.volumeUnitsTextBox.Name = "volumeUnitsTextBox";
this.volumeUnitsTextBox.Size = new System.Drawing.Size(52, 20);
this.volumeUnitsTextBox.TabIndex = 3;
//
// timeUnitsTextBox
//
this.timeUnitsTextBox.Enabled = false;
this.timeUnitsTextBox.Location = new System.Drawing.Point(122, 47);
this.timeUnitsTextBox.Name = "timeUnitsTextBox";
this.timeUnitsTextBox.Size = new System.Drawing.Size(52, 20);
this.timeUnitsTextBox.TabIndex = 2;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(18, 24);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(73, 13);
this.label1.TabIndex = 1;
this.label1.Text = "Meter ID (s/n)";
//
// meterIDTextBox
//
this.meterIDTextBox.Enabled = false;
this.meterIDTextBox.Location = new System.Drawing.Point(122, 21);
this.meterIDTextBox.Name = "meterIDTextBox";
this.meterIDTextBox.Size = new System.Drawing.Size(145, 20);
this.meterIDTextBox.TabIndex = 0;
//
// groupBox1
//
this.groupBox1.Controls.Add(this.setFlowButton);
this.groupBox1.Controls.Add(this.flowm3phTextBox);
this.groupBox1.Controls.Add(this.flowTrackBar);
this.groupBox1.Location = new System.Drawing.Point(12, 123);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(453, 96);
this.groupBox1.TabIndex = 1;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "Flow";
//
// setFlowButton
//
this.setFlowButton.Location = new System.Drawing.Point(289, 17);
this.setFlowButton.Name = "setFlowButton";
this.setFlowButton.Size = new System.Drawing.Size(75, 23);
this.setFlowButton.TabIndex = 4;
this.setFlowButton.Text = "Set value";
this.setFlowButton.UseVisualStyleBackColor = true;
this.setFlowButton.Click += new System.EventHandler(this.setFlowButton_Click);
//
// flowm3phTextBox
//
this.flowm3phTextBox.Enabled = false;
this.flowm3phTextBox.Location = new System.Drawing.Point(122, 19);
this.flowm3phTextBox.Name = "flowm3phTextBox";
this.flowm3phTextBox.Size = new System.Drawing.Size(145, 20);
this.flowm3phTextBox.TabIndex = 3;
//
// flowTrackBar
//
this.flowTrackBar.LargeChange = 1;
this.flowTrackBar.Location = new System.Drawing.Point(0, 43);
this.flowTrackBar.Maximum = 25;
this.flowTrackBar.Name = "flowTrackBar";
this.flowTrackBar.Size = new System.Drawing.Size(447, 45);
this.flowTrackBar.TabIndex = 2;
this.flowTrackBar.Scroll += new System.EventHandler(this.flowTrackBar_Scroll);
//
// groupBox2
//
this.groupBox2.Controls.Add(this.flowTextBox);
this.groupBox2.Controls.Add(this.volumeTextBox);
this.groupBox2.Controls.Add(this.timeTextBox);
this.groupBox2.Controls.Add(this.stateTextBox);
this.groupBox2.Controls.Add(this.label8);
this.groupBox2.Controls.Add(this.label7);
this.groupBox2.Controls.Add(this.label6);
this.groupBox2.Controls.Add(this.label5);
this.groupBox2.Controls.Add(this.lastUITickTextBox);
this.groupBox2.Controls.Add(this.label4);
this.groupBox2.Location = new System.Drawing.Point(12, 225);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(453, 150);
this.groupBox2.TabIndex = 2;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "State";
//
// flowTextBox
//
this.flowTextBox.Enabled = false;
this.flowTextBox.Location = new System.Drawing.Point(122, 121);
this.flowTextBox.Name = "flowTextBox";
this.flowTextBox.Size = new System.Drawing.Size(99, 20);
this.flowTextBox.TabIndex = 9;
//
// volumeTextBox
//
this.volumeTextBox.Enabled = false;
this.volumeTextBox.Location = new System.Drawing.Point(122, 95);
this.volumeTextBox.Name = "volumeTextBox";
this.volumeTextBox.Size = new System.Drawing.Size(99, 20);
this.volumeTextBox.TabIndex = 8;
//
// timeTextBox
//
this.timeTextBox.Enabled = false;
this.timeTextBox.Location = new System.Drawing.Point(122, 68);
this.timeTextBox.Name = "timeTextBox";
this.timeTextBox.Size = new System.Drawing.Size(99, 20);
this.timeTextBox.TabIndex = 7;
//
// stateTextBox
//
this.stateTextBox.Enabled = false;
this.stateTextBox.Location = new System.Drawing.Point(122, 42);
this.stateTextBox.Name = "stateTextBox";
this.stateTextBox.Size = new System.Drawing.Size(99, 20);
this.stateTextBox.TabIndex = 6;
//
// label8
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(18, 124);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(29, 13);
this.label8.TabIndex = 5;
this.label8.Text = "Flow";
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(18, 98);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(42, 13);
this.label7.TabIndex = 4;
this.label7.Text = "Volume";
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(18, 71);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(30, 13);
this.label6.TabIndex = 3;
this.label6.Text = "Time";
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(18, 45);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(32, 13);
this.label5.TabIndex = 2;
this.label5.Text = "State";
//
// lastUITickTextBox
//
this.lastUITickTextBox.Enabled = false;
this.lastUITickTextBox.Location = new System.Drawing.Point(122, 13);
this.lastUITickTextBox.Name = "lastUITickTextBox";
this.lastUITickTextBox.Size = new System.Drawing.Size(145, 20);
this.lastUITickTextBox.TabIndex = 1;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(18, 16);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(61, 13);
this.label4.TabIndex = 0;
this.label4.Text = "Last UI tick";
//
// timer1
//
this.timer1.Interval = 1000;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// MeterSimulationDlg
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(477, 387);
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.groupBox1);
this.Controls.Add(this.meterIDGroupBox);
this.Name = "MeterSimulationDlg";
this.Text = "MeterDialog";
this.meterIDGroupBox.ResumeLayout(false);
this.meterIDGroupBox.PerformLayout();
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.flowTrackBar)).EndInit();
this.groupBox2.ResumeLayout(false);
this.groupBox2.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.GroupBox meterIDGroupBox;
private System.Windows.Forms.TextBox meterIDTextBox;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox volumeUnitsTextBox;
private System.Windows.Forms.TextBox timeUnitsTextBox;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.TextBox flowm3phTextBox;
private System.Windows.Forms.TrackBar flowTrackBar;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.Button setFlowButton;
private System.Windows.Forms.Timer timer1;
private System.Windows.Forms.TextBox lastUITickTextBox;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.TextBox flowTextBox;
private System.Windows.Forms.TextBox volumeTextBox;
private System.Windows.Forms.TextBox timeTextBox;
private System.Windows.Forms.TextBox stateTextBox;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label5;
}
}
+91
View File
@@ -0,0 +1,91 @@
using System;
using System.Windows.Forms;
namespace DataStreamMeter
{
public partial class MeterSimulationDlg : Form
{
MeterSimulation meterSimulation;
double currentFlow;
public string MeterID;
public void OnMeterdata(MeterDataEventArgs args)
{
if (MeterDataHandler == null) return;
MeterDataHandler(null, args);
}
public event EventHandler<MeterDataEventArgs> MeterDataHandler;
/// <summary>
/// Default constructor with no meter
/// </summary>
public MeterSimulationDlg()
: this(null, string.Empty)
{
}
public MeterSimulationDlg(MeterSimulation meterSimulation, string meterID)
{
InitializeComponent();
this.meterSimulation = meterSimulation;
meterIDTextBox.Text = meterID;
currentFlow = 0;
flowm3phTextBox.Text = currentFlow.ToString();
flowTrackBar.Value = Convert.ToInt32(currentFlow);
MeterDataHandler += delegate(object sender, MeterDataEventArgs args)
{
if (InvokeRequired)
{
Invoke(new EventHandler<MeterDataEventArgs>(DisplayMeterData), sender, args);
}
else
{
DisplayMeterData(sender, args);
}
};
if (meterSimulation != null)
{
timer1.Enabled = true;
timer1.Start();
}
}
private void flowTrackBar_Scroll(object sender, EventArgs e)
{
currentFlow = flowTrackBar.Value;
flowm3phTextBox.Text = currentFlow.ToString("F2");
}
private void setFlowButton_Click(object sender, EventArgs e)
{
GetDblValueDlg dlg = new GetDblValueDlg("Enter flow in [m3/h] please", 0, 25.0);
if (dlg.ShowDialog() == DialogResult.OK)
{
currentFlow = dlg.DblValue;
flowm3phTextBox.Text = currentFlow.ToString();
flowTrackBar.Value = Convert.ToInt32(currentFlow);
}
}
private void timer1_Tick(object sender, EventArgs e)
{
lastUITickTextBox.Text = DateTime.Now.ToString("HH:mm:ss fff");
meterSimulation.TimerTick(currentFlow);
}
void DisplayMeterData(object sender, MeterDataEventArgs args)
{
stateTextBox.Text = args.State.ToString();
timeTextBox.Text = args.Time.ToString();
volumeTextBox.Text = args.Volume.ToString();
flowTextBox.Text = args.Flow.ToString();
}
}
}
+123
View File
@@ -0,0 +1,123 @@
<?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>
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>
@@ -5,11 +5,11 @@ 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("SchematicDrawing")]
[assembly: AssemblyTitle("DataStreamMeter")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("SchematicDrawing")]
[assembly: AssemblyProduct("DataStreamMeter")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@@ -20,7 +20,7 @@ using System.Runtime.InteropServices;
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("ebe01d13-1510-46ae-9457-473e83584394")]
[assembly: Guid("8acd46eb-c84d-4199-9f40-7420b7ebabc2")]
// Version information for an assembly consists of the following four values:
//
+23
View File
@@ -0,0 +1,23 @@
using System;
namespace DataStreamMeter
{
public class Sample
{
public readonly double Time; /// In water meter time units
public readonly double Volume; /// In water meter colume units
public readonly double Flow; /// In water meter flow units
public Sample(double time, double volume, double flow)
{
Time = time;
Volume = volume;
Flow = flow;
}
public override string ToString()
{
return string.Format("time={0} volume={1} flow={2}", Time, Volume, Flow);
}
}
}
-4
View File
@@ -94,10 +94,6 @@
<Project>{743DF7DB-C7B6-42EB-986D-0F485E5588E4}</Project>
<Name>Config</Name>
</ProjectReference>
<ProjectReference Include="..\SchematicDrawing\SchematicDrawing.csproj">
<Project>{0f79ca69-9dbc-41f3-a6fc-5a2937365343}</Project>
<Name>SchematicDrawing</Name>
</ProjectReference>
<ProjectReference Include="..\TBF\TBF.csproj">
<Project>{8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}</Project>
<Name>TBF</Name>
+13 -14
View File
@@ -5,10 +5,9 @@ using System.IO;
using System.Text;
using System.Threading;
using System.Windows.Forms;
using System.Xml.Serialization;
using TBF.BenchControl;
using TBF.BenchControl.Generic;
using TBF.UI.Bench.Components;
using System.Xml.Serialization;
namespace DeviceTest
@@ -427,7 +426,7 @@ namespace DeviceTest
cfgControl.Config.ItemNr = 0;
ComponentParametersDlg cfgForm = new ComponentParametersDlg();
cfgForm.CmpntEntities = new List<Config.Entities.Component>();
cfgForm.TbfComponents = new List<Config.Entities.Component>();
cfgForm.ComponentCfgCtrl = cfgControl;
cfgForm.UnlockAfterStart = true;
@@ -459,7 +458,7 @@ namespace DeviceTest
///
IList<Config.Entities.Component> compEntities = new List<Config.Entities.Component>();
if (parentFactory != null && parentCfg != null) compEntities.Add(parentCfg.CreateDbEntity());
cfgForm.CmpntEntities = compEntities;
cfgForm.TbfComponents = compEntities;
cfgForm.ComponentCfgCtrl = cfgControl;
cfgForm.UnlockAfterStart = true;
@@ -494,7 +493,7 @@ namespace DeviceTest
IList<Config.Entities.Component> compEntities = new List<Config.Entities.Component>();
if (parentFactory != null && parentCfg != null) compEntities.Add(parentCfg.CreateDbEntity());
if (component1Factory != null && component1Cfg != null) compEntities.Add(component1Cfg.CreateDbEntity());
cfgForm.CmpntEntities = compEntities;
cfgForm.TbfComponents = compEntities;
cfgForm.ComponentCfgCtrl = cfgControl;
cfgForm.UnlockAfterStart = true;
@@ -530,7 +529,7 @@ namespace DeviceTest
if (parentFactory != null && parentCfg != null) compEntities.Add(parentCfg.CreateDbEntity());
if (component1Factory != null && component1Cfg != null) compEntities.Add(component1Cfg.CreateDbEntity());
if (component2Factory != null && component2Cfg != null) compEntities.Add(component2Cfg.CreateDbEntity());
cfgForm.CmpntEntities = compEntities;
cfgForm.TbfComponents = compEntities;
cfgForm.ComponentCfgCtrl = cfgControl;
cfgForm.UnlockAfterStart = true;
@@ -647,7 +646,7 @@ namespace DeviceTest
foreach (var dev in tbfDevices) dev.StopDevice();
foreach (var dev in tbfDevices) dev.StopDevice2();
tbfDevices.Clear();
tbfDevices.Clear();
startButton.Enabled = true;
stopButton.Enabled = false;
@@ -664,9 +663,9 @@ namespace DeviceTest
int previousOperation = 0;
if (tbfComponent1forOp is TBF.BenchControl.Modbus.Meret.PressureMeter.PressureMeter)
if (tbfComponent1forOp is TBF.BenchControl.Modbus.PressureMeter.Meret.PressureMeter)
{
operation1 = (tbfComponent1forOp as TBF.BenchControl.Modbus.Meret.PressureMeter.PressureMeter).ReadPressureOp(ref floatBox);
operation1 = (tbfComponent1forOp as TBF.BenchControl.Modbus.PressureMeter.Meret.PressureMeter).ReadPressureOp(ref floatBox);
}
else if (tbfComponent1forOp is TBF.BenchControl.Network.Camera.CLP1611.Camera)
{
@@ -703,9 +702,9 @@ namespace DeviceTest
}
if (tbfComponent2forOp is TBF.BenchControl.Modbus.Meret.PressureMeter.PressureMeter)
if (tbfComponent2forOp is TBF.BenchControl.Modbus.PressureMeter.Meret.PressureMeter)
{
operation21 = (tbfComponent2forOp as TBF.BenchControl.Modbus.Meret.PressureMeter.PressureMeter).ReadPressureOp(ref floatBox);
operation21 = (tbfComponent2forOp as TBF.BenchControl.Modbus.PressureMeter.Meret.PressureMeter).ReadPressureOp(ref floatBox);
}
else if (tbfComponent2forOp is TBF.BenchControl.Network.Camera.CLP1611.Camera)
{
@@ -742,9 +741,9 @@ namespace DeviceTest
}
if (tbfComponent3forOp is TBF.BenchControl.Modbus.Meret.PressureMeter.PressureMeter)
if (tbfComponent3forOp is TBF.BenchControl.Modbus.PressureMeter.Meret.PressureMeter)
{
operation31 = (tbfComponent3forOp as TBF.BenchControl.Modbus.Meret.PressureMeter.PressureMeter).ReadPressureOp(ref floatBox);
operation31 = (tbfComponent3forOp as TBF.BenchControl.Modbus.PressureMeter.Meret.PressureMeter).ReadPressureOp(ref floatBox);
}
else if (tbfComponent3forOp is TBF.BenchControl.Network.Camera.CLP1611.Camera)
{
@@ -859,7 +858,7 @@ namespace DeviceTest
foreach (var d in tbfDevices) d.StopDevice();
foreach (var d in tbfDevices) d.StopDevice2();
}
}
private void stopButton_Click(object sender, EventArgs e)
{
+1 -1
View File
@@ -35,7 +35,7 @@
</FileUpgradeFlags>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<OldToolsVersion>2.0</OldToolsVersion>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
Binary file not shown.
Binary file not shown.
+6 -6
View File
@@ -41,7 +41,7 @@ namespace Results.Entities
public virtual double DensityIn { get; set; } /// [kg/m3]
public virtual double DensityLine { get; set; } /// [kg/m3]
public virtual double DensityDiv { get; set; } /// [kg/m3]
public virtual double Buoyancy { get; set; }
public virtual double MassOfEvapWater { get; set; } /// [kg]
public virtual double FlowMass { get; set; } /// [kg/h] calculated from conventional true value
public virtual double FlowVolume { get; set; } /// [m3/h]
public virtual double VolumeCTV { get; set; } /// [l] Volume conventional true value
@@ -269,7 +269,7 @@ namespace Results.Entities
DensityIn = src.DensityIn;
DensityLine = src.DensityLine;
DensityDiv = src.DensityDiv;
Buoyancy = src.Buoyancy;
MassOfEvapWater = src.MassOfEvapWater;
FlowMass = src.FlowMass;
FlowVolume = src.FlowVolume;
VolumeCTV = src.VolumeCTV;
@@ -396,10 +396,10 @@ namespace Results.Entities
public virtual string ToString(int i)
{
return string.Format("TestRslt: Part={0} RepetitionNr={1} TestDone={2} Remark={3} StartTime={4} EndTime={5} FlowSetTime={6} TestTime={7} PulsesMaster={8} ConstMaster={9} MassStartRaw={10} MassStart={11} MassEndRaw={12} MassEnd={13} DensityIn={14} DensityOut={15} DensityDiv={16} Buoyancy={17} FlowMass={18} FlowVolume={19} VolumeCTV={20} VolumeMaster={21} ErrorMaster={22} DiverterStart={85} DiverterEnd={86} ErrorFlags={23} InfoFlags={24} AmbTempMean={25} AmbTempStart={26} AmbTempEnd={27} AmbTempMin={28} AmbTempMax={29} AmbPressMean={30} AmbPressStart={31} AmbPressEnd={32} AmbPressMin={33} AmbPressMax={34} AmbHumiMean={35} AmbHumiStart={36} AmbHumiEnd={37} AmbHumiMin={38} AmbHumiMax={39} PressUpMean={40} PressUpStart={41} PressUpEnd={42} PressUpMin={43} PressUpMax={44} PressDownMean={45} PressDownStart={46} PressDownEnd={47} PressDownMin={48} PressDownMax={49} PressDeltaMean={50} PressDeltaStart={51} PressDeltaEnd={52} PressDeltaMin={53} PressDeltaMax={54} TempUpMean={55} TempUpStart={56} TempUpEnd={57} TempUpMin={58} TempUpMax={59} TempDownMean={60} TempDownStart={61} TempDownEnd={62} TempDownMin={63} TempDownMax={64} TempDivMean={65} TempDivStart={66} TempDivEnd={67} TempDivMin={68} TempDivMax={69} FlowMean={70} FlowStart={71} FlowEnd={72} FlowMin={73} FlowMax={74} Custom1={75} Custom2={76} Custom3={77} Custom4={78} Custom5={79} Custom6={80} Custom7={81} Custom8={82} Custom9={83} Custom10={84}",
return string.Format("TestRslt: Part={0} RepetitionNr={1} TestDone={2} Remark={3} StartTime={4} EndTime={5} FlowSetTime={6} TestTime={7} PulsesMaster={8} ConstMaster={9} MassStartRaw={10} MassStart={11} MassEndRaw={12} MassEnd={13} DensityIn={14} DensityOut={15} DensityDiv={16} MassOfEvapWaater={17} FlowMass={18} FlowVolume={19} VolumeCTV={20} VolumeMaster={21} ErrorMaster={22} DiverterStart={85} DiverterEnd={86} ErrorFlags={23} InfoFlags={24} AmbTempMean={25} AmbTempStart={26} AmbTempEnd={27} AmbTempMin={28} AmbTempMax={29} AmbPressMean={30} AmbPressStart={31} AmbPressEnd={32} AmbPressMin={33} AmbPressMax={34} AmbHumiMean={35} AmbHumiStart={36} AmbHumiEnd={37} AmbHumiMin={38} AmbHumiMax={39} PressUpMean={40} PressUpStart={41} PressUpEnd={42} PressUpMin={43} PressUpMax={44} PressDownMean={45} PressDownStart={46} PressDownEnd={47} PressDownMin={48} PressDownMax={49} PressDeltaMean={50} PressDeltaStart={51} PressDeltaEnd={52} PressDeltaMin={53} PressDeltaMax={54} TempUpMean={55} TempUpStart={56} TempUpEnd={57} TempUpMin={58} TempUpMax={59} TempDownMean={60} TempDownStart={61} TempDownEnd={62} TempDownMin={63} TempDownMax={64} TempDivMean={65} TempDivStart={66} TempDivEnd={67} TempDivMin={68} TempDivMax={69} FlowMean={70} FlowStart={71} FlowEnd={72} FlowMin={73} FlowMax={74} Custom1={75} Custom2={76} Custom3={77} Custom4={78} Custom5={79} Custom6={80} Custom7={81} Custom8={82} Custom9={83} Custom10={84}",
Part, RepetitionNr, TestDone, Remark, StartTime, EndTime, FlowSetTime, TestTime,
PulsesMaster, ConstMaster, MassStartRaw, MassStart, MassEndRaw, MassEnd,
DensityIn, DensityLine, DensityDiv, Buoyancy, FlowMass, FlowVolume,
DensityIn, DensityLine, DensityDiv, MassOfEvapWater, FlowMass, FlowVolume,
VolumeCTV, VolumeMaster, ErrorMaster, ErrorFlags, InfoFlags,
AmbTempMean, AmbTempStart, AmbTempEnd, AmbTempMin, AmbTempMax,
AmbPressMean, AmbPressStart, AmbPressEnd, AmbPressMin, AmbPressMax,
@@ -467,7 +467,7 @@ namespace Results.Entities
writer.Write(DensityIn);
writer.Write(DensityLine);
writer.Write(DensityDiv);
writer.Write(Buoyancy);
writer.Write(MassOfEvapWater);
writer.Write(FlowMass);
writer.Write(FlowVolume);
writer.Write(VolumeCTV);
@@ -608,7 +608,7 @@ namespace Results.Entities
DensityIn = reader.ReadDouble();
DensityLine = reader.ReadDouble();
DensityDiv = reader.ReadDouble();
Buoyancy = reader.ReadDouble();
MassOfEvapWater = reader.ReadDouble();
FlowMass = reader.ReadDouble();
FlowVolume = reader.ReadDouble();
VolumeCTV = reader.ReadDouble();
+28 -17
View File
@@ -59,7 +59,7 @@ namespace Results.Entities
public virtual string Remark { get; set; }
#if IPERL
public virtual double OrigCalibFactor { get; set; } /// Original iPerl calibration factor used during the test
public virtual double OrigCalibFactor { get; set; } /// Original iPerl calibration factor used during the test
public virtual double CalibFactor { get; set; } /// iPerl calibration factor used during the test
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
@@ -76,8 +76,6 @@ namespace Results.Entities
/// <summary>
/// Data from a production test bench (in case of tests on iPerl special)
/// </summary>
public virtual int AssignedSerialNr { get; set; }
public virtual string CompleteSerialNr { get; set; }
public virtual string RadioAddress { get; set; }
public virtual int PaletteNr { get; set; }
public virtual int UmkartonNr { get; set; }
@@ -91,13 +89,17 @@ namespace Results.Entities
public virtual int ProdQ2CorrLR { get; set; } /// iPerl Q2 correction for the L-flow written to iPerl
#endif
#if ORACLE_DB
public virtual int Pruefindex { get; set; } /// >= 1 ... pruefindex
public virtual int AssignedSerialNr { get; set; }
public virtual string Prefix { get; set; }
public virtual string Suffix { get; set; }
public virtual string CompleteSerialNr { get; set; }
public virtual int WMTypeRevision { get; set; }
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 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 int ProcessId { get; set; } /// Not mapped to DB !!! Tracing DB Process ID
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
@@ -419,9 +421,13 @@ namespace Results.Entities
{
MeterTestRslts = new List<MeterTestRslt>();
#if ORACLE_DB
AssignedSerialNr = 0;
Prefix = string.Empty;
Suffix = string.Empty;
CompleteSerialNr = string.Empty;
WMTypeRevision = 0;
Pruefindex = 1;
HydrPruefung = 0;
WMTypeRevision = 0;
RawTestInfos = null;
CompleteTestInfos = null;
#endif
@@ -439,7 +445,6 @@ namespace Results.Entities
ArchivePath = string.Empty;
Remark = string.Empty;
#if TURA_SPECIAL
CompleteSerialNr = string.Empty;
RadioAddress = string.Empty;
ProdUserName = string.Empty;
ProdPurchaseOrder = string.Empty;
@@ -483,8 +488,6 @@ namespace Results.Entities
FWVersion = src.FWVersion;
#endif
#if TURA_SPECIAL
AssignedSerialNr = src.AssignedSerialNr;
CompleteSerialNr = src.CompleteSerialNr;
RadioAddress = src.RadioAddress;
PaletteNr = src.PaletteNr;
UmkartonNr = src.UmkartonNr;
@@ -498,9 +501,13 @@ namespace Results.Entities
ProdQ2CorrLR = src.ProdQ2CorrLR;
#endif
#if ORACLE_DB
AssignedSerialNr = src.AssignedSerialNr;
Prefix = src.Prefix;
Suffix = src.Suffix;
CompleteSerialNr = src.CompleteSerialNr;
WMTypeRevision = src.WMTypeRevision;
Pruefindex = src.Pruefindex;
HydrPruefung = src.HydrPruefung;
WMTypeRevision = src.WMTypeRevision;
RawTestInfos = src.RawTestInfos;
CompleteTestInfos = src.CompleteTestInfos;
#endif
@@ -662,8 +669,6 @@ namespace Results.Entities
writer.Write((FWVersion != null) ? FWVersion : string.Empty);
#endif
#if TURA_SPECIAL
writer.Write(AssignedSerialNr);
writer.Write((CompleteSerialNr != null) ? CompleteSerialNr : string.Empty);
writer.Write((RadioAddress != null) ? RadioAddress : string.Empty);
writer.Write(PaletteNr);
writer.Write(UmkartonNr);
@@ -677,9 +682,13 @@ namespace Results.Entities
writer.Write(ProdQ2CorrLR);
#endif
#if ORACLE_DB
writer.Write(AssignedSerialNr);
writer.Write((Prefix != null) ? Prefix : string.Empty);
writer.Write((Suffix != null) ? Suffix : string.Empty);
writer.Write((CompleteSerialNr != null) ? CompleteSerialNr : string.Empty);
writer.Write(WMTypeRevision);
writer.Write(Pruefindex);
writer.Write(HydrPruefung);
writer.Write(WMTypeRevision);
/// Write RawTestInfos
IList<Results.Output.SensusTestInfo> rawTestInfos = RawTestInfos as IList<Results.Output.SensusTestInfo>;
@@ -755,8 +764,6 @@ namespace Results.Entities
FWVersion = reader.ReadString();
#endif
#if TURA_SPECIAL
AssignedSerialNr = reader.ReadInt32();
CompleteSerialNr = reader.ReadString();
RadioAddress = reader.ReadString();
PaletteNr = reader.ReadInt32();
UmkartonNr = reader.ReadInt32();
@@ -770,9 +777,13 @@ namespace Results.Entities
ProdQ2CorrLR = reader.ReadInt32();
#endif
#if ORACLE_DB
AssignedSerialNr = reader.ReadInt32();
Prefix = reader.ReadString();
Suffix = reader.ReadString();
CompleteSerialNr = reader.ReadString();
WMTypeRevision = reader.ReadInt32();
Pruefindex = reader.ReadInt32();
HydrPruefung = reader.ReadInt32();
WMTypeRevision = reader.ReadInt32();
/// Read RawTestInfos
int rawTestInfosCount = reader.ReadInt32();
+1 -1
View File
@@ -39,7 +39,7 @@ namespace Results.Mappings
Map(x => x.DensityIn);
Map(x => x.DensityLine).Column("DensityOut");
Map(x => x.DensityDiv);
Map(x => x.Buoyancy);
Map(x => x.MassOfEvapWater).Column("Buoyancy");
Map(x => x.FlowMass);
Map(x => x.FlowVolume);
Map(x => x.VolumeCTV);
+5 -2
View File
@@ -43,8 +43,6 @@ namespace Results.Mappings
Map(x => x.FWVersion);
#endif
#if TURA_SPECIAL
Map(x => x.AssignedSerialNr);
Map(x => x.CompleteSerialNr);
Map(x => x.RadioAddress);
Map(x => x.PaletteNr);
Map(x => x.UmkartonNr);
@@ -58,8 +56,13 @@ namespace Results.Mappings
Map(x => x.ProdQ2CorrLR);
#endif
#if ORACLE_DB
Map(x => x.AssignedSerialNr);
Map(x => x.Prefix);
Map(x => x.Suffix);
Map(x => x.CompleteSerialNr);
Map(x => x.Pruefindex);
Map(x => x.HydrPruefung);
Map(x => x.WMTypeRevision);
#endif
References(x => x.WaterMeterData);
References(x => x.Batch);
+27 -5
View File
@@ -9,10 +9,11 @@ namespace Results.Output
{
public enum LogType
{
Just_Q3Q2Q1, /// pNrs = 3,2,1
Just_Q3Q2Q1_Alt, /// pNrs = 5,2,1
Just_Q3Q2adjQ1, /// pNrs = 3,2,1
Just_Q3Q2adjQ1_Alt, /// pNrs = 5,2,1
Just_Q3Q2Q1, /// pNrs = -1,3,2,1
Just_Q3Q2Q1_Alt, /// pNrs = -1,5,2,1
Just_Q3Q2adjQ1, /// pNrs = -1,3,2,1
Just_Q3Q2adjQ1_Alt, /// pNrs = -1,5,2,1
JustA0A4_Q3Q2adjQ1, /// pNrs = -2,-1,3,2,1 (Australia 169 MHz)
DEWA, /// Q4, Q3, Q2adj, Q2, Q1
DEWA_wo_Q2, /// Q4, Q3, Q2adj, Q1
Suez, /// Two directions, with Q2 and Q2ac
@@ -24,6 +25,7 @@ namespace Results.Output
Suez_EMP_DN40, /// EMP: 12 flow rates
Greece, /// Q3, Q2adj, Q2, Q1
S620, /// Q3, Q100, Q2, Q1
S620_Alt, /// Q3, Q100, Q2, Q1
Count,
None,
}
@@ -264,6 +266,18 @@ namespace Results.Output
new SensusTestInfo("Q1", 1, "Q1", 1, "01", 1, "Q1", Range.R100_110),
};
case LogType.JustA0A4_Q3Q2adjQ1:
return new SensusTestInfo[]
{
/// TBF Oracle DB Opto RAW LU logfiles
new SensusTestInfo("Q2adj", 0, "", 2, "02", 0, "", Range.R100_110),
new SensusTestInfo("Qjust_A0", -1, "Just", -1, "-1", -1, "Q-1", Range.R95_105),
new SensusTestInfo("Qjust_A4", -2, "Just", -2, "-2", -2, "Q-2", Range.R95_105),
new SensusTestInfo("Q3", 3, "Q3", 3, "03", 3, "Q3", Range.R90_100),
new SensusTestInfo("Q2", 2, "Q2", 0, "", 2, "Q2", Range.R100_110),
new SensusTestInfo("Q1", 1, "Q1", 1, "01", 1, "Q1", Range.R100_110),
};
case LogType.DEWA: /// DEWA (with Q4 and Q2 after correction)
return new SensusTestInfo[]
{
@@ -417,11 +431,19 @@ namespace Results.Output
};
case LogType.S620:
return new SensusTestInfo[]
{
/// TBF Oracle DB Opto RAW LU logfiles
new SensusTestInfo("Q3", 3, "Q3", 3, "04", 3, "Q3", Range.R90_100),
new SensusTestInfo("Q2", 2, "Q2", 2, "02", 2, "Q2", Range.R100_110),
new SensusTestInfo("Q1", 1, "Q1", 1, "01", 1, "Q1", Range.R100_110),
};
case LogType.S620_Alt:
return new SensusTestInfo[]
{
/// TBF Oracle DB Opto RAW LU logfiles
new SensusTestInfo("Q3", 5, "Q3", 5, "04", 5, "Q3", Range.R90_100),
new SensusTestInfo("Q100", 4, "Q100l", 4, "03", 4,"Q100l", Range.R100_110),
new SensusTestInfo("Q2", 2, "Q2", 2, "02", 2, "Q2", Range.R100_110),
new SensusTestInfo("Q1", 1, "Q1", 1, "01", 1, "Q1", Range.R100_110),
};
+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("3.1.1464.0")]
[assembly: AssemblyFileVersion("3.1.1464.0")]
[assembly: AssemblyVersion("2.26.1560.0")]
[assembly: AssemblyFileVersion("2.26.1560.0")]
+2 -2
View File
@@ -19,7 +19,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;JUZNA_AFRIKA_NEW</DefineConstants>
<DefineConstants>TRACE;DEBUG;TURA_SPECIAL;IPERL;ORACLE_DB;LANG_SK</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x86</PlatformTarget>
@@ -29,7 +29,7 @@
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE;JUZNA_AFRIKA_NEW</DefineConstants>
<DefineConstants>TRACE;TURA_SPECIAL;IPERL;ORACLE_DB;LANG_SK</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
+21 -18
View File
@@ -203,22 +203,22 @@ namespace Results
///
/// Flow
///
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.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.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)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Flow_ctv_end, string.Format("{0} ctv end ()", Strings.VName_Flow), "End 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).FlowEnd / w.GetTestRslt(t).VolumeMaster)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_rise, string.Format("{0} {1}", Strings.VName_Flow, Strings.rise), 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.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_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.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.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.GetTestRslt(t).FlowVolume)));
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.GetTestRslt(t).FlowVolume)));
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).FlowMean == 0) ? w.GetTestRslt(t).FlowMin : w.GetTestRslt(t).FlowVolume * w.GetTestRslt(t).FlowMin / w.GetTestRslt(t).FlowMean)));
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).FlowMean == 0) ? w.GetTestRslt(t).FlowMax : w.GetTestRslt(t).FlowVolume * w.GetTestRslt(t).FlowMax / w.GetTestRslt(t).FlowMean)));
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).FlowMean == 0) ? w.GetTestRslt(t).FlowStart : w.GetTestRslt(t).FlowVolume * w.GetTestRslt(t).FlowStart / w.GetTestRslt(t).FlowMean)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Flow_ctv_end, string.Format("{0} ctv end ()", Strings.VName_Flow), "End flow CTV", Quantity.Flow, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", (w.GetTestRslt(t).FlowMean == 0) ? w.GetTestRslt(t).FlowEnd : w.GetTestRslt(t).FlowVolume * w.GetTestRslt(t).FlowEnd / w.GetTestRslt(t).FlowMean)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_rise, string.Format("{0} {1}", Strings.VName_Flow, Strings.rise), 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.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, "V4", ((w.GetTestRslt(t).ConstMaster < float.Epsilon) ? 0 : (1 / w.GetTestRslt(t).ConstMaster)))));
@@ -444,9 +444,12 @@ namespace Results
#endif
#endif
#if ORACLE_DB
AllItems.Add(new WMeterRsltItemSpec(ItemID.Prod_AssignedSerialNr, "Assigned s/n", Quantity.Number, ItemCategory.MeterResult, (w, t, u, f, p) => FormatInt(f, w.AssignedSerialNr)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Prod_CompleteSerialNr, "Complete s/n", Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => FormatStr(f, w.CompleteSerialNr)));
#endif
#if TURA_SPECIAL
AllItems.Add(new WMeterRsltItemSpec(ItemID.Prod_AssignedSerialNr, "iPerl assigned s/n", Quantity.Number, ItemCategory.MeterResult, (w, t, u, f, p) => FormatInt(f, w.AssignedSerialNr)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Prod_CompleteSerialNr, "iPerl complete s/n", Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => FormatStr(f, w.CompleteSerialNr)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Prod_RadioAddress, "iPerl radio address", Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => FormatStr(f, w.RadioAddress)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Prod_PaletteNr, "iPerl palette nr.", Quantity.Number, ItemCategory.MeterResult, (w, t, u, f, p) => FormatInt(f, w.PaletteNr)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Prod_UmkartonNr, "iPerl umkarton nr.", Quantity.Number, ItemCategory.MeterResult, (w, t, u, f, p) => FormatInt(f, w.UmkartonNr)));
+1
View File
@@ -15,6 +15,7 @@ namespace ResultsBrowser
WZTypeIdAndTimePeriod,
ProducedWithinTimePeriod,
BenchAndBatchNr,
GetListOfUsedProcedures,
Count,
}
@@ -181,7 +181,7 @@
//
// parameterValueTextBox
//
this.parameterValueTextBox.Location = new System.Drawing.Point(325, 14);
this.parameterValueTextBox.Location = new System.Drawing.Point(612, 13);
this.parameterValueTextBox.Name = "parameterValueTextBox";
this.parameterValueTextBox.Size = new System.Drawing.Size(68, 20);
this.parameterValueTextBox.TabIndex = 1;
@@ -189,7 +189,7 @@
// parameterNameLabel
//
this.parameterNameLabel.AutoSize = true;
this.parameterNameLabel.Location = new System.Drawing.Point(128, 17);
this.parameterNameLabel.Location = new System.Drawing.Point(121, 17);
this.parameterNameLabel.Name = "parameterNameLabel";
this.parameterNameLabel.Size = new System.Drawing.Size(0, 13);
this.parameterNameLabel.TabIndex = 0;
@@ -40,6 +40,7 @@ namespace ResultsBrowser.Forms
queryTypeComboBox.Items.Add(new CQSelectionItem(CQCriteria.WZTypeIdAndTimePeriod, "Všetky vodomery so zadaným WZTypeID vyrobené v zadanom časovom období"));
queryTypeComboBox.Items.Add(new CQSelectionItem(CQCriteria.ProducedWithinTimePeriod, "Všetky vodomery vyrobené v zadanom časovom období"));
queryTypeComboBox.Items.Add(new CQSelectionItem(CQCriteria.BenchAndBatchNr, "Stanica a číslo dávky"));
queryTypeComboBox.Items.Add(new CQSelectionItem(CQCriteria.GetListOfUsedProcedures, "Zoznam použitých procedúr"));
queryTypeComboBox.Text = "Všetky vodomery vyrobené v zadanom časovom období";
destinationFileTextBox.Text = string.Format("vysledky_hladania_{0:ddMMyyyy_HHmm}.csv", DateTime.Now);
@@ -73,7 +74,8 @@ namespace ResultsBrowser.Forms
(CQCriteria == CQCriteria.BenchAndBatchNr);
timePeriodGroupBox.Enabled = (CQCriteria == CQCriteria.WZTypeIdAndTimePeriod) ||
(CQCriteria == CQCriteria.ProducedWithinTimePeriod);
(CQCriteria == CQCriteria.ProducedWithinTimePeriod) ||
(CQCriteria == CQCriteria.GetListOfUsedProcedures);
if (CQCriteria == CQCriteria.WZTypeIdAndTimePeriod)
{
@@ -83,7 +85,7 @@ namespace ResultsBrowser.Forms
else if (CQCriteria == CQCriteria.BenchAndBatchNr)
{
parameterGroupBox.Enabled = true;
parameterNameLabel.Text = "Test bench number (e.g. 10 for WR10)";
parameterNameLabel.Text = "wr10=5, wr11=6, wr13=8, wr14=10, wr15=9, wr18=11, wr19=12, wr20=13, wr21=14";
}
else
{
+74 -14
View File
@@ -48,13 +48,19 @@
this.connectionStringTextBox4 = new System.Windows.Forms.TextBox();
this.benchNameTextBox6 = new System.Windows.Forms.TextBox();
this.connectionStringTextBox6 = new System.Windows.Forms.TextBox();
this.benchNameTextBox9 = new System.Windows.Forms.TextBox();
this.connectionStringTextBox9 = new System.Windows.Forms.TextBox();
this.benchNameTextBox8 = new System.Windows.Forms.TextBox();
this.benchNameTextBox7 = new System.Windows.Forms.TextBox();
this.connectionStringTextBox8 = new System.Windows.Forms.TextBox();
this.connectionStringTextBox7 = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// connectionStringTextBox1
//
this.connectionStringTextBox1.Location = new System.Drawing.Point(157, 45);
this.connectionStringTextBox1.Name = "connectionStringTextBox1";
this.connectionStringTextBox1.Size = new System.Drawing.Size(555, 20);
this.connectionStringTextBox1.Size = new System.Drawing.Size(713, 20);
this.connectionStringTextBox1.TabIndex = 3;
//
// benchNameLabel
@@ -79,20 +85,20 @@
//
this.connectionStringTextBox2.Location = new System.Drawing.Point(157, 69);
this.connectionStringTextBox2.Name = "connectionStringTextBox2";
this.connectionStringTextBox2.Size = new System.Drawing.Size(555, 20);
this.connectionStringTextBox2.Size = new System.Drawing.Size(713, 20);
this.connectionStringTextBox2.TabIndex = 5;
//
// connectionStringTextBox3
//
this.connectionStringTextBox3.Location = new System.Drawing.Point(157, 93);
this.connectionStringTextBox3.Name = "connectionStringTextBox3";
this.connectionStringTextBox3.Size = new System.Drawing.Size(555, 20);
this.connectionStringTextBox3.Size = new System.Drawing.Size(713, 20);
this.connectionStringTextBox3.TabIndex = 7;
//
// okButton
//
this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.okButton.Location = new System.Drawing.Point(506, 250);
this.okButton.Location = new System.Drawing.Point(664, 326);
this.okButton.Name = "okButton";
this.okButton.Size = new System.Drawing.Size(95, 38);
this.okButton.TabIndex = 18;
@@ -104,7 +110,7 @@
//
this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cancelButton.Location = new System.Drawing.Point(617, 250);
this.cancelButton.Location = new System.Drawing.Point(775, 326);
this.cancelButton.Name = "cancelButton";
this.cancelButton.Size = new System.Drawing.Size(95, 38);
this.cancelButton.TabIndex = 19;
@@ -137,7 +143,7 @@
//
this.languageLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.languageLabel.AutoSize = true;
this.languageLabel.Location = new System.Drawing.Point(26, 245);
this.languageLabel.Location = new System.Drawing.Point(26, 317);
this.languageLabel.Name = "languageLabel";
this.languageLabel.Size = new System.Drawing.Size(55, 13);
this.languageLabel.TabIndex = 14;
@@ -146,7 +152,7 @@
// languageTextBox
//
this.languageTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.languageTextBox.Location = new System.Drawing.Point(29, 263);
this.languageTextBox.Location = new System.Drawing.Point(29, 335);
this.languageTextBox.Name = "languageTextBox";
this.languageTextBox.Size = new System.Drawing.Size(100, 20);
this.languageTextBox.TabIndex = 15;
@@ -155,7 +161,7 @@
//
this.formatLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.formatLabel.AutoSize = true;
this.formatLabel.Location = new System.Drawing.Point(26, 196);
this.formatLabel.Location = new System.Drawing.Point(26, 268);
this.formatLabel.Name = "formatLabel";
this.formatLabel.Size = new System.Drawing.Size(94, 13);
this.formatLabel.TabIndex = 12;
@@ -164,9 +170,9 @@
// timePeriodFormatTextBox
//
this.timePeriodFormatTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.timePeriodFormatTextBox.Location = new System.Drawing.Point(29, 215);
this.timePeriodFormatTextBox.Location = new System.Drawing.Point(29, 287);
this.timePeriodFormatTextBox.Name = "timePeriodFormatTextBox";
this.timePeriodFormatTextBox.Size = new System.Drawing.Size(683, 20);
this.timePeriodFormatTextBox.Size = new System.Drawing.Size(841, 20);
this.timePeriodFormatTextBox.TabIndex = 13;
//
// benchNameTextBox5
@@ -187,14 +193,14 @@
//
this.connectionStringTextBox5.Location = new System.Drawing.Point(157, 141);
this.connectionStringTextBox5.Name = "connectionStringTextBox5";
this.connectionStringTextBox5.Size = new System.Drawing.Size(555, 20);
this.connectionStringTextBox5.Size = new System.Drawing.Size(713, 20);
this.connectionStringTextBox5.TabIndex = 11;
//
// connectionStringTextBox4
//
this.connectionStringTextBox4.Location = new System.Drawing.Point(157, 117);
this.connectionStringTextBox4.Name = "connectionStringTextBox4";
this.connectionStringTextBox4.Size = new System.Drawing.Size(555, 20);
this.connectionStringTextBox4.Size = new System.Drawing.Size(713, 20);
this.connectionStringTextBox4.TabIndex = 9;
//
// benchNameTextBox6
@@ -208,16 +214,64 @@
//
this.connectionStringTextBox6.Location = new System.Drawing.Point(157, 165);
this.connectionStringTextBox6.Name = "connectionStringTextBox6";
this.connectionStringTextBox6.Size = new System.Drawing.Size(555, 20);
this.connectionStringTextBox6.Size = new System.Drawing.Size(713, 20);
this.connectionStringTextBox6.TabIndex = 21;
//
// benchNameTextBox9
//
this.benchNameTextBox9.Location = new System.Drawing.Point(29, 237);
this.benchNameTextBox9.Name = "benchNameTextBox9";
this.benchNameTextBox9.Size = new System.Drawing.Size(100, 20);
this.benchNameTextBox9.TabIndex = 26;
//
// connectionStringTextBox9
//
this.connectionStringTextBox9.Location = new System.Drawing.Point(157, 237);
this.connectionStringTextBox9.Name = "connectionStringTextBox9";
this.connectionStringTextBox9.Size = new System.Drawing.Size(713, 20);
this.connectionStringTextBox9.TabIndex = 27;
//
// benchNameTextBox8
//
this.benchNameTextBox8.Location = new System.Drawing.Point(29, 213);
this.benchNameTextBox8.Name = "benchNameTextBox8";
this.benchNameTextBox8.Size = new System.Drawing.Size(100, 20);
this.benchNameTextBox8.TabIndex = 24;
//
// benchNameTextBox7
//
this.benchNameTextBox7.Location = new System.Drawing.Point(29, 189);
this.benchNameTextBox7.Name = "benchNameTextBox7";
this.benchNameTextBox7.Size = new System.Drawing.Size(100, 20);
this.benchNameTextBox7.TabIndex = 22;
//
// connectionStringTextBox8
//
this.connectionStringTextBox8.Location = new System.Drawing.Point(157, 213);
this.connectionStringTextBox8.Name = "connectionStringTextBox8";
this.connectionStringTextBox8.Size = new System.Drawing.Size(713, 20);
this.connectionStringTextBox8.TabIndex = 25;
//
// connectionStringTextBox7
//
this.connectionStringTextBox7.Location = new System.Drawing.Point(157, 189);
this.connectionStringTextBox7.Name = "connectionStringTextBox7";
this.connectionStringTextBox7.Size = new System.Drawing.Size(713, 20);
this.connectionStringTextBox7.TabIndex = 23;
//
// DatabaseSettingsDlg
//
this.AcceptButton = this.okButton;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.cancelButton;
this.ClientSize = new System.Drawing.Size(743, 310);
this.ClientSize = new System.Drawing.Size(901, 382);
this.Controls.Add(this.benchNameTextBox9);
this.Controls.Add(this.connectionStringTextBox9);
this.Controls.Add(this.benchNameTextBox8);
this.Controls.Add(this.benchNameTextBox7);
this.Controls.Add(this.connectionStringTextBox8);
this.Controls.Add(this.connectionStringTextBox7);
this.Controls.Add(this.benchNameTextBox6);
this.Controls.Add(this.connectionStringTextBox6);
this.Controls.Add(this.benchNameTextBox5);
@@ -269,5 +323,11 @@
private System.Windows.Forms.TextBox connectionStringTextBox4;
private System.Windows.Forms.TextBox benchNameTextBox6;
private System.Windows.Forms.TextBox connectionStringTextBox6;
private System.Windows.Forms.TextBox benchNameTextBox9;
private System.Windows.Forms.TextBox connectionStringTextBox9;
private System.Windows.Forms.TextBox benchNameTextBox8;
private System.Windows.Forms.TextBox benchNameTextBox7;
private System.Windows.Forms.TextBox connectionStringTextBox8;
private System.Windows.Forms.TextBox connectionStringTextBox7;
}
}
@@ -21,6 +21,9 @@ namespace ResultsBrowser.Forms
benchNameTextBox4.Text = Program.LocalSettings.Bench4;
benchNameTextBox5.Text = Program.LocalSettings.Bench5;
benchNameTextBox6.Text = Program.LocalSettings.Bench6;
benchNameTextBox7.Text = Program.LocalSettings.Bench7;
benchNameTextBox8.Text = Program.LocalSettings.Bench8;
benchNameTextBox9.Text = Program.LocalSettings.Bench9;
connectionStringTextBox1.Text = Program.LocalSettings.ConnectionString1;
connectionStringTextBox2.Text = Program.LocalSettings.ConnectionString2;
@@ -28,6 +31,9 @@ namespace ResultsBrowser.Forms
connectionStringTextBox4.Text = Program.LocalSettings.ConnectionString4;
connectionStringTextBox5.Text = Program.LocalSettings.ConnectionString5;
connectionStringTextBox6.Text = Program.LocalSettings.ConnectionString6;
connectionStringTextBox7.Text = Program.LocalSettings.ConnectionString7;
connectionStringTextBox8.Text = Program.LocalSettings.ConnectionString8;
connectionStringTextBox9.Text = Program.LocalSettings.ConnectionString9;
timePeriodFormatTextBox.Text = Program.LocalSettings.TimePeriodFormat;
@@ -53,6 +59,9 @@ namespace ResultsBrowser.Forms
Program.LocalSettings.Bench4 = benchNameTextBox4.Text;
Program.LocalSettings.Bench5 = benchNameTextBox5.Text;
Program.LocalSettings.Bench6 = benchNameTextBox6.Text;
Program.LocalSettings.Bench7 = benchNameTextBox7.Text;
Program.LocalSettings.Bench8 = benchNameTextBox8.Text;
Program.LocalSettings.Bench9 = benchNameTextBox9.Text;
Program.LocalSettings.ConnectionString1 = connectionStringTextBox1.Text;
Program.LocalSettings.ConnectionString2 = connectionStringTextBox2.Text;
@@ -60,6 +69,9 @@ namespace ResultsBrowser.Forms
Program.LocalSettings.ConnectionString4 = connectionStringTextBox4.Text;
Program.LocalSettings.ConnectionString5 = connectionStringTextBox5.Text;
Program.LocalSettings.ConnectionString6 = connectionStringTextBox6.Text;
Program.LocalSettings.ConnectionString7 = connectionStringTextBox7.Text;
Program.LocalSettings.ConnectionString8 = connectionStringTextBox8.Text;
Program.LocalSettings.ConnectionString9 = connectionStringTextBox9.Text;
Program.LocalSettings.TimePeriodFormat = timePeriodFormatTextBox.Text;
+2 -3
View File
@@ -5,7 +5,6 @@ using System.Windows.Forms;
using Config.Entities;
using TBF.BenchControl;
using TBF.BenchControl.Generic;
using TBF.UI.Bench.Components;
namespace ResultsBrowser.Forms
{
@@ -92,8 +91,8 @@ namespace ResultsBrowser.Forms
cfgControl.Config = printerCfg;
cfgControl.Config.ItemNr = 0;
ComponentParametersDlg cfgForm = new ComponentParametersDlg();
cfgForm.CmpntEntities = new List<Component>();
TBF.BenchControl.ComponentParametersDlg cfgForm = new TBF.BenchControl.ComponentParametersDlg();
cfgForm.TbfComponents = new List<Component>();
cfgForm.ComponentCfgCtrl = cfgControl;
cfgForm.UnlockAfterStart = true;
+22 -7
View File
@@ -30,6 +30,9 @@ namespace ResultsBrowser
public string Bench4;
public string Bench5;
public string Bench6;
public string Bench7;
public string Bench8;
public string Bench9;
/// Database settings of servers.
public string ConnectionString1;
@@ -38,6 +41,9 @@ namespace ResultsBrowser
public string ConnectionString4;
public string ConnectionString5;
public string ConnectionString6;
public string ConnectionString7;
public string ConnectionString8;
public string ConnectionString9;
public bool Bench1Selected;
public bool Bench2Selected;
@@ -45,6 +51,9 @@ namespace ResultsBrowser
public bool Bench4Selected;
public bool Bench5Selected;
public bool Bench6Selected;
public bool Bench7Selected;
public bool Bench8Selected;
public bool Bench9Selected;
public string TimePeriodFormat;
@@ -115,13 +124,19 @@ namespace ResultsBrowser
Bench3 = "WR13";
Bench4 = "WR14";
Bench5 = "WR15";
Bench6 = "PT7";
ConnectionString1 = "SERVER=10.42.130.69; DATABASE=st-wr10-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;";
ConnectionString2 = "SERVER=10.42.129.27; DATABASE=st-wr11-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;";
ConnectionString3 = "SERVER=10.42.128.61; DATABASE=st-wr13-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;";
ConnectionString4 = "SERVER=10.42.130.72; DATABASE=st-wr14-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;";
ConnectionString5 = "SERVER=10.42.130.71; DATABASE=st-wr15-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;";
ConnectionString6 = "SERVER=10.42.129.26; DATABASE=iperlspecial-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;";
Bench6 = "WR18";
Bench7 = "WR19";
Bench8 = "WR20";
Bench9 = "WR21";
ConnectionString1 = "SERVER=10.42.129.253; DATABASE=st-wr10-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;";
ConnectionString2 = "SERVER=10.42.129.27; DATABASE=st-wr11-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;";
ConnectionString3 = "SERVER=10.42.128.138; DATABASE=st-wr13-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;";
ConnectionString4 = "SERVER=10.42.128.146; DATABASE=st-wr14-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;";
ConnectionString5 = "SERVER=10.42.130.97; DATABASE=st-wr15-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;";
ConnectionString6 = "SERVER=10.42.130.165; DATABASE=st-wr18-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;";
ConnectionString7 = "SERVER=10.42.128.159; DATABASE=st-wr19-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;";
ConnectionString8 = "SERVER=10.42.130.76; DATABASE=st-wr20-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;";
ConnectionString9 = "SERVER=10.42.128.150; DATABASE=st-wr21-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;";
Language = "SK";
#endif
}
+7
View File
@@ -20,11 +20,18 @@ namespace ResultsBrowser
public DateTime End;
public int HydrPruefung;
public double AdjErr;
public double Q4Err;
public double Q3Err;
public double Q2AdjErr;
public double Q2Err;
public double Q1Err;
public double AdjErrA4;
public double Q3RlErr;
public double Q3LrErr;
public double Q2RlErr;
public double Q2LrErr;
public double Q2acRlErr;
public double Q2acLrErr;
public double Q1RlErr;
public double Q1LrErr;
public int CalibFactor;
+3 -3
View File
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Sensus")]
[assembly: AssemblyProduct("ResultsBrowser")]
[assembly: AssemblyCopyright("Copyright © 2015 - 2018 Sensus Slovensko a.s.")]
[assembly: AssemblyCopyright("Copyright © 2015 - 2020 Sensus Slovensko a.s.")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@@ -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("3.1.1464.0")]
[assembly: AssemblyFileVersion("3.1.1464.0")]
[assembly: AssemblyVersion("2.26.1577.0")]
[assembly: AssemblyFileVersion("2.26.1577.0")]
+1 -1
View File
@@ -19,7 +19,7 @@ namespace ResultsBrowser.Resources {
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Strings {
+2 -2
View File
@@ -21,7 +21,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;JUZNA_AFRIKA_NEW</DefineConstants>
<DefineConstants>TRACE;DEBUG;TURA_SPECIAL;IPERL;ORACLE_DB;LANG_SK</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
@@ -32,7 +32,7 @@
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE;JUZNA_AFRIKA_NEW</DefineConstants>
<DefineConstants>TRACE;TURA_SPECIAL;IPERL;ORACLE_DB;LANG_SK</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
+140 -95
View File
@@ -51,12 +51,15 @@
this.executeQueryBtn = new System.Windows.Forms.Button();
this.addFilterBtn = new System.Windows.Forms.Button();
this.testBenchesGroupBox = new System.Windows.Forms.GroupBox();
this.checkBox6 = new System.Windows.Forms.RadioButton();
this.checkBox5 = new System.Windows.Forms.RadioButton();
this.checkBox4 = new System.Windows.Forms.RadioButton();
this.checkBox3 = new System.Windows.Forms.RadioButton();
this.checkBox2 = new System.Windows.Forms.RadioButton();
this.checkBox1 = new System.Windows.Forms.RadioButton();
this.radioButton9 = new System.Windows.Forms.RadioButton();
this.radioButton8 = new System.Windows.Forms.RadioButton();
this.radioButton7 = new System.Windows.Forms.RadioButton();
this.radioButton6 = new System.Windows.Forms.RadioButton();
this.radioButton5 = new System.Windows.Forms.RadioButton();
this.radioButton4 = new System.Windows.Forms.RadioButton();
this.radioButton3 = new System.Windows.Forms.RadioButton();
this.radioButton2 = new System.Windows.Forms.RadioButton();
this.radioButton1 = new System.Windows.Forms.RadioButton();
((System.ComponentModel.ISupportInitialize)(this.vSplitContainer)).BeginInit();
this.vSplitContainer.Panel1.SuspendLayout();
this.vSplitContainer.Panel2.SuspendLayout();
@@ -175,7 +178,7 @@
//
// customQueryButton
//
this.customQueryButton.Location = new System.Drawing.Point(31, 437);
this.customQueryButton.Location = new System.Drawing.Point(31, 443);
this.customQueryButton.Name = "customQueryButton";
this.customQueryButton.Size = new System.Drawing.Size(85, 23);
this.customQueryButton.TabIndex = 14;
@@ -247,9 +250,9 @@
//
// printerConfigBtn
//
this.printerConfigBtn.Location = new System.Drawing.Point(8, 316);
this.printerConfigBtn.Location = new System.Drawing.Point(8, 331);
this.printerConfigBtn.Name = "printerConfigBtn";
this.printerConfigBtn.Size = new System.Drawing.Size(125, 35);
this.printerConfigBtn.Size = new System.Drawing.Size(125, 32);
this.printerConfigBtn.TabIndex = 11;
this.printerConfigBtn.Text = "Configure printer";
this.printerConfigBtn.UseVisualStyleBackColor = true;
@@ -257,9 +260,9 @@
//
// formatOfResultsBtn
//
this.formatOfResultsBtn.Location = new System.Drawing.Point(8, 276);
this.formatOfResultsBtn.Location = new System.Drawing.Point(8, 294);
this.formatOfResultsBtn.Name = "formatOfResultsBtn";
this.formatOfResultsBtn.Size = new System.Drawing.Size(125, 35);
this.formatOfResultsBtn.Size = new System.Drawing.Size(125, 32);
this.formatOfResultsBtn.TabIndex = 7;
this.formatOfResultsBtn.Text = "Configure output";
this.formatOfResultsBtn.UseVisualStyleBackColor = true;
@@ -267,9 +270,9 @@
//
// clearFiltersBtn
//
this.clearFiltersBtn.Location = new System.Drawing.Point(8, 196);
this.clearFiltersBtn.Location = new System.Drawing.Point(8, 220);
this.clearFiltersBtn.Name = "clearFiltersBtn";
this.clearFiltersBtn.Size = new System.Drawing.Size(125, 35);
this.clearFiltersBtn.Size = new System.Drawing.Size(125, 32);
this.clearFiltersBtn.TabIndex = 2;
this.clearFiltersBtn.Text = "Clear filters";
this.clearFiltersBtn.UseVisualStyleBackColor = true;
@@ -287,9 +290,9 @@
//
// saveConfigBtn
//
this.saveConfigBtn.Location = new System.Drawing.Point(8, 356);
this.saveConfigBtn.Location = new System.Drawing.Point(8, 368);
this.saveConfigBtn.Name = "saveConfigBtn";
this.saveConfigBtn.Size = new System.Drawing.Size(125, 35);
this.saveConfigBtn.Size = new System.Drawing.Size(125, 32);
this.saveConfigBtn.TabIndex = 5;
this.saveConfigBtn.Text = "Save configuration";
this.saveConfigBtn.UseVisualStyleBackColor = true;
@@ -297,9 +300,9 @@
//
// loadConfigBtn
//
this.loadConfigBtn.Location = new System.Drawing.Point(8, 396);
this.loadConfigBtn.Location = new System.Drawing.Point(8, 405);
this.loadConfigBtn.Name = "loadConfigBtn";
this.loadConfigBtn.Size = new System.Drawing.Size(125, 35);
this.loadConfigBtn.Size = new System.Drawing.Size(125, 32);
this.loadConfigBtn.TabIndex = 4;
this.loadConfigBtn.Text = "Load configuration";
this.loadConfigBtn.UseVisualStyleBackColor = true;
@@ -307,9 +310,9 @@
//
// executeQueryBtn
//
this.executeQueryBtn.Location = new System.Drawing.Point(8, 468);
this.executeQueryBtn.Location = new System.Drawing.Point(8, 471);
this.executeQueryBtn.Name = "executeQueryBtn";
this.executeQueryBtn.Size = new System.Drawing.Size(125, 35);
this.executeQueryBtn.Size = new System.Drawing.Size(125, 32);
this.executeQueryBtn.TabIndex = 6;
this.executeQueryBtn.Text = "Execute query";
this.executeQueryBtn.UseVisualStyleBackColor = true;
@@ -317,9 +320,9 @@
//
// addFilterBtn
//
this.addFilterBtn.Location = new System.Drawing.Point(8, 236);
this.addFilterBtn.Location = new System.Drawing.Point(8, 257);
this.addFilterBtn.Name = "addFilterBtn";
this.addFilterBtn.Size = new System.Drawing.Size(125, 35);
this.addFilterBtn.Size = new System.Drawing.Size(125, 32);
this.addFilterBtn.TabIndex = 3;
this.addFilterBtn.Text = "Add filter";
this.addFilterBtn.UseVisualStyleBackColor = true;
@@ -327,90 +330,129 @@
//
// testBenchesGroupBox
//
this.testBenchesGroupBox.Controls.Add(this.checkBox6);
this.testBenchesGroupBox.Controls.Add(this.checkBox5);
this.testBenchesGroupBox.Controls.Add(this.checkBox4);
this.testBenchesGroupBox.Controls.Add(this.checkBox3);
this.testBenchesGroupBox.Controls.Add(this.checkBox2);
this.testBenchesGroupBox.Controls.Add(this.checkBox1);
this.testBenchesGroupBox.Location = new System.Drawing.Point(8, 54);
this.testBenchesGroupBox.Controls.Add(this.radioButton9);
this.testBenchesGroupBox.Controls.Add(this.radioButton8);
this.testBenchesGroupBox.Controls.Add(this.radioButton7);
this.testBenchesGroupBox.Controls.Add(this.radioButton6);
this.testBenchesGroupBox.Controls.Add(this.radioButton5);
this.testBenchesGroupBox.Controls.Add(this.radioButton4);
this.testBenchesGroupBox.Controls.Add(this.radioButton3);
this.testBenchesGroupBox.Controls.Add(this.radioButton2);
this.testBenchesGroupBox.Controls.Add(this.radioButton1);
this.testBenchesGroupBox.Location = new System.Drawing.Point(8, 51);
this.testBenchesGroupBox.Name = "testBenchesGroupBox";
this.testBenchesGroupBox.Size = new System.Drawing.Size(125, 135);
this.testBenchesGroupBox.Size = new System.Drawing.Size(125, 163);
this.testBenchesGroupBox.TabIndex = 1;
this.testBenchesGroupBox.TabStop = false;
this.testBenchesGroupBox.Text = "Test benches";
//
// checkBox6
// radioButton9
//
this.checkBox6.AutoSize = true;
this.checkBox6.Location = new System.Drawing.Point(23, 110);
this.checkBox6.Name = "checkBox6";
this.checkBox6.Size = new System.Drawing.Size(85, 17);
this.checkBox6.TabIndex = 5;
this.checkBox6.TabStop = true;
this.checkBox6.Text = "radioButton6";
this.checkBox6.UseVisualStyleBackColor = true;
this.checkBox6.CheckedChanged += new System.EventHandler(this.checkBox6_CheckedChanged);
this.radioButton9.AutoSize = true;
this.radioButton9.Location = new System.Drawing.Point(25, 143);
this.radioButton9.Name = "radioButton9";
this.radioButton9.Size = new System.Drawing.Size(85, 17);
this.radioButton9.TabIndex = 8;
this.radioButton9.TabStop = true;
this.radioButton9.Text = "radioButton9";
this.radioButton9.UseVisualStyleBackColor = true;
this.radioButton9.CheckedChanged += new System.EventHandler(this.radioButton9_CheckedChanged);
//
// checkBox5
// radioButton8
//
this.checkBox5.AutoSize = true;
this.checkBox5.Location = new System.Drawing.Point(23, 92);
this.checkBox5.Name = "checkBox5";
this.checkBox5.Size = new System.Drawing.Size(85, 17);
this.checkBox5.TabIndex = 4;
this.checkBox5.TabStop = true;
this.checkBox5.Text = "radioButton5";
this.checkBox5.UseVisualStyleBackColor = true;
this.checkBox5.CheckedChanged += new System.EventHandler(this.checkBox5_CheckedChanged);
this.radioButton8.AutoSize = true;
this.radioButton8.Location = new System.Drawing.Point(25, 127);
this.radioButton8.Name = "radioButton8";
this.radioButton8.Size = new System.Drawing.Size(85, 17);
this.radioButton8.TabIndex = 7;
this.radioButton8.TabStop = true;
this.radioButton8.Text = "radioButton8";
this.radioButton8.UseVisualStyleBackColor = true;
this.radioButton8.CheckedChanged += new System.EventHandler(this.radioButton8_CheckedChanged);
//
// checkBox4
// radioButton7
//
this.checkBox4.AutoSize = true;
this.checkBox4.Location = new System.Drawing.Point(23, 74);
this.checkBox4.Name = "checkBox4";
this.checkBox4.Size = new System.Drawing.Size(85, 17);
this.checkBox4.TabIndex = 3;
this.checkBox4.TabStop = true;
this.checkBox4.Text = "radioButton4";
this.checkBox4.UseVisualStyleBackColor = true;
this.checkBox4.CheckedChanged += new System.EventHandler(this.checkBox4_CheckedChanged);
this.radioButton7.AutoSize = true;
this.radioButton7.Location = new System.Drawing.Point(25, 111);
this.radioButton7.Name = "radioButton7";
this.radioButton7.Size = new System.Drawing.Size(85, 17);
this.radioButton7.TabIndex = 6;
this.radioButton7.TabStop = true;
this.radioButton7.Text = "radioButton7";
this.radioButton7.UseVisualStyleBackColor = true;
this.radioButton7.CheckedChanged += new System.EventHandler(this.radioButton7_CheckedChanged);
//
// checkBox3
// radioButton6
//
this.checkBox3.AutoSize = true;
this.checkBox3.Location = new System.Drawing.Point(23, 55);
this.checkBox3.Name = "checkBox3";
this.checkBox3.Size = new System.Drawing.Size(85, 17);
this.checkBox3.TabIndex = 2;
this.checkBox3.TabStop = true;
this.checkBox3.Text = "radioButton3";
this.checkBox3.UseVisualStyleBackColor = true;
this.checkBox3.CheckedChanged += new System.EventHandler(this.checkBox3_CheckedChanged);
this.radioButton6.AutoSize = true;
this.radioButton6.Location = new System.Drawing.Point(25, 95);
this.radioButton6.Name = "radioButton6";
this.radioButton6.Size = new System.Drawing.Size(85, 17);
this.radioButton6.TabIndex = 5;
this.radioButton6.TabStop = true;
this.radioButton6.Text = "radioButton6";
this.radioButton6.UseVisualStyleBackColor = true;
this.radioButton6.CheckedChanged += new System.EventHandler(this.radioButton6_CheckedChanged);
//
// checkBox2
// radioButton5
//
this.checkBox2.AutoSize = true;
this.checkBox2.Location = new System.Drawing.Point(23, 36);
this.checkBox2.Name = "checkBox2";
this.checkBox2.Size = new System.Drawing.Size(85, 17);
this.checkBox2.TabIndex = 1;
this.checkBox2.TabStop = true;
this.checkBox2.Text = "radioButton2";
this.checkBox2.UseVisualStyleBackColor = true;
this.checkBox2.CheckedChanged += new System.EventHandler(this.checkBox2_CheckedChanged);
this.radioButton5.AutoSize = true;
this.radioButton5.Location = new System.Drawing.Point(25, 79);
this.radioButton5.Name = "radioButton5";
this.radioButton5.Size = new System.Drawing.Size(85, 17);
this.radioButton5.TabIndex = 4;
this.radioButton5.TabStop = true;
this.radioButton5.Text = "radioButton5";
this.radioButton5.UseVisualStyleBackColor = true;
this.radioButton5.CheckedChanged += new System.EventHandler(this.radioButton5_CheckedChanged);
//
// checkBox1
// radioButton4
//
this.checkBox1.AutoSize = true;
this.checkBox1.Location = new System.Drawing.Point(23, 17);
this.checkBox1.Name = "checkBox1";
this.checkBox1.Size = new System.Drawing.Size(85, 17);
this.checkBox1.TabIndex = 0;
this.checkBox1.TabStop = true;
this.checkBox1.Text = "radioButton1";
this.checkBox1.UseVisualStyleBackColor = true;
this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);
this.radioButton4.AutoSize = true;
this.radioButton4.Location = new System.Drawing.Point(25, 63);
this.radioButton4.Name = "radioButton4";
this.radioButton4.Size = new System.Drawing.Size(85, 17);
this.radioButton4.TabIndex = 3;
this.radioButton4.TabStop = true;
this.radioButton4.Text = "radioButton4";
this.radioButton4.UseVisualStyleBackColor = true;
this.radioButton4.CheckedChanged += new System.EventHandler(this.radioButton4_CheckedChanged);
//
// radioButton3
//
this.radioButton3.AutoSize = true;
this.radioButton3.Location = new System.Drawing.Point(25, 47);
this.radioButton3.Name = "radioButton3";
this.radioButton3.Size = new System.Drawing.Size(85, 17);
this.radioButton3.TabIndex = 2;
this.radioButton3.TabStop = true;
this.radioButton3.Text = "radioButton3";
this.radioButton3.UseVisualStyleBackColor = true;
this.radioButton3.CheckedChanged += new System.EventHandler(this.radioButton3_CheckedChanged);
//
// radioButton2
//
this.radioButton2.AutoSize = true;
this.radioButton2.Location = new System.Drawing.Point(25, 31);
this.radioButton2.Name = "radioButton2";
this.radioButton2.Size = new System.Drawing.Size(85, 17);
this.radioButton2.TabIndex = 1;
this.radioButton2.TabStop = true;
this.radioButton2.Text = "radioButton2";
this.radioButton2.UseVisualStyleBackColor = true;
this.radioButton2.CheckedChanged += new System.EventHandler(this.radioButton2_CheckedChanged);
//
// radioButton1
//
this.radioButton1.AutoSize = true;
this.radioButton1.Location = new System.Drawing.Point(25, 15);
this.radioButton1.Name = "radioButton1";
this.radioButton1.Size = new System.Drawing.Size(85, 17);
this.radioButton1.TabIndex = 0;
this.radioButton1.TabStop = true;
this.radioButton1.Text = "radioButton1";
this.radioButton1.UseVisualStyleBackColor = true;
this.radioButton1.CheckedChanged += new System.EventHandler(this.radioButton1_CheckedChanged);
//
// ResultsBrowserWnd
//
@@ -453,23 +495,26 @@
private System.Windows.Forms.Button settingsBtn;
private System.Windows.Forms.GroupBox filtersGroupBox;
private System.Windows.Forms.GroupBox resultsGroupBox;
private System.Windows.Forms.RadioButton checkBox3;
private System.Windows.Forms.RadioButton checkBox2;
private System.Windows.Forms.RadioButton checkBox1;
private System.Windows.Forms.RadioButton radioButton3;
private System.Windows.Forms.RadioButton radioButton2;
private System.Windows.Forms.RadioButton radioButton1;
private System.Windows.Forms.Button clearFiltersBtn;
private System.Windows.Forms.Button exportQueryResultsBtn;
private System.Windows.Forms.Button formatOfResultsBtn;
private System.Windows.Forms.Button printQueryResultsBtn;
private System.Windows.Forms.Button statisticsBtn;
private System.Windows.Forms.ListView resultsListView;
private System.Windows.Forms.RadioButton checkBox5;
private System.Windows.Forms.RadioButton checkBox4;
private System.Windows.Forms.RadioButton radioButton5;
private System.Windows.Forms.RadioButton radioButton4;
private System.Windows.Forms.Button printerConfigBtn;
private System.Windows.Forms.RadioButton checkBox6;
private System.Windows.Forms.RadioButton radioButton6;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.GroupBox outputGroupBox;
private System.Windows.Forms.Button histogramBtn;
private System.Windows.Forms.Button customQueryButton;
private System.Windows.Forms.TextBox consoleTextBox;
private System.Windows.Forms.RadioButton radioButton7;
private System.Windows.Forms.RadioButton radioButton9;
private System.Windows.Forms.RadioButton radioButton8;
}
}
+240 -111
View File
@@ -64,12 +64,15 @@ namespace ResultsBrowser
RedrawTestBenches();
checkBox1.Checked = Program.LocalSettings.Bench1Selected;
checkBox2.Checked = Program.LocalSettings.Bench2Selected;
checkBox3.Checked = Program.LocalSettings.Bench3Selected;
checkBox4.Checked = Program.LocalSettings.Bench4Selected;
checkBox5.Checked = Program.LocalSettings.Bench5Selected;
checkBox6.Checked = Program.LocalSettings.Bench6Selected;
radioButton1.Checked = Program.LocalSettings.Bench1Selected;
radioButton2.Checked = Program.LocalSettings.Bench2Selected;
radioButton3.Checked = Program.LocalSettings.Bench3Selected;
radioButton4.Checked = Program.LocalSettings.Bench4Selected;
radioButton5.Checked = Program.LocalSettings.Bench5Selected;
radioButton6.Checked = Program.LocalSettings.Bench6Selected;
radioButton7.Checked = Program.LocalSettings.Bench7Selected;
radioButton8.Checked = Program.LocalSettings.Bench8Selected;
radioButton9.Checked = Program.LocalSettings.Bench9Selected;
if (args.Length == 1 && args[0].IndexOf(".qry") == args[0].Length - 4)
{
@@ -87,29 +90,38 @@ namespace ResultsBrowser
void RedrawTestBenches()
{
checkBox1.Text = Program.LocalSettings.Bench1;
checkBox2.Text = Program.LocalSettings.Bench2;
checkBox3.Text = Program.LocalSettings.Bench3;
checkBox4.Text = Program.LocalSettings.Bench4;
checkBox5.Text = Program.LocalSettings.Bench5;
checkBox6.Text = Program.LocalSettings.Bench6;
radioButton1.Text = Program.LocalSettings.Bench1;
radioButton2.Text = Program.LocalSettings.Bench2;
radioButton3.Text = Program.LocalSettings.Bench3;
radioButton4.Text = Program.LocalSettings.Bench4;
radioButton5.Text = Program.LocalSettings.Bench5;
radioButton6.Text = Program.LocalSettings.Bench6;
radioButton7.Text = Program.LocalSettings.Bench7;
radioButton8.Text = Program.LocalSettings.Bench8;
radioButton9.Text = Program.LocalSettings.Bench9;
checkBox1.Visible = !string.IsNullOrEmpty(checkBox1.Text);
checkBox2.Visible = !string.IsNullOrEmpty(checkBox2.Text);
checkBox3.Visible = !string.IsNullOrEmpty(checkBox3.Text);
checkBox4.Visible = !string.IsNullOrEmpty(checkBox4.Text);
checkBox5.Visible = !string.IsNullOrEmpty(checkBox5.Text);
checkBox6.Visible = !string.IsNullOrEmpty(checkBox6.Text);
radioButton1.Visible = !string.IsNullOrEmpty(radioButton1.Text);
radioButton2.Visible = !string.IsNullOrEmpty(radioButton2.Text);
radioButton3.Visible = !string.IsNullOrEmpty(radioButton3.Text);
radioButton4.Visible = !string.IsNullOrEmpty(radioButton4.Text);
radioButton5.Visible = !string.IsNullOrEmpty(radioButton5.Text);
radioButton6.Visible = !string.IsNullOrEmpty(radioButton6.Text);
radioButton7.Visible = !string.IsNullOrEmpty(radioButton7.Text);
radioButton8.Visible = !string.IsNullOrEmpty(radioButton8.Text);
radioButton9.Visible = !string.IsNullOrEmpty(radioButton9.Text);
}
string BenchName()
{
return checkBox1.Checked ? Program.LocalSettings.Bench1
: checkBox2.Checked ? Program.LocalSettings.Bench2
: checkBox3.Checked ? Program.LocalSettings.Bench3
: checkBox4.Checked ? Program.LocalSettings.Bench4
: checkBox5.Checked ? Program.LocalSettings.Bench5
: Program.LocalSettings.Bench6;
return radioButton1.Checked ? Program.LocalSettings.Bench1
: radioButton2.Checked ? Program.LocalSettings.Bench2
: radioButton3.Checked ? Program.LocalSettings.Bench3
: radioButton4.Checked ? Program.LocalSettings.Bench4
: radioButton5.Checked ? Program.LocalSettings.Bench5
: radioButton6.Checked ? Program.LocalSettings.Bench6
: radioButton7.Checked ? Program.LocalSettings.Bench7
: radioButton8.Checked ? Program.LocalSettings.Bench8
: Program.LocalSettings.Bench9;
}
void Localize()
@@ -141,21 +153,27 @@ namespace ResultsBrowser
}
}
private void checkBox1_CheckedChanged(object sender, EventArgs e) { SaveCheckBoxes(); }
private void checkBox2_CheckedChanged(object sender, EventArgs e) { SaveCheckBoxes(); }
private void checkBox3_CheckedChanged(object sender, EventArgs e) { SaveCheckBoxes(); }
private void checkBox4_CheckedChanged(object sender, EventArgs e) { SaveCheckBoxes(); }
private void checkBox5_CheckedChanged(object sender, EventArgs e) { SaveCheckBoxes(); }
private void checkBox6_CheckedChanged(object sender, EventArgs e) { SaveCheckBoxes(); }
private void radioButton1_CheckedChanged(object sender, EventArgs e) { SaveCheckBoxes(); }
private void radioButton2_CheckedChanged(object sender, EventArgs e) { SaveCheckBoxes(); }
private void radioButton3_CheckedChanged(object sender, EventArgs e) { SaveCheckBoxes(); }
private void radioButton4_CheckedChanged(object sender, EventArgs e) { SaveCheckBoxes(); }
private void radioButton5_CheckedChanged(object sender, EventArgs e) { SaveCheckBoxes(); }
private void radioButton6_CheckedChanged(object sender, EventArgs e) { SaveCheckBoxes(); }
private void radioButton7_CheckedChanged(object sender, EventArgs e) { SaveCheckBoxes(); }
private void radioButton8_CheckedChanged(object sender, EventArgs e) { SaveCheckBoxes(); }
private void radioButton9_CheckedChanged(object sender, EventArgs e) { SaveCheckBoxes(); }
void SaveCheckBoxes()
{
Program.LocalSettings.Bench1Selected = checkBox1.Checked;
Program.LocalSettings.Bench2Selected = checkBox2.Checked;
Program.LocalSettings.Bench3Selected = checkBox3.Checked;
Program.LocalSettings.Bench4Selected = checkBox4.Checked;
Program.LocalSettings.Bench5Selected = checkBox5.Checked;
Program.LocalSettings.Bench6Selected = checkBox6.Checked;
Program.LocalSettings.Bench1Selected = radioButton1.Checked;
Program.LocalSettings.Bench2Selected = radioButton2.Checked;
Program.LocalSettings.Bench3Selected = radioButton3.Checked;
Program.LocalSettings.Bench4Selected = radioButton4.Checked;
Program.LocalSettings.Bench5Selected = radioButton5.Checked;
Program.LocalSettings.Bench6Selected = radioButton6.Checked;
Program.LocalSettings.Bench7Selected = radioButton7.Checked;
Program.LocalSettings.Bench8Selected = radioButton8.Checked;
Program.LocalSettings.Bench9Selected = radioButton9.Checked;
Program.LocalSettings.Save();
}
@@ -279,13 +297,15 @@ namespace ResultsBrowser
waterMeters = null;
IList<WaterMeter> waterMeters2;
Results.DB.ConnectionString = checkBox1.Checked ? Program.LocalSettings.ConnectionString1 :
(checkBox2.Checked ? Program.LocalSettings.ConnectionString2 :
(checkBox3.Checked ? Program.LocalSettings.ConnectionString3 :
(checkBox4.Checked ? Program.LocalSettings.ConnectionString4 :
(checkBox5.Checked ? Program.LocalSettings.ConnectionString5 :
(checkBox6.Checked ? Program.LocalSettings.ConnectionString6 :
Program.LocalSettings.ConnectionString1)))));
Results.DB.ConnectionString = radioButton1.Checked ? Program.LocalSettings.ConnectionString1 :
(radioButton2.Checked ? Program.LocalSettings.ConnectionString2 :
(radioButton3.Checked ? Program.LocalSettings.ConnectionString3 :
(radioButton4.Checked ? Program.LocalSettings.ConnectionString4 :
(radioButton5.Checked ? Program.LocalSettings.ConnectionString5 :
(radioButton6.Checked ? Program.LocalSettings.ConnectionString6 :
(radioButton7.Checked ? Program.LocalSettings.ConnectionString7 :
(radioButton8.Checked ? Program.LocalSettings.ConnectionString8 :
Program.LocalSettings.ConnectionString9)))))));
ISession[] sessions = new ISession[] { Results.DB.CreateSession() };
@@ -609,12 +629,22 @@ namespace ResultsBrowser
while (dr.Read())
{
int i = 0;
string queryResult = dr.GetString(i++);
string queryResult;
try { queryResult = dr.GetString(i++); }
catch { queryResult = string.Empty; }
int maxPruefIx = dr.GetInt32(i++);
int testBenchId = maxPruefIx / 100;
maxPruefIx = maxPruefIx % 100;
string prefix = dr.GetString(i++);
int sn = dr.GetInt32(i++);
string prefix;
try { prefix = dr.GetString(i++); }
catch { prefix = string.Empty; }
int sn;
try { sn = dr.GetInt32(i++); }
catch { sn = -1; }
if (sn == -1) continue;
@@ -729,16 +759,35 @@ namespace ResultsBrowser
double flow = dr.GetDouble(i++); /// Q_WZ
double error = dr.GetDouble(i++); /// Q_FEHLER
bool testPassed = (dr.GetInt32(i++) != 0);
#if false
/// SUEZ specific
switch (testId)
{
case -2: oraD.AdjErrA4 = error; break;
case -1: oraD.AdjErr = error; break;
case 5: oraD.Q3LrErr = error; break;
case 10: oraD.Q3RlErr = error; break;
case -2: oraD.AdjErrA4 = error; break;
case -1: oraD.AdjErr = error; break;
case 1: oraD.Q1LrErr = error; break;
case 2: oraD.Q2acLrErr = error; break;
case 3: oraD.Q2LrErr = error; break;
case 5: oraD.Q3LrErr = error; break;
case 6: oraD.Q1RlErr = error; break;
case 7: oraD.Q2acRlErr = error; break;
case 8: oraD.Q2RlErr = error; break;
case 10: oraD.Q3RlErr = error; break;
default: break;
}
#else /// DEWA specific
switch (testId)
{
case -1: oraD.AdjErr = error; break;
case 1: oraD.Q1Err = error; break;
case 2: oraD.Q2Err = error; break;
case 3: oraD.Q2AdjErr = error; break;
case 4: oraD.Q3Err = error; break;
case 5: oraD.Q4Err = error; break;
default: break;
}
#endif
}
dr.Close();
} /// end of foreach (var oraD in OraDatas)
@@ -750,15 +799,27 @@ namespace ResultsBrowser
{
switch (dlg.IntParameter)
{
case 10: Results.DB.ConnectionString = "SERVER=10.42.130.69; DATABASE=st-wr10-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 11: Results.DB.ConnectionString = "SERVER=10.42.129.27; DATABASE=st-wr11-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 13: Results.DB.ConnectionString = "SERVER=10.42.130.52; DATABASE=st-wr13-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 15: Results.DB.ConnectionString = "SERVER=10.42.130.71; DATABASE=st-wr15-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 14: Results.DB.ConnectionString = "SERVER=10.42.130.72; DATABASE=st-wr14-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 18: Results.DB.ConnectionString = "SERVER=10.42.130.165; DATABASE=st-wr18-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 19: Results.DB.ConnectionString = "SERVER=10.42.128.159; DATABASE=st-wr19-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 20: Results.DB.ConnectionString = "SERVER=10.42.130.76; DATABASE=st-wr20-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 21: Results.DB.ConnectionString = "SERVER=10.42.128.201; DATABASE=st-wr21-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
#if LOCAL
case 5: Results.DB.ConnectionString = "SERVER=localhost; DATABASE=st-wr10-r; UID=root; PASSWORD=kraken; CharSet=utf8;"; break;
case 6: Results.DB.ConnectionString = "SERVER=localhost; DATABASE=st-wr11-r; UID=root; PASSWORD=kraken; CharSet=utf8;"; break;
case 8: Results.DB.ConnectionString = "SERVER=localhost; DATABASE=st-wr13-r; UID=root; PASSWORD=kraken; CharSet=utf8;"; break;
case 9: Results.DB.ConnectionString = "SERVER=localhost; DATABASE=st-wr15-r; UID=root; PASSWORD=kraken; CharSet=utf8;"; break;
case 10: Results.DB.ConnectionString = "SERVER=localhost; DATABASE=st-wr14-r; UID=root; PASSWORD=kraken; CharSet=utf8;"; break;
case 11: Results.DB.ConnectionString = "SERVER=localhost; DATABASE=st-wr18-r; UID=root; PASSWORD=kraken; CharSet=utf8;"; break;
case 12: Results.DB.ConnectionString = "SERVER=localhost; DATABASE=st-wr19-r; UID=root; PASSWORD=kraken; CharSet=utf8;"; break;
case 13: Results.DB.ConnectionString = "SERVER=localhost; DATABASE=st-wr20-r; UID=root; PASSWORD=kraken; CharSet=utf8;"; break;
case 14: Results.DB.ConnectionString = "SERVER=localhost; DATABASE=st-wr21-r; UID=root; PASSWORD=kraken; CharSet=utf8;"; break;
#else
case 5: Results.DB.ConnectionString = "SERVER=10.42.129.253; DATABASE=st-wr10-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 6: Results.DB.ConnectionString = "SERVER=10.42.129.27; DATABASE=st-wr11-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 8: Results.DB.ConnectionString = "SERVER=10.42.128.138; DATABASE=st-wr13-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 9: Results.DB.ConnectionString = "SERVER=10.42.130.97; DATABASE=st-wr15-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 10: Results.DB.ConnectionString = "SERVER=10.42.128.146; DATABASE=st-wr14-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 11: Results.DB.ConnectionString = "SERVER=10.42.130.165; DATABASE=st-wr18-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 12: Results.DB.ConnectionString = "SERVER=10.42.128.159; DATABASE=st-wr19-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 13: Results.DB.ConnectionString = "SERVER=10.42.130.76; DATABASE=st-wr20-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 14: Results.DB.ConnectionString = "SERVER=10.42.128.150; DATABASE=st-wr21-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
#endif
default: Results.DB.ConnectionString = string.Empty; break;
}
Results.DB.DbType = Users.Entities.DBType.MySql;
@@ -821,6 +882,11 @@ namespace ResultsBrowser
else if (dlg.CQCriteria == CQCriteria.WZTypeIdAndTimePeriod)
{
}
else if (dlg.CQCriteria == CQCriteria.GetListOfUsedProcedures)
{
testBenches.Add(5); testBenches.Add(6); testBenches.Add(8); testBenches.Add(9); testBenches.Add(10);
testBenches.Add(11); testBenches.Add(12); testBenches.Add(13); testBenches.Add(14);
}
else
{
MessageBox.Show("Query is not supported yet");
@@ -829,16 +895,17 @@ namespace ResultsBrowser
consoleTextBox.Text += "Reading additional data from MySQL\r\n";
counter = 0;
IList<string> usedProcedures = new List<string>();
foreach (var testBenchId in testBenches)
{
if (testBenchId == 4)
if (testBenchId == 4 || (dlg.CQCriteria == CQCriteria.BenchAndBatchNr && testBenchId != dlg.IntParameter))
{
/// Skip WR9
/// Skip WR9 or other test benches
continue;
}
consoleTextBox.Text += string.Format("{0}\r\n", GetBenchName(testBenchId));
#if false
#if LOCAL
/// Local database copies
switch (testBenchId)
{
@@ -857,15 +924,15 @@ namespace ResultsBrowser
/// Test bench databases
switch (testBenchId)
{
case 5: Results.DB.ConnectionString = "SERVER=10.42.130.69; DATABASE=st-wr10-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 6: Results.DB.ConnectionString = "SERVER=10.42.129.27; DATABASE=st-wr11-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 8: Results.DB.ConnectionString = "SERVER=10.42.130.52; DATABASE=st-wr13-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 9: Results.DB.ConnectionString = "SERVER=10.42.130.71; DATABASE=st-wr15-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 10: Results.DB.ConnectionString = "SERVER=10.42.130.72; DATABASE=st-wr14-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 5: Results.DB.ConnectionString = "SERVER=10.42.129.253; DATABASE=st-wr10-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 6: Results.DB.ConnectionString = "SERVER=10.42.129.27; DATABASE=st-wr11-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 8: Results.DB.ConnectionString = "SERVER=10.42.128.138; DATABASE=st-wr13-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 9: Results.DB.ConnectionString = "SERVER=10.42.130.97; DATABASE=st-wr15-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 10: Results.DB.ConnectionString = "SERVER=10.42.128.146; DATABASE=st-wr14-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 11: Results.DB.ConnectionString = "SERVER=10.42.130.165; DATABASE=st-wr18-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 12: Results.DB.ConnectionString = "SERVER=10.42.128.159; DATABASE=st-wr19-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 13: Results.DB.ConnectionString = "SERVER=10.42.130.76; DATABASE=st-wr20-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 14: Results.DB.ConnectionString = "SERVER=10.42.128.201; DATABASE=st-wr21-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
case 14: Results.DB.ConnectionString = "SERVER=10.42.128.150; DATABASE=st-wr21-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;"; break;
default: Results.DB.ConnectionString = string.Empty; break;
}
#endif
@@ -875,39 +942,59 @@ namespace ResultsBrowser
{
ISession session = null;
foreach (var oraD in oraDatas)
if (dlg.CQCriteria == CQCriteria.GetListOfUsedProcedures)
{
session = Results.DB.CreateSession();
IList<Batch> batches = session.QueryOver<Batch>()
.Where(x => x.StartTime >= dlg.From)
.And(x => x.StartTime <= dlg.To)
.List();
if (oraD.TestBenchId == testBenchId)
foreach (var b in batches)
{
if (session == null)
if (!usedProcedures.Contains(b.ProcedureName))
{
/// The first water meter produced on this test bench => create a database session
session = Results.DB.CreateSession();
usedProcedures.Add(b.ProcedureName);
consoleTextBox.Text += string.Format(" {0}{1}", b.ProcedureName, Environment.NewLine);
}
}
}
else
{
foreach (var oraD in oraDatas)
{
consoleTextBox.Text += string.Format("{0} ", ++counter);
if (counter % 25 == 0) consoleTextBox.Text += "\r\n";
IList<WaterMeter> wms = session.QueryOver<WaterMeter>()
.Where(x => x.SerialNr == oraD.PcbNr)
.And(x => x.Passed)
.List();
if (wms.Count == 1)
if (oraD.TestBenchId == testBenchId)
{
oraD.CalibFactor = (int)Math.Round(wms[0].CalibFactor);
oraD.CalibFactorLNA = (int)Math.Round(wms[0].CalibFactorLNA);
}
else
{
foreach (var wm in wms)
if (session == null)
{
if (wm.Batch.BatchNr == oraD.BatchNr)
/// The first water meter produced on this test bench => create a database session
session = Results.DB.CreateSession();
}
consoleTextBox.Text += string.Format("{0} ", ++counter);
if (counter % 25 == 0) consoleTextBox.Text += "\r\n";
IList<WaterMeter> wms = session.QueryOver<WaterMeter>()
.Where(x => x.SerialNr == oraD.PcbNr)
.And(x => x.Passed)
.List();
if (wms.Count == 1)
{
oraD.CalibFactor = (int)Math.Round(wms[0].CalibFactor);
oraD.CalibFactorLNA = (int)Math.Round(wms[0].CalibFactorLNA);
}
else
{
foreach (var wm in wms)
{
oraD.CalibFactor = (int)Math.Round(wm.CalibFactor);
oraD.CalibFactorLNA = (int)Math.Round(wm.CalibFactorLNA);
break;
if (wm.Batch.BatchNr == oraD.BatchNr)
{
oraD.CalibFactor = (int)Math.Round(wm.CalibFactor);
oraD.CalibFactorLNA = (int)Math.Round(wm.CalibFactorLNA);
break;
}
}
}
}
@@ -924,11 +1011,13 @@ namespace ResultsBrowser
consoleTextBox.Text += "CSV data begin\r\n";
using (TextWriter writer = new StreamWriter(dlg.DestinationFile))
{
writer.WriteLine(string.Format("PO; prefix; S/N; PcbNr; Bench; Batch; Start; Start; End; End; Pos; AdjA0; AdjA4; Q3RL; Q3LR; CalF; CAlF_LNA; HP; Q2cRL; Q2cLR"));
#if false
/// SUEZ
writer.WriteLine(string.Format("PO; prefix; S/N; PcbNr; Bench; Batch; Start; Start; End; End; Pos; AdjA0; AdjA4; Q3RL; Q3LR; Q2RL; Q2LR; Q2acRL; Q2acLR; Q1RL; Q1LR; CalF; CAlF_LNA; HP; Q2cRL; Q2cLR"));
//Console.WriteLine(string.Format("s/n;PCB nr.;bench;batch;position;Err. at 640 l/h;Err. LNA at 640 l/h;Err. Q3 RL;Err. Q3 LR;Cal.f.;Cal.f.LNA;Q2 corr.f. RL;Q2 corr.f. LR"));
foreach (var oraD in oraDatas)
{
writer.WriteLine(string.Format("{0}; {1}; {2}; =(\"{3}\"); {4}; {5}; {7}; {8}; {9}; {10};{11};{12};{13};{14};{15};{16};{17};{18};{19};{20}",
writer.WriteLine(string.Format("{0}; {1}; {2}; =(\"{3}\"); {4}; {5}; {7}; {8}; {9}; {10};{11};{12};{13};{14};{15};{16};{17};{18};{19};{20};{21};{22};{23};{24};{25};{26};{27};{28}",
//Console.WriteLine(string.Format("{2};=(\"{3}\"); {4};{5};{11};{12};{13};{14};{15};{16};{17};{19};{20}",
/* 0 */ oraD.PO,
/* 1 */ oraD.Prefix,
@@ -942,18 +1031,58 @@ namespace ResultsBrowser
/* 9 */ oraD.End.ToShortDateString(),
/* 10 */ oraD.End.ToShortTimeString(),
/* 11 */ oraD.WMPosition,
/* 12 */ oraD.AdjErr.ToString("F2"),
/* 13 */ oraD.AdjErrA4.ToString("F2"),
/* 14 */ oraD.Q3RlErr.ToString("F2"),
/* 15 */ oraD.Q3LrErr.ToString("F2"),
/* 16 */ oraD.CalibFactor,
/* 17 */ oraD.CalibFactorLNA,
/* 18 */ oraD.HydrPruefung,
/* 19 */ oraD.Q2CorrectionRl,
/* 20 */ oraD.Q2CorrectionLr,
/* 21 */ oraD.WMTypeId,
/* 22 */ oraD.WMTypeRev));
/* 12 */ oraD.AdjErr.ToString("F3"),
/* 13 */ oraD.AdjErrA4.ToString("F3"),
/* 14 */ oraD.Q3RlErr.ToString("F3"),
/* 15 */ oraD.Q3LrErr.ToString("F3"),
/* 16 */ oraD.Q2RlErr.ToString("F3"),
/* 17 */ oraD.Q2LrErr.ToString("F3"),
/* 18 */ oraD.Q2acRlErr.ToString("F3"),
/* 19 */ oraD.Q2acLrErr.ToString("F3"),
/* 20 */ oraD.Q1RlErr.ToString("F3"),
/* 21 */ oraD.Q1LrErr.ToString("F3"),
/* 22 */ oraD.CalibFactor,
/* 23 */ oraD.CalibFactorLNA,
/* 24 */ oraD.HydrPruefung,
/* 25 */ oraD.Q2CorrectionRl,
/* 26 */ oraD.Q2CorrectionLr,
/* 27 */ oraD.WMTypeId,
/* 28 */ oraD.WMTypeRev));
}
#else
/// DEWA
writer.WriteLine(string.Format("PO; prefix; S/N; PcbNr; Bench; Batch; Start; Start; End; End; Pos; AdjA0; Q4; Q3; Q2Adj; Q2; Q1; CalF; HP; Q2cRL; Q2cLR"));
//Console.WriteLine(string.Format("s/n;PCB nr.;bench;batch;position;Err. at 640 l/h;Err. LNA at 640 l/h;Err. Q3 RL;Err. Q3 LR;Cal.f.;Cal.f.LNA;Q2 corr.f. RL;Q2 corr.f. LR"));
foreach (var oraD in oraDatas)
{
writer.WriteLine(string.Format("{0}; {1}; {2}; =(\"{3}\"); {4}; {5}; {7}; {8}; {9}; {10};{11};{12};{13};{14};{15};{16};{17};{18};{19};{20};{21}",
//Console.WriteLine(string.Format("{2};=(\"{3}\"); {4};{5};{11};{12};{13};{14};{15};{16};{17};{19};{20}",
/* 0 */ oraD.PO,
/* 1 */ oraD.Prefix,
/* 2 */ oraD.SN,
/* 3 */ oraD.PcbNr,
/* 4 */ GetBenchName(oraD.TestBenchId),
/* 5 */ oraD.BatchNr,
/* 6 */ oraD.ProgramVer,
/* 7 */ oraD.Start.ToShortDateString(),
/* 8 */ oraD.Start.ToShortTimeString(),
/* 9 */ oraD.End.ToShortDateString(),
/* 10 */ oraD.End.ToShortTimeString(),
/* 11 */ oraD.WMPosition,
/* 12 */ oraD.AdjErr.ToString("F3"),
/* 13 */ oraD.Q4Err.ToString("F3"),
/* 14 */ oraD.Q3Err.ToString("F3"),
/* 15 */ oraD.Q2AdjErr.ToString("F3"),
/* 16 */ oraD.Q2Err.ToString("F3"),
/* 17 */ oraD.Q1Err.ToString("F3"),
/* 18 */ oraD.CalibFactor,
/* 19 */ oraD.HydrPruefung,
/* 20 */ oraD.Q2CorrectionRl,
/* 21 */ oraD.Q2CorrectionLr,
/* 22 */ oraD.WMTypeId,
/* 23 */ oraD.WMTypeRev));
}
#endif
}
consoleTextBox.Text += "CSV data end\r\n";
@@ -972,11 +1101,11 @@ namespace ResultsBrowser
{
switch (testBenchId)
{
case 4: return "WR9";
case 5: return "WR10";
case 6: return "WR11";
case 8: return "WR13";
case 9: return "WR15";
case 4: return "WR9";
case 5: return "WR10";
case 6: return "WR11";
case 8: return "WR13";
case 9: return "WR15";
case 10: return "WR14";
case 11: return "WR18";
case 12: return "WR19";
-427
View File
@@ -1,427 +0,0 @@
///
/// Copyright (c) 2020 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SchematicDrawing
{
public class DrawingShape
{
public readonly Shape Shape; /// see enum SchematicDrawing.Shape
public readonly Sz Sz; /// see enum SchematicDrawing.Sz
public readonly int SzX; /// Size X in SchematicDrawing.Const.Step pixels
public readonly int SzY; /// Size Y in SchematicDrawing.Const.Step pixels
public readonly int OffsX; /// Offset of left/top coordinate of the bitmap when rendering
public readonly int OffsY; /// Offset of left/top coordinate of the bitmap when rendering
public readonly int Wid; /// Width of the bitmap when rendering, original bitmap is resized to this size
public readonly int Hgh; /// Height of the bitmap when rendering, original bitmap is resized to this size
public readonly Node[] Nodes; /// Nodes of this shape
public readonly Edge[] Edges; /// Edges (in the open state in case there are two states: open/closed)
public readonly bool HasImg; /// True when there is an image of this item to be displayed
public readonly Image ImgRight; /// Bitmap to be drawn (in the open state in case there are two states: open/closed)
public readonly Image ImgUp;
public readonly Image ImgLeft;
public readonly Image ImgDown;
public readonly Image ImgRightFlipped;
public readonly Image ImgUpFlipped;
public readonly Image ImgLeftFlipped;
public readonly Image ImgDownFlipped;
public readonly bool HasClosed; /// true = This shape can be displayed in a closed state
public readonly Image ImgRightClosed; /// Optional bitmap in the closed state, size should be the same as the size of Bmp
public readonly Image ImgUpClosed;
public readonly Image ImgLeftClosed;
public readonly Image ImgDownClosed;
public readonly Image ImgRightFlippedClosed;
public readonly Image ImgUpFlippedClosed;
public readonly Image ImgLeftFlippedClosed;
public readonly Image ImgDownFlippedClosed;
public readonly bool HasVacuum; /// true = This shape can display vacuum
public readonly Image ImgRightVacuum; /// Optional bitmap in the closed state, size should be the same as the size of Bmp
public readonly Image ImgUpVacuum;
public readonly Image ImgLeftVacuum;
public readonly Image ImgDownVacuum;
public readonly Image ImgRightFlippedVacuum;
public readonly Image ImgUpFlippedVacuum;
public readonly Image ImgLeftFlippedVacuum;
public readonly Image ImgDownFlippedVacuum;
public readonly bool HasOpenDry; /// true = this shape can be displayed as dry in an open state
public readonly Image ImgRightOpenDry; /// Optional bitmap in the closed state, size should be the same as the size of Bmp
public readonly Image ImgUpOpenDry;
public readonly Image ImgLeftOpenDry;
public readonly Image ImgDownOpenDry;
public readonly Image ImgRightFlippedOpenDry;
public readonly Image ImgUpFlippedOpenDry;
public readonly Image ImgLeftFlippedOpenDry;
public readonly Image ImgDownFlippedOpenDry;
DrawingShape(Shape shape, Sz sz, int szX, int szY, Node[] nodes = null, Edge[] edges = null,
int offsX = -10, int offsY = -10, int wid = 20, int hgh = 20,
Bitmap bmp = null, Bitmap bmpClosed = null, Bitmap bmpVacuum = null, Bitmap bmpOpenDry = null)
{
Shape = shape;
Sz = sz;
SzX = szX;
SzY = szY;
OffsX = offsX;
OffsY = offsY;
Wid = wid;
Hgh = hgh;
Nodes = (nodes != null) ? nodes : new Node[0];
Edges = (edges != null) ? edges : new Edge[0];
HasImg = (bmp != null);
if (HasImg)
{
ImgRight = bmp.Clone() as Image;
bmp.RotateFlip(RotateFlipType.Rotate90FlipNone);
ImgDown = bmp.Clone() as Image;
bmp.RotateFlip(RotateFlipType.Rotate90FlipNone);
ImgLeft = bmp.Clone() as Image;
bmp.RotateFlip(RotateFlipType.Rotate90FlipNone);
ImgUp = bmp.Clone() as Image;
bmp.RotateFlip(RotateFlipType.Rotate90FlipNone);
bmp.RotateFlip(RotateFlipType.RotateNoneFlipY);
ImgRightFlipped = bmp.Clone() as Image;
bmp.RotateFlip(RotateFlipType.Rotate90FlipNone);
ImgDownFlipped = bmp.Clone() as Image;
bmp.RotateFlip(RotateFlipType.Rotate90FlipNone);
ImgLeftFlipped = bmp.Clone() as Image;
bmp.RotateFlip(RotateFlipType.Rotate90FlipNone);
ImgUpFlipped = bmp.Clone() as Image;
bmp.RotateFlip(RotateFlipType.Rotate90FlipNone);
bmp.RotateFlip(RotateFlipType.RotateNoneFlipY);
}
HasClosed = (bmpClosed != null);
if (HasClosed)
{
ImgRightClosed = bmpClosed.Clone() as Image;
bmpClosed.RotateFlip(RotateFlipType.Rotate90FlipNone);
ImgDownClosed = bmpClosed.Clone() as Image;
bmpClosed.RotateFlip(RotateFlipType.Rotate90FlipNone);
ImgLeftClosed = bmpClosed.Clone() as Image;
bmpClosed.RotateFlip(RotateFlipType.Rotate90FlipNone);
ImgUpClosed = bmpClosed.Clone() as Image;
bmpClosed.RotateFlip(RotateFlipType.Rotate90FlipNone);
bmpClosed.RotateFlip(RotateFlipType.RotateNoneFlipY);
ImgRightFlippedClosed = bmpClosed.Clone() as Image;
bmpClosed.RotateFlip(RotateFlipType.Rotate90FlipNone);
ImgDownFlippedClosed = bmpClosed.Clone() as Image;
bmpClosed.RotateFlip(RotateFlipType.Rotate90FlipNone);
ImgLeftFlippedClosed = bmpClosed.Clone() as Image;
bmpClosed.RotateFlip(RotateFlipType.Rotate90FlipNone);
ImgUpFlippedClosed = bmpClosed.Clone() as Image;
bmpClosed.RotateFlip(RotateFlipType.Rotate90FlipNone);
bmpClosed.RotateFlip(RotateFlipType.RotateNoneFlipY);
}
HasVacuum = (bmpVacuum != null);
if (HasVacuum)
{
ImgRightVacuum = bmpVacuum.Clone() as Image;
bmpVacuum.RotateFlip(RotateFlipType.Rotate90FlipNone);
ImgDownVacuum = bmpVacuum.Clone() as Image;
bmpVacuum.RotateFlip(RotateFlipType.Rotate90FlipNone);
ImgLeftVacuum = bmpVacuum.Clone() as Image;
bmpVacuum.RotateFlip(RotateFlipType.Rotate90FlipNone);
ImgUpVacuum = bmpVacuum.Clone() as Image;
bmpVacuum.RotateFlip(RotateFlipType.Rotate90FlipNone);
bmpVacuum.RotateFlip(RotateFlipType.RotateNoneFlipY);
ImgRightFlippedVacuum = bmpVacuum.Clone() as Image;
bmpVacuum.RotateFlip(RotateFlipType.Rotate90FlipNone);
ImgDownFlippedVacuum = bmpVacuum.Clone() as Image;
bmpVacuum.RotateFlip(RotateFlipType.Rotate90FlipNone);
ImgLeftFlippedVacuum = bmpVacuum.Clone() as Image;
bmpVacuum.RotateFlip(RotateFlipType.Rotate90FlipNone);
ImgUpFlippedVacuum = bmpVacuum.Clone() as Image;
bmpVacuum.RotateFlip(RotateFlipType.Rotate90FlipNone);
bmpVacuum.RotateFlip(RotateFlipType.RotateNoneFlipY);
}
HasOpenDry = (bmpOpenDry != null);
if (HasOpenDry)
{
ImgRightOpenDry = bmpOpenDry.Clone() as Image;
bmpOpenDry.RotateFlip(RotateFlipType.Rotate90FlipNone);
ImgDownOpenDry = bmpOpenDry.Clone() as Image;
bmpOpenDry.RotateFlip(RotateFlipType.Rotate90FlipNone);
ImgLeftOpenDry = bmpOpenDry.Clone() as Image;
bmpOpenDry.RotateFlip(RotateFlipType.Rotate90FlipNone);
ImgUpOpenDry = bmpOpenDry.Clone() as Image;
bmpOpenDry.RotateFlip(RotateFlipType.Rotate90FlipNone);
bmpOpenDry.RotateFlip(RotateFlipType.RotateNoneFlipY);
ImgRightFlippedOpenDry = bmpOpenDry.Clone() as Image;
bmpOpenDry.RotateFlip(RotateFlipType.Rotate90FlipNone);
ImgDownFlippedOpenDry = bmpOpenDry.Clone() as Image;
bmpOpenDry.RotateFlip(RotateFlipType.Rotate90FlipNone);
ImgLeftFlippedOpenDry = bmpOpenDry.Clone() as Image;
bmpOpenDry.RotateFlip(RotateFlipType.Rotate90FlipNone);
ImgUpFlippedOpenDry = bmpOpenDry.Clone() as Image;
bmpOpenDry.RotateFlip(RotateFlipType.Rotate90FlipNone);
bmpOpenDry.RotateFlip(RotateFlipType.RotateNoneFlipY);
}
}
public Rectangle GetRotatedFlippedImageRectangle(IDrawingItem item)
{
const int G = SchematicDrawing.Const.GridSize;
if (item.Flip)
{
/// Flipped (mirror) image
switch (item.Orient)
{
default:
case Orient.R: return new Rectangle(item.X + OffsX, item.Y + G * SzY - Hgh - OffsY, Wid, Hgh);
case Orient.Up: return new Rectangle(item.X + OffsY, item.Y + OffsX, Hgh, Wid);
case Orient.L: return new Rectangle(item.X + G * SzX - Wid - OffsX, item.Y + OffsY, Wid, Hgh);
case Orient.Dn: return new Rectangle(item.X + G * SzY - Hgh - OffsY, item.Y + G * SzX - Wid - OffsX, Hgh, Wid);
}
}
else
{
/// Normal image
switch (item.Orient)
{
default:
case Orient.R: return new Rectangle(item.X + OffsX, item.Y + OffsY, Wid, Hgh);
case Orient.Up: return new Rectangle(item.X + OffsY, item.Y + G * SzX - Wid - OffsX, Hgh, Wid);
case Orient.L: return new Rectangle(item.X + G * SzX - Wid - OffsX, item.Y + G * SzY - Hgh - OffsY, Wid, Hgh);
case Orient.Dn: return new Rectangle(item.X + G * SzY - Hgh - OffsY, item.Y + OffsX, Hgh, Wid);
}
}
}
/// <summary>
/// Get coordinates and orientation of the rotated/flipped node
/// </summary>
/// <param name="item">Item</param>
/// <param name="nodeId">Node id</param>
/// <returns>Rotated/flipped node</returns>
public Node GetRotatedFlippedNode(IDrawingItem item, int nodeId)
{
if (Nodes == null || nodeId < 0 || nodeId >= Nodes.Length) return new Node(0, 0, Orient.R);
Node node = Nodes[nodeId];
if (item.Flip)
{
/// Flipped
int ori = (int)node.Orient;
if (ori % 2 == 1) ori += 2;
ori += (int)item.Orient;
switch (item.Orient)
{
default:
case Orient.R: return new Node(node.X, SzY - node.Y, (Orient)(ori % 4));
case Orient.Up: return new Node(SzY - node.Y, SzX - node.X, (Orient)(ori % 4));
case Orient.L: return new Node(SzX - node.X, node.Y, (Orient)(ori % 4));
case Orient.Dn: return new Node(node.Y, node.X, (Orient)(ori % 4));
}
}
else
{
/// Normal
int ori = (int)item.Orient + (int)node.Orient;
switch (item.Orient)
{
default:
case Orient.R: return new Node(node.X, node.Y, (Orient)(ori % 4));
case Orient.Up: return new Node(node.Y, SzX - node.X, (Orient)(ori % 4));
case Orient.L: return new Node(SzX - node.X, SzY - node.Y, (Orient)(ori % 4));
case Orient.Dn: return new Node(SzY - node.Y, node.X, (Orient)(ori % 4));
}
}
}
public static DrawingShape[] Shapes;
///
public static int DrShIx(Shape shape, Sz sz) { return (int)shape * (int)Sz.Count + (int)sz; }
///
public static DrawingShape GetDrawingShape(Shape shape, Sz sz) { return Shapes[DrShIx(shape, sz)]; }
///
public static DrawingShape GetDrawingShape(IDrawingItem item) { return (item != null) ? Shapes[DrShIx(item.Shape, item.Sz)] : null; }
/// <summary>
/// Static constructor that initializes Shapes[] array
/// </summary>
static DrawingShape()
{
Shapes = new DrawingShape[(int)Shape.Count * (int)Sz.Count];
/// Temperature meter
Shapes[DrShIx(Shape.TempM, Sz.S)] = new DrawingShape(Shape.TempM, Sz.S, 0, 0);
Shapes[DrShIx(Shape.TempM, Sz.M)] = new DrawingShape(Shape.TempM, Sz.M, 0, 0);
Shapes[DrShIx(Shape.TempM, Sz.L)] = new DrawingShape(Shape.TempM, Sz.L, 0, 0);
Shapes[DrShIx(Shape.TempM, Sz.XL)] = new DrawingShape(Shape.TempM, Sz.XL, 0, 0);
/// Pressure meter
Shapes[DrShIx(Shape.PressM, Sz.S)] = new DrawingShape(Shape.PressM, Sz.S, 0, 0);
Shapes[DrShIx(Shape.PressM, Sz.M)] = new DrawingShape(Shape.PressM, Sz.M, 0, 0);
Shapes[DrShIx(Shape.PressM, Sz.L)] = new DrawingShape(Shape.PressM, Sz.L, 0, 0);
Shapes[DrShIx(Shape.PressM, Sz.XL)] = new DrawingShape(Shape.PressM, Sz.XL, 0, 0);
/// Valve
Shapes[DrShIx(Shape.Valve, Sz.S)] = new DrawingShape(Shape.Valve, Sz.S, 2, 2,
new Node[] { new Node(0, 1, Orient.L), new Node(2, 1, Orient.R) },
new Edge[] { new Edge(0, 1, 20, RouteCouple.OpenWhen1), new Edge(1, 0, 20, RouteCouple.OpenWhen1) },
0, 0, 20, 20,
Properties.Resources.Valve_S_open, Properties.Resources.Valve_S_closed,
Properties.Resources.Valve_S_vacuum, Properties.Resources.Valve_S_open_dry);
Shapes[DrShIx(Shape.Valve, Sz.M)] = new DrawingShape(Shape.Valve, Sz.M, 3, 4,
new Node[] { new Node(0, 2, Orient.L), new Node(3, 2, Orient.R) },
new Edge[] { new Edge(0, 1, 30, RouteCouple.OpenWhen1), new Edge(1, 0, 30, RouteCouple.OpenWhen1) },
0, 5, 30, 30,
Properties.Resources.Valve_M_open, Properties.Resources.Valve_M_closed,
Properties.Resources.Valve_M_vacuum, Properties.Resources.Valve_M_open_dry);
Shapes[DrShIx(Shape.Valve, Sz.L)] = new DrawingShape(Shape.Valve, Sz.L, 4, 4,
new Node[] { new Node(0, 2, Orient.L), new Node(4, 2, Orient.R) },
new Edge[] { new Edge(0, 1, 40, RouteCouple.OpenWhen1), new Edge(1, 0, 40, RouteCouple.OpenWhen1) },
0, 0, 40, 40,
Properties.Resources.Valve_L_open, Properties.Resources.Valve_L_closed,
Properties.Resources.Valve_L_vacuum, Properties.Resources.Valve_L_open_dry);
Shapes[DrShIx(Shape.Valve, Sz.XL)] = new DrawingShape(Shape.Valve, Sz.XL, 5, 6,
new Node[] { new Node(0, 3, Orient.L), new Node(5, 3, Orient.R) },
new Edge[] { new Edge(0, 1, 50, RouteCouple.OpenWhen1), new Edge(1, 0, 50, RouteCouple.OpenWhen1) },
0, 5, 50, 50,
Properties.Resources.Valve_XL_open, Properties.Resources.Valve_XL_closed,
Properties.Resources.Valve_XL_vacuum, Properties.Resources.Valve_XL_open_dry);
/// Regulation valve
Shapes[DrShIx(Shape.RegV, Sz.S)] = new DrawingShape(Shape.RegV, Sz.S, 2, 2,
new Node[] { new Node(0, 1, Orient.L), new Node(2, 1, Orient.R) },
new Edge[] { new Edge(0, 1, 20), new Edge(1, 0, 20) },
0, 0, 20, 20, Properties.Resources.RegV_S);
Shapes[DrShIx(Shape.RegV, Sz.M)] = new DrawingShape(Shape.RegV, Sz.M, 3, 4,
new Node[] { new Node(0, 2, Orient.L), new Node(3, 2, Orient.R) },
new Edge[] { new Edge(0, 1, 30), new Edge(1, 0, 30) },
0, 5, 30, 30, Properties.Resources.RegV_M);
Shapes[DrShIx(Shape.RegV, Sz.L)] = new DrawingShape(Shape.RegV, Sz.L, 4, 4,
new Node[] { new Node(0, 2, Orient.L), new Node(4, 2, Orient.R) },
new Edge[] { new Edge(0, 1, 40), new Edge(1, 0, 40) },
0, 0, 40, 40, Properties.Resources.RegV_L);
Shapes[DrShIx(Shape.RegV, Sz.XL)] = new DrawingShape(Shape.RegV, Sz.XL, 5, 6,
new Node[] { new Node(0, 3, Orient.L), new Node(5, 3, Orient.R) },
new Edge[] { new Edge(0, 1, 50), new Edge(1, 0, 50) },
0, 5, 50, 50, Properties.Resources.RegV_XL);
/// Pump
Shapes[DrShIx(Shape.Pump, Sz.S)] = new DrawingShape(Shape.Pump, Sz.S, 2, 2,
new Node[] { new Node(0, 1, Orient.L), new Node(2, 1, Orient.R) },
new Edge[] { new Edge(0, 1, 20, RouteCouple.OpenWhen1) },
0, 0, 20, 20, Properties.Resources.Pump_S_open, Properties.Resources.Pump_S_closed);
Shapes[DrShIx(Shape.Pump, Sz.M)] = new DrawingShape(Shape.Pump, Sz.M, 3, 4,
new Node[] { new Node(0, 2, Orient.L), new Node(3, 2, Orient.R) },
new Edge[] { new Edge(0, 1, 30, RouteCouple.OpenWhen1) },
0, 5, 30, 30, Properties.Resources.Pump_M_open, Properties.Resources.Pump_M_closed);
Shapes[DrShIx(Shape.Pump, Sz.L)] = new DrawingShape(Shape.Pump, Sz.L, 4, 4,
new Node[] { new Node(0, 2, Orient.L), new Node(4, 2, Orient.R) },
new Edge[] { new Edge(0, 1, 40, RouteCouple.OpenWhen1) },
0, 0, 40, 40, Properties.Resources.Pump_L_open, Properties.Resources.Pump_L_closed);
Shapes[DrShIx(Shape.Pump, Sz.XL)] = new DrawingShape(Shape.Pump, Sz.XL, 5, 6,
new Node[] { new Node(0, 3, Orient.L), new Node(5, 3, Orient.R) },
new Edge[] { new Edge(0, 1, 50, RouteCouple.OpenWhen1) },
0, 5, 50, 50, Properties.Resources.Pump_XL_open, Properties.Resources.Pump_XL_closed);
/// Pump with frequency inverter
Shapes[DrShIx(Shape.PumpFM, Sz.S)] = new DrawingShape(Shape.PumpFM, Sz.S, 2, 2,
new Node[] { new Node(0, 1, Orient.L), new Node(2, 1, Orient.R) },
new Edge[] { new Edge(0, 1, 20, RouteCouple.OpenWhen1) },
0, 0, 20, 20, Properties.Resources.Pump_S_open, Properties.Resources.Pump_S_closed);
Shapes[DrShIx(Shape.PumpFM, Sz.M)] = new DrawingShape(Shape.PumpFM, Sz.M, 3, 4,
new Node[] { new Node(0, 2, Orient.L), new Node(3, 2, Orient.R) },
new Edge[] { new Edge(0, 1, 30, RouteCouple.OpenWhen1) },
0, 5, 30, 30, Properties.Resources.Pump_M_open, Properties.Resources.Pump_M_closed);
Shapes[DrShIx(Shape.PumpFM, Sz.L)] = new DrawingShape(Shape.PumpFM, Sz.L, 4, 4,
new Node[] { new Node(0, 2, Orient.L), new Node(4, 2, Orient.R) },
new Edge[] { new Edge(0, 1, 40, RouteCouple.OpenWhen1) },
0, 0, 40, 40, Properties.Resources.Pump_L_open, Properties.Resources.Pump_L_closed);
Shapes[DrShIx(Shape.PumpFM, Sz.XL)] = new DrawingShape(Shape.PumpFM, Sz.XL, 5, 6,
new Node[] { new Node(0, 3, Orient.L), new Node(5, 3, Orient.R) },
new Edge[] { new Edge(0, 1, 50, RouteCouple.OpenWhen1) },
0, 5, 50, 50, Properties.Resources.Pump_XL_open, Properties.Resources.Pump_XL_closed);
/// Flow meter
Shapes[DrShIx(Shape.FlowM, Sz.S)] = new DrawingShape(Shape.FlowM, Sz.S, 2, 2,
new Node[] { new Node(0, 1, Orient.L), new Node(2, 1, Orient.R) }, new Edge[] { new Edge(0, 1, 20) },
0, 0, 20, 20, Properties.Resources.FlowM_S);
Shapes[DrShIx(Shape.FlowM, Sz.M)] = new DrawingShape(Shape.FlowM, Sz.M, 3, 4,
new Node[] { new Node(0, 2, Orient.L), new Node(3, 2, Orient.R) }, new Edge[] { new Edge(0, 1, 30) },
0, 5, 30, 30, Properties.Resources.FlowM_M);
Shapes[DrShIx(Shape.FlowM, Sz.L)] = new DrawingShape(Shape.FlowM, Sz.L, 4, 4,
new Node[] { new Node(0, 2, Orient.L), new Node(4, 2, Orient.R) }, new Edge[] { new Edge(0, 1, 40) },
0, 0, 40, 40, Properties.Resources.FlowM_L);
Shapes[DrShIx(Shape.FlowM, Sz.XL)] = new DrawingShape(Shape.FlowM, Sz.XL, 5, 6,
new Node[] { new Node(0, 3, Orient.L), new Node(5, 3, Orient.R) }, new Edge[] { new Edge(0, 1, 50) },
0, 5, 50, 50, Properties.Resources.FlowM_XL);
/// Water meter
Shapes[DrShIx(Shape.WaterM, Sz.L)] = new DrawingShape(Shape.WaterM, Sz.L, 4, 4,
new Node[] { new Node(0, 2, Orient.L), new Node(4, 2, Orient.R) },
new Edge[] { new Edge(0, 1, 40), new Edge(1, 0, 40) },
0, 0, 40, 40, Properties.Resources.WaterM_L);
Shapes[DrShIx(Shape.WaterM, Sz.S)] = Shapes[DrShIx(Shape.WaterM, Sz.L)];
Shapes[DrShIx(Shape.WaterM, Sz.M)] = Shapes[DrShIx(Shape.WaterM, Sz.L)];
Shapes[DrShIx(Shape.WaterM, Sz.XL)] = Shapes[DrShIx(Shape.WaterM, Sz.L)];
/// Scale
Shapes[DrShIx(Shape.Scale, Sz.S)] = new DrawingShape(Shape.Scale, Sz.S, 6, 8, new Node[] { new Node(3, 8, Orient.Dn) }, null, 0, 0, 60, 80, Properties.Resources.Scale_S);
Shapes[DrShIx(Shape.Scale, Sz.M)] = new DrawingShape(Shape.Scale, Sz.M, 8, 9, new Node[] { new Node(4, 9, Orient.Dn) }, null, 0, 0, 80, 90, Properties.Resources.Scale_M);
Shapes[DrShIx(Shape.Scale, Sz.L)] = new DrawingShape(Shape.Scale, Sz.L, 12, 11, new Node[] { new Node(6, 11, Orient.Dn) }, null, 0, 0, 120, 110, Properties.Resources.Scale_L);
Shapes[DrShIx(Shape.Scale, Sz.XL)] = new DrawingShape(Shape.Scale, Sz.XL, 16, 13, new Node[] { new Node(8, 13, Orient.Dn) }, null, 0, 0, 160, 130, Properties.Resources.Scale_XL);
/// Tank
Shapes[DrShIx(Shape.Tank, Sz.S)] = new DrawingShape(Shape.Tank, Sz.S, 10, 8, new Node[] { new Node(0, 6, Orient.L) }, null, 0, 0, 100, 80, Properties.Resources.Tank_S);
Shapes[DrShIx(Shape.Tank, Sz.M)] = new DrawingShape(Shape.Tank, Sz.M, 12, 9, new Node[] { new Node(0, 7, Orient.L) }, null, 0, 0, 120, 90, Properties.Resources.Tank_M);
Shapes[DrShIx(Shape.Tank, Sz.L)] = new DrawingShape(Shape.Tank, Sz.L, 15, 11, new Node[] { new Node(0, 9, Orient.L) }, null, 0, 0, 150, 110, Properties.Resources.Tank_L);
Shapes[DrShIx(Shape.Tank, Sz.XL)] = new DrawingShape(Shape.Tank, Sz.XL, 20, 13, new Node[] { new Node(0, 11, Orient.L) }, null, 0, 0, 200, 130, Properties.Resources.Tank_XL);
/// Junction
Shapes[DrShIx(Shape.Junction, Sz.None)] = new DrawingShape(Shape.Junction, Sz.None, 0, 0, new Node[] { new Node(0, 0, Orient.R) });
Shapes[DrShIx(Shape.Junction, Sz.S)] = new DrawingShape(Shape.Junction, Sz.S, 2, 2, new Node[] { new Node(1, 1, Orient.R) }, null, 0, 0, 20, 20,
Properties.Resources.Junction_S, null, Properties.Resources.Junction_S_vacuum, Properties.Resources.Junction_S_closed);
Shapes[DrShIx(Shape.Junction, Sz.M)] = new DrawingShape(Shape.Junction, Sz.M, 2, 2, new Node[] { new Node(1, 1, Orient.R) }, null, 0, 0, 20, 20,
Properties.Resources.Junction_M, null, Properties.Resources.Junction_M_vacuum, Properties.Resources.Junction_M_closed);
Shapes[DrShIx(Shape.Junction, Sz.L)] = new DrawingShape(Shape.Junction, Sz.L, 2, 2, new Node[] { new Node(1, 1, Orient.R) }, null, 0, 0, 20, 20,
Properties.Resources.Junction_L, null, Properties.Resources.Junction_L_vacuum, Properties.Resources.Junction_L_closed);
Shapes[DrShIx(Shape.Junction, Sz.XL)] = new DrawingShape(Shape.Junction, Sz.XL, 2, 2, new Node[] { new Node(1, 1, Orient.R) }, null, 0, 0, 20, 20,
Properties.Resources.Junction_XL, null, Properties.Resources.Junction_XL_vacuum, Properties.Resources.Junction_XL_closed);
/// Knee
Shapes[DrShIx(Shape.Knee, Sz.S)] = new DrawingShape(Shape.Knee, Sz.S, 2, 2,
new Node[] { new Node(0, 1, Orient.L), new Node(1, 0, Orient.Up) },
new Edge[] { new Edge(0, 1, 18), new Edge(1, 0, 18) },
0, 0, 20, 20, Properties.Resources.Knee_S_open, null, Properties.Resources.Knee_S_vacuum, Properties.Resources.Knee_S_closed);
Shapes[DrShIx(Shape.Knee, Sz.M)] = new DrawingShape(Shape.Knee, Sz.M, 2, 2,
new Node[] { new Node(0, 1, Orient.L), new Node(1, 0, Orient.Up) },
new Edge[] { new Edge(0, 1, 18), new Edge(1, 0, 18) },
0, 0, 20, 20, Properties.Resources.Knee_M_open, null, Properties.Resources.Knee_M_vacuum, Properties.Resources.Knee_M_closed);
Shapes[DrShIx(Shape.Knee, Sz.L)] = new DrawingShape(Shape.Knee, Sz.L, 2, 2,
new Node[] { new Node(0, 1, Orient.L), new Node(1, 0, Orient.Up) },
new Edge[] { new Edge(0, 1, 17), new Edge(1, 0, 17) },
0, 0, 20, 20, Properties.Resources.Knee_L_open, null, Properties.Resources.Knee_L_vacuum, Properties.Resources.Knee_L_closed);
Shapes[DrShIx(Shape.Knee, Sz.XL)] = new DrawingShape(Shape.Knee, Sz.XL, 4, 4,
new Node[] { new Node(0, 2, Orient.L), new Node(2, 0, Orient.Up) },
new Edge[] { new Edge(0, 1, 36), new Edge(1, 0, 36) },
0, 0, 40, 40, Properties.Resources.Knee_XL_open, null, Properties.Resources.Knee_XL_vacuum, Properties.Resources.Knee_XL_closed);
/// Vacuum
Shapes[DrShIx(Shape.Vacuum, Sz.L)] = new DrawingShape(Shape.Vacuum, Sz.L, 6, 2,
new Node[] { new Node(0, 1, Orient.L), new Node(6, 1, Orient.R), new Node(4, 0, Orient.Up) },
new Edge[] { new Edge(0, 1, 60), new Edge(1, 0, 60), new Edge(0, 2, Const.Vacuum) },
0, 0, 60, 20, Properties.Resources.Vacuum_L_wet, null, null, Properties.Resources.Vacuum_L_dry);
Shapes[DrShIx(Shape.Vacuum, Sz.S)] = Shapes[DrShIx(Shape.Vacuum, Sz.L)];
Shapes[DrShIx(Shape.Vacuum, Sz.M)] = Shapes[DrShIx(Shape.Vacuum, Sz.L)];
Shapes[DrShIx(Shape.Vacuum, Sz.XL)] = Shapes[DrShIx(Shape.Vacuum, Sz.L)];
}
}
}
-23
View File
@@ -1,23 +0,0 @@
///
/// Copyright (c) 2020 Sensus Slovensko a.s.
///
using System;
namespace SchematicDrawing
{
public class Edge
{
public readonly int NodeId1;
public readonly int NodeId2;
public readonly int DefaultDist;
public readonly RouteCouple RouteCouple;
public Edge(int nodeId1, int nodeId2, int defaultDist = 20, RouteCouple routeCouple = RouteCouple.None)
{
NodeId1 = nodeId1;
NodeId2 = nodeId2;
DefaultDist = defaultDist;
RouteCouple = routeCouple;
}
}
}
-135
View File
@@ -1,135 +0,0 @@
using Dirichlet.Numerics;
///
/// Copyright (c) 2020 Sensus Slovensko a.s.
///
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
namespace SchematicDrawing
{
public static class Const
{
public const int GridSize = 10;
public const int SecondaryStart = 10000;
public const int Vacuum = 1000000;
}
public enum Element
{
None = 0,
Body = 1, /// Item body (component image)
Label = 2, /// Item label
MeasuredVal = 4, /// Item measured value
Setpoint = 8, /// Item setpoint
Node = 16, /// A node of an item
Pipe = 32, /// Pipe between two nodes
}
public enum Shape
{
Ambient,
Cross,
Div,
FlowM,
Junction,
Knee,
PressM,
Pump,
PumpFM,
RegV,
Scale,
Sink,
Tank,
Tee,
TempM,
Vacuum,
Valve,
WaterM,
Count
}
public enum Sz
{
None,
S,
M,
L,
XL,
Count,
}
public enum Orient
{
R,
Dn,
L,
Up,
Count,
}
public enum RouteCouple
{
None,
OpenWhen1,
ClosedWhen1,
}
public static class Utils
{
/// <summary>
/// Return coordinates of the vector in direction Orient
/// </summary>
/// <param name="orient">Orient</param>
/// <returns>Vector</returns>
public static Point GetVect(Orient orient)
{
switch (orient)
{
default:
case Orient.R: return new Point(1, 0);
case Orient.Up: return new Point(0, -1);
case Orient.L: return new Point(-1, 0);
case Orient.Dn: return new Point(0, 1);
}
}
/// <summary>
/// Return coordinates of the vector perpendicular to Orient
/// </summary>
/// <param name="orient">Orient</param>
/// <returns>Perpendicular vector</returns>
public static Point GetNormalVect(Orient orient)
{
switch (orient)
{
default:
case Orient.R: return new Point(0, 1);
case Orient.Up: return new Point(1, 0);
case Orient.L: return new Point(0, -1);
case Orient.Dn: return new Point(-1, 0);
}
}
/// <summary>
/// Returns true when item is hidden (both X and Y coordinates are 0)
/// </summary>
/// <param name="item">Drawing item</param>
/// <returns>true when hidden</returns>
public static bool IsHidden(IDrawingItem item)
{
return (item.X == 0) && (item.Y == 0);
}
/// <summary>
/// Updates distances of graph edges of IRouteBasedDrewingItem (valve, pump, ...) after route chanage.
/// </summary>
/// <param name="route">Route</param>
/// <param name="item">Item</param>
public static void UpdateGraphEdges(UInt128 route, IRouteBasedDrawingItem item)
{
bool routeBit = (route & (((UInt128)1) << item.BitNr)) != 0;
foreach (var gedge in item.EdgesToSet) gedge.UpdateFromRoute(item.Inverted ? (!routeBit) : routeBit);
}
}
}
-43
View File
@@ -1,43 +0,0 @@
///
/// Copyright (c) 2020 Sensus Slovensko a.s.
///
using System;
namespace SchematicDrawing
{
public class GEdge
{
public readonly GNode StartNode;
public readonly GNode EndNode;
public readonly int DefaultDist;
public readonly RouteCouple RouteCouple;
public int Dist;
public GEdge(GNode startNode, GNode endNode, int defaultDist, RouteCouple routeCouple)
{
StartNode = startNode;
EndNode = endNode;
DefaultDist = defaultDist;
RouteCouple = routeCouple;
Dist = (routeCouple == RouteCouple.None || routeCouple == RouteCouple.ClosedWhen1) ? DefaultDist : int.MaxValue;
}
public void UpdateFromRoute(bool routeBit)
{
switch (RouteCouple)
{
case RouteCouple.OpenWhen1:
Dist = routeBit ? DefaultDist : int.MaxValue; break;
case RouteCouple.ClosedWhen1:
Dist = routeBit ? int.MaxValue : DefaultDist; break;
}
}
public override string ToString()
{
return string.Format("{0}/{1}-{2}/{3} dist={4}", StartNode.Item.Name, StartNode.NodeId, EndNode.Item.Name, EndNode.NodeId, Dist);
}
}
}
-52
View File
@@ -1,52 +0,0 @@
///
/// Copyright (c) 2020 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
namespace SchematicDrawing
{
public class GNode
{
/// Graph node properties
public IDrawingItem Item;
public int NodeId;
public readonly IList<GEdge> Edges;
/// Distance from a start node
public int Dist;
/// Minimal heap index
public int HeapIx;
/// <summary>
/// Constructor
/// </summary>
/// <param name="item">Item</param>
/// <param name="nodeId"Node ID></param>
public GNode(IDrawingItem item, int nodeId)
{
Item = item;
NodeId = nodeId;
Edges = new List<GEdge>();
Dist = int.MaxValue;
}
public void AddEdge(GEdge edge)
{
Edges.Add(edge);
}
public GNode Reset(int heapIx, int dist = int.MaxValue)
{
HeapIx = heapIx;
Dist = dist;
return this;
}
public override string ToString()
{
return string.Format("{0}/{1} dist={2}", Item.Name, NodeId, Dist);
}
}
}
-106
View File
@@ -1,106 +0,0 @@
///
/// Copyright (c) 2020 Sensus Slovensko a.s.
///
using System;
using System.Diagnostics;
using System.Collections.Generic;
namespace SchematicDrawing
{
public class Graph
{
public bool Completed;
IList<GNode> nodes;
GNode startNode;
int secondaryStartNodesCount;
MinHeap minHeap;
GNode currentNode;
public Graph()
{
nodes = new List<GNode>();
startNode = null;
secondaryStartNodesCount = 0;
minHeap = new MinHeap();
Completed = false;
}
public void Clear()
{
nodes.Clear();
startNode = null;
secondaryStartNodesCount = 0;
Completed = false;
}
/// <summary>
/// Add a node to the list of graph nodes
/// </summary>
/// <param name="node">Graph node</param>
public void AddNode(GNode node, bool isStartNode = false, bool isSecondaryStartNode = false)
{
if (isStartNode && startNode == null)
{
startNode = node;
nodes.Insert(0, node);
}
else if (isStartNode || isSecondaryStartNode)
{
secondaryStartNodesCount++;
nodes.Insert(startNode != null ? 1 : 0, node);
}
else
{
nodes.Add(node);
}
}
/// <summary>
/// Add an edge to the list of edges of node1.
/// </summary>
/// <param name="node1">Node 1 (start)</param>
/// <param name="node2">NOde 2 (end)</param>
/// <param name="defaultDist">Default distance (when closed)</param>
/// <param name="routeCouple">Way the route affects this edge</param>
/// <returns>Added graph edge</returns>
public GEdge AddEdge(GNode node1, GNode node2, int defaultDist, RouteCouple routeCouple = RouteCouple.None)
{
GEdge gedge = new GEdge(node1, node2, defaultDist, routeCouple);
node1.AddEdge(gedge);
return gedge;
}
/// <summary>
/// Run Dijkstra shortest path algorithm to determine schematic drawing coloring
/// </summary>
/// <param name="startNode">Start node</param>
/// <param name="secondaryStartNodes">List of secondary start nodes</param>
public void RunDijkstraAlgo()
{
if (nodes == null || startNode == null) return;
/// Reset all nodes
minHeap.ResetAndBuild(nodes, secondaryStartNodesCount);
currentNode = minHeap.ExtractMinNode();
do
{
/// Consider all unvisited neighbors of the current node
foreach (var e in currentNode.Edges)
{
int distViaCurrNode = (e.Dist == int.MaxValue) ? int.MaxValue : currentNode.Dist + e.Dist;
if (distViaCurrNode < e.EndNode.Dist)
{
e.EndNode.Dist = distViaCurrNode;
minHeap.SiftUp(e.EndNode.HeapIx);
}
}
currentNode = minHeap.ExtractMinNode();
}
while (currentNode.Dist < int.MaxValue && currentNode != null);
}
}
}
-10
View File
@@ -1,10 +0,0 @@
///
/// Copyright (c) 2020 Sensus Slovensko a.s.
///
namespace SchematicDrawing
{
public interface IDrawingItCmpnt
{
IDrawingItem DrawingItem { get; }
}
}
@@ -1,12 +0,0 @@
///
/// Copyright (c) 2020 Sensus Slovensko a.s.
///
namespace SchematicDrawing
{
public interface IDrawingItCmpntWithMeasuredVal : IDrawingItCmpnt
{
bool MsrmntAvailable { get; }
double MeasuredVal { get; }
string AltString { get; }
}
}
@@ -1,12 +0,0 @@
///
/// Copyright (c) 2020 Sensus Slovensko a.s.
///
namespace SchematicDrawing
{
public interface IDrawingItCmpntWithSetpoint : IDrawingItCmpnt
{
double SetpointVal { get; set; }
void IncreaseSetpoint();
void DecreaseSetpoint();
}
}
-30
View File
@@ -1,30 +0,0 @@
///
/// Copyright (c) 2020 Sensus Slovensko a.s.
///
using Config;
using System.Collections.Generic;
namespace SchematicDrawing
{
public interface IDrawingItem
{
///
/// Schematic drawing parameters
///
string Name { get; } /// Unique name
string ClassName { get; }
Shape Shape { get; set; } /// Image
int X { get; set; }
int Y { get; set; }
Sz Sz { get; set; }
Orient Orient { get; set; }
bool Flip { get; set; }
int LblX { get; set; } /// Label
int LblY { get; set; }
Orient LblOrient { get; set; }
IList<GNode> GNodes { get; set; }
}
}
@@ -1,16 +0,0 @@
///
/// Copyright (c) 2020 Sensus Slovensko a.s.
///
namespace SchematicDrawing
{
public interface IDrawingItemWithMeasuredVal : IDrawingItem
{
int MsrdX { get; set; }
int MsrdY { get; set; }
Orient MsrdOrient { get; set; }
string MsrdFormat { get; set; }
Config.Unit MsrdUnits { get; set; }
double MsrdValLimLo { get; set; }
double MsrdValLimHi { get; set; }
}
}
@@ -1,14 +0,0 @@
///
/// Copyright (c) 2020 Sensus Slovensko a.s.
///
namespace SchematicDrawing
{
public interface IDrawingItemWithSetpoint : IDrawingItem
{
int SetpX { get; set; }
int SetpY { get; set; }
Orient SetpOrient { get; set; }
string SetpFormat { get; set; }
Config.Unit SetpUnits { get; set; }
}
}
@@ -1,14 +0,0 @@
///
/// Copyright (c) 2020 Sensus Slovensko a.s.
///
using System.Collections.Generic;
namespace SchematicDrawing
{
public interface IRouteBasedDrawingItem : IDrawingItem
{
int BitNr { get; }
bool Inverted { get; }
IList<GEdge> EdgesToSet { get; set; }
}
}
-21
View File
@@ -1,21 +0,0 @@
///
/// Copyright (c) 2020 Sensus Slovensko a.s.
///
using System.Drawing;
namespace SchematicDrawing
{
public class ItemElementRect
{
public IDrawingItem Item;
public Element Element;
public Rectangle Rect;
public ItemElementRect(IDrawingItem item, Element element, Rectangle rect)
{
Item = item;
Element = element;
Rect = rect;
}
}
}
-134
View File
@@ -1,134 +0,0 @@
///
/// Copyright (c) 2020 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
namespace SchematicDrawing
{
public class MinHeap
{
GNode[] heap; /// Minimum heap, a binary tree in form of an array
int heapSize; /// Heap size (not necessarily a size of the array heap[])
/// <summary>
/// Constructor
/// </summary>
public MinHeap()
{
heap = null;
heapSize = 0;
}
/// <summary>
/// Reset nodes and build the initial minimum heap tree.
///
/// First node on the list is the start node (mostly the main water tank),
/// followed by 'secondaryStartNodesCount' secondary start nodes (typically
/// tanks above scales), followed by all remaining nodes of the drawing.
/// In this way the heap is heapified from the beginning.
/// </summary>
/// <param name="nodes">Graph nodes</param>
/// <param name="secondaryStartNodesCount">Number of secondary start nodes</param>
public void ResetAndBuild(IList<GNode> nodes, int secondaryStartNodesCount)
{
if (nodes == null || nodes.Count == 0) return;
if (heapSize != nodes.Count)
{
heapSize = nodes.Count;
heap = new GNode[nodes.Count];
}
heap[0] = nodes[0].Reset(0, 0);
for (int i = 1; i <= secondaryStartNodesCount; i++)
{
heap[i] = nodes[i].Reset(i, Const.SecondaryStart);
}
for (int i = secondaryStartNodesCount + 1; i < nodes.Count; i++)
{
heap[i] = nodes[i].Reset(i, int.MaxValue);
}
}
/// <summary>
/// Returns the node with minimal distance at the top of the heap binary tree.
/// This node is removed from the heap, replaced by the last node and the heap is 'Heapified'.
/// </summary>
/// <returns>Node with minimal distance</returns>
public GNode ExtractMinNode()
{
GNode minNode = heap[0];
if (--heapSize > 0)
{
heap[0] = heap[heapSize]; /// Swap with the last one
heap[0].HeapIx = 0;
heap[heapSize] = minNode;
SiftDown(0); /// Heapify the heap, sift down the swapped (formerly the last) item
}
return minNode;
}
/// <summary>
/// Sift up the node in the minimum heap binary tree.
/// Function is called when distance of a node in the graph is updated.
/// As the distance is always decreased, the node sifts up in the tree.
/// </summary>
/// <param name="heapIx">Index of the node to sift up</param>
public void SiftUp(int heapIx)
{
if (heapIx == 0) return;
int parentIx = (heapIx - 1) / 2;
if (heap[heapIx].Dist < heap[parentIx].Dist)
{
SwapNodes(heapIx, parentIx);
SiftUp(parentIx);
}
}
/// <summary>
/// Sift down the node in the minimum heap binary tree.
/// Function is called when node at the top of the tree is extracted and replaced
/// by the last node. This last node is then sift down according to its distance.
/// </summary>
/// <param name="heapIx">Index of the node to sift down</param>
void SiftDown(int heapIx)
{
int leftIx = 2 * heapIx + 1;
if (leftIx < heapSize)
{
int minIx = heapIx;
if (heap[leftIx].Dist < heap[minIx].Dist)
{
minIx = leftIx;
}
int rightIx = 2 * heapIx + 2;
if (rightIx < heapSize && heap[rightIx].Dist < heap[minIx].Dist)
{
minIx = rightIx;
}
if (minIx != heapIx)
{
SwapNodes(heapIx, minIx);
SiftDown(minIx);
}
}
}
/// <summary>
/// Swap two nodes in the minimum heap binary tree.
/// </summary>
/// <param name="ix1">Index of the 1st node</param>
/// <param name="ix2">Index of the 2nd node</param>
void SwapNodes(int ix1, int ix2)
{
GNode swap = heap[ix1];
heap[ix1] = heap[ix2];
heap[ix1].HeapIx = ix1;
heap[ix2] = swap;
heap[ix2].HeapIx = ix2;
}
}
}
-21
View File
@@ -1,21 +0,0 @@
///
/// Copyright (c) 2020 Sensus Slovensko a.s.
///
using System;
namespace SchematicDrawing
{
public class Node
{
public int X;
public int Y;
public Orient Orient;
public Node(int x, int y, Orient orient)
{
X = x;
Y = y;
Orient = orient;
}
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1005 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 595 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 359 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 251 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

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