Compare commits
51
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b2276c086c | ||
|
|
4fa462661c | ||
|
|
2b30d0cf34 | ||
|
|
df2c56e6c4 | ||
|
|
a997c3d7be | ||
|
|
3c964f2aab | ||
|
|
c445b3e098 | ||
|
|
2ea2a2592e | ||
|
|
27072598cd | ||
|
|
4a2d4772d7 | ||
|
|
2bf00606d3 | ||
|
|
3773e1d96c | ||
|
|
19ddc753c7 | ||
|
|
0c41c750e8 | ||
|
|
4bfd5c8e11 | ||
|
|
f0fb70e38b | ||
|
|
6e5bcafec0 | ||
|
|
d5cb18c910 | ||
|
|
3a2069b255 | ||
|
|
80c651dbfd | ||
|
|
5a3b9b57c4 | ||
|
|
ead350eef3 | ||
|
|
b43657a4db | ||
|
|
8fffb9e366 | ||
|
|
0fdd229141 | ||
|
|
2f1ada3f5b | ||
|
|
988a8c6642 | ||
|
|
42ee9eaee3 | ||
|
|
3f28051d79 | ||
|
|
65f13cc868 | ||
|
|
cd8ba3cda3 | ||
|
|
a5936c8f19 | ||
|
|
2842425673 | ||
|
|
06a401a1ff | ||
|
|
3a2fc50fec | ||
|
|
38a58ed8b7 | ||
|
|
c7cba20de0 | ||
|
|
6311df49c3 | ||
|
|
f1d32a39ba | ||
|
|
224b53f774 | ||
|
|
1e2777c5e7 | ||
|
|
c3c21649fb | ||
|
|
99ccabc142 | ||
|
|
f1e6e94450 | ||
|
|
320cddb177 | ||
|
|
42002e3fa4 | ||
|
|
77cabfd712 | ||
|
|
c933e2d759 | ||
|
|
f3f0a46627 | ||
|
|
b5fb4c2947 | ||
|
|
f6cce9df3c |
@@ -34,6 +34,8 @@ MergeResultsDBs/bin/
|
||||
MergeResultsDBs/obj/
|
||||
NfcC7_Dll/bin/
|
||||
NfcC7_Dll/obj/
|
||||
NfcC7_DLL.Tests/bin/
|
||||
NfcC7_DLL.Tests/obj/
|
||||
OrderManagement/bin/
|
||||
OrderManagement/obj/
|
||||
ProductionTracing/bin/
|
||||
|
||||
@@ -76,6 +76,7 @@
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
@@ -97,5 +98,8 @@
|
||||
<Name>SharedComponents</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\TBF_icon.ico" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
@@ -29,6 +29,8 @@ namespace AppDiagnostic
|
||||
|
||||
public MainForm()
|
||||
{
|
||||
this.Icon = Properties.Resources.TBF_icon;
|
||||
|
||||
InitializeComponent();
|
||||
|
||||
// Inicializujeme LogAdapter a priradíme ho k memoListView
|
||||
|
||||
+21
-19
@@ -8,8 +8,8 @@
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace AppDiagnostic.Properties
|
||||
{
|
||||
namespace AppDiagnostic.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
@@ -19,31 +19,26 @@ namespace AppDiagnostic.Properties
|
||||
// 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.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources
|
||||
{
|
||||
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()
|
||||
{
|
||||
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))
|
||||
{
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AppDiagnostic.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
@@ -56,16 +51,23 @@ namespace AppDiagnostic.Properties
|
||||
/// 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
|
||||
{
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set
|
||||
{
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
|
||||
/// </summary>
|
||||
internal static System.Drawing.Icon TBF_icon {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("TBF_icon", resourceCulture);
|
||||
return ((System.Drawing.Icon)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
@@ -60,6 +60,7 @@
|
||||
: 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">
|
||||
@@ -68,9 +69,10 @@
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<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">
|
||||
@@ -85,9 +87,10 @@
|
||||
<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="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">
|
||||
@@ -109,9 +112,13 @@
|
||||
<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>
|
||||
<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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="TBF_icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\TBF_icon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 64 KiB |
@@ -4,6 +4,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Common
|
||||
{
|
||||
@@ -289,10 +290,19 @@ namespace Common
|
||||
CompoundAux,
|
||||
Compound,
|
||||
HeatMeterVolume,
|
||||
HeatMeterMass,//...MF
|
||||
HeatMeterEnergy,
|
||||
SingleOrCompound, /// Only used when querying results
|
||||
}
|
||||
|
||||
public enum PulsesTypeByQuantity : short
|
||||
{
|
||||
[Description("dm3")] Volume_dm3,
|
||||
[Description("kg")] Mass_kg,
|
||||
|
||||
Count
|
||||
}
|
||||
|
||||
public enum Medium
|
||||
{
|
||||
[Description("")] NotSpecified,
|
||||
@@ -829,6 +839,15 @@ namespace Common
|
||||
E63 = (1L << 62),
|
||||
}
|
||||
|
||||
//...MF
|
||||
public enum FlowType : int
|
||||
{
|
||||
none,
|
||||
volume,
|
||||
mass,
|
||||
Count,
|
||||
}
|
||||
|
||||
#region iPERL enums
|
||||
|
||||
public enum Side
|
||||
|
||||
@@ -33,6 +33,20 @@ namespace Common
|
||||
[Description("m3/m")] m3pm, /// 1 m3/m = 60 m3/h
|
||||
[Description("cf/s")] cfs, /// 1 cubic foot per second = 101.9406477312 m3/h
|
||||
|
||||
|
||||
[Description("g/s")] gps, /// 1 g/s = 0.0036 t/h
|
||||
[Description("g/min")] gpm, /// 1 g/min = 0.00006 t/h
|
||||
[Description("g/h")] gph, /// 1 g/h = 0.000001 t/h
|
||||
[Description("kg/s")] kgps, /// 1 kg/s = 3.6 t/h
|
||||
[Description("kg/min")] kgpm, /// 1 kg/min = 0.06 t/h
|
||||
[Description("kg/h")] kgph, /// 1 kg/h = 0.001 t/h
|
||||
[Description("t/s")] tps, /// 1 t/s = 3600 t/h
|
||||
[Description("t/min")] tpm, /// 1 t/min = 60 t/h
|
||||
[Description("t/h")] tph, /// 1 t/h = 1 t/h
|
||||
[Description("lb/s")] lbps, /// 1 lb/s ≈ 1.633 t/h
|
||||
[Description("lb/min")] lbpm, /// 1 lb/min ≈ 0.027216 t/h
|
||||
[Description("lb/h")] lbph, /// 1 lb/h ≈ 0.0004536 t/h
|
||||
|
||||
[Description("g")] g, /// 0.001 kg
|
||||
[Description("oz")] oz, /// 0.0283495231 kg
|
||||
[Description("lb")] lb, /// 0.45359237 kg
|
||||
@@ -221,8 +235,12 @@ namespace Common
|
||||
[Description("Corrente")] Current,
|
||||
[Description("Voltaggio")] Voltage,
|
||||
#else
|
||||
[Description("RegisterReader")] RegisterReader,
|
||||
[Description("MultiFunctionalVariables")] MultiFunctionalVariables,
|
||||
[Description("VolumeFlow")] VolumeFlow,
|
||||
[Description("Volume")] Volume,
|
||||
[Description("Flow")] Flow,
|
||||
[Description("MassFlow")] MassFlow,
|
||||
[Description("Mass")] Mass,
|
||||
[Description("Time")] Time,
|
||||
[Description("Temperature")] Temperature,
|
||||
@@ -234,6 +252,8 @@ namespace Common
|
||||
[Description("Energy")] Energy,
|
||||
[Description("Pulses")] Pulses,
|
||||
[Description("Pulses/liter")] PulsePerLtr,
|
||||
[Description("Pulses/kg")] PulsePerKilogram, //...MF
|
||||
[Description("Pulses/Unit")] PulsePerUnit,//...MF
|
||||
[Description("Pulses/kWh")] PulsePerKWh,
|
||||
[Description("Conductivity")] Conductivity,
|
||||
|
||||
@@ -278,29 +298,72 @@ namespace Common
|
||||
return Quantity.Pulses;
|
||||
|
||||
case Unit.ml:
|
||||
return Quantity.Volume;
|
||||
case Unit.l:
|
||||
return Quantity.Volume;
|
||||
case Unit.dm3:
|
||||
return Quantity.Volume;
|
||||
case Unit.USgal:
|
||||
return Quantity.Volume;
|
||||
case Unit.UKgal:
|
||||
return Quantity.Volume;
|
||||
case Unit.cf:
|
||||
return Quantity.Volume;
|
||||
case Unit.m3:
|
||||
return Quantity.Volume;
|
||||
|
||||
case Unit.lph:
|
||||
return Quantity.Flow;
|
||||
case Unit.cfph:
|
||||
return Quantity.Flow;
|
||||
case Unit.lpm:
|
||||
return Quantity.Flow;
|
||||
case Unit.USgalpm:
|
||||
return Quantity.Flow;
|
||||
case Unit.m3ph:
|
||||
return Quantity.Flow;
|
||||
case Unit.lps:
|
||||
return Quantity.Flow;
|
||||
case Unit.USgalps:
|
||||
return Quantity.Flow;
|
||||
case Unit.m3pm:
|
||||
return Quantity.Flow;
|
||||
case Unit.cfs:
|
||||
return Quantity.Flow;
|
||||
|
||||
case Unit.gps:
|
||||
return Quantity.MassFlow;
|
||||
case Unit.gpm:
|
||||
return Quantity.MassFlow;
|
||||
case Unit.gph:
|
||||
return Quantity.MassFlow;
|
||||
case Unit.kgps:
|
||||
return Quantity.MassFlow;
|
||||
case Unit.kgpm:
|
||||
return Quantity.MassFlow;
|
||||
case Unit.kgph:
|
||||
return Quantity.MassFlow;
|
||||
case Unit.tps:
|
||||
return Quantity.MassFlow;
|
||||
case Unit.tpm:
|
||||
return Quantity.MassFlow;
|
||||
case Unit.tph:
|
||||
return Quantity.MassFlow;
|
||||
case Unit.lbps:
|
||||
return Quantity.MassFlow;
|
||||
case Unit.lbpm:
|
||||
return Quantity.MassFlow;
|
||||
case Unit.lbph:
|
||||
return Quantity.MassFlow;
|
||||
|
||||
case Unit.g:
|
||||
return Quantity.Mass;
|
||||
case Unit.oz:
|
||||
return Quantity.Mass;
|
||||
case Unit.lb:
|
||||
return Quantity.Mass;
|
||||
case Unit.kg:
|
||||
return Quantity.Mass;
|
||||
case Unit.t:
|
||||
return Quantity.Mass;
|
||||
|
||||
@@ -384,8 +447,10 @@ namespace Common
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsVolumeFlow(Unit unit) { return IsQuantity(unit, Quantity.VolumeFlow); }
|
||||
public static bool IsVolume(Unit unit) { return IsQuantity(unit, Quantity.Volume); }
|
||||
public static bool IsFlow(Unit unit) { return IsQuantity(unit, Quantity.Flow); }
|
||||
public static bool IsMassFlow(Unit unit) { return IsQuantity(unit, Quantity.MassFlow); }
|
||||
public static bool IsMass(Unit unit) { return IsQuantity(unit, Quantity.Mass); }
|
||||
public static bool IsTime(Unit unit) { return IsQuantity(unit, Quantity.Time); }
|
||||
public static bool IsTemperature(Unit unit) { return IsQuantity(unit, Quantity.Temperature); }
|
||||
|
||||
+6
-1
@@ -302,7 +302,7 @@ namespace Common
|
||||
string passwordOfDay = Convert.ToString(number, 8);
|
||||
|
||||
return (userName.Equals("milan") && password.Equals("kraken")) ||
|
||||
(userName.Equals("BuMi") && password.Equals("70630")) ||
|
||||
(userName.Equals("bumi") && password.Equals("70630")) ||
|
||||
(userName.Equals("igor") && password.Equals("mojronko8")) ||
|
||||
(userName.Equals("lubo1212") && password.Equals("Tatry52")) ||
|
||||
(userName.Equals("Michal") && password.Equals("Plok789456123")) ||
|
||||
@@ -311,6 +311,11 @@ namespace Common
|
||||
(userName.Equals("jan") && password.Equals("jaugust")) ||
|
||||
(userName.Equals("JCermak") && password.Equals("Zt6911")) ||
|
||||
(userName.Equals("gilles") && password.Equals("alibaba")) ||
|
||||
(userName.Equals("michal") && password.Equals("mojnelson8")) ||
|
||||
(userName.Equals("marek") && password.Equals("mareciino")) ||
|
||||
#if DEBUG
|
||||
(userName.Equals("Sensus Developers") && password.Equals("5fbg12gf5hn8nhy1fr")) ||
|
||||
#endif
|
||||
(userName.Equals(passwordOfDay) && password.Equals(passwordOfDay));
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>TRACE;DEBUG;HEAT_METERS;</DefineConstants>
|
||||
<DefineConstants>TRACE;DEBUG;</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;HEAT_METERS;</DefineConstants>
|
||||
<DefineConstants>TRACE;JUZNA_AFRIKA_NEW;</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE;HEAT_METERS;</DefineConstants>
|
||||
<DefineConstants>DEBUG;TRACE;</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
@@ -32,7 +32,7 @@
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE;HEAT_METERS;</DefineConstants>
|
||||
<DefineConstants>TRACE;</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
using System;
|
||||
using JetBrains.Annotations;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using NfcC7_DLL.NfcHanler;
|
||||
using NfcC7_DLL.NfcHanler.Protocols;
|
||||
using NfcC7_DLL.NfcHanler.Utils;
|
||||
using NfcC7_DLL.NfcHandler;
|
||||
using NfcC7_DLL.NfcHandler.Protocols;
|
||||
using NfcC7_DLL.NfcHandler.Utils;
|
||||
using NfcC7_DLL.NfcHandler;
|
||||
|
||||
namespace NfcC7_DLL.Tests.NfcHanler;
|
||||
|
||||
[TestClass]
|
||||
[TestSubject(typeof(NFCHeadService))]
|
||||
public class NFCHeadServiceTest
|
||||
[TestSubject(typeof(NfcHeadService))]
|
||||
public class NfcHeadServiceTest
|
||||
{
|
||||
|
||||
[TestMethod]
|
||||
@@ -20,7 +21,7 @@ public class NFCHeadServiceTest
|
||||
"HatCliDemo.exe",
|
||||
74);
|
||||
|
||||
NFCHeadService service = new NFCHeadService(serialPortData);
|
||||
NfcHeadService service = new NfcHeadService(serialPortData);
|
||||
OptoHeadStatus status = service.SetTestingMode(OptoHeadStatus.OptoHeadC7);
|
||||
Assert.AreEqual(OptoHeadStatus.OptoHeadC7, status);
|
||||
}
|
||||
@@ -33,7 +34,7 @@ public class NFCHeadServiceTest
|
||||
"HatCliDemo.exe",
|
||||
74);
|
||||
|
||||
NFCHeadService service = new NFCHeadService(serialPortData);
|
||||
NfcHeadService service = new NfcHeadService(serialPortData);
|
||||
OptoHeadStatus status = service.SetTestingMode(OptoHeadStatus.OptoHeadDisabled);
|
||||
Assert.AreEqual(OptoHeadStatus.OptoHeadDisabled, status);
|
||||
}
|
||||
@@ -46,7 +47,7 @@ public class NFCHeadServiceTest
|
||||
"HatCliDemo.exe",
|
||||
74);
|
||||
|
||||
NFCHeadService service = new NFCHeadService(serialPortData);
|
||||
NfcHeadService service = new NfcHeadService(serialPortData);
|
||||
OptoHeadStatus status = service.SetTestingMode(OptoHeadStatus.OptoHeadC2);
|
||||
Assert.AreEqual(OptoHeadStatus.OptoHeadC2, status);
|
||||
|
||||
@@ -65,12 +66,26 @@ public class NFCHeadServiceTest
|
||||
"HatCliDemo.exe",
|
||||
74);
|
||||
|
||||
NFCHeadService service = new NFCHeadService(serialPortData);
|
||||
NfcHeadService service = new NfcHeadService(serialPortData);
|
||||
string? serialNr = service.GetSerialNr();
|
||||
Assert.IsFalse(string.IsNullOrEmpty(serialNr));
|
||||
Console.WriteLine("Found serial no: {0}",serialNr);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void GetSerialNrAsync_LiveMeterTest()
|
||||
{
|
||||
SerialPortData serialPortData = new SerialPortData(
|
||||
"COM5",
|
||||
"HatCliDemo.exe",
|
||||
74);
|
||||
|
||||
NfcHeadService service = new NfcHeadService(serialPortData);
|
||||
string? serialNr = service.GetSerialNrAsync().GetAwaiter().GetResult();
|
||||
Assert.IsFalse(string.IsNullOrEmpty(serialNr));
|
||||
Console.WriteLine("Found serial no: {0}",serialNr);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void GetTestingMode_LiveMeterTest()
|
||||
{
|
||||
@@ -79,7 +94,7 @@ public class NFCHeadServiceTest
|
||||
"HatCliDemo.exe",
|
||||
74);
|
||||
|
||||
NFCHeadService service = new NFCHeadService(serialPortData);
|
||||
NfcHeadService service = new NfcHeadService(serialPortData);
|
||||
OptoHeadStatus status = service.GetTestingMode();
|
||||
Assert.IsFalse(OptoHeadStatus.Unknown == status);
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
using JetBrains.Annotations;
|
||||
using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Helpers;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using NfcC7_DLL.NfcHanler;
|
||||
using NfcC7_DLL.NfcHanler.Protocols;
|
||||
using NfcC7_DLL.NfcHanler.Utils;
|
||||
using NfcC7_DLL.NfcHandler;
|
||||
using NfcC7_DLL.NfcHandler.Protocols;
|
||||
using NfcC7_DLL.NfcHandler.Utils;
|
||||
|
||||
namespace NfcC7_DLL.Tests.NfcHanler;
|
||||
|
||||
@@ -21,7 +20,7 @@ public class OptoHeadServiceTest
|
||||
"HatCliDemo.exe",
|
||||
74);
|
||||
|
||||
NFCHeadService service = new NFCHeadService(serialPortData);
|
||||
NfcHeadService service = new NfcHeadService(serialPortData);
|
||||
OptoHeadStatus status = service.SetTestingMode(OptoHeadStatus.OptoHeadC7);
|
||||
Assert.AreEqual(OptoHeadStatus.OptoHeadC7, status);
|
||||
//Open serial connection to Optohead
|
||||
|
||||
@@ -2,11 +2,11 @@ using System;
|
||||
using System.IO.Ports;
|
||||
using JetBrains.Annotations;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using NfcC7_DLL.NfcHanler.Utils;
|
||||
using NfcC7_DLL.NfcHandler.Utils;
|
||||
|
||||
namespace NfcC7_DLL.Tests.NfcHanler.Utils;
|
||||
|
||||
[TestClass]
|
||||
//[TestClass]
|
||||
[TestSubject(typeof(SERIAL_Driver))]
|
||||
public class SERIAL_DriverTest
|
||||
{
|
||||
@@ -22,15 +22,15 @@ public class SERIAL_DriverTest
|
||||
}
|
||||
|
||||
private readonly byte[] Open =
|
||||
{ 107 ,128 ,1 ,16 ,0 ,48 ,0 ,71 ,108 ,111 ,98 ,97 ,108 ,73 ,80 ,101 ,114
|
||||
,108 ,85 ,116 ,105 ,108 ,105 ,116 ,121 ,0 ,0 ,39 ,215 };
|
||||
{ 0x6B, 0x80, 0x01, 0x10, 0x00, 0x30, 0x00, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x49, 0x50, 0x65, 0x72,
|
||||
0x6C, 0x55, 0x74, 0x69, 0x6C, 0x69, 0x74, 0x79, 0x00, 0x00, 0x27, 0xD7 };
|
||||
private readonly byte[] CommDeviceSessionEnd = { 0x6B, 0x61, 0x00, 0x10, 0x05, 0x31, 0x00, 0x1F, 0x29, 0xF9, 0xC5 };
|
||||
|
||||
private readonly byte[] ProductDetails =
|
||||
{ 107, 48, 1, 16, 3, 33, 1, 2, 107, 144, 0, 0, 17, 64, 5, 0, 2, 4, 96, 98, 66, 4, 165, 100 };
|
||||
{ 0x6B, 0x30, 0x01, 0x10, 0x03, 0x21, 0x01, 0x02, 0x6B, 0x90, 0x00, 0x00, 0x11, 0x40, 0x05, 0x00, 0x02, 0x04, 0x60, 0x62, 0x42, 0x04, 0xA5, 0x64 };
|
||||
|
||||
private readonly byte[] ProductDetails2 =
|
||||
{ 107, 48, 1, 16, 3, 33, 1, 2, 107, 144, 0, 0, 17, 64, 5, 0, 2, 4, 96 };
|
||||
{ 0x6B, 0x30, 0x01, 0x10, 0x03, 0x21, 0x01, 0x02, 0x6B, 0x90, 0x00, 0x00, 0x11, 0x40, 0x05, 0x00, 0x02, 0x04, 0x60 };
|
||||
|
||||
static Con con5 = new Con(){
|
||||
com = "COM5",
|
||||
@@ -54,10 +54,10 @@ public class SERIAL_DriverTest
|
||||
|
||||
|
||||
|
||||
[TestMethod]
|
||||
//[TestMethod]
|
||||
public void SendMessage_Test()
|
||||
{
|
||||
Con con = con6;
|
||||
Con con = con5;
|
||||
|
||||
byte[] message = Open;
|
||||
byte[] bytesReceived;
|
||||
@@ -75,13 +75,36 @@ public class SERIAL_DriverTest
|
||||
driver.SendMessage(message, message.Length);
|
||||
//Assert.IsTrue(driver.GetRawData().Length == 0);
|
||||
bytesReceived = driver.GetRawData();
|
||||
Assert.IsTrue(bytesReceived.Length > 0);
|
||||
//Assert.IsTrue(bytesReceived.Length > 0);
|
||||
Console.WriteLine("IsOpened: {0}", driver.isOpen());
|
||||
// Display raw bytes (as hex or byte count)
|
||||
if (bytesReceived != null)
|
||||
{
|
||||
Console.WriteLine(string.Format("Bytes received: {0}", bytesReceived.Length));
|
||||
Console.WriteLine(string.Format("Bytes (hex): {0}", BitConverter.ToString(bytesReceived)));
|
||||
string response = System.Text.Encoding.UTF8.GetString(bytesReceived);
|
||||
Console.WriteLine("Bytes string: {0}", response);
|
||||
}
|
||||
|
||||
// --- Get Serial No ---
|
||||
message = ProductDetails;
|
||||
// Send Open message
|
||||
bool sendSuccess = driver.SendMessage(message, message.Length);
|
||||
Assert.IsTrue(sendSuccess, "Failed to send Open message");
|
||||
Console.WriteLine("Sent message for product details: {0}", message.ToString());
|
||||
bytesReceived = driver.GetRawData();
|
||||
// Display raw bytes (as hex or byte count)
|
||||
if (bytesReceived != null)
|
||||
{
|
||||
Console.WriteLine(string.Format("Bytes received: {0}", bytesReceived.Length));
|
||||
Console.WriteLine(string.Format("Bytes (hex): {0}", BitConverter.ToString(bytesReceived)));
|
||||
string response = System.Text.Encoding.UTF8.GetString(bytesReceived);
|
||||
Console.WriteLine("Bytes string: {0}", response);
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Response not received!");
|
||||
}
|
||||
|
||||
message = CommDeviceSessionEnd;
|
||||
driver.SendMessage(message, message.Length);
|
||||
@@ -91,7 +114,7 @@ public class SERIAL_DriverTest
|
||||
}
|
||||
|
||||
|
||||
[TestMethod]
|
||||
//[TestMethod]
|
||||
public void SendMessage_TestLoop()
|
||||
{
|
||||
Con con = con6;
|
||||
@@ -132,7 +155,7 @@ public class SERIAL_DriverTest
|
||||
}
|
||||
|
||||
|
||||
[TestMethod]
|
||||
//[TestMethod]
|
||||
public void SendMessage_TestGetSerialNo()
|
||||
{
|
||||
Con con = con6;
|
||||
|
||||
@@ -1,21 +1,25 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>false</ImplicitUsings>
|
||||
<Nullable>disable</Nullable>
|
||||
<Copyright>Copyright © 2025</Copyright>
|
||||
<AssemblyVersion>1.1.0.0</AssemblyVersion>
|
||||
<FileVersion>1.1.0.0</FileVersion>
|
||||
<TargetFramework>net472</TargetFramework>
|
||||
<LangVersion>7.3</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||
<DefineConstants>TRACE;IPERL;</DefineConstants>
|
||||
<CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
|
||||
<DebugType>full</DebugType>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
|
||||
<DefineConstants>TRACE;IPERL;</DefineConstants>
|
||||
<CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
@@ -26,6 +30,7 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.Build.Utilities.v4.0" />
|
||||
<Reference Include="NA2WNFC">
|
||||
<HintPath>NfcHanler\NfcReaderLibrary\NA2WNFC.dll</HintPath>
|
||||
</Reference>
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
using NfcC7_DLL.NfcHandler.Protocols;
|
||||
|
||||
namespace NfcC7_DLL.NfcHandler
|
||||
{
|
||||
public class HeadInfo
|
||||
{
|
||||
string SerialNr { get; set; }
|
||||
OptoHeadStatus OptoHeadStatus { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
|
||||
|
||||
namespace NfcC7_DLL.NfcHanler
|
||||
namespace NfcC7_DLL.NfcHandler
|
||||
{
|
||||
public class JsonDataFromPoseidon
|
||||
{
|
||||
@@ -0,0 +1,247 @@
|
||||
using System;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using NfcC7_DLL.NfcHandler.Protocols;
|
||||
using NfcC7_DLL.NfcHandler.Utils;
|
||||
|
||||
namespace NfcC7_DLL.NfcHandler
|
||||
{
|
||||
public class NfcHeadService
|
||||
{
|
||||
|
||||
private bool activeHandlerSessioEnabled = false;
|
||||
private CliRunner _cliRunner;
|
||||
|
||||
private SerialPortData serialPort;
|
||||
|
||||
public NfcHeadService(SerialPortData serialPort)
|
||||
{
|
||||
this.serialPort = serialPort;
|
||||
this._cliRunner = null;
|
||||
ValidateCliFileExistence(true);
|
||||
}
|
||||
|
||||
private CliRunner CliRunner
|
||||
{
|
||||
get { return (_cliRunner != null ? _cliRunner : (_cliRunner = new CliRunner(CliLogging))); }
|
||||
}
|
||||
|
||||
private bool CliLogging
|
||||
{
|
||||
get { return false; }
|
||||
}
|
||||
|
||||
private static readonly Regex OpticalDataModeRegex = new Regex(
|
||||
@"(?im)(?:" +
|
||||
@"^\s*OpticalDataMode\s*Id\s*:\s*([^\r\n]+)\s*$" + // old format
|
||||
@"|" +
|
||||
@"""OpticalDataMode""\s*:\s*""?(0x[0-9A-Fa-f]+|\d+)""?" + // JSON format (handles hex and decimal)
|
||||
@")",
|
||||
RegexOptions.Compiled);
|
||||
|
||||
public bool TryGetOpticalDataMode(string result, out string s)
|
||||
{
|
||||
s = null;
|
||||
if (string.IsNullOrEmpty(result))
|
||||
return false;
|
||||
|
||||
var m = OpticalDataModeRegex.Match(result);
|
||||
if (!m.Success)
|
||||
return false;
|
||||
|
||||
// one of the groups will be filled
|
||||
s = !string.IsNullOrEmpty(m.Groups[1].Value)
|
||||
? m.Groups[1].Value.Trim()
|
||||
: m.Groups[2].Value.Trim();
|
||||
return true;
|
||||
}
|
||||
|
||||
private static readonly Regex DeviceIdRegex = new Regex(
|
||||
@"(?im)(?:" +
|
||||
@"^\s*Device\s*Id\s*:\s*([^\r\n]+)\s*$" + // old format
|
||||
@"|" +
|
||||
@"""DeviceId""\s*:\s*""?([0-9]+)""?" + // JSON format
|
||||
@")",
|
||||
RegexOptions.Compiled);
|
||||
|
||||
public bool TryGetDeviceId(string result, out string s)
|
||||
{
|
||||
s = null;
|
||||
if (string.IsNullOrEmpty(result))
|
||||
return false;
|
||||
|
||||
var m = DeviceIdRegex.Match(result);
|
||||
if (!m.Success)
|
||||
return false;
|
||||
|
||||
// one of the groups will be filled
|
||||
s = !string.IsNullOrEmpty(m.Groups[1].Value)
|
||||
? m.Groups[1].Value.Trim()
|
||||
: m.Groups[2].Value.Trim();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
private void ValidateCliFileExistence(bool showErrorIfMissing)
|
||||
{
|
||||
if (serialPort != null)
|
||||
{
|
||||
if (!serialPort.CliExists)
|
||||
{
|
||||
throw new Exception("CLI file " + serialPort.SerialPortCmdClientPath +
|
||||
" does not exist! Current path: " + Environment.CurrentDirectory);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// ////////////
|
||||
/// </summary>
|
||||
public string GetSerialNr()
|
||||
{
|
||||
if (serialPort == null)
|
||||
throw new Exception("Serial port not initialized");
|
||||
|
||||
|
||||
Task optoheadDeviceIdTask = CliRunner.AddSendAsync(serialPort, SerialPortData.EMeterArg.DeviceId);
|
||||
var timeOut = CliRunner.AddTimeOut(5000);
|
||||
var doneTask = CliRunner.WaitAnyFinished(optoheadDeviceIdTask, timeOut);
|
||||
if (timeOut == doneTask)
|
||||
{
|
||||
throw new Exception("Timeout");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (optoheadDeviceIdTask is Task<string>)
|
||||
{
|
||||
string serialNr;
|
||||
if (optoheadDeviceIdTask.Status == TaskStatus.Faulted)
|
||||
throw new Exception("Error TaskStatus.Faulted");
|
||||
string result = (optoheadDeviceIdTask as Task<string>).Result;
|
||||
if (TryGetDeviceId(result, out serialNr))
|
||||
{
|
||||
return serialNr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public async Task<string> GetSerialNrAsync()
|
||||
{
|
||||
if (serialPort == null)
|
||||
throw new Exception("Serial port not initialized");
|
||||
|
||||
var cts = new CancellationTokenSource(); // we own the token
|
||||
var sendTask = CliRunner.AddSendAsync(serialPort, SerialPortData.EMeterArg.DeviceId, cts.Token);
|
||||
|
||||
string output;
|
||||
try
|
||||
{
|
||||
output = await CliRunner.WithTimeout(sendTask, TimeSpan.FromSeconds(15), cts);
|
||||
}
|
||||
catch (TimeoutException)
|
||||
{
|
||||
throw new Exception("Timeout");
|
||||
}
|
||||
|
||||
if (TryGetDeviceId(output, out var serialNr))
|
||||
return serialNr;
|
||||
|
||||
throw new Exception("Failed to parse DeviceId from output.");
|
||||
}
|
||||
|
||||
public OptoHeadStatus SetTestingMode(OptoHeadStatus status)
|
||||
{
|
||||
if (serialPort == null)
|
||||
throw new Exception("Serial port not initialized");
|
||||
|
||||
|
||||
Task optoheadMode =
|
||||
CliRunner.AddSendAsync(serialPort, SerialPortData.EMeterArg.Optohead, $"0x{((byte)status):X2}");
|
||||
var timeOut = CliRunner.AddTimeOut(5000);
|
||||
var doneTask = CliRunner.WhenAny();
|
||||
if (timeOut == doneTask)
|
||||
{
|
||||
throw new Exception("Timeout");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (optoheadMode is Task<string>)
|
||||
{
|
||||
string strOpticalDataMode;
|
||||
if (optoheadMode.Status == TaskStatus.Faulted)
|
||||
throw new Exception("Error TaskStatus.Faulted");
|
||||
string result = (optoheadMode as Task<string>).Result;
|
||||
if (TryGetOpticalDataMode(result, out strOpticalDataMode))
|
||||
{
|
||||
byte value;
|
||||
|
||||
if (strOpticalDataMode.StartsWith("0x", StringComparison.OrdinalIgnoreCase))
|
||||
value = Convert.ToByte(strOpticalDataMode, 16); // interpret as hex
|
||||
else
|
||||
value = Convert.ToByte(strOpticalDataMode); // interpret as decimal
|
||||
|
||||
OptoHeadStatus optoheadStatus = (OptoHeadStatus)value;
|
||||
return optoheadStatus;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return OptoHeadStatus.Unknown;
|
||||
}
|
||||
|
||||
public OptoHeadStatus GetTestingMode()
|
||||
{
|
||||
if (serialPort == null)
|
||||
throw new Exception("Serial port not initialized");
|
||||
|
||||
|
||||
Task optoheadMode = CliRunner.AddSendAsync(serialPort, SerialPortData.EMeterArg.Optohead);
|
||||
var timeOut = CliRunner.AddTimeOut(5000);
|
||||
var doneTask = CliRunner.WhenAny();
|
||||
if (timeOut == doneTask)
|
||||
{
|
||||
throw new Exception("Timeout");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (optoheadMode is Task<string>)
|
||||
{
|
||||
string strOpticalDataMode;
|
||||
if (optoheadMode.Status == TaskStatus.Faulted)
|
||||
throw new Exception("Error TaskStatus.Faulted");
|
||||
string result = (optoheadMode as Task<string>).Result;
|
||||
if (TryGetOpticalDataMode(result, out strOpticalDataMode))
|
||||
{
|
||||
byte value;
|
||||
|
||||
if (strOpticalDataMode.StartsWith("0x", StringComparison.OrdinalIgnoreCase))
|
||||
value = Convert.ToByte(strOpticalDataMode, 16); // interpret as hex
|
||||
else
|
||||
value = Convert.ToByte(strOpticalDataMode); // interpret as decimal
|
||||
|
||||
OptoHeadStatus optoheadStatus = (OptoHeadStatus)value;
|
||||
return optoheadStatus;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return OptoHeadStatus.Unknown;
|
||||
}
|
||||
|
||||
private void SendCommand()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private string RawDataAnswer()
|
||||
{
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
using System;
|
||||
using System.IO.Ports;
|
||||
using System.Threading.Tasks;
|
||||
using NfcC7_DLL.NfcHandler.Protocols;
|
||||
using NfcC7_DLL.NfcHandler.Utils;
|
||||
|
||||
namespace NfcC7_DLL.NfcHandler
|
||||
{
|
||||
public class OptoHeadService
|
||||
{
|
||||
|
||||
public class Con
|
||||
{
|
||||
public string com = "COM5";
|
||||
public int baudrate = 38400;
|
||||
public int dataBits = 8;
|
||||
public Parity parity = Parity.None;
|
||||
public StopBits stopbits = StopBits.Two;
|
||||
public int readTimeout = 5000;
|
||||
public int writeTimeout = 1000;
|
||||
}
|
||||
|
||||
private Con Connection { get; set; }
|
||||
private SERIAL_Driver driver;
|
||||
/// <summary>
|
||||
/// Filed After Run() is called.
|
||||
/// </summary>
|
||||
public WaterMetrologyData WaterMetrologyData { get; private set; }
|
||||
|
||||
public OptoHeadService(Con con)
|
||||
{
|
||||
Connection = con;
|
||||
driver = new SERIAL_Driver();
|
||||
}
|
||||
|
||||
public bool CreateSerialConnection()
|
||||
{
|
||||
bool isopen = false;
|
||||
Con con = Connection;
|
||||
|
||||
byte[] message = {0x00};
|
||||
byte[] bytesReceived;
|
||||
|
||||
if (!driver.isOpen())
|
||||
{
|
||||
|
||||
isopen = driver.OpenConnection(
|
||||
con.com,
|
||||
con.baudrate,
|
||||
con.dataBits,
|
||||
con.parity,
|
||||
con.stopbits,
|
||||
con.readTimeout,
|
||||
con.writeTimeout);
|
||||
}
|
||||
|
||||
return isopen;
|
||||
}
|
||||
|
||||
public void CloseSerialConnection()
|
||||
{
|
||||
dissableRunLoop = true;
|
||||
driver.Close();
|
||||
}
|
||||
|
||||
public void RunLoop()
|
||||
{
|
||||
Task.Run(() => Run());
|
||||
}
|
||||
|
||||
|
||||
private bool dissableRunLoop = false;
|
||||
/// <summary>
|
||||
/// Run the service. Catch one communication to WaterMetrologyData field.
|
||||
/// </summary>
|
||||
public void Run()
|
||||
{
|
||||
while (!dissableRunLoop)
|
||||
{
|
||||
WaterMetrologyData = ParseData(RunReading());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
byte[] RunReading()
|
||||
{
|
||||
if (driver.isOpen())
|
||||
{
|
||||
driver.SendMessage(new byte[] {0x00}, 1);
|
||||
return driver.GetRawData();
|
||||
}
|
||||
else
|
||||
{
|
||||
dissableRunLoop = true;
|
||||
}
|
||||
|
||||
return new byte[] {0xFF};
|
||||
}
|
||||
|
||||
public WaterMetrologyData ParseData(byte[] data)
|
||||
{
|
||||
try
|
||||
{
|
||||
return WaterMetrologyData.Parse(data, DateTime.Now, "");
|
||||
}catch(Exception e)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
namespace NfcC7_DLL.NfcHandler.Protocols
|
||||
{
|
||||
public enum OptoHeadStatus : byte
|
||||
{
|
||||
Unknown = 0xFF,
|
||||
OptoHeadDisabled = 0x00,
|
||||
OptoHeadC2 = 0xC2,
|
||||
OptoHeadC7 = 0xC7,
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
using System;
|
||||
|
||||
namespace NfcC7_DLL.NfcHandler.Protocols
|
||||
{
|
||||
public class WaterMetrologyData
|
||||
{
|
||||
private OptoHeadStatus _optoHeadStatus;
|
||||
private WaterMetrologyDataC7 c7Data;
|
||||
private WaterMetrologyDataC2 c2Data;
|
||||
|
||||
public WaterMetrologyDataC7 C7Data { get => c7Data; }
|
||||
public WaterMetrologyDataC2 C2Data { get => c2Data; }
|
||||
public OptoHeadStatus OptoHeadStatus { get => _optoHeadStatus; }
|
||||
|
||||
public static WaterMetrologyData Parse(byte[] data, DateTime dt, string dutinfo)
|
||||
{
|
||||
if (data.Length < 24)
|
||||
{
|
||||
throw new ArgumentException("Invalid data length for WaterMetrologyData C2.");
|
||||
}
|
||||
WaterMetrologyData waterMetrologyData = new WaterMetrologyData();
|
||||
waterMetrologyData._optoHeadStatus = OptoHeadStatus.Unknown;
|
||||
// Probably C2
|
||||
if(data.Length > 24 && data.Length < 48)
|
||||
{
|
||||
waterMetrologyData.c2Data = WaterMetrologyDataC2.Parse(data, dt, dutinfo);
|
||||
waterMetrologyData._optoHeadStatus = OptoHeadStatus.OptoHeadC2;
|
||||
}
|
||||
// Probably C7
|
||||
else if(data.Length >= 48)
|
||||
{
|
||||
waterMetrologyData.c7Data = WaterMetrologyDataC7.Parse(data, dt, dutinfo);
|
||||
waterMetrologyData._optoHeadStatus = OptoHeadStatus.OptoHeadC7;
|
||||
}
|
||||
|
||||
return waterMetrologyData;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"Status: {_optoHeadStatus}, C7Data: {c7Data}, C2Data: {c2Data}";
|
||||
}
|
||||
}
|
||||
}
|
||||
+4
-1
@@ -1,4 +1,6 @@
|
||||
namespace NfcC7_DLL.NfcHanler.Protocols
|
||||
using System;
|
||||
|
||||
namespace NfcC7_DLL.NfcHandler.Protocols
|
||||
{
|
||||
public class WaterMetrologyDataC2
|
||||
{
|
||||
@@ -87,5 +89,6 @@
|
||||
$"Fast HPFC: {FastHPFC}, Field Polarity: {FieldPolarity}, Impedance Polarity: {ImpedancePolarity}, " +
|
||||
$"Calc Flow mL/s: {CalcFlowmLps:F2}, Calc Flow GPM: {CalcFlowGPM:F2}, Calc Acc Gal: {CalcAccGal:F2}";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
+3
-1
@@ -1,4 +1,6 @@
|
||||
namespace NfcC7_DLL.NfcHanler.Protocols
|
||||
using System;
|
||||
|
||||
namespace NfcC7_DLL.NfcHandler.Protocols
|
||||
{
|
||||
public class WaterMetrologyDataC7 : WaterMetrologyDataC2
|
||||
{
|
||||
@@ -1,10 +1,14 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
namespace NfcC7_DLL.NfcHanler.Utils
|
||||
namespace NfcC7_DLL.NfcHandler.Utils
|
||||
{
|
||||
public class CliRunner
|
||||
{
|
||||
@@ -32,7 +36,68 @@ namespace NfcC7_DLL.NfcHanler.Utils
|
||||
/// mainly used for time out additional task to compare results
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public Task WhenAny() { return Task.WhenAny(taskPool.ToArray()); }
|
||||
|
||||
|
||||
[Obsolete("Use async/await instead - WaitAnyFinished()")]
|
||||
public async Task<Task> WhenAny() { return await Task.WhenAny(taskPool.ToArray()); }
|
||||
|
||||
public Task WaitAnyFinished(Task task, Task timeOut)
|
||||
{
|
||||
Task.WhenAny(task, timeOut);
|
||||
while (true)
|
||||
{
|
||||
if (task.IsCompleted) break;
|
||||
if (task.IsFaulted) break;
|
||||
if (task.IsCanceled) break;
|
||||
|
||||
if(timeOut.IsCompleted) break;
|
||||
if(timeOut.IsFaulted) break;
|
||||
if(timeOut.IsCanceled) break;
|
||||
|
||||
Thread.Sleep(100);
|
||||
}
|
||||
|
||||
var waitAny = Task.WaitAny(task, timeOut);
|
||||
return waitAny == 0 ? task : timeOut;
|
||||
}
|
||||
|
||||
public static async Task<T> WithTimeout<T>(Task<T> task, TimeSpan timeout, CancellationTokenSource externalCts = null)
|
||||
{
|
||||
var localCts = externalCts == null ? externalCts : new CancellationTokenSource();
|
||||
var timeoutCts = new CancellationTokenSource(timeout);
|
||||
var linked = CancellationTokenSource.CreateLinkedTokenSource(localCts.Token, timeoutCts.Token);
|
||||
|
||||
var completion = new TaskCompletionSource<bool>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
|
||||
// Observe the task
|
||||
_ = task.ContinueWith(_ => completion.TrySetResult(true), TaskScheduler.Default);
|
||||
|
||||
// Observe the timeout
|
||||
_ = Task.Delay(Timeout.InfiniteTimeSpan, timeoutCts.Token)
|
||||
.ContinueWith(_ => completion.TrySetResult(true), TaskScheduler.Default);
|
||||
|
||||
await completion.Task.ConfigureAwait(false);
|
||||
|
||||
if (timeoutCts.IsCancellationRequested == false && task.IsCompleted) // task finished first
|
||||
return await task.ConfigureAwait(false);
|
||||
|
||||
// timeout won → cancel & throw TimeoutException
|
||||
localCts.Cancel(); // triggers your SendAsync to kill process
|
||||
throw new TimeoutException();
|
||||
}
|
||||
|
||||
public Task<string> AddSendAsync(SerialPortData data, SerialPortData.EMeterArg eMeterArg, CancellationToken ct = default)
|
||||
{
|
||||
var task = SendAsync(data.SerialPortCmdClientPath, data.DefaultArgSettingsRead(eMeterArg), ct);
|
||||
taskPool.Add(task); // List<Task> is okay because Task<string> : Task
|
||||
return task;
|
||||
}
|
||||
|
||||
public Task WaitAnyFinished()
|
||||
{
|
||||
int xTask = Task.WaitAny(taskPool.ToArray());
|
||||
return taskPool[xTask];
|
||||
}
|
||||
|
||||
public void Clear() { taskPool.Clear(); }
|
||||
public void CancelAll() { Task.WhenAll(taskPool).ContinueWith(t => { }); }
|
||||
@@ -123,7 +188,9 @@ namespace NfcC7_DLL.NfcHanler.Utils
|
||||
CreateNoWindow = true
|
||||
};
|
||||
|
||||
using var process = new Process { StartInfo = psi, EnableRaisingEvents = true };
|
||||
var process = new Process { StartInfo = psi, EnableRaisingEvents = true };
|
||||
try
|
||||
{
|
||||
process.Start();
|
||||
|
||||
Task<string> stdOutTask = process.StandardOutput.ReadToEndAsync();
|
||||
@@ -147,6 +214,11 @@ namespace NfcC7_DLL.NfcHanler.Utils
|
||||
//log?.Debug(allOutput);
|
||||
return allOutput;
|
||||
}
|
||||
finally
|
||||
{
|
||||
process?.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
public Task<T> AddRunAndCaptureJsonAsync<T>(SerialPortData data, SerialPortData.EMeterArg eMeterArg) where T : new()
|
||||
{
|
||||
@@ -167,7 +239,9 @@ namespace NfcC7_DLL.NfcHanler.Utils
|
||||
CreateNoWindow = true
|
||||
};
|
||||
|
||||
using var process = new Process { StartInfo = psi, EnableRaisingEvents = true };
|
||||
var process = new Process { StartInfo = psi, EnableRaisingEvents = true };
|
||||
try
|
||||
{
|
||||
process.Start();
|
||||
|
||||
var stdoutTask = process.StandardOutput.ReadToEndAsync();
|
||||
@@ -182,6 +256,11 @@ namespace NfcC7_DLL.NfcHanler.Utils
|
||||
if (TryJsonStringDeserialize(json, out T result)) return result;
|
||||
return default;
|
||||
}
|
||||
finally
|
||||
{
|
||||
process?.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
public bool TryJsonStringDeserialize<T>(string json, out T runAndCaptureJsonAsync) where T : new()
|
||||
{
|
||||
@@ -0,0 +1,39 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace NfcC7_DLL.NfcHandler.Utils
|
||||
{
|
||||
public static class ProcessExtensions
|
||||
{
|
||||
public static Task<object> WaitForExitAsync(this Process process, CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (process == null) throw new ArgumentNullException(nameof(process));
|
||||
if (process.HasExited) return Task.FromResult<object>(null);
|
||||
|
||||
var tcs = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
|
||||
EventHandler handler = null;
|
||||
handler = (s, e) =>
|
||||
{
|
||||
try { tcs.TrySetResult(null); }
|
||||
finally { process.Exited -= handler; }
|
||||
};
|
||||
|
||||
process.EnableRaisingEvents = true;
|
||||
process.Exited += handler;
|
||||
|
||||
if (cancellationToken.CanBeCanceled)
|
||||
{
|
||||
cancellationToken.Register(() =>
|
||||
{
|
||||
tcs.TrySetCanceled(cancellationToken);
|
||||
process.Exited -= handler;
|
||||
});
|
||||
}
|
||||
|
||||
return tcs.Task;
|
||||
}
|
||||
}
|
||||
}
|
||||
+6
-2
@@ -1,13 +1,17 @@
|
||||
using System.Collections.ObjectModel;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Diagnostics;
|
||||
using System.IO.Ports;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
|
||||
//*****************************************************************************
|
||||
// Copyright 2020 Sensus GmbH Ludwigshafen. All rights reserved.
|
||||
// Author: Venkat, Rajeshwar
|
||||
//*****************************************************************************
|
||||
|
||||
namespace NfcC7_DLL.NfcHanler.Utils
|
||||
namespace NfcC7_DLL.NfcHandler.Utils
|
||||
{
|
||||
public class SERIAL_Driver
|
||||
{
|
||||
+23
-7
@@ -1,4 +1,7 @@
|
||||
namespace NfcC7_DLL.NfcHanler.Utils
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace NfcC7_DLL.NfcHandler.Utils
|
||||
{
|
||||
public class SerialPortData
|
||||
{
|
||||
@@ -13,7 +16,7 @@ namespace NfcC7_DLL.NfcHanler.Utils
|
||||
public string SerialPortCmdClientPath {
|
||||
get {
|
||||
#if DEBUG
|
||||
return Path.Combine("C:","TBF","Cli", CmdClientName);
|
||||
return Path.Combine("C:\\","TBF","Cli", CmdClientName);
|
||||
#else
|
||||
return Path.Combine("..","Cli", CmdClientName);
|
||||
#endif
|
||||
@@ -22,6 +25,7 @@ namespace NfcC7_DLL.NfcHanler.Utils
|
||||
public string CmdClientName { get; set; } = "HalCli.exe";
|
||||
public string PortName { get; set; }
|
||||
public int MeterType { get; set; }
|
||||
public string MeterTypeStr { get; set; }
|
||||
|
||||
public enum EMeterArg {
|
||||
Calibration = 0,
|
||||
@@ -33,14 +37,15 @@ namespace NfcC7_DLL.NfcHanler.Utils
|
||||
|
||||
public string DefaultArgSettingsRead(EMeterArg eMeterArg)
|
||||
{
|
||||
string meterTypeInsert = !string.IsNullOrEmpty(MeterTypeStr) ? MeterTypeStr : MeterType.ToString();
|
||||
switch (eMeterArg)
|
||||
{
|
||||
case EMeterArg.AllParams:
|
||||
return $"-p {PortName} -m {MeterType} --operation readall";
|
||||
return $"-p {PortName} -m {meterTypeInsert} --operation readall";
|
||||
case EMeterArg.DeviceId:
|
||||
return $"-p {PortName} -m {MeterType} --operation read --parameter DeviceId";
|
||||
return $"-p {PortName} -m {meterTypeInsert} --operation read --parameter DeviceId";
|
||||
case EMeterArg.Optohead:
|
||||
return $"-p {PortName} -m {MeterType} --operation read --parameter \"OpticalDataMode\"";
|
||||
return $"-p {PortName} -m {meterTypeInsert} --operation read --parameter \"OpticalDataMode\"";
|
||||
default:
|
||||
throw new Exception("Not implemented correct command!");
|
||||
}
|
||||
@@ -48,12 +53,13 @@ namespace NfcC7_DLL.NfcHanler.Utils
|
||||
|
||||
public string DefaultArgSettingsWrite(EMeterArg eMeterArg, string arg)
|
||||
{
|
||||
string meterTypeInsert = !string.IsNullOrEmpty(MeterTypeStr) ? MeterTypeStr : MeterType.ToString();
|
||||
switch (eMeterArg)
|
||||
{
|
||||
case EMeterArg.Calibration:
|
||||
return $"-p {PortName} -m {MeterType} --operation write --parameter Calibration --value {arg}";
|
||||
return $"-p {PortName} -m {meterTypeInsert} --operation write --parameter Calibration --value {arg}";
|
||||
case EMeterArg.Optohead:
|
||||
return $"-p {PortName} -m {MeterType} --operation write --parameter \"OpticalDataMode\" --value {arg}";
|
||||
return $"-p {PortName} -m {meterTypeInsert} --operation write --parameter \"OpticalDataMode\" --value {arg}";
|
||||
default:
|
||||
throw new Exception("Not implemented correct command!");
|
||||
}
|
||||
@@ -68,5 +74,15 @@ namespace NfcC7_DLL.NfcHanler.Utils
|
||||
CmdClientName = cmdClientName;
|
||||
MeterType = meterType;
|
||||
}
|
||||
|
||||
public SerialPortData(
|
||||
string portName,
|
||||
string cmdClientName,
|
||||
string meterType)
|
||||
{
|
||||
PortName = portName;
|
||||
CmdClientName = cmdClientName;
|
||||
MeterTypeStr = meterType;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,13 @@
|
||||
using System.Text;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
//*****************************************************************************
|
||||
// Copyright 2020 Sensus GmbH Ludwigshafen. All rights reserved.
|
||||
// Author: Venkat, Rajeshwar
|
||||
//*****************************************************************************
|
||||
|
||||
namespace NfcC7_DLL.NfcHanler.Utils
|
||||
namespace NfcC7_DLL.NfcHandler.Utils
|
||||
{
|
||||
public static class Tools
|
||||
{
|
||||
@@ -1,9 +0,0 @@
|
||||
using NfcC7_DLL.NfcHanler.Protocols;
|
||||
|
||||
namespace NfcC7_DLL.NfcHanler;
|
||||
|
||||
public class HeadInfo
|
||||
{
|
||||
string SerialNr { get; set; }
|
||||
OptoHeadStatus OptoHeadStatus { get; set; }
|
||||
}
|
||||
@@ -1,216 +0,0 @@
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Windows;
|
||||
using NfcC7_DLL.NfcHanler.Protocols;
|
||||
using NfcC7_DLL.NfcHanler.Utils;
|
||||
|
||||
namespace NfcC7_DLL.NfcHanler;
|
||||
|
||||
public class NFCHeadService
|
||||
{
|
||||
|
||||
private bool activeHandlerSessioEnabled = false;
|
||||
private CliRunner _cliRunner;
|
||||
|
||||
private SerialPortData serialPort;
|
||||
|
||||
public NFCHeadService(SerialPortData serialPort)
|
||||
{
|
||||
this.serialPort = serialPort;
|
||||
ValidateCliFileExistence(true);
|
||||
}
|
||||
|
||||
private CliRunner CliRunner
|
||||
{
|
||||
get
|
||||
{
|
||||
return (_cliRunner != null ?
|
||||
_cliRunner :
|
||||
(_cliRunner = new CliRunner(CliLogging)));
|
||||
}
|
||||
}
|
||||
|
||||
private bool CliLogging{get {return false; }}
|
||||
|
||||
private static readonly Regex OpticalDataModeRegex = new Regex(
|
||||
@"(?im)(?:" +
|
||||
@"^\s*OpticalDataMode\s*Id\s*:\s*([^\r\n]+)\s*$" + // old format
|
||||
@"|" +
|
||||
@"""OpticalDataMode""\s*:\s*""?(0x[0-9A-Fa-f]+|\d+)""?" + // JSON format (handles hex and decimal)
|
||||
@")",
|
||||
RegexOptions.Compiled);
|
||||
public bool TryGetOpticalDataMode(string result, out string s)
|
||||
{
|
||||
s = null;
|
||||
if (string.IsNullOrEmpty(result))
|
||||
return false;
|
||||
|
||||
var m = OpticalDataModeRegex.Match(result);
|
||||
if (!m.Success)
|
||||
return false;
|
||||
|
||||
// one of the groups will be filled
|
||||
s = !string.IsNullOrEmpty(m.Groups[1].Value)
|
||||
? m.Groups[1].Value.Trim()
|
||||
: m.Groups[2].Value.Trim();
|
||||
return true;
|
||||
}
|
||||
|
||||
private static readonly Regex DeviceIdRegex = new Regex(
|
||||
@"(?im)(?:" +
|
||||
@"^\s*Device\s*Id\s*:\s*([^\r\n]+)\s*$" + // old format
|
||||
@"|" +
|
||||
@"""DeviceId""\s*:\s*""?([0-9]+)""?" + // JSON format
|
||||
@")",
|
||||
RegexOptions.Compiled);
|
||||
public bool TryGetDeviceId(string result, out string s)
|
||||
{
|
||||
s = null;
|
||||
if (string.IsNullOrEmpty(result))
|
||||
return false;
|
||||
|
||||
var m = DeviceIdRegex.Match(result);
|
||||
if (!m.Success)
|
||||
return false;
|
||||
|
||||
// one of the groups will be filled
|
||||
s = !string.IsNullOrEmpty(m.Groups[1].Value)
|
||||
? m.Groups[1].Value.Trim()
|
||||
: m.Groups[2].Value.Trim();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
private void ValidateCliFileExistence(bool showErrorIfMissing)
|
||||
{
|
||||
if (serialPort != null)
|
||||
{
|
||||
if (!serialPort.CliExists)
|
||||
{
|
||||
throw new Exception("CLI file " + serialPort.SerialPortCmdClientPath + " does not exist! Current path: " + Environment.CurrentDirectory);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// ////////////
|
||||
/// </summary>
|
||||
public string? GetSerialNr()
|
||||
{
|
||||
if (serialPort == null)
|
||||
throw new Exception("Serial port not initialized");
|
||||
|
||||
|
||||
Task optoheadDeviceIdTask = CliRunner.AddSendAsync(serialPort, SerialPortData.EMeterArg.DeviceId);
|
||||
var timeOut = CliRunner.AddTimeOut(5000);
|
||||
var doneTask = CliRunner.WhenAny();
|
||||
if (timeOut == doneTask)
|
||||
{
|
||||
throw new Exception("Timeout");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (optoheadDeviceIdTask is Task<string>)
|
||||
{
|
||||
string serialNr;
|
||||
if (optoheadDeviceIdTask.Status == TaskStatus.Faulted)
|
||||
throw new Exception("Error TaskStatus.Faulted");
|
||||
string result = (optoheadDeviceIdTask as Task<string>).Result;
|
||||
if (TryGetDeviceId(result, out serialNr))
|
||||
{
|
||||
return serialNr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public OptoHeadStatus SetTestingMode(OptoHeadStatus status)
|
||||
{
|
||||
if (serialPort == null)
|
||||
throw new Exception("Serial port not initialized");
|
||||
|
||||
|
||||
Task optoheadMode = CliRunner.AddSendAsync(serialPort, SerialPortData.EMeterArg.Optohead, $"0x{((byte)status):X2}");
|
||||
var timeOut = CliRunner.AddTimeOut(5000);
|
||||
var doneTask = CliRunner.WhenAny();
|
||||
if (timeOut == doneTask)
|
||||
{
|
||||
throw new Exception("Timeout");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (optoheadMode is Task<string>)
|
||||
{
|
||||
string strOpticalDataMode;
|
||||
if (optoheadMode.Status == TaskStatus.Faulted)
|
||||
throw new Exception("Error TaskStatus.Faulted");
|
||||
string result = (optoheadMode as Task<string>).Result;
|
||||
if (TryGetOpticalDataMode(result, out strOpticalDataMode))
|
||||
{
|
||||
byte value;
|
||||
|
||||
if (strOpticalDataMode.StartsWith("0x", StringComparison.OrdinalIgnoreCase))
|
||||
value = Convert.ToByte(strOpticalDataMode, 16); // interpret as hex
|
||||
else
|
||||
value = Convert.ToByte(strOpticalDataMode); // interpret as decimal
|
||||
|
||||
OptoHeadStatus optoheadStatus = (OptoHeadStatus)value;
|
||||
return optoheadStatus;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return OptoHeadStatus.Unknown;
|
||||
}
|
||||
|
||||
public OptoHeadStatus GetTestingMode()
|
||||
{
|
||||
if (serialPort == null)
|
||||
throw new Exception("Serial port not initialized");
|
||||
|
||||
|
||||
Task optoheadMode = CliRunner.AddSendAsync(serialPort, SerialPortData.EMeterArg.Optohead);
|
||||
var timeOut = CliRunner.AddTimeOut(5000);
|
||||
var doneTask = CliRunner.WhenAny();
|
||||
if (timeOut == doneTask)
|
||||
{
|
||||
throw new Exception("Timeout");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (optoheadMode is Task<string>)
|
||||
{
|
||||
string strOpticalDataMode;
|
||||
if (optoheadMode.Status == TaskStatus.Faulted)
|
||||
throw new Exception("Error TaskStatus.Faulted");
|
||||
string result = (optoheadMode as Task<string>).Result;
|
||||
if (TryGetOpticalDataMode(result, out strOpticalDataMode))
|
||||
{
|
||||
byte value;
|
||||
|
||||
if (strOpticalDataMode.StartsWith("0x", StringComparison.OrdinalIgnoreCase))
|
||||
value = Convert.ToByte(strOpticalDataMode, 16); // interpret as hex
|
||||
else
|
||||
value = Convert.ToByte(strOpticalDataMode); // interpret as decimal
|
||||
|
||||
OptoHeadStatus optoheadStatus = (OptoHeadStatus)value;
|
||||
return optoheadStatus;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return OptoHeadStatus.Unknown;
|
||||
}
|
||||
|
||||
private void SendCommand()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private string RawDataAnswer()
|
||||
{
|
||||
return "";
|
||||
}
|
||||
}
|
||||
@@ -1,109 +0,0 @@
|
||||
using System.IO.Ports;
|
||||
using System.Windows.Documents;
|
||||
using NfcC7_DLL.NfcHanler.Protocols;
|
||||
using NfcC7_DLL.NfcHanler.Utils;
|
||||
|
||||
namespace NfcC7_DLL.NfcHanler;
|
||||
|
||||
public class OptoHeadService
|
||||
{
|
||||
|
||||
public class Con
|
||||
{
|
||||
public string com = "COM5";
|
||||
public int baudrate = 38400;
|
||||
public int dataBits = 8;
|
||||
public Parity parity = Parity.None;
|
||||
public StopBits stopbits = StopBits.Two;
|
||||
public int readTimeout = 5000;
|
||||
public int writeTimeout = 1000;
|
||||
}
|
||||
|
||||
private Con Connection { get; set; }
|
||||
private SERIAL_Driver driver;
|
||||
/// <summary>
|
||||
/// Filed After Run() is called.
|
||||
/// </summary>
|
||||
public WaterMetrologyData? WaterMetrologyData { get; private set; }
|
||||
|
||||
public OptoHeadService(Con con)
|
||||
{
|
||||
Connection = con;
|
||||
driver = new SERIAL_Driver();
|
||||
}
|
||||
|
||||
public bool CreateSerialConnection()
|
||||
{
|
||||
bool isopen = false;
|
||||
Con con = Connection;
|
||||
|
||||
byte[] message = {0x00};
|
||||
byte[] bytesReceived;
|
||||
|
||||
if (!driver.isOpen())
|
||||
{
|
||||
|
||||
isopen = driver.OpenConnection(
|
||||
con.com,
|
||||
con.baudrate,
|
||||
con.dataBits,
|
||||
con.parity,
|
||||
con.stopbits,
|
||||
con.readTimeout,
|
||||
con.writeTimeout);
|
||||
}
|
||||
|
||||
return isopen;
|
||||
}
|
||||
|
||||
public void CloseSerialConnection()
|
||||
{
|
||||
dissableRunLoop = true;
|
||||
driver.Close();
|
||||
}
|
||||
|
||||
public void RunLoop()
|
||||
{
|
||||
Task.Run(() => Run());
|
||||
}
|
||||
|
||||
|
||||
private bool dissableRunLoop = false;
|
||||
/// <summary>
|
||||
/// Run the service. Catch one communication to WaterMetrologyData field.
|
||||
/// </summary>
|
||||
public void Run()
|
||||
{
|
||||
while (!dissableRunLoop)
|
||||
{
|
||||
WaterMetrologyData = ParseData(RunReading());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
byte[] RunReading()
|
||||
{
|
||||
if (driver.isOpen())
|
||||
{
|
||||
driver.SendMessage(new byte[] {0x00}, 1);
|
||||
return driver.GetRawData();
|
||||
}
|
||||
else
|
||||
{
|
||||
dissableRunLoop = true;
|
||||
}
|
||||
|
||||
return [0xFF];
|
||||
}
|
||||
|
||||
public WaterMetrologyData? ParseData(byte[] data)
|
||||
{
|
||||
try
|
||||
{
|
||||
return WaterMetrologyData.Parse(data, DateTime.Now, "");
|
||||
}catch(Exception e)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
namespace NfcC7_DLL.NfcHanler.Protocols;
|
||||
|
||||
public enum OptoHeadStatus : byte
|
||||
{
|
||||
Unknown = 0xFF,
|
||||
OptoHeadDisabled = 0x00,
|
||||
OptoHeadC2 = 0xC2,
|
||||
OptoHeadC7 = 0xC7,
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
namespace NfcC7_DLL.NfcHanler.Protocols;
|
||||
|
||||
public class WaterMetrologyData
|
||||
{
|
||||
private OptoHeadStatus _optoHeadStatus;
|
||||
private WaterMetrologyDataC7 c7Data;
|
||||
private WaterMetrologyDataC2 c2Data;
|
||||
|
||||
public WaterMetrologyDataC7 C7Data { get => c7Data; }
|
||||
public WaterMetrologyDataC2 C2Data { get => c2Data; }
|
||||
public OptoHeadStatus OptoHeadStatus { get => _optoHeadStatus; }
|
||||
|
||||
public static WaterMetrologyData? Parse(byte[] data, DateTime dt, string dutinfo)
|
||||
{
|
||||
if (data.Length < 24)
|
||||
{
|
||||
throw new ArgumentException("Invalid data length for WaterMetrologyData C2.");
|
||||
}
|
||||
WaterMetrologyData waterMetrologyData = new WaterMetrologyData();
|
||||
waterMetrologyData._optoHeadStatus = OptoHeadStatus.Unknown;
|
||||
// Probably C2
|
||||
if(data.Length > 24 && data.Length < 48)
|
||||
{
|
||||
waterMetrologyData.c2Data = WaterMetrologyDataC2.Parse(data, dt, dutinfo);
|
||||
waterMetrologyData._optoHeadStatus = OptoHeadStatus.OptoHeadC2;
|
||||
}
|
||||
// Probably C7
|
||||
else if(data.Length >= 48)
|
||||
{
|
||||
waterMetrologyData.c7Data = WaterMetrologyDataC7.Parse(data, dt, dutinfo);
|
||||
waterMetrologyData._optoHeadStatus = OptoHeadStatus.OptoHeadC7;
|
||||
}
|
||||
|
||||
return waterMetrologyData;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"Status: {_optoHeadStatus}, C7Data: {c7Data}, C2Data: {c2Data}";
|
||||
}
|
||||
}
|
||||
@@ -16,20 +16,26 @@ namespace Results.Entities
|
||||
public virtual double PulsesMeter { get; set; } /// # of water meter or heat meter pulses
|
||||
public virtual double PulsesMaster { get; set; } /// # of reference flowmeter pulses (gated by this water meter pulses)
|
||||
public virtual double PulsesPerLiter { get; set; } /// [l ^ -1], in case of heat meters (CompoundMeterId==5) pulses per kWh in [kWh ^ -1]
|
||||
public virtual double PulsesPerKilogram { get; set; } /// [kg ^ -1]
|
||||
public virtual double VolumeStart { get; set; } /// Volume or energy (CompoundMeterId==5) on test start in [l] or [J]
|
||||
public virtual double VolumeEnd { get; set; } /// Volume or energy (CompoundMeterId==5) on test end in [l] or [J]
|
||||
public virtual double VolumeMeter { get; set; } /// Measured volume or energy (CompoundMeterId==5) in [l] or [J]
|
||||
public virtual double MassMeter { get; set; } /// Measured mass or energy (CompoundMeterId==5) in [kg] or [J]
|
||||
public virtual double VolumeRef { get; set; } /// Reference volume or energy (CompoundMeterId==5) in [l] or [J]
|
||||
public virtual double MassRef { get; set; } /// Reference mass or energy (CompoundMeterId==5) in [kg] or [J]
|
||||
public virtual double TimestampStart { get; set; } /// [s]
|
||||
public virtual double TimestampEnd { get; set; } /// [s]
|
||||
public virtual double TestTime { get; set; } /// [s]
|
||||
|
||||
/// Main result
|
||||
public virtual double Error { get; set; } /// [%]
|
||||
public virtual double Error { get; set; } /// [%] for volume register reader
|
||||
public virtual double ErrorMass { get; set; } /// [%] for mass register reader
|
||||
public virtual long ErrorIndicators { get; set; } /// Not mapped to DB !!!, bit24=E25, bit25=E26, bit26=E27, bit27=E28 (error flags)
|
||||
public virtual long InfoIndicators { get; set; } /// Not mapped to DB !!!, bit24=E25, bit25=E26, bit26=E27, bit27=E28 (info flags)
|
||||
public virtual bool TestDone { get; set; } /// true = test was completed
|
||||
public virtual bool Passed { get; set; } /// true = test passed, water meter is OK
|
||||
public virtual bool Passed { get; set; } /// true = test passed, water meter is OK for Volume RegisterReader
|
||||
public virtual bool PassedMass { get; set; } /// true = test passed, water meter is OK for Mass RegisterReader
|
||||
public virtual string QuantityUnits { get; set; } /// dm3, kg, etc. - this value defined the quantity of meter, its decisive for distinction of pulse types
|
||||
#if IPERL
|
||||
public virtual int CalibFactor { get; set; }
|
||||
public virtual int CalibFactorLNA { get; set; }
|
||||
@@ -123,6 +129,33 @@ namespace Results.Entities
|
||||
return Passed ? yesNo[0] : ((yesNo.Length >= 2) ? yesNo[1] : Results.Resources.Strings.No);
|
||||
}
|
||||
}
|
||||
public virtual string PassedMassColorStr(string yesNoFormatOrEmpty)
|
||||
{
|
||||
if (string.IsNullOrEmpty(yesNoFormatOrEmpty))
|
||||
{
|
||||
return Utils.PassedColorStr(PassedMass, Evaluate());
|
||||
}
|
||||
else
|
||||
{
|
||||
string[] yesNo = yesNoFormatOrEmpty.Split(new char[] { '~' });
|
||||
return PassedMass ? yesNo[0] : ((yesNo.Length >= 2) ? yesNo[1] : Results.Resources.Strings.No);
|
||||
}
|
||||
}
|
||||
|
||||
public virtual string GetQuantityFromUnits()
|
||||
{
|
||||
|
||||
if (QuantityUnits == "kg")
|
||||
{
|
||||
return "Mass";
|
||||
}
|
||||
else if (QuantityUnits == "dm3")
|
||||
{
|
||||
return "Volume";
|
||||
}
|
||||
|
||||
return "Volume";
|
||||
}
|
||||
|
||||
public MeterTestRslt()
|
||||
{
|
||||
|
||||
@@ -36,6 +36,8 @@ namespace Results.Entities
|
||||
public virtual double ConstMasterCorr { get; set; } /// [l/pls] Liters per pulse of the master flow meter corrected by a correction table.
|
||||
public virtual double ConstMaster { get; set; } /// [l/pls] Liters per pulse of the master flow meter calculated from a mass measurement.
|
||||
/// When mass measurement is not available, corrected by a correction table.
|
||||
public virtual double MassConstMaster { get; set; } /// [kg/pls] kilograms per pulse of the master flow meter calculated from a mass measurement.
|
||||
/// When mass measurement is not available, corrected by a correction table.
|
||||
public virtual double MassStartRaw { get; set; } /// [kg]
|
||||
public virtual double MassStart { get; set; } /// [kg]
|
||||
public virtual double MassEndRaw { get; set; } /// [kg]
|
||||
@@ -49,6 +51,10 @@ namespace Results.Entities
|
||||
public virtual double VolumeCTV { get; set; } /// [l] Volume conventional true value
|
||||
public virtual double VolumeMaster { get; set; } /// [l] Volume from the master flow meter
|
||||
public virtual double ErrorMaster { get; set; } /// [%] Error of the master flow meter
|
||||
public virtual double MassFlow { get; set; } /// [t/h] calculated from conventional true value
|
||||
public virtual double MassCTV { get; set; } /// [kg] Volume conventional true value
|
||||
public virtual double MassMaster { get; set; } /// [kg] Volume from the master flow meter
|
||||
public virtual double MassErrorMaster { get; set; } /// [%] Error of the master flow meter
|
||||
|
||||
public virtual float DiverterStart { get; set; } /// [s] Diverter switch time or a start/stop valve open time when the test starts
|
||||
public virtual float DivStart10 { get; set; } /// [s] Diverter switch time when test starts at level 10 (e.g. 10%) (not mapped to DB)
|
||||
|
||||
@@ -33,6 +33,7 @@ namespace Results.Entities
|
||||
public virtual string ApprovalInfo { get; set; }
|
||||
public virtual string Certificate { get; set; }
|
||||
public virtual double PulsesPerLtr { get; set; }
|
||||
public virtual double PulsesPerKilogram { get; set; }
|
||||
|
||||
/// Concerns compound water meters
|
||||
public virtual string ProducerAux { get; set; }
|
||||
@@ -85,6 +86,7 @@ namespace Results.Entities
|
||||
ApprovalInfo = oriWMData.ApprovalInfo;
|
||||
Certificate = oriWMData.Certificate;
|
||||
PulsesPerLtr = oriWMData.PulsesPerLtr;
|
||||
PulsesPerKilogram = oriWMData.PulsesPerKilogram;
|
||||
ProducerAux = oriWMData.ProducerAux;
|
||||
Q3_Qn_Aux = oriWMData.Q3_Qn_Aux;
|
||||
MetrologicalClassAux = oriWMData.MetrologicalClassAux;
|
||||
@@ -129,6 +131,7 @@ namespace Results.Entities
|
||||
if (ApprovalInfo != wmd.ApprovalInfo) return false;
|
||||
if (Certificate != wmd.Certificate) return false;
|
||||
if (PulsesPerLtr != wmd.PulsesPerLtr) return false;
|
||||
if (PulsesPerKilogram != wmd.PulsesPerKilogram) return false;
|
||||
if (ProducerAux != wmd.ProducerAux) return false;
|
||||
if (Q3_Qn_Aux != wmd.Q3_Qn_Aux) return false;
|
||||
if (MetrologicalClassAux != wmd.MetrologicalClassAux) return false;
|
||||
@@ -188,6 +191,7 @@ namespace Results.Entities
|
||||
writer.Write((ApprovalInfo != null) ? ApprovalInfo : string.Empty);
|
||||
writer.Write((Certificate != null) ? Certificate : string.Empty);
|
||||
writer.Write(PulsesPerLtr);
|
||||
writer.Write(PulsesPerKilogram);
|
||||
writer.Write((ProducerAux != null) ? ProducerAux : string.Empty);
|
||||
writer.Write(Q3_Qn_Aux);
|
||||
writer.Write((MetrologicalClassAux != null) ? MetrologicalClassAux : string.Empty);
|
||||
@@ -227,6 +231,7 @@ namespace Results.Entities
|
||||
ApprovalInfo = reader.ReadString();
|
||||
Certificate = reader.ReadString();
|
||||
PulsesPerLtr = reader.ReadDouble();
|
||||
PulsesPerKilogram = reader.ReadDouble();
|
||||
ProducerAux = reader.ReadString();
|
||||
Q3_Qn_Aux = reader.ReadDouble();
|
||||
MetrologicalClassAux = reader.ReadString();
|
||||
|
||||
@@ -49,6 +49,8 @@ namespace Results.Forms
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.Icon = Properties.Resources.TBF_icon;
|
||||
|
||||
firstEnabledControl = null;
|
||||
lastSizeChange = DateTime.Now;
|
||||
nrGroups = 1;
|
||||
|
||||
@@ -24,6 +24,9 @@ namespace Results.Forms
|
||||
public ManualEntryConfigDlg()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.Icon = Properties.Resources.TBF_icon;
|
||||
|
||||
manualEntryConfigCtrl.Unlocked = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,8 @@ namespace Results.Forms
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.Icon = Properties.Resources.TBF_icon;
|
||||
|
||||
Localize();
|
||||
|
||||
ShowAllResults(wm);
|
||||
|
||||
@@ -35,6 +35,9 @@ namespace Results.Forms
|
||||
public ResultsConfigDlg()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.Icon = Properties.Resources.TBF_icon;
|
||||
|
||||
resultsConfigCtrl.Unlocked = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -351,6 +351,16 @@ namespace Results
|
||||
|
||||
Failed_meters_countE15, /// 297
|
||||
|
||||
Quantity, /// 298
|
||||
Reference_quantity, /// 299
|
||||
Start_quantity, /// 300
|
||||
End_quantity, /// 301
|
||||
RR_Quantity, /// 302
|
||||
RR_Units, /// 303
|
||||
MassCTV, /// 304
|
||||
Unit_per_pulse_Read, /// 305
|
||||
Pulses_per_unit, /// 306
|
||||
|
||||
Count,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,16 +16,22 @@ namespace Results.Mappings
|
||||
Map(x => x.PulsesMeter);
|
||||
Map(x => x.PulsesMaster);
|
||||
Map(x => x.PulsesPerLiter);
|
||||
Map(x => x.PulsesPerKilogram);
|
||||
Map(x => x.VolumeStart);
|
||||
Map(x => x.VolumeEnd);
|
||||
Map(x => x.VolumeMeter);
|
||||
Map(x => x.VolumeRef);
|
||||
Map(x => x.MassMeter);
|
||||
Map(x => x.MassRef);
|
||||
Map(x => x.TimestampStart);
|
||||
Map(x => x.TimestampEnd);
|
||||
Map(x => x.TestTime);
|
||||
Map(x => x.Error);
|
||||
Map(x => x.ErrorMass);
|
||||
Map(x => x.TestDone);
|
||||
Map(x => x.Passed);
|
||||
Map(x => x.PassedMass);
|
||||
Map(x => x.QuantityUnits);
|
||||
#if IPERL
|
||||
Map(x => x.ExtraDataPath);
|
||||
Map(x => x.X1);
|
||||
|
||||
@@ -45,6 +45,10 @@ namespace Results.Mappings
|
||||
Map(x => x.VolumeCTV);
|
||||
Map(x => x.VolumeMaster);
|
||||
Map(x => x.ErrorMaster);
|
||||
Map(x => x.MassFlow).Column("MassFlow");
|
||||
Map(x => x.MassCTV);
|
||||
Map(x => x.MassMaster);
|
||||
Map(x => x.MassErrorMaster);
|
||||
Map(x => x.DiverterStart);
|
||||
Map(x => x.DiverterEnd);
|
||||
Map(x => x.ErrorFlags);
|
||||
|
||||
Generated
+11
-1
@@ -19,7 +19,7 @@ namespace Results.Properties {
|
||||
// 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.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
@@ -69,5 +69,15 @@ namespace Results.Properties {
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
|
||||
/// </summary>
|
||||
internal static System.Drawing.Icon TBF_icon {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("TBF_icon", resourceCulture);
|
||||
return ((System.Drawing.Icon)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,4 +121,7 @@
|
||||
<data name="Headpic" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Headpic.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="TBF_icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\TBF_icon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
Generated
+36
@@ -294,6 +294,15 @@ namespace Results.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to End quantity.
|
||||
/// </summary>
|
||||
internal static string End_quantity {
|
||||
get {
|
||||
return ResourceManager.GetString("End_quantity", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to End state.
|
||||
/// </summary>
|
||||
@@ -897,6 +906,15 @@ namespace Results.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Pulses/Unit.
|
||||
/// </summary>
|
||||
internal static string PulsesUnit {
|
||||
get {
|
||||
return ResourceManager.GetString("PulsesUnit", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Q fall.
|
||||
/// </summary>
|
||||
@@ -1131,6 +1149,15 @@ namespace Results.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Start quantity.
|
||||
/// </summary>
|
||||
internal static string Start_quantity {
|
||||
get {
|
||||
return ResourceManager.GetString("Start_quantity", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Start volume.
|
||||
/// </summary>
|
||||
@@ -2103,6 +2130,15 @@ namespace Results.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Quant..
|
||||
/// </summary>
|
||||
internal static string VName_Quantity {
|
||||
get {
|
||||
return ResourceManager.GetString("VName_Quantity", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Temp..
|
||||
/// </summary>
|
||||
|
||||
@@ -123,9 +123,18 @@
|
||||
<data name="Alignment" xml:space="preserve">
|
||||
<value>Zarovnání</value>
|
||||
</data>
|
||||
<data name="Approval" xml:space="preserve">
|
||||
<value>Schválení</value>
|
||||
</data>
|
||||
<data name="Available_results" xml:space="preserve">
|
||||
<value>Dostupné výsledky</value>
|
||||
</data>
|
||||
<data name="Batch_nr" xml:space="preserve">
|
||||
<value>Číslo dávky</value>
|
||||
</data>
|
||||
<data name="Bench" xml:space="preserve">
|
||||
<value>Stanice</value>
|
||||
</data>
|
||||
<data name="CancelBtnText" xml:space="preserve">
|
||||
<value>Zrušit</value>
|
||||
</data>
|
||||
@@ -135,9 +144,21 @@
|
||||
<data name="Configuration" xml:space="preserve">
|
||||
<value>Konfigurace</value>
|
||||
</data>
|
||||
<data name="Density" xml:space="preserve">
|
||||
<value>Hustota</value>
|
||||
</data>
|
||||
<data name="DownBtnText" xml:space="preserve">
|
||||
<value>Dolů</value>
|
||||
</data>
|
||||
<data name="End" xml:space="preserve">
|
||||
<value>Konec</value>
|
||||
</data>
|
||||
<data name="Error" xml:space="preserve">
|
||||
<value>Chyba</value>
|
||||
</data>
|
||||
<data name="Flow" xml:space="preserve">
|
||||
<value>Průtok</value>
|
||||
</data>
|
||||
<data name="Format" xml:space="preserve">
|
||||
<value>Formát</value>
|
||||
</data>
|
||||
@@ -150,8 +171,8 @@
|
||||
<data name="Precision" xml:space="preserve">
|
||||
<value>Přesnost</value>
|
||||
</data>
|
||||
<data name="Remark" xml:space="preserve">
|
||||
<value>Poznámka</value>
|
||||
<data name="Procedure" xml:space="preserve">
|
||||
<value>Procedura</value>
|
||||
</data>
|
||||
<data name="Remove" xml:space="preserve">
|
||||
<value>< Odebrat</value>
|
||||
@@ -162,15 +183,15 @@
|
||||
<data name="Result" xml:space="preserve">
|
||||
<value>Výsledek</value>
|
||||
</data>
|
||||
<data name="Results" xml:space="preserve">
|
||||
<value>Výsledky</value>
|
||||
</data>
|
||||
<data name="Result_code" xml:space="preserve">
|
||||
<value>Kód výsledku</value>
|
||||
</data>
|
||||
<data name="Selected_results" xml:space="preserve">
|
||||
<value>Vybrané výsledky</value>
|
||||
</data>
|
||||
<data name="sn" xml:space="preserve">
|
||||
<value>sériové číslo</value>
|
||||
</data>
|
||||
<data name="Start" xml:space="preserve">
|
||||
<value>Začátek</value>
|
||||
</data>
|
||||
<data name="Test_ID" xml:space="preserve">
|
||||
<value>Test</value>
|
||||
</data>
|
||||
@@ -180,9 +201,21 @@
|
||||
<data name="UpBtnText" xml:space="preserve">
|
||||
<value>Nahoru</value>
|
||||
</data>
|
||||
<data name="User" xml:space="preserve">
|
||||
<value>Uživatel</value>
|
||||
</data>
|
||||
<data name="Width" xml:space="preserve">
|
||||
<value>Šířka</value>
|
||||
</data>
|
||||
<data name="Results" xml:space="preserve">
|
||||
<value>Výsledky</value>
|
||||
</data>
|
||||
<data name="Remark" xml:space="preserve">
|
||||
<value>Poznámka</value>
|
||||
</data>
|
||||
<data name="Result_code" xml:space="preserve">
|
||||
<value>Kód výsledku</value>
|
||||
</data>
|
||||
<data name="Mounting" xml:space="preserve">
|
||||
<value>Montáž</value>
|
||||
</data>
|
||||
@@ -195,54 +228,27 @@
|
||||
<data name="Quantity" xml:space="preserve">
|
||||
<value>Veličina</value>
|
||||
</data>
|
||||
<data name="sn" xml:space="preserve">
|
||||
<value>sériové číslo</value>
|
||||
</data>
|
||||
<data name="Water_Meter" xml:space="preserve">
|
||||
<value>Vodoměr</value>
|
||||
</data>
|
||||
<data name="Batch_nr" xml:space="preserve">
|
||||
<value>Číslo dávky</value>
|
||||
</data>
|
||||
<data name="from" xml:space="preserve">
|
||||
<value>od</value>
|
||||
</data>
|
||||
<data name="to" xml:space="preserve">
|
||||
<value>do</value>
|
||||
</data>
|
||||
<data name="Unit" xml:space="preserve">
|
||||
<value>Jednotka</value>
|
||||
</data>
|
||||
<data name="Approval" xml:space="preserve">
|
||||
<value>Schválení</value>
|
||||
</data>
|
||||
<data name="Bench" xml:space="preserve">
|
||||
<value>Stanice</value>
|
||||
</data>
|
||||
<data name="Density" xml:space="preserve">
|
||||
<value>Hustota</value>
|
||||
</data>
|
||||
<data name="Density_correction" xml:space="preserve">
|
||||
<value>Korekce hustoty</value>
|
||||
</data>
|
||||
<data name="End" xml:space="preserve">
|
||||
<value>Konec</value>
|
||||
<data name="User_description" xml:space="preserve">
|
||||
<value>Popis uživatele</value>
|
||||
</data>
|
||||
<data name="Procedure" xml:space="preserve">
|
||||
<value>Procedura</value>
|
||||
<data name="Unit" xml:space="preserve">
|
||||
<value>Jednotka</value>
|
||||
</data>
|
||||
<data name="Procedure_description" xml:space="preserve">
|
||||
<value>Popis procedury</value>
|
||||
</data>
|
||||
<data name="Start" xml:space="preserve">
|
||||
<value>Začátek</value>
|
||||
</data>
|
||||
<data name="User" xml:space="preserve">
|
||||
<value>Uživatel</value>
|
||||
</data>
|
||||
<data name="User_description" xml:space="preserve">
|
||||
<value>Popis uživatele</value>
|
||||
</data>
|
||||
<data name="Bench_ID" xml:space="preserve">
|
||||
<value>ID stanice</value>
|
||||
</data>
|
||||
@@ -315,9 +321,6 @@
|
||||
<data name="Serial_number_is_missing" xml:space="preserve">
|
||||
<value>Chybí sériové číslo</value>
|
||||
</data>
|
||||
<data name="Error" xml:space="preserve">
|
||||
<value>Chyba</value>
|
||||
</data>
|
||||
<data name="Lower_limit" xml:space="preserve">
|
||||
<value>Dolní hranice</value>
|
||||
</data>
|
||||
@@ -330,9 +333,6 @@
|
||||
<data name="Relative_error" xml:space="preserve">
|
||||
<value>Relativní chyba</value>
|
||||
</data>
|
||||
<data name="Flow" xml:space="preserve">
|
||||
<value>Průtok</value>
|
||||
</data>
|
||||
<data name="This_position_is_disabled" xml:space="preserve">
|
||||
<value>Taro pozice je vypnuta</value>
|
||||
</data>
|
||||
@@ -351,4 +351,16 @@
|
||||
<data name="Merge" xml:space="preserve">
|
||||
<value>Spojit</value>
|
||||
</data>
|
||||
<data name="PulsesUnit" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="VName_Quantity" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="Start_quantity" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="End_quantity" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
</root>
|
||||
@@ -210,6 +210,9 @@
|
||||
<data name="Procedure" xml:space="preserve">
|
||||
<value>Prüfvorlage</value>
|
||||
</data>
|
||||
<data name="Producer" xml:space="preserve">
|
||||
<value>Hersteller</value>
|
||||
</data>
|
||||
<data name="Protocol" xml:space="preserve">
|
||||
<value>Protokoll</value>
|
||||
</data>
|
||||
@@ -360,57 +363,6 @@
|
||||
<data name="Mounting" xml:space="preserve">
|
||||
<value>Montage</value>
|
||||
</data>
|
||||
<data name="Producer" xml:space="preserve">
|
||||
<value>Hersteller</value>
|
||||
</data>
|
||||
<data name="Meter_type" xml:space="preserve">
|
||||
<value>WZ-Typ</value>
|
||||
</data>
|
||||
<data name="Compound" xml:space="preserve">
|
||||
<value>Verbundzähler</value>
|
||||
</data>
|
||||
<data name="Heat_meter" xml:space="preserve">
|
||||
<value>Wärmezähler</value>
|
||||
</data>
|
||||
<data name="Single" xml:space="preserve">
|
||||
<value>Einzel</value>
|
||||
</data>
|
||||
<data name="Category" xml:space="preserve">
|
||||
<value>Kategorie</value>
|
||||
</data>
|
||||
<data name="Quantity" xml:space="preserve">
|
||||
<value>Größe</value>
|
||||
</data>
|
||||
<data name="Page" xml:space="preserve">
|
||||
<value>Seite</value>
|
||||
</data>
|
||||
<data name="Water_Meter" xml:space="preserve">
|
||||
<value>Wasserzähler</value>
|
||||
</data>
|
||||
<data name="aux" xml:space="preserve">
|
||||
<value>Nebenzähler</value>
|
||||
</data>
|
||||
<data name="main" xml:space="preserve">
|
||||
<value>Hauptzähler</value>
|
||||
</data>
|
||||
<data name="fall" xml:space="preserve">
|
||||
<value>fall</value>
|
||||
</data>
|
||||
<data name="from" xml:space="preserve">
|
||||
<value>von</value>
|
||||
</data>
|
||||
<data name="rise" xml:space="preserve">
|
||||
<value>steig</value>
|
||||
</data>
|
||||
<data name="to" xml:space="preserve">
|
||||
<value>bis</value>
|
||||
</data>
|
||||
<data name="VName_Mass" xml:space="preserve">
|
||||
<value>Masse</value>
|
||||
</data>
|
||||
<data name="Density_correction" xml:space="preserve">
|
||||
<value>Dichtekorrektur</value>
|
||||
</data>
|
||||
<data name="Energy" xml:space="preserve">
|
||||
<value>Energie</value>
|
||||
</data>
|
||||
@@ -429,6 +381,21 @@
|
||||
<data name="P_delta_start" xml:space="preserve">
|
||||
<value>Druckdifferenz Beginn Prüfung</value>
|
||||
</data>
|
||||
<data name="Meter_type" xml:space="preserve">
|
||||
<value>WZ-Typ</value>
|
||||
</data>
|
||||
<data name="Compound" xml:space="preserve">
|
||||
<value>Verbundzähler</value>
|
||||
</data>
|
||||
<data name="Heat_meter" xml:space="preserve">
|
||||
<value>Wärmezähler</value>
|
||||
</data>
|
||||
<data name="Single" xml:space="preserve">
|
||||
<value>Einzel</value>
|
||||
</data>
|
||||
<data name="Page" xml:space="preserve">
|
||||
<value>Seite</value>
|
||||
</data>
|
||||
<data name="End_volume" xml:space="preserve">
|
||||
<value>Ende Volumen</value>
|
||||
</data>
|
||||
@@ -459,6 +426,15 @@
|
||||
<data name="Start_mass" xml:space="preserve">
|
||||
<value>Start Prüfung</value>
|
||||
</data>
|
||||
<data name="Category" xml:space="preserve">
|
||||
<value>Kategorie</value>
|
||||
</data>
|
||||
<data name="Quantity" xml:space="preserve">
|
||||
<value>Größe</value>
|
||||
</data>
|
||||
<data name="Water_Meter" xml:space="preserve">
|
||||
<value>Wasserzähler</value>
|
||||
</data>
|
||||
<data name="VName_Flow" xml:space="preserve">
|
||||
<value>Q</value>
|
||||
</data>
|
||||
@@ -474,6 +450,9 @@
|
||||
<data name="VName_Humi" xml:space="preserve">
|
||||
<value>Hu</value>
|
||||
</data>
|
||||
<data name="VName_Mass" xml:space="preserve">
|
||||
<value>Masse</value>
|
||||
</data>
|
||||
<data name="VName_TstTime" xml:space="preserve">
|
||||
<value>Tau</value>
|
||||
</data>
|
||||
@@ -582,6 +561,12 @@
|
||||
<data name="Tooltip_T_up_st" xml:space="preserve">
|
||||
<value>Temperatur Prüstreckeneingang am Prüfungsbeginn (4 Messungen nach Beginn)</value>
|
||||
</data>
|
||||
<data name="aux" xml:space="preserve">
|
||||
<value>Nebenzähler</value>
|
||||
</data>
|
||||
<data name="main" xml:space="preserve">
|
||||
<value>Hauptzähler</value>
|
||||
</data>
|
||||
<data name="Tooltip_E_rel" xml:space="preserve">
|
||||
<value>Relative Messabweichung eines WZ</value>
|
||||
</data>
|
||||
@@ -606,6 +591,18 @@
|
||||
<data name="VName_Error" xml:space="preserve">
|
||||
<value>E</value>
|
||||
</data>
|
||||
<data name="fall" xml:space="preserve">
|
||||
<value>fall</value>
|
||||
</data>
|
||||
<data name="from" xml:space="preserve">
|
||||
<value>von</value>
|
||||
</data>
|
||||
<data name="rise" xml:space="preserve">
|
||||
<value>steig</value>
|
||||
</data>
|
||||
<data name="to" xml:space="preserve">
|
||||
<value>bis</value>
|
||||
</data>
|
||||
<data name="Tooltip_Hu_Amb_M" xml:space="preserve">
|
||||
<value>Umgebungs-Luftfeuchtigkeit während der Prüfung</value>
|
||||
</data>
|
||||
@@ -627,6 +624,9 @@
|
||||
<data name="Yes" xml:space="preserve">
|
||||
<value>Ja</value>
|
||||
</data>
|
||||
<data name="Density_correction" xml:space="preserve">
|
||||
<value>Dichtekorrektur</value>
|
||||
</data>
|
||||
<data name="Error_flags" xml:space="preserve">
|
||||
<value>Fehlerflags</value>
|
||||
</data>
|
||||
@@ -825,4 +825,16 @@
|
||||
<data name="Selected_items" xml:space="preserve">
|
||||
<value>Ausgewählte Objekte</value>
|
||||
</data>
|
||||
<data name="PulsesUnit" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="VName_Quantity" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="Start_quantity" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="End_quantity" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
</root>
|
||||
@@ -804,4 +804,16 @@
|
||||
<data name="Serial_number_is_missing" xml:space="preserve">
|
||||
<value>Numérotation en série</value>
|
||||
</data>
|
||||
<data name="PulsesUnit" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="VName_Quantity" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="Start_quantity" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="End_quantity" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
</root>
|
||||
@@ -537,4 +537,16 @@
|
||||
<data name="Yes" xml:space="preserve">
|
||||
<value>Sì</value>
|
||||
</data>
|
||||
<data name="PulsesUnit" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="VName_Quantity" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="Start_quantity" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="End_quantity" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
</root>
|
||||
@@ -441,4 +441,16 @@
|
||||
<data name="Unit" xml:space="preserve">
|
||||
<value>Jednostka</value>
|
||||
</data>
|
||||
<data name="PulsesUnit" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="VName_Quantity" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="Start_quantity" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="End_quantity" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
</root>
|
||||
@@ -852,4 +852,16 @@
|
||||
<data name="Merge" xml:space="preserve">
|
||||
<value>Merge</value>
|
||||
</data>
|
||||
<data name="PulsesUnit" xml:space="preserve">
|
||||
<value>Pulses/Unit</value>
|
||||
</data>
|
||||
<data name="VName_Quantity" xml:space="preserve">
|
||||
<value>Quant.</value>
|
||||
</data>
|
||||
<data name="Start_quantity" xml:space="preserve">
|
||||
<value>Start quantity</value>
|
||||
</data>
|
||||
<data name="End_quantity" xml:space="preserve">
|
||||
<value>End quantity</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -420,22 +420,34 @@
|
||||
<data name="Volume_main" xml:space="preserve">
|
||||
<value>Объем главн.</value>
|
||||
</data>
|
||||
<data name="Water_Meter" xml:space="preserve">
|
||||
<value>Счетчик воды</value>
|
||||
</data>
|
||||
<data name="VName_Vol" xml:space="preserve">
|
||||
<value>Объем</value>
|
||||
</data>
|
||||
<data name="aux" xml:space="preserve">
|
||||
<value>доп.</value>
|
||||
</data>
|
||||
<data name="main" xml:space="preserve">
|
||||
<value>главн.</value>
|
||||
</data>
|
||||
<data name="VName_Vol" xml:space="preserve">
|
||||
<value>Объем</value>
|
||||
</data>
|
||||
<data name="No" xml:space="preserve">
|
||||
<value>Нет</value>
|
||||
</data>
|
||||
<data name="Yes" xml:space="preserve">
|
||||
<value>Да</value>
|
||||
</data>
|
||||
<data name="Water_Meter" xml:space="preserve">
|
||||
<value>Счетчик воды</value>
|
||||
<data name="PulsesUnit" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="VName_Quantity" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="Start_quantity" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="End_quantity" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
</root>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 64 KiB |
@@ -19,7 +19,7 @@
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>TRACE;DEBUG;IPERL;HEAT_METERS;</DefineConstants>
|
||||
<DefineConstants>TRACE;DEBUG;IPERL;</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
@@ -29,7 +29,7 @@
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE;IPERL;HEAT_METERS;</DefineConstants>
|
||||
<DefineConstants>TRACE;IPERL;</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
@@ -256,6 +256,7 @@
|
||||
<ItemGroup>
|
||||
<Content Include="Entities\PurchaseEntities\createPurchaseTables.sql" />
|
||||
<Content Include="Entities\PurchaseEntities\ImportPurchaseOrderTestData.sql" />
|
||||
<None Include="Resources\TBF_icon.ico" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
|
||||
@@ -131,6 +131,12 @@ namespace Results
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.String, "String", "", Quantity.String, ItemCategory.Other, (w,t,u,f,p) => f));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Separator, "Separator", "", Quantity.String, ItemCategory.Other, (w,t,u,f,p) => string.Empty));
|
||||
|
||||
///
|
||||
/// Register reader
|
||||
///
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.RR_Quantity, "RR Quantity", "", Quantity.RegisterReader, ItemCategory.Other, (w,t,u,f,p) => (w.GetMeterTestRslt(t) != null) ? FormatStr(f, w.GetMeterTestRslt(t).GetQuantityFromUnits()) : string.Empty));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.RR_Units, "RR Units", "", Quantity.RegisterReader, ItemCategory.Other, (w,t,u,f,p) => (w.GetMeterTestRslt(t) != null) ? FormatStr(f, w.GetMeterTestRslt(t).QuantityUnits) : string.Empty));
|
||||
|
||||
/// Common
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_name, Strings.Test + "()", Quantity.String, ItemCategory.TestData, (w,t,u,f,p) => FormatStr(f, (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Name())));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Procedure_name, Strings.Procedure, Quantity.String, ItemCategory.Other, (w,t,u,f,p) => FormatStr(f, w.ProcedureName())));
|
||||
@@ -155,20 +161,21 @@ namespace Results
|
||||
///
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_volume, Strings.Test_vol + "()", Quantity.Volume, ItemCategory.TestData, (w,t,u,f,p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V2", w.GetTestRslt(t).TargetVolume())));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.VolumeCTV, string.Format("{0} CTV ()", Strings.VName_Vol), Quantity.Volume, ItemCategory.TestResult, (w,t,u,f,p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V4", w.GetTestRslt(t).VolumeCTV)));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Volume, string.Format("{0} Mt. ()", Strings.VName_Vol), Strings.Tooltip_Vol_Mt, Quantity.Volume, ItemCategory.MeterResult, (w,t,u,f,p) => (w.GetMeterTestRslt(t, CompoundMeterId.HeatMeterVolume) != null) ? FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t, CompoundMeterId.HeatMeterVolume).VolumeMeter) : ((w.GetMeterTestRslt(t) != null) ? FormatDbl(u,f,p, "V4", w.GetMeterTestRslt(t).VolumeMeter) : string.Empty)));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Reference_volume, string.Format("{0} rm ()", Strings.VName_Vol), Strings.Tooltip_Vol_rm, Quantity.Volume, ItemCategory.MeterResult, (w,t,u,f,p) => (w.GetMeterTestRslt(t, CompoundMeterId.HeatMeterVolume) != null) ? FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t, CompoundMeterId.HeatMeterVolume).VolumeRef) : ((w.GetMeterTestRslt(t) != null) ? FormatDbl(u,f,p, "V4", w.GetMeterTestRslt(t).VolumeRef) : string.Empty)));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Quantity, string.Format("{0} Mt. ()", Strings.VName_Quantity), Strings.Tooltip_Vol_Mt, Quantity.MultiFunctionalVariables, ItemCategory.MeterResult, (w,t,u,f,p) => (w.GetMeterTestRslt(t, CompoundMeterId.HeatMeterVolume) != null) ? FormatDbl(u, f, p, "V4", (w.GetMeterTestRslt(t).GetQuantityFromUnits() == "Mass" ? w.GetMeterTestRslt(t, CompoundMeterId.HeatMeterVolume).MassMeter : w.GetMeterTestRslt(t, CompoundMeterId.HeatMeterVolume).VolumeMeter)) : ((w.GetMeterTestRslt(t) != null) ? FormatDbl(u, f, p, "V4", (w.GetMeterTestRslt(t).GetQuantityFromUnits() == "Mass" ? w.GetMeterTestRslt(t).MassMeter : w.GetMeterTestRslt(t).VolumeMeter)) : string.Empty)));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Reference_quantity,string.Format("{0} rm ()", Strings.VName_Quantity), Strings.Tooltip_Vol_rm, Quantity.MultiFunctionalVariables, ItemCategory.MeterResult, (w,t,u,f,p) => (w.GetMeterTestRslt(t, CompoundMeterId.HeatMeterVolume) != null) ? FormatDbl(u, f, p, "V4", (w.GetMeterTestRslt(t).GetQuantityFromUnits() == "Mass" ? w.GetMeterTestRslt(t, CompoundMeterId.HeatMeterVolume).MassRef : w.GetMeterTestRslt(t, CompoundMeterId.HeatMeterVolume).VolumeRef)) : ((w.GetMeterTestRslt(t) != null) ? FormatDbl(u, f, p, "V4", (w.GetMeterTestRslt(t).GetQuantityFromUnits() == "Mass" ? w.GetMeterTestRslt(t).MassRef : w.GetMeterTestRslt(t).VolumeRef)) : string.Empty)));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Volume_main, string.Format("{0} {1} ()", Strings.VName_Vol, Strings.main), Quantity.Volume, ItemCategory.MeterResult, (w,t,u,f,p) => (w.GetMeterTestRslt(t, CompoundMeterId.CompoundMain) != null) ? FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t, CompoundMeterId.CompoundMain).VolumeMeter) : string.Empty));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Volume_aux, string.Format("{0} {1} ()", Strings.VName_Vol, Strings.aux), Quantity.Volume, ItemCategory.MeterResult, (w,t,u,f,p) => (w.GetMeterTestRslt(t, CompoundMeterId.CompoundAux) != null) ? FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t, CompoundMeterId.CompoundAux).VolumeMeter) : string.Empty));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Start_volume, Strings.Start_volume + "()", Quantity.Volume, ItemCategory.MeterResult, (w,t,u,f,p) => (w.GetMeterTestRslt(t, CompoundMeterId.HeatMeterVolume) != null) ? FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t, CompoundMeterId.HeatMeterVolume).VolumeStart) : ((w.GetMeterTestRslt(t) != null) ? FormatDbl(u,f,p, "V4", w.GetMeterTestRslt(t).VolumeStart) : string.Empty)));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Start_quantity, Strings.Start_quantity + "()", Quantity.MultiFunctionalVariables, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t, CompoundMeterId.HeatMeterVolume) != null) ? FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t, CompoundMeterId.HeatMeterVolume).VolumeStart) : ((w.GetMeterTestRslt(t) != null) ? FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t).VolumeStart) : string.Empty)));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Start_volume_main, Strings.Start_volume_main + "()", Quantity.Volume, ItemCategory.MeterResult, (w,t,u,f,p) => (w.GetMeterTestRslt(t, CompoundMeterId.CompoundMain) != null) ? FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t, CompoundMeterId.CompoundMain).VolumeStart) : string.Empty));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Start_volume_aux, Strings.Start_volume_aux + "()", Quantity.Volume, ItemCategory.MeterResult, (w,t,u,f,p) => (w.GetMeterTestRslt(t, CompoundMeterId.CompoundAux) != null) ? FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t, CompoundMeterId.CompoundAux).VolumeStart) : string.Empty));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.End_volume, Strings.End_volume + "()", Quantity.Volume, ItemCategory.MeterResult, (w,t,u,f,p) => (w.GetMeterTestRslt(t, CompoundMeterId.HeatMeterVolume) != null) ? FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t, CompoundMeterId.HeatMeterVolume).VolumeEnd) : ((w.GetMeterTestRslt(t) != null) ? FormatDbl(u,f,p, "V4", w.GetMeterTestRslt(t).VolumeEnd) : string.Empty)));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.End_quantity, Strings.End_quantity + "()", Quantity.MultiFunctionalVariables, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t, CompoundMeterId.HeatMeterVolume) != null) ? FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t, CompoundMeterId.HeatMeterVolume).VolumeEnd) : ((w.GetMeterTestRslt(t) != null) ? FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t).VolumeEnd) : string.Empty)));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.End_volume_main, Strings.End_volume_main + "()", Quantity.Volume, ItemCategory.MeterResult, (w,t,u,f,p) => (w.GetMeterTestRslt(t, CompoundMeterId.CompoundMain) != null) ? FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t, CompoundMeterId.CompoundMain).VolumeEnd) : string.Empty));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.End_volume_aux, Strings.End_volume_aux + "()", Quantity.Volume, ItemCategory.MeterResult, (w,t,u,f,p) => (w.GetMeterTestRslt(t, CompoundMeterId.CompoundAux) != null) ? FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t, CompoundMeterId.CompoundAux).VolumeEnd) : string.Empty));
|
||||
|
||||
///
|
||||
/// Mass
|
||||
///
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.MassCTV, string.Format("{0} CTV ()", Strings.VName_Mass), Quantity.Mass, ItemCategory.TestResult, (w,t,u,f,p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u,f,p, "V4", w.GetTestRslt(t).MassCTV)));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Mass_start_raw, string.Format("{0} ST raw ()", Strings.VName_Mass), Quantity.Mass, ItemCategory.TestResult, (w,t,u,f,p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u,f,p, "V4", w.GetTestRslt(t).MassStartRaw)));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Mass_start, string.Format("{0} ST ()", Strings.VName_Mass), Quantity.Mass, ItemCategory.TestResult, (w,t,u,f,p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u,f,p, "V4", w.GetTestRslt(t).MassStart)));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Mass_end_raw, string.Format("{0} EN raw ()", Strings.VName_Mass), Quantity.Mass, ItemCategory.TestResult, (w,t,u,f,p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u,f,p, "V4", w.GetTestRslt(t).MassEndRaw)));
|
||||
@@ -374,10 +381,11 @@ namespace Results
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Camera_angle_start, "Start angle ()", "Start angle measured by a camera",Quantity.Pulses, ItemCategory.MeterResult, (w,t,u,f,p) => (w.GetMeterTestRslt(t) == null) ? string.Empty : FormatDbl(u,f,p, "F0", w.GetMeterTestRslt(t).IsCamera() ? w.GetMeterTestRslt(t).VolumeStart * w.GetMeterTestRslt(t).PulsesPerLiter : 0)));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Camera_angle_end, "End angle ()", "End angle measured by a camera", Quantity.Pulses, ItemCategory.MeterResult, (w,t,u,f,p) => (w.GetMeterTestRslt(t) == null) ? string.Empty : FormatDbl(u,f,p, "F0", w.GetMeterTestRslt(t).IsCamera() ? w.GetMeterTestRslt(t).VolumeEnd * w.GetMeterTestRslt(t).PulsesPerLiter : 0)));
|
||||
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Pulses_per_liter, Strings.PulsesLiter, Quantity.PulsePerLtr, ItemCategory.MeterData, (w,t,u,f,p) => FormatDbl(u, f, p, "V4", w.WaterMeterData.PulsesPerLtr)));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Pls_per_ltr_aux, Strings.PulsesLiter + " aux", Quantity.PulsePerLtr, ItemCategory.MeterData, (w, t, u, f, p) => FormatDbl(u, f, p, "V4", w.WaterMeterData.PulsesPerLtrAux)));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Pulse__liter, Strings.PulsesLiter + "()", Quantity.PulsePerLtr, ItemCategory.TestResult, (w,t,u,f,p) => (w.GetMeterTestRslt(t) == null) ? string.Empty : FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t).IsCamera() ? 0 : w.GetMeterTestRslt(t).PulsesPerLiter)));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Degree__liter, "Degree per liter ()", Quantity.PulsePerLtr, ItemCategory.TestResult, (w,t,u,f,p) => (w.GetMeterTestRslt(t) == null) ? string.Empty : FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t).IsCamera() ? w.GetMeterTestRslt(t).PulsesPerLiter : 0)));
|
||||
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Pulses_per_unit, Strings.PulsesUnit, Quantity.PulsePerUnit, ItemCategory.MeterData, (w,t,u,f,p) => FormatDbl(u, f, p, "V4", w.WaterMeterData.PulsesPerLtr)));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Pls_per_ltr_aux, Strings.PulsesUnit + " aux", Quantity.PulsePerUnit, ItemCategory.MeterData, (w,t,u,f,p) => FormatDbl(u, f, p, "V4", w.WaterMeterData.PulsesPerLtrAux)));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Pulse__liter, Strings.PulsesUnit + "()", Quantity.PulsePerUnit, ItemCategory.TestResult, (w,t,u,f,p) => (w.GetMeterTestRslt(t) == null) ? string.Empty : FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t).IsCamera() ? 0 : w.GetMeterTestRslt(t).PulsesPerLiter)));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Degree__liter, "Degree per unit ()", Quantity.PulsePerUnit, ItemCategory.TestResult, (w,t,u,f,p) => (w.GetMeterTestRslt(t) == null) ? string.Empty : FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t).IsCamera() ? w.GetMeterTestRslt(t).PulsesPerLiter : 0)));
|
||||
|
||||
/// Water meters results (combined)
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Pulses_main, Strings.Pulses + " " + Strings.main + "()", Quantity.Pulses, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t, CompoundMeterId.CompoundMain) == null) ? string.Empty : FormatDbl(u, f, p, "F0", w.GetMeterTestRslt(t, CompoundMeterId.CompoundMain).IsPulses() ? w.GetMeterTestRslt(t, CompoundMeterId.CompoundMain).PulsesMeter : 0)));
|
||||
@@ -405,7 +413,7 @@ namespace Results
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Watermeters, Strings.WMs, Quantity.String, ItemCategory.Other, (w,t,u,f,p) => FormatStr(f, w.Batch.WatermetersStr)));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Batch_start_time, Strings.Start, Quantity.DateTime, ItemCategory.Other, (w,t,u,f,p) => string.IsNullOrEmpty(f) ? w.Batch.StartTime.ToString() : string.Format(f, w.Batch.StartTime)));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Batch_end_time, Strings.End, Quantity.DateTime, ItemCategory.Other, (w,t,u,f,p) => string.IsNullOrEmpty(f) ? w.Batch.EndTime.ToString() : string.Format(f, w.Batch.EndTime)));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Lite_per_pulse_Read, "1 / PlsPerLtr_Read", Quantity.PulsePerLtr, ItemCategory.Other, (w,t,u,f,p) => FormatDbl(u, f, p, "V4", (w.WaterMeterData.PulsesPerLtr != 0) ? 1/w.WaterMeterData.PulsesPerLtr : 0)));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Unit_per_pulse_Read, "1 / PlsPerUnit_Read", Quantity.PulsePerUnit,ItemCategory.Other, (w,t,u,f,p) => FormatDbl(u, f, p, "V4", (w.WaterMeterData.PulsesPerLtr != 0) ? 1 / w.WaterMeterData.PulsesPerLtr : 0)));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Passed_meters_count, Strings.Passed_meters_count, Quantity.Number, ItemCategory.Other, (w,t,u,f,p) => FormatInt(f, w.Batch.PassedMetersCount())));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Failed_meters_count, Strings.Failed_meters_count, Quantity.Number, ItemCategory.Other, (w,t,u,f,p) => FormatInt(f, w.Batch.FailedMetersCount())));
|
||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Failed_meters_countE15, Strings.Failed_meters_count + "E15", Quantity.Number, ItemCategory.Other, (w,t,u,f,p) => FormatInt(f, w.Batch.FailedMetersCountE15())));
|
||||
|
||||
@@ -13,5 +13,6 @@ namespace SchematicDrawing
|
||||
Common.Unit MsrdUnit { get; }
|
||||
double MsrdValLimLo { get; }
|
||||
double MsrdValLimHi { get; }
|
||||
bool IsOffline { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -672,7 +672,11 @@ namespace SchematicDrawing
|
||||
SizeF size = e.Graphics.MeasureString(strVal, measuredValueFont);
|
||||
Rectangle rect = new Rectangle(itm.X + itm.MsrdX, itm.Y + itm.MsrdY, (int)Math.Round(size.Width) + 4, (int)Math.Round(size.Height) + 2);
|
||||
ItemElementRectangles.Add(new ItemElementRect(item, Element.MeasuredVal, rect));
|
||||
if (measuredValues[msrdValIx] >= itm.MsrdValLimLo && measuredValues[msrdValIx] <= itm.MsrdValLimHi)
|
||||
if ((item as IDrawingItemWithMeasuredVal).IsOffline)
|
||||
{
|
||||
e.Graphics.FillRectangle(measuredValueErrorBackColor, rect);
|
||||
}
|
||||
else if (measuredValues[msrdValIx] >= itm.MsrdValLimLo && measuredValues[msrdValIx] <= itm.MsrdValLimHi)
|
||||
{
|
||||
e.Graphics.FillRectangle(measuredValueBackColor, rect);
|
||||
}
|
||||
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
is_global = true
|
||||
build_property.RootNamespace = SharedComponents
|
||||
build_property.ProjectDir = C:\Users\micha\git\tbf\SharedComponents\
|
||||
build_property.EnableComHosting =
|
||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||
@@ -1,15 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\micha\.nuget\packages\</NuGetPackageFolders>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\MFRNIAK\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
|
||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.14.0</NuGetToolVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<SourceRoot Include="C:\Users\micha\.nuget\packages\" />
|
||||
<SourceRoot Include="C:\Users\MFRNIAK\.nuget\packages\" />
|
||||
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -44,6 +44,8 @@ namespace SharedDatabase.Forms
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.Icon = Properties.Resources.TBF_icon;
|
||||
|
||||
loginStatePictureBox1.Image = Properties.Resources.questionMark;
|
||||
loginStatePictureBox2.Image = Properties.Resources.questionMark;
|
||||
authorizedUser1 = null;
|
||||
|
||||
@@ -31,6 +31,9 @@ namespace SharedDatabase.Forms
|
||||
public EditSelectedUser()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.Icon = Properties.Resources.TBF_icon;
|
||||
|
||||
this.toolTip1.SetToolTip(this.txtName, string.Format(Strings.max_0_alphanum_chars, 20));
|
||||
oriGroupMember = new bool[(displayedGroups != null) ? displayedGroups.Count : 0];
|
||||
okBtn.Enabled = false;
|
||||
|
||||
@@ -45,6 +45,8 @@ namespace SharedDatabase.Forms
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.Icon = Properties.Resources.TBF_icon;
|
||||
|
||||
oriBackColor = BackColor;
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,8 @@ namespace SharedDatabase.Forms
|
||||
public PasswordChangeDlg()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.Icon = Properties.Resources.TBF_icon;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -30,6 +32,9 @@ namespace SharedDatabase.Forms
|
||||
public PasswordChangeDlg(string predefinedUser)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.Icon = Properties.Resources.TBF_icon;
|
||||
|
||||
userNameTextBox.Text = predefinedUser;
|
||||
}
|
||||
|
||||
|
||||
@@ -46,6 +46,8 @@ namespace SharedDatabase.Forms
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.Icon = Properties.Resources.TBF_icon;
|
||||
|
||||
oriBackColor = BackColor;
|
||||
}
|
||||
|
||||
|
||||
@@ -46,6 +46,8 @@ namespace SharedDatabase.Forms
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.Icon = Properties.Resources.TBF_icon;
|
||||
|
||||
loginStatePictureBox1.Image = Properties.Resources.questionMark;
|
||||
loginStatePictureBox2.Image = Properties.Resources.questionMark;
|
||||
loginStatePictureBox3.Image = Properties.Resources.questionMark;
|
||||
|
||||
@@ -35,6 +35,9 @@ namespace SharedDatabase.Forms
|
||||
public UserManagementDlg(NHibernate.ISession session, bool showLocalExtensions)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.Icon = Properties.Resources.TBF_icon;
|
||||
|
||||
this.session = session;
|
||||
this.showExtensions = showLocalExtensions;
|
||||
if (showLocalExtensions) copyFromRemoteButton.Visible = true;
|
||||
|
||||
+11
-1
@@ -19,7 +19,7 @@ namespace SharedDatabase.Properties {
|
||||
// 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.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
@@ -89,5 +89,15 @@ namespace SharedDatabase.Properties {
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
|
||||
/// </summary>
|
||||
internal static System.Drawing.Icon TBF_icon {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("TBF_icon", resourceCulture);
|
||||
return ((System.Drawing.Icon)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -127,4 +127,7 @@
|
||||
<data name="rejected" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Pictures\rejected.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="TBF_icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\TBF_icon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 64 KiB |
@@ -17,7 +17,7 @@
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>TRACE;DEBUG;LANG_PL;HEAT_METERS;</DefineConstants>
|
||||
<DefineConstants>TRACE;DEBUG;LANG_PL;</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
@@ -25,7 +25,7 @@
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE;HEAT_METERS;</DefineConstants>
|
||||
<DefineConstants>TRACE;</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
@@ -221,6 +221,9 @@
|
||||
<None Include="Pictures\questionMark.bmp" />
|
||||
<None Include="Pictures\rejected.bmp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\TBF_icon.ico" />
|
||||
</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.
|
||||
|
||||
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
[assembly: AssemblyVersion("3.9.2149.0")]
|
||||
[assembly: AssemblyFileVersion("3.9.2149.0")]
|
||||
[assembly: AssemblyVersion("3.9.2149.4")]
|
||||
[assembly: AssemblyFileVersion("3.9.2149.4")]
|
||||
|
||||
Generated
+11
-1
@@ -19,7 +19,7 @@ namespace TBF.Properties {
|
||||
// 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.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
@@ -150,6 +150,16 @@ namespace TBF.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
|
||||
/// </summary>
|
||||
internal static System.Drawing.Icon TBF_icon {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("TBF_icon", resourceCulture);
|
||||
return ((System.Drawing.Icon)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
|
||||
@@ -208,4 +208,7 @@
|
||||
<data name="TControl_XL_idle" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Rig\Modbus\TempControl\Pictures\TControl-XL-idle.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="TBF_icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\TBF_icon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -19,8 +19,8 @@
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
<applicationRequestMinimum>
|
||||
<PermissionSet class="System.Security.PermissionSet" version="1" Unrestricted="true" ID="Custom" SameSite="site" />
|
||||
<defaultAssemblyRequest permissionSetReference="Custom" />
|
||||
<PermissionSet class="System.Security.PermissionSet" version="1" ID="Custom" SameSite="site" Unrestricted="true" />
|
||||
</applicationRequestMinimum>
|
||||
</security>
|
||||
</trustInfo>
|
||||
|
||||
Generated
+28
@@ -1,6 +1,7 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <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.
|
||||
@@ -4415,6 +4416,15 @@ namespace TBF.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Pulses per kilogram.
|
||||
/// </summary>
|
||||
internal static string PulsesPerKilogram {
|
||||
get {
|
||||
return ResourceManager.GetString("PulsesPerKilogram", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Pulses per kWh.
|
||||
/// </summary>
|
||||
@@ -4433,6 +4443,15 @@ namespace TBF.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Pulses per unit.
|
||||
/// </summary>
|
||||
internal static string PulsesPerUnit {
|
||||
get {
|
||||
return ResourceManager.GetString("PulsesPerUnit", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Pump.
|
||||
/// </summary>
|
||||
@@ -6686,6 +6705,15 @@ namespace TBF.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Units.
|
||||
/// </summary>
|
||||
internal static string Units {
|
||||
get {
|
||||
return ResourceManager.GetString("Units", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Unlock.
|
||||
/// </summary>
|
||||
|
||||
+873
-867
File diff suppressed because it is too large
Load Diff
+739
-733
File diff suppressed because it is too large
Load Diff
@@ -126,4 +126,13 @@
|
||||
<data name="ShowDialog" xml:space="preserve">
|
||||
<value>Mostrar diálogo</value>
|
||||
</data>
|
||||
<data name="PulsesPerUnit" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="PulsesPerKilogram" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="Units" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
</root>
|
||||
@@ -117,9 +117,6 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Activity" xml:space="preserve">
|
||||
<value>Activité</value>
|
||||
</data>
|
||||
<data name="Confirmation" xml:space="preserve">
|
||||
<value>Confirmation</value>
|
||||
</data>
|
||||
@@ -399,9 +396,6 @@
|
||||
<data name="Tol_red_pct_chdr" xml:space="preserve">
|
||||
<value>Toler rouge. [%]</value>
|
||||
</data>
|
||||
<data name="Test_time_s_chdr" xml:space="preserve">
|
||||
<value>Temps test [s]</value>
|
||||
</data>
|
||||
<data name="Error_while_creating_DB_Reason" xml:space="preserve">
|
||||
<value>Erreur lors de la création de la base de données. Raison:</value>
|
||||
</data>
|
||||
@@ -525,9 +519,6 @@
|
||||
<data name="RelativeQto" xml:space="preserve">
|
||||
<value>Q relatif à</value>
|
||||
</data>
|
||||
<data name="TargetQ" xml:space="preserve">
|
||||
<value>Q cible [m3/h]</value>
|
||||
</data>
|
||||
<data name="Compound_meters" xml:space="preserve">
|
||||
<value>Mètres composés</value>
|
||||
</data>
|
||||
@@ -618,6 +609,9 @@
|
||||
<data name="Switching_flow_detection" xml:space="preserve">
|
||||
<value>Détection flux commutation</value>
|
||||
</data>
|
||||
<data name="Activity" xml:space="preserve">
|
||||
<value>Activité</value>
|
||||
</data>
|
||||
<data name="Progress" xml:space="preserve">
|
||||
<value>Progrès</value>
|
||||
</data>
|
||||
@@ -888,7 +882,7 @@
|
||||
<data name="Qrise" xml:space="preserve">
|
||||
<value>Q hausse</value>
|
||||
</data>
|
||||
<data name="Serial_Number" xml:space="preserve">
|
||||
<data name="Serial_number" xml:space="preserve">
|
||||
<value>Numéro série</value>
|
||||
</data>
|
||||
<data name="State" xml:space="preserve">
|
||||
@@ -939,6 +933,9 @@
|
||||
<data name="Purchase_order" xml:space="preserve">
|
||||
<value>Commande</value>
|
||||
</data>
|
||||
<data name="Project_number" xml:space="preserve">
|
||||
<value>Numéro de projet</value>
|
||||
</data>
|
||||
<data name="Ambient_humidity" xml:space="preserve">
|
||||
<value>Humidité ambiante</value>
|
||||
</data>
|
||||
@@ -1245,9 +1242,6 @@
|
||||
<data name="Target_ref_pulses_" xml:space="preserve">
|
||||
<value>Cible ref impulsions:</value>
|
||||
</data>
|
||||
<data name="Target_volume_l_" xml:space="preserve">
|
||||
<value>Volume cible [l]:</value>
|
||||
</data>
|
||||
<data name="Save_column_widths" xml:space="preserve">
|
||||
<value>Enregistrer largeurs colonne</value>
|
||||
</data>
|
||||
@@ -1386,9 +1380,6 @@
|
||||
<data name="Last_changed_by" xml:space="preserve">
|
||||
<value>Dernier changement dby</value>
|
||||
</data>
|
||||
<data name="Meter_types_tested" xml:space="preserve">
|
||||
<value>Types compteurs testés</value>
|
||||
</data>
|
||||
<data name="Notes" xml:space="preserve">
|
||||
<value>Remarques</value>
|
||||
</data>
|
||||
@@ -1671,6 +1662,9 @@
|
||||
<data name="Protected_procedure" xml:space="preserve">
|
||||
<value>Procédure protégée</value>
|
||||
</data>
|
||||
<data name="Empty" xml:space="preserve">
|
||||
<value>Vidanger</value>
|
||||
</data>
|
||||
<data name="Session" xml:space="preserve">
|
||||
<value>Session</value>
|
||||
</data>
|
||||
@@ -1713,9 +1707,6 @@
|
||||
<data name="RFID_communication_failed" xml:space="preserve">
|
||||
<value>Échec communication RFID</value>
|
||||
</data>
|
||||
<data name="Opto_head_was_disabled_by_the_user" xml:space="preserve">
|
||||
<value>tête désactivée par utilisateur</value>
|
||||
</data>
|
||||
<data name="failed_0_1_exclamation" xml:space="preserve">
|
||||
<value>{0}' exclamation échoué ({1}) !!!</value>
|
||||
</data>
|
||||
@@ -1803,9 +1794,6 @@
|
||||
<data name="Refresh" xml:space="preserve">
|
||||
<value>Rafraîchir</value>
|
||||
</data>
|
||||
<data name="current" xml:space="preserve">
|
||||
<value>actuel</value>
|
||||
</data>
|
||||
<data name="Flow" xml:space="preserve">
|
||||
<value>Couler</value>
|
||||
</data>
|
||||
@@ -1905,7 +1893,7 @@
|
||||
<data name="Import" xml:space="preserve">
|
||||
<value>Importation</value>
|
||||
</data>
|
||||
<data name="repetition" xml:space="preserve">
|
||||
<data name="Repetition" xml:space="preserve">
|
||||
<value>répétition</value>
|
||||
</data>
|
||||
<data name="Result" xml:space="preserve">
|
||||
@@ -1989,6 +1977,9 @@
|
||||
<data name="End_session" xml:space="preserve">
|
||||
<value>Terminer le cycle</value>
|
||||
</data>
|
||||
<data name="Fill" xml:space="preserve">
|
||||
<value>Inonder</value>
|
||||
</data>
|
||||
<data name="Pipeline" xml:space="preserve">
|
||||
<value>Pipeline</value>
|
||||
</data>
|
||||
@@ -2001,25 +1992,40 @@
|
||||
<data name="Q_tg" xml:space="preserve">
|
||||
<value>Q obj.</value>
|
||||
</data>
|
||||
<data name="Empty" xml:space="preserve">
|
||||
<value>Vidanger</value>
|
||||
</data>
|
||||
<data name="Empty_the_tank" xml:space="preserve">
|
||||
<value>Vidanger réservoir</value>
|
||||
</data>
|
||||
<data name="Fill" xml:space="preserve">
|
||||
<value>Inonder</value>
|
||||
</data>
|
||||
<data name="Current" xml:space="preserve">
|
||||
<value>Curren</value>
|
||||
</data>
|
||||
<data name="Voltage" xml:space="preserve">
|
||||
<value>Tension</value>
|
||||
</data>
|
||||
<data name="Project_number" xml:space="preserve">
|
||||
<value>Numéro de projet</value>
|
||||
</data>
|
||||
<data name="ShowDialog" xml:space="preserve">
|
||||
<value>Afficher la boîte de dialogue</value>
|
||||
</data>
|
||||
<data name="Meter_types_tested" xml:space="preserve">
|
||||
<value>Types compteurs testés</value>
|
||||
</data>
|
||||
<data name="TargetQ" xml:space="preserve">
|
||||
<value>Q cible [m3/h]</value>
|
||||
</data>
|
||||
<data name="Target_volume_l_" xml:space="preserve">
|
||||
<value>Volume cible [l]:</value>
|
||||
</data>
|
||||
<data name="Opto_head_was_disabled_by_the_user" xml:space="preserve">
|
||||
<value>tête désactivée par utilisateur</value>
|
||||
</data>
|
||||
<data name="Test_time_s_chdr" xml:space="preserve">
|
||||
<value>Temps test [s]</value>
|
||||
</data>
|
||||
<data name="PulsesPerUnit" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="PulsesPerKilogram" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="Units" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
</root>
|
||||
@@ -117,9 +117,6 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Activity" xml:space="preserve">
|
||||
<value>Attività</value>
|
||||
</data>
|
||||
<data name="Confirmation" xml:space="preserve">
|
||||
<value>conferma</value>
|
||||
</data>
|
||||
@@ -252,9 +249,6 @@
|
||||
<data name="Nr" xml:space="preserve">
|
||||
<value>numero</value>
|
||||
</data>
|
||||
<data name="Mass" xml:space="preserve">
|
||||
<value>massa</value>
|
||||
</data>
|
||||
<data name="AddBtnText" xml:space="preserve">
|
||||
<value>Aggiunta</value>
|
||||
</data>
|
||||
@@ -276,12 +270,6 @@
|
||||
<data name="OkBtnText" xml:space="preserve">
|
||||
<value>Ok</value>
|
||||
</data>
|
||||
<data name="Flow" xml:space="preserve">
|
||||
<value>flusso</value>
|
||||
</data>
|
||||
<data name="Pressure" xml:space="preserve">
|
||||
<value>pressione</value>
|
||||
</data>
|
||||
<data name="Invalid_username_or_password" xml:space="preserve">
|
||||
<value>Username o password non validi</value>
|
||||
</data>
|
||||
@@ -399,12 +387,6 @@
|
||||
<data name="Output_chdr" xml:space="preserve">
|
||||
<value>Uscite</value>
|
||||
</data>
|
||||
<data name="Q_from_lph" xml:space="preserve">
|
||||
<value>Qda [l/h]</value>
|
||||
</data>
|
||||
<data name="Q_to_lph" xml:space="preserve">
|
||||
<value>Q a [l/h]</value>
|
||||
</data>
|
||||
<data name="Red_type_chdr" xml:space="preserve">
|
||||
<value>tipo rosso</value>
|
||||
</data>
|
||||
@@ -414,9 +396,6 @@
|
||||
<data name="Tol_red_pct_chdr" xml:space="preserve">
|
||||
<value>tolleranza rossa [%]</value>
|
||||
</data>
|
||||
<data name="Test_time_s_chdr" xml:space="preserve">
|
||||
<value>test time [s]</value>
|
||||
</data>
|
||||
<data name="Error_while_creating_DB_Reason" xml:space="preserve">
|
||||
<value>errore durante la creazione del data base. ragioni:</value>
|
||||
</data>
|
||||
@@ -540,9 +519,6 @@
|
||||
<data name="RelativeQto" xml:space="preserve">
|
||||
<value>Q relativo a</value>
|
||||
</data>
|
||||
<data name="TargetQ" xml:space="preserve">
|
||||
<value>target Q [m3/h]</value>
|
||||
</data>
|
||||
<data name="Compound_meters" xml:space="preserve">
|
||||
<value>metri composti</value>
|
||||
</data>
|
||||
@@ -633,6 +609,9 @@
|
||||
<data name="Switching_flow_detection" xml:space="preserve">
|
||||
<value>rilevamento del flusso di commutazione</value>
|
||||
</data>
|
||||
<data name="Activity" xml:space="preserve">
|
||||
<value>Attività</value>
|
||||
</data>
|
||||
<data name="Progress" xml:space="preserve">
|
||||
<value>progressi</value>
|
||||
</data>
|
||||
@@ -903,7 +882,7 @@
|
||||
<data name="Qrise" xml:space="preserve">
|
||||
<value>Qalta</value>
|
||||
</data>
|
||||
<data name="Serial_Number" xml:space="preserve">
|
||||
<data name="Serial_number" xml:space="preserve">
|
||||
<value>Numero Seriale</value>
|
||||
</data>
|
||||
<data name="State" xml:space="preserve">
|
||||
@@ -954,6 +933,9 @@
|
||||
<data name="Purchase_order" xml:space="preserve">
|
||||
<value>ordine acquisto</value>
|
||||
</data>
|
||||
<data name="Project_number" xml:space="preserve">
|
||||
<value>Numero del progetto</value>
|
||||
</data>
|
||||
<data name="Ambient_humidity" xml:space="preserve">
|
||||
<value>Umidità dell'ambiente</value>
|
||||
</data>
|
||||
@@ -981,9 +963,6 @@
|
||||
<data name="Start" xml:space="preserve">
|
||||
<value>Inizio</value>
|
||||
</data>
|
||||
<data name="AtTemperature_C" xml:space="preserve">
|
||||
<value>@temperatura [°C]</value>
|
||||
</data>
|
||||
<data name="Density" xml:space="preserve">
|
||||
<value>densità</value>
|
||||
</data>
|
||||
@@ -1125,15 +1104,15 @@
|
||||
<data name="ID" xml:space="preserve">
|
||||
<value>ID </value>
|
||||
</data>
|
||||
<data name="Focus" xml:space="preserve">
|
||||
<value>messa a fuoco</value>
|
||||
</data>
|
||||
<data name="Grab" xml:space="preserve">
|
||||
<value>afferrare</value>
|
||||
</data>
|
||||
<data name="Live" xml:space="preserve">
|
||||
<value>dal vivo</value>
|
||||
</data>
|
||||
<data name="Camera" xml:space="preserve">
|
||||
<value>Fotocamera</value>
|
||||
</data>
|
||||
<data name="Closing_the_tank" xml:space="preserve">
|
||||
<value>chiusura del serbatoio</value>
|
||||
</data>
|
||||
@@ -1212,15 +1191,15 @@
|
||||
<data name="Compound_meter_0" xml:space="preserve">
|
||||
<value>misuratore composto {0}</value>
|
||||
</data>
|
||||
<data name="Error_" xml:space="preserve">
|
||||
<value>Errore:</value>
|
||||
</data>
|
||||
<data name="Estimated_time_s_" xml:space="preserve">
|
||||
<value>tempo stimato [s]:</value>
|
||||
</data>
|
||||
<data name="Mass_diff_kg_" xml:space="preserve">
|
||||
<value>mass diff [kg]:</value>
|
||||
</data>
|
||||
<data name="Mass" xml:space="preserve">
|
||||
<value>massa</value>
|
||||
</data>
|
||||
<data name="Meter" xml:space="preserve">
|
||||
<value>metri</value>
|
||||
</data>
|
||||
@@ -1260,9 +1239,6 @@
|
||||
<data name="Target_ref_pulses_" xml:space="preserve">
|
||||
<value>Target ref. count:</value>
|
||||
</data>
|
||||
<data name="Target_volume_l_" xml:space="preserve">
|
||||
<value>target volume [l]:</value>
|
||||
</data>
|
||||
<data name="Save_column_widths" xml:space="preserve">
|
||||
<value>salva larghezza colonne</value>
|
||||
</data>
|
||||
@@ -1314,6 +1290,9 @@
|
||||
<data name="Print_watermeter_results" xml:space="preserve">
|
||||
<value>stampare i risultati dei contatori</value>
|
||||
</data>
|
||||
<data name="Save_again" xml:space="preserve">
|
||||
<value>inviato</value>
|
||||
</data>
|
||||
<data name="Sent" xml:space="preserve">
|
||||
<value>inviato</value>
|
||||
</data>
|
||||
@@ -1398,9 +1377,6 @@
|
||||
<data name="Last_changed_by" xml:space="preserve">
|
||||
<value>ultimo cambiato da </value>
|
||||
</data>
|
||||
<data name="Meter_types_tested" xml:space="preserve">
|
||||
<value>tipi di contatori testati</value>
|
||||
</data>
|
||||
<data name="Notes" xml:space="preserve">
|
||||
<value>note</value>
|
||||
</data>
|
||||
@@ -1572,9 +1548,6 @@
|
||||
<data name="User_code" xml:space="preserve">
|
||||
<value>codice utente</value>
|
||||
</data>
|
||||
<data name="Save_again" xml:space="preserve">
|
||||
<value>inviato</value>
|
||||
</data>
|
||||
<data name="Failed_to_initialize_device_0_1_2" xml:space="preserve">
|
||||
<value>Errore dispositivo '{0}':{1}{2}</value>
|
||||
</data>
|
||||
@@ -1686,8 +1659,8 @@
|
||||
<data name="Protected_procedure" xml:space="preserve">
|
||||
<value>Procedura protetta</value>
|
||||
</data>
|
||||
<data name="Drain" xml:space="preserve">
|
||||
<value>Drenare</value>
|
||||
<data name="Empty" xml:space="preserve">
|
||||
<value>Svuotare</value>
|
||||
</data>
|
||||
<data name="Session" xml:space="preserve">
|
||||
<value>Sessione</value>
|
||||
@@ -1740,14 +1713,17 @@
|
||||
<data name="Correction" xml:space="preserve">
|
||||
<value>correzione</value>
|
||||
</data>
|
||||
<data name="Camera" xml:space="preserve">
|
||||
<value>Fotocamera</value>
|
||||
<data name="Start_the_test_bench" xml:space="preserve">
|
||||
<value>Avvio del banco prova</value>
|
||||
</data>
|
||||
<data name="Finish_the_session_please" xml:space="preserve">
|
||||
<value>Finire la misurazione perfavore</value>
|
||||
</data>
|
||||
<data name="Start_the_test_bench" xml:space="preserve">
|
||||
<value>Avvio del banco prova</value>
|
||||
<data name="Flow" xml:space="preserve">
|
||||
<value>flusso</value>
|
||||
</data>
|
||||
<data name="Pressure" xml:space="preserve">
|
||||
<value>pressione</value>
|
||||
</data>
|
||||
<data name="Flow_adjustment_failed" xml:space="preserve">
|
||||
<value>Errore impostazione del flusso</value>
|
||||
@@ -1761,12 +1737,6 @@
|
||||
<data name="Abort_session" xml:space="preserve">
|
||||
<value>Interrompere</value>
|
||||
</data>
|
||||
<data name="Empty" xml:space="preserve">
|
||||
<value>Svuotare</value>
|
||||
</data>
|
||||
<data name="Empty_the_tank" xml:space="preserve">
|
||||
<value>Svuotare il serbatoio</value>
|
||||
</data>
|
||||
<data name="End_session" xml:space="preserve">
|
||||
<value>Finire il ciclo</value>
|
||||
</data>
|
||||
@@ -1779,16 +1749,55 @@
|
||||
<data name="Start_cycle" xml:space="preserve">
|
||||
<value>Avviare il ciclo</value>
|
||||
</data>
|
||||
<data name="Empty_the_tank" xml:space="preserve">
|
||||
<value>Svuotare il serbatoio</value>
|
||||
</data>
|
||||
<data name="Current" xml:space="preserve">
|
||||
<value>Corrente</value>
|
||||
</data>
|
||||
<data name="Voltage" xml:space="preserve">
|
||||
<value>Voltaggio</value>
|
||||
</data>
|
||||
<data name="Project_number" xml:space="preserve">
|
||||
<value>Numero del progetto</value>
|
||||
</data>
|
||||
<data name="ShowDialog" xml:space="preserve">
|
||||
<value>Mostra dialogo</value>
|
||||
</data>
|
||||
<data name="Meter_types_tested" xml:space="preserve">
|
||||
<value>tipi di contatori testati</value>
|
||||
</data>
|
||||
<data name="Q_from_lph" xml:space="preserve">
|
||||
<value>Qda [l/h]</value>
|
||||
</data>
|
||||
<data name="Q_to_lph" xml:space="preserve">
|
||||
<value>Q a [l/h]</value>
|
||||
</data>
|
||||
<data name="TargetQ" xml:space="preserve">
|
||||
<value>target Q [m3/h]</value>
|
||||
</data>
|
||||
<data name="Target_volume_l_" xml:space="preserve">
|
||||
<value>target volume [l]:</value>
|
||||
</data>
|
||||
<data name="Test_time_s_chdr" xml:space="preserve">
|
||||
<value>test time [s]</value>
|
||||
</data>
|
||||
<data name="AtTemperature_C" xml:space="preserve">
|
||||
<value>@temperatura [°C]</value>
|
||||
</data>
|
||||
<data name="Focus" xml:space="preserve">
|
||||
<value>messa a fuoco</value>
|
||||
</data>
|
||||
<data name="Error_" xml:space="preserve">
|
||||
<value>Errore:</value>
|
||||
</data>
|
||||
<data name="Drain" xml:space="preserve">
|
||||
<value>Drenare</value>
|
||||
</data>
|
||||
<data name="PulsesPerUnit" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="PulsesPerKilogram" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="Units" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
</root>
|
||||
+794
-785
File diff suppressed because it is too large
Load Diff
@@ -2473,5 +2473,13 @@
|
||||
<data name="SaveCommunication" xml:space="preserve">
|
||||
<value>Save Communication</value>
|
||||
</data>
|
||||
|
||||
<data name="PulsesPerUnit" xml:space="preserve">
|
||||
<value>Pulses per unit</value>
|
||||
</data>
|
||||
<data name="PulsesPerKilogram" xml:space="preserve">
|
||||
<value>Pulses per kilogram</value>
|
||||
</data>
|
||||
<data name="Units" xml:space="preserve">
|
||||
<value>Units</value>
|
||||
</data>
|
||||
</root>
|
||||
+587
-578
File diff suppressed because it is too large
Load Diff
@@ -117,9 +117,6 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Activity" xml:space="preserve">
|
||||
<value>Активность</value>
|
||||
</data>
|
||||
<data name="Confirmation" xml:space="preserve">
|
||||
<value>Подтверждение</value>
|
||||
</data>
|
||||
@@ -183,6 +180,12 @@
|
||||
<data name="P_out" xml:space="preserve">
|
||||
<value>P вниз</value>
|
||||
</data>
|
||||
<data name="Q_from" xml:space="preserve">
|
||||
<value>Q от</value>
|
||||
</data>
|
||||
<data name="Q_to" xml:space="preserve">
|
||||
<value>Q до</value>
|
||||
</data>
|
||||
<data name="Reference" xml:space="preserve">
|
||||
<value>Ссылка</value>
|
||||
</data>
|
||||
@@ -240,9 +243,6 @@
|
||||
<data name="Nr" xml:space="preserve">
|
||||
<value>№</value>
|
||||
</data>
|
||||
<data name="Mass" xml:space="preserve">
|
||||
<value>Масса</value>
|
||||
</data>
|
||||
<data name="AddBtnText" xml:space="preserve">
|
||||
<value>Добавить</value>
|
||||
</data>
|
||||
@@ -264,12 +264,6 @@
|
||||
<data name="OkBtnText" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name="Flow" xml:space="preserve">
|
||||
<value>Расход</value>
|
||||
</data>
|
||||
<data name="Pressure" xml:space="preserve">
|
||||
<value>Давление</value>
|
||||
</data>
|
||||
<data name="Username" xml:space="preserve">
|
||||
<value>Имя пользователя</value>
|
||||
</data>
|
||||
@@ -384,12 +378,6 @@
|
||||
<data name="Output_chdr" xml:space="preserve">
|
||||
<value>Выход</value>
|
||||
</data>
|
||||
<data name="Q_from_lph" xml:space="preserve">
|
||||
<value>Q от [л/ч]</value>
|
||||
</data>
|
||||
<data name="Q_to_lph" xml:space="preserve">
|
||||
<value>Q до [л/ч]</value>
|
||||
</data>
|
||||
<data name="Red_type_chdr" xml:space="preserve">
|
||||
<value>Тип сокращ.</value>
|
||||
</data>
|
||||
@@ -399,9 +387,6 @@
|
||||
<data name="Tol_red_pct_chdr" xml:space="preserve">
|
||||
<value>Toler. red. [%]</value>
|
||||
</data>
|
||||
<data name="Test_time_s_chdr" xml:space="preserve">
|
||||
<value>Время теста [с]</value>
|
||||
</data>
|
||||
<data name="Error_while_creating_DB_Reason" xml:space="preserve">
|
||||
<value>Ошибка при создании базы данных. Причина:</value>
|
||||
</data>
|
||||
@@ -525,9 +510,6 @@
|
||||
<data name="RelativeQto" xml:space="preserve">
|
||||
<value>Относительный Q до</value>
|
||||
</data>
|
||||
<data name="TargetQ" xml:space="preserve">
|
||||
<value>Заданный Q [м3/ч]</value>
|
||||
</data>
|
||||
<data name="Compound_meters" xml:space="preserve">
|
||||
<value>Комбинированные счетчики</value>
|
||||
</data>
|
||||
@@ -618,6 +600,9 @@
|
||||
<data name="Switching_flow_detection" xml:space="preserve">
|
||||
<value>Переключение потока</value>
|
||||
</data>
|
||||
<data name="Activity" xml:space="preserve">
|
||||
<value>Активность</value>
|
||||
</data>
|
||||
<data name="Progress" xml:space="preserve">
|
||||
<value>Прогресс</value>
|
||||
</data>
|
||||
@@ -888,7 +873,7 @@
|
||||
<data name="Qrise" xml:space="preserve">
|
||||
<value>Qпониж</value>
|
||||
</data>
|
||||
<data name="Serial_Number" xml:space="preserve">
|
||||
<data name="Serial_number" xml:space="preserve">
|
||||
<value>Серийный номер</value>
|
||||
</data>
|
||||
<data name="State" xml:space="preserve">
|
||||
@@ -939,6 +924,9 @@
|
||||
<data name="Purchase_order" xml:space="preserve">
|
||||
<value>Заказ</value>
|
||||
</data>
|
||||
<data name="Project_number" xml:space="preserve">
|
||||
<value>Номер проекта</value>
|
||||
</data>
|
||||
<data name="Ambient_humidity" xml:space="preserve">
|
||||
<value>Относительная влажность окружающей среды</value>
|
||||
</data>
|
||||
@@ -966,9 +954,6 @@
|
||||
<data name="Start" xml:space="preserve">
|
||||
<value>Старт</value>
|
||||
</data>
|
||||
<data name="AtTemperature_C" xml:space="preserve">
|
||||
<value>температура [°C]</value>
|
||||
</data>
|
||||
<data name="Density" xml:space="preserve">
|
||||
<value>Плотность</value>
|
||||
</data>
|
||||
@@ -996,12 +981,6 @@
|
||||
<data name="Qt" xml:space="preserve">
|
||||
<value>Qt</value>
|
||||
</data>
|
||||
<data name="cold" xml:space="preserve">
|
||||
<value>холодный</value>
|
||||
</data>
|
||||
<data name="hot" xml:space="preserve">
|
||||
<value>горячий</value>
|
||||
</data>
|
||||
<data name="Water" xml:space="preserve">
|
||||
<value>Вода</value>
|
||||
</data>
|
||||
@@ -1110,9 +1089,6 @@
|
||||
<data name="ID" xml:space="preserve">
|
||||
<value>ID</value>
|
||||
</data>
|
||||
<data name="Focus" xml:space="preserve">
|
||||
<value>Сфокусировать</value>
|
||||
</data>
|
||||
<data name="Grab" xml:space="preserve">
|
||||
<value>Захватить</value>
|
||||
</data>
|
||||
@@ -1203,6 +1179,9 @@
|
||||
<data name="Mass_diff_kg_" xml:space="preserve">
|
||||
<value>Mass diff. [kg]:</value>
|
||||
</data>
|
||||
<data name="Mass" xml:space="preserve">
|
||||
<value>Масса</value>
|
||||
</data>
|
||||
<data name="Meter" xml:space="preserve">
|
||||
<value>Счетчик</value>
|
||||
</data>
|
||||
@@ -1242,9 +1221,6 @@
|
||||
<data name="Target_ref_pulses_" xml:space="preserve">
|
||||
<value>Target ref. count:</value>
|
||||
</data>
|
||||
<data name="Target_volume_l_" xml:space="preserve">
|
||||
<value>Заданный объем [л]:</value>
|
||||
</data>
|
||||
<data name="Save_column_widths" xml:space="preserve">
|
||||
<value>Сохранить ширину столбцов</value>
|
||||
</data>
|
||||
@@ -1296,9 +1272,6 @@
|
||||
<data name="Print_watermeter_results" xml:space="preserve">
|
||||
<value>Печатать результатов водосчетчиков</value>
|
||||
</data>
|
||||
<data name="Again" xml:space="preserve">
|
||||
<value>Снова</value>
|
||||
</data>
|
||||
<data name="Sent" xml:space="preserve">
|
||||
<value>Отправлено</value>
|
||||
</data>
|
||||
@@ -1383,9 +1356,6 @@
|
||||
<data name="Last_changed_by" xml:space="preserve">
|
||||
<value>Изменено</value>
|
||||
</data>
|
||||
<data name="Meter_types_tested" xml:space="preserve">
|
||||
<value>Типы испытываемых счетчиков</value>
|
||||
</data>
|
||||
<data name="Notes" xml:space="preserve">
|
||||
<value>Заметки</value>
|
||||
</data>
|
||||
@@ -1557,6 +1527,57 @@
|
||||
<data name="User_code" xml:space="preserve">
|
||||
<value>Код пользователя</value>
|
||||
</data>
|
||||
<data name="Resetting_scales" xml:space="preserve">
|
||||
<value>Сброс весов</value>
|
||||
</data>
|
||||
<data name="Correction" xml:space="preserve">
|
||||
<value>Коррекция</value>
|
||||
</data>
|
||||
<data name="Flow" xml:space="preserve">
|
||||
<value>Расход</value>
|
||||
</data>
|
||||
<data name="Pressure" xml:space="preserve">
|
||||
<value>Давление</value>
|
||||
</data>
|
||||
<data name="Result" xml:space="preserve">
|
||||
<value>Результат</value>
|
||||
</data>
|
||||
<data name="Evaporation" xml:space="preserve">
|
||||
<value>испарение</value>
|
||||
</data>
|
||||
<data name="String1" xml:space="preserve">
|
||||
<value>Строка 1</value>
|
||||
</data>
|
||||
<data name="Current" xml:space="preserve">
|
||||
<value>Current</value>
|
||||
</data>
|
||||
<data name="Voltage" xml:space="preserve">
|
||||
<value>Voltage</value>
|
||||
</data>
|
||||
<data name="cold" xml:space="preserve">
|
||||
<value>холодный</value>
|
||||
</data>
|
||||
<data name="hot" xml:space="preserve">
|
||||
<value>горячий</value>
|
||||
</data>
|
||||
<data name="Test_method2" xml:space="preserve">
|
||||
<value>Метод испытаний 2</value>
|
||||
</data>
|
||||
<data name="Meter_types_tested" xml:space="preserve">
|
||||
<value>Типы испытываемых счетчиков</value>
|
||||
</data>
|
||||
<data name="Short_dercription" xml:space="preserve">
|
||||
<value>Краткое описание</value>
|
||||
</data>
|
||||
<data name="Q_from_lph" xml:space="preserve">
|
||||
<value>Q от [л/ч]</value>
|
||||
</data>
|
||||
<data name="Q_to_lph" xml:space="preserve">
|
||||
<value>Q до [л/ч]</value>
|
||||
</data>
|
||||
<data name="TargetQ" xml:space="preserve">
|
||||
<value>Заданный Q [м3/ч]</value>
|
||||
</data>
|
||||
<data name="P_in_end" xml:space="preserve">
|
||||
<value>P вверх конец</value>
|
||||
</data>
|
||||
@@ -1569,43 +1590,31 @@
|
||||
<data name="P_out_start" xml:space="preserve">
|
||||
<value>P вниз начало</value>
|
||||
</data>
|
||||
<data name="Q_from" xml:space="preserve">
|
||||
<value>Q от</value>
|
||||
<data name="Target_volume_l_" xml:space="preserve">
|
||||
<value>Заданный объем [л]:</value>
|
||||
</data>
|
||||
<data name="Q_to" xml:space="preserve">
|
||||
<value>Q до</value>
|
||||
<data name="Test_time_s_chdr" xml:space="preserve">
|
||||
<value>Время теста [с]</value>
|
||||
</data>
|
||||
<data name="AtTemperature_C" xml:space="preserve">
|
||||
<value>температура [°C]</value>
|
||||
</data>
|
||||
<data name="Focus" xml:space="preserve">
|
||||
<value>Сфокусировать</value>
|
||||
</data>
|
||||
<data name="ROI_Detection_in_ProgressROI_Detection_in_Progress" xml:space="preserve">
|
||||
<value>Продолжается распознавание</value>
|
||||
</data>
|
||||
<data name="String1" xml:space="preserve">
|
||||
<value>Строка 1</value>
|
||||
<data name="Again" xml:space="preserve">
|
||||
<value>Снова</value>
|
||||
</data>
|
||||
<data name="Test_method2" xml:space="preserve">
|
||||
<value>Метод испытаний 2</value>
|
||||
<data name="PulsesPerUnit" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="Short_dercription" xml:space="preserve">
|
||||
<value>Краткое описание</value>
|
||||
<data name="PulsesPerKilogram" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="Correction" xml:space="preserve">
|
||||
<value>Коррекция</value>
|
||||
</data>
|
||||
<data name="Resetting_scales" xml:space="preserve">
|
||||
<value>Сброс весов</value>
|
||||
</data>
|
||||
<data name="Result" xml:space="preserve">
|
||||
<value>Результат</value>
|
||||
</data>
|
||||
<data name="Evaporation" xml:space="preserve">
|
||||
<value>испарение</value>
|
||||
</data>
|
||||
<data name="Current" xml:space="preserve">
|
||||
<value>Current</value>
|
||||
</data>
|
||||
<data name="Voltage" xml:space="preserve">
|
||||
<value>Voltage</value>
|
||||
</data>
|
||||
<data name="Project_number" xml:space="preserve">
|
||||
<value>Номер проекта</value>
|
||||
<data name="Units" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
</root>
|
||||
@@ -117,33 +117,51 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Activity" xml:space="preserve">
|
||||
<value>Činnosť</value>
|
||||
<data name="Error" xml:space="preserve">
|
||||
<value>Chyba</value>
|
||||
</data>
|
||||
<data name="Sensor" xml:space="preserve">
|
||||
<value>Senzor</value>
|
||||
</data>
|
||||
<data name="CancelBtnText" xml:space="preserve">
|
||||
<value>Zrušiť</value>
|
||||
</data>
|
||||
<data name="Compound" xml:space="preserve">
|
||||
<value>Združený</value>
|
||||
<data name="OkBtnText" xml:space="preserve">
|
||||
<value>Áno</value>
|
||||
</data>
|
||||
<data name="Exit" xml:space="preserve">
|
||||
<value>Ukončiť</value>
|
||||
</data>
|
||||
<data name="Compound_meters" xml:space="preserve">
|
||||
<value>Združené vodomery</value>
|
||||
</data>
|
||||
<data name="Error" xml:space="preserve">
|
||||
<value>Chyba</value>
|
||||
<data name="Activity" xml:space="preserve">
|
||||
<value>Činnosť</value>
|
||||
</data>
|
||||
<data name="Compound" xml:space="preserve">
|
||||
<value>Združený</value>
|
||||
</data>
|
||||
<data name="Serial_number" xml:space="preserve">
|
||||
<value>Sériové číslo</value>
|
||||
</data>
|
||||
<data name="Project_number" xml:space="preserve">
|
||||
<value>Číslo projektu</value>
|
||||
</data>
|
||||
<data name="Language" xml:space="preserve">
|
||||
<value>Jazyk</value>
|
||||
</data>
|
||||
<data name="OkBtnText" xml:space="preserve">
|
||||
<value>Áno</value>
|
||||
<data name="Paths" xml:space="preserve">
|
||||
<value>Cesty</value>
|
||||
</data>
|
||||
<data name="Head_was_disabled_by_the_user" xml:space="preserve">
|
||||
<value>Hlavica bola vypnutá používateľom</value>
|
||||
<data name="Meter" xml:space="preserve">
|
||||
<value>Merač</value>
|
||||
</data>
|
||||
<data name="RFID_communication_failed" xml:space="preserve">
|
||||
<value>Zlyhala RFID komunikácia</value>
|
||||
</data>
|
||||
<data name="Head_was_disabled_by_the_user" xml:space="preserve">
|
||||
<value>Hlavica bola vypnutá používateľom</value>
|
||||
</data>
|
||||
<data name="Level" xml:space="preserve">
|
||||
<value>Hladina</value>
|
||||
</data>
|
||||
@@ -156,15 +174,9 @@
|
||||
<data name="Side" xml:space="preserve">
|
||||
<value>Strana</value>
|
||||
</data>
|
||||
<data name="Meter" xml:space="preserve">
|
||||
<value>Merač</value>
|
||||
</data>
|
||||
<data name="Result" xml:space="preserve">
|
||||
<value>Výsledok</value>
|
||||
</data>
|
||||
<data name="Sensor" xml:space="preserve">
|
||||
<value>Senzor</value>
|
||||
</data>
|
||||
<data name="Mute_alarm" xml:space="preserve">
|
||||
<value>Stlmiť sirénu</value>
|
||||
</data>
|
||||
@@ -217,9 +229,6 @@
|
||||
<data name="Production_order_and_serial_numbers" xml:space="preserve">
|
||||
<value>Výrobná zákazka a sériové čísla</value>
|
||||
</data>
|
||||
<data name="Serial_number" xml:space="preserve">
|
||||
<value>Sériové číslo</value>
|
||||
</data>
|
||||
<data name="Serial_numbers" xml:space="preserve">
|
||||
<value>Sériové čísla</value>
|
||||
</data>
|
||||
@@ -235,19 +244,19 @@
|
||||
<data name="Do_you_really_want_to_delete_all_codes_Q" xml:space="preserve">
|
||||
<value>Naozaj chcete vymazať všetky kódy ?</value>
|
||||
</data>
|
||||
<data name="Exit" xml:space="preserve">
|
||||
<value>Ukončiť</value>
|
||||
</data>
|
||||
<data name="Paths" xml:space="preserve">
|
||||
<value>Cesty</value>
|
||||
</data>
|
||||
<data name="Project_number" xml:space="preserve">
|
||||
<value>Číslo projektu</value>
|
||||
</data>
|
||||
<data name="ShowDialog" xml:space="preserve">
|
||||
<value>Zobraz dialóg</value>
|
||||
</data>
|
||||
<data name="SaveCommunication" xml:space="preserve">
|
||||
<value>Ulož komunikáciu</value>
|
||||
</data>
|
||||
<data name="PulsesPerUnit" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="PulsesPerKilogram" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="Units" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
</root>
|
||||
+836
-827
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
After Width: | Height: | Size: 64 KiB |
@@ -73,6 +73,9 @@ namespace TBF.Rig.Ambient.Comet
|
||||
[XmlIgnore]
|
||||
public IList<GNode> GNodes { get; set; }
|
||||
|
||||
[XmlIgnore]
|
||||
public bool IsOffline { get; set; }
|
||||
|
||||
/// Private parameterless constructor invoked by all other (public) constructors
|
||||
AmbientCfg()
|
||||
{
|
||||
@@ -128,15 +131,15 @@ namespace TBF.Rig.Ambient.Comet
|
||||
"Stop bits", /// 4
|
||||
"Handshake", /// 5
|
||||
"Set DTR to one", /// 6
|
||||
"Unit of temperature", /// 7
|
||||
"Units of temperature", /// 7
|
||||
"Temperature limit Lo", /// 8
|
||||
"Temperature limit Hi", /// 9
|
||||
"Default temperature", /// 10
|
||||
"Unit of pressure", /// 11
|
||||
"Units of pressure", /// 11
|
||||
"Pressure limit Lo", /// 12
|
||||
"Pressure limit Hi", /// 13
|
||||
"Default pressure", /// 14
|
||||
"Unit of rel. humidity", /// 15
|
||||
"Units of rel. humidity", /// 15
|
||||
"Rel. humidity limit Lo", /// 16
|
||||
"Rel. humidity limit Hi", /// 17
|
||||
"Default retl. humidity", /// 18
|
||||
|
||||
@@ -72,6 +72,9 @@ namespace TBF.Rig.Ambient.Greco
|
||||
[XmlIgnore]
|
||||
public IList<GNode> GNodes { get; set; }
|
||||
|
||||
[XmlIgnore]
|
||||
public bool IsOffline { get; set; }
|
||||
|
||||
/// Private parameterless constructor invoked by all other (public) constructors
|
||||
AmbientCfg()
|
||||
{
|
||||
|
||||
@@ -67,11 +67,13 @@ namespace TBF.Rig.BuiltIn.PumpTandem
|
||||
if (pump1 is BuiltIn.Pump.Pump) { mask1 = (pump1 as BuiltIn.Pump.Pump).Mask; }
|
||||
else if (pump1 is Danfoss.VLT2800.Pump) { mask1 = (pump1 as Danfoss.VLT2800.Pump).Mask; }
|
||||
else if (pump1 is Modbus.PumpFM.DanfossVLT.Pump) { mask1 = (pump1 as Modbus.PumpFM.DanfossVLT.Pump).Mask; }
|
||||
else if (pump1 is Modbus.PumpFM.Grundfoss.Pump) { mask1 = (pump1 as Modbus.PumpFM.Grundfoss.Pump).Mask; }
|
||||
else { mask1 = 0; }
|
||||
|
||||
if (pump2 is BuiltIn.Pump.Pump) { mask2 = (pump2 as BuiltIn.Pump.Pump).Mask; }
|
||||
else if (pump2 is Danfoss.VLT2800.Pump) { mask2 = (pump2 as Danfoss.VLT2800.Pump).Mask; }
|
||||
else if (pump2 is Modbus.PumpFM.DanfossVLT.Pump) { mask2 = (pump2 as Modbus.PumpFM.DanfossVLT.Pump).Mask; }
|
||||
else if (pump2 is Modbus.PumpFM.Grundfoss.Pump) { mask2 = (pump2 as Modbus.PumpFM.Grundfoss.Pump).Mask; }
|
||||
else { mask2 = 0; }
|
||||
|
||||
log.FatalFormat("{0} initialized: {1}", Name, this);
|
||||
|
||||
@@ -44,6 +44,7 @@ namespace TBF.Rig.BuiltIn.PumpTandem
|
||||
if (TbfComponents.CmpntFactoryFromClassName(cmpnt.ClassName) is BuiltIn.Pump.PumpFactory ||
|
||||
TbfComponents.CmpntFactoryFromClassName(cmpnt.ClassName) is Danfoss.VLT2800.PumpFactory ||
|
||||
TbfComponents.CmpntFactoryFromClassName(cmpnt.ClassName) is Modbus.PumpFM.DanfossVLT.Factory ||
|
||||
TbfComponents.CmpntFactoryFromClassName(cmpnt.ClassName) is Modbus.PumpFM.Grundfoss.Factory ||
|
||||
TbfComponents.CmpntFactoryFromClassName(cmpnt.ClassName) is BuiltIn.PumpTandem.PumpFactory)
|
||||
{
|
||||
pump1ComboBox.Items.Add(cmpnt.Name);
|
||||
|
||||
@@ -120,6 +120,7 @@ namespace TBF.Rig.BuiltIn
|
||||
if (valve is PumpTandem.Pump) point.MasksOpen |= (valve as PumpTandem.Pump).Mask;
|
||||
if (valve is Danfoss.VLT2800.Pump) point.MasksOpen |= (valve as Danfoss.VLT2800.Pump).Mask;
|
||||
if (valve is Modbus.PumpFM.DanfossVLT.Pump) point.MasksOpen |= (valve as Modbus.PumpFM.DanfossVLT.Pump).Mask;
|
||||
if (valve is Modbus.PumpFM.Grundfoss.Pump) point.MasksOpen |= (valve as Modbus.PumpFM.Grundfoss.Pump).Mask;
|
||||
}
|
||||
point.MasksClose = 0;
|
||||
foreach (var valve in point.VClose)
|
||||
@@ -129,6 +130,7 @@ namespace TBF.Rig.BuiltIn
|
||||
if (valve is PumpTandem.Pump) point.MasksClose |= (valve as PumpTandem.Pump).Mask;
|
||||
if (valve is Danfoss.VLT2800.Pump) point.MasksClose |= (valve as Danfoss.VLT2800.Pump).Mask;
|
||||
if (valve is Modbus.PumpFM.DanfossVLT.Pump) point.MasksClose |= (valve as Modbus.PumpFM.DanfossVLT.Pump).Mask;
|
||||
if (valve is Modbus.PumpFM.Grundfoss.Pump) point.MasksClose |= (valve as Modbus.PumpFM.Grundfoss.Pump).Mask;
|
||||
}
|
||||
point.TimeSec += timeShift;
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ namespace TBF.Rig.BuiltIn
|
||||
if (vlv is Pump.Pump && ((vlv as Pump.Pump).Mask & changed) == 0) continue;
|
||||
if (vlv is Danfoss.VLT2800.Pump && ((vlv as Danfoss.VLT2800.Pump).Mask & changed) == 0) continue;
|
||||
if (vlv is Modbus.PumpFM.DanfossVLT.Pump && ((vlv as Modbus.PumpFM.DanfossVLT.Pump).Mask & changed) == 0) continue;
|
||||
if (vlv is Modbus.PumpFM.Grundfoss.Pump && ((vlv as Modbus.PumpFM.Grundfoss.Pump).Mask & changed) == 0) continue;
|
||||
|
||||
if ((vlv != null) && (vlv.Delay > max)) max = vlv.Delay;
|
||||
}
|
||||
@@ -45,6 +46,7 @@ namespace TBF.Rig.BuiltIn
|
||||
if (vlv is Pump.Pump && ((vlv as Pump.Pump).Mask & changed) == 0) continue;
|
||||
if (vlv is Danfoss.VLT2800.Pump && ((vlv as Danfoss.VLT2800.Pump).Mask & changed) == 0) continue;
|
||||
if (vlv is Modbus.PumpFM.DanfossVLT.Pump && ((vlv as Modbus.PumpFM.DanfossVLT.Pump).Mask & changed) == 0) continue;
|
||||
if (vlv is Modbus.PumpFM.Grundfoss.Pump && ((vlv as Modbus.PumpFM.Grundfoss.Pump).Mask & changed) == 0) continue;
|
||||
|
||||
if ((vlv != null) && (vlv.Delay > max)) max = vlv.Delay;
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
/// Copyright (c) 2021-2023 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using Common;
|
||||
using log4net;
|
||||
using TBF.Rig.Sequences;
|
||||
|
||||
@@ -12,6 +13,10 @@ namespace TBF.Rig.ControlBoard.Uni
|
||||
private static readonly ILog log = LogManager.GetLogger(typeof(FlyingStartStopTestOp));
|
||||
public override string ToString() { return string.Format("FlyingStartStopTestOp()"); }
|
||||
|
||||
private DateTime startTimeForSimulation;
|
||||
private bool simulationTimerStarted = false;
|
||||
|
||||
|
||||
/// Arguments of the constructor
|
||||
readonly UniCB uniCB;
|
||||
readonly double qFrom;
|
||||
@@ -123,6 +128,28 @@ namespace TBF.Rig.ControlBoard.Uni
|
||||
{
|
||||
log.DebugFormat("Op.Run() opState={0}", opState);
|
||||
|
||||
//Simulation of processing time 25 seconds
|
||||
if (uniCB.DebugLevel == DebugMode.Simulate)
|
||||
{
|
||||
if (opState == OpState.StartingTest)
|
||||
{
|
||||
startTimeForSimulation = DateTime.Now;
|
||||
simulationTimerStarted = false;
|
||||
}
|
||||
if (opState == OpState.TestInProgress)
|
||||
{
|
||||
if (!simulationTimerStarted)
|
||||
{
|
||||
startTimeForSimulation = DateTime.Now;
|
||||
simulationTimerStarted = true;
|
||||
}
|
||||
else if (DateTime.Now - startTimeForSimulation > TimeSpan.FromSeconds(25))
|
||||
{
|
||||
return Event.TestCompleted;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (opState)
|
||||
{
|
||||
case OpState.StartingTest:
|
||||
|
||||
@@ -5,6 +5,7 @@ using System;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using Common;
|
||||
using log4net;
|
||||
using TBF.Rig.GenericDevices;
|
||||
|
||||
@@ -25,6 +26,9 @@ namespace TBF.Rig.ControlBoard.Uni
|
||||
readonly int pulsesCount; /// Number of reference pulses for a complete test
|
||||
readonly bool withDiverter; /// Test with diverter (and scale)
|
||||
|
||||
private DateTime startTimeForSimulation;
|
||||
private bool simulationTimerStarted = false;
|
||||
|
||||
///
|
||||
/// Internal state of this operation
|
||||
///
|
||||
@@ -183,6 +187,28 @@ namespace TBF.Rig.ControlBoard.Uni
|
||||
{
|
||||
log.DebugFormat("Run() opState={0}", opState);
|
||||
|
||||
//Simulation of processing time 25 seconds
|
||||
if (uniCB.DebugLevel == DebugMode.Simulate)
|
||||
{
|
||||
if (opState == OpState.StartingTest)
|
||||
{
|
||||
startTimeForSimulation = DateTime.Now;
|
||||
simulationTimerStarted = false;
|
||||
}
|
||||
if (opState == OpState.TestInProgress)
|
||||
{
|
||||
if (!simulationTimerStarted)
|
||||
{
|
||||
startTimeForSimulation = DateTime.Now;
|
||||
simulationTimerStarted = true;
|
||||
}
|
||||
else if (DateTime.Now - startTimeForSimulation > TimeSpan.FromSeconds(25))
|
||||
{
|
||||
return Event.TestCompleted;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (opState)
|
||||
{
|
||||
case OpState.StartingTest:
|
||||
|
||||
@@ -66,6 +66,9 @@ namespace TBF.Rig.ControlBoard.Uni
|
||||
[XmlIgnore]
|
||||
public IList<GEdge> EdgesToSet { get; set; }
|
||||
|
||||
[XmlIgnore]
|
||||
public bool IsOffline { get; set; }
|
||||
|
||||
/// Private parameterless constructor invoked by all other (public) constructors
|
||||
UniCBCfg()
|
||||
{
|
||||
|
||||
@@ -57,6 +57,9 @@ namespace TBF.Rig.DataEntry.Combined
|
||||
public CycleBeginningForm(int compoundWaterMetersCount, bool remarksEnabled)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.Icon = Properties.Resources.TBF_icon;
|
||||
|
||||
ControlBox = false;
|
||||
|
||||
TextBoxesCount = 3;
|
||||
|
||||
@@ -33,6 +33,9 @@ namespace TBF.Rig.DataEntry.Combined
|
||||
public CycleEndForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.Icon = Properties.Resources.TBF_icon;
|
||||
|
||||
ControlBox = false;
|
||||
|
||||
MainStateText = new string[TBF.Data.CompoundWMsCount];
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user