From e7431ce6e2342386f05fae9df6ef6597f6a70727 Mon Sep 17 00:00:00 2001 From: Milan Hanajik Date: Fri, 1 May 2020 10:44:28 +0200 Subject: [PATCH] DataStreamInterface added. --- .gitignore | 3 +- DataStreamInterface/DataFrame.cs | 23 ++++ .../DataStreamInterface.csproj | 61 ++++++++++ ...interface for datastream water meters.docx | Bin 0 -> 20551 bytes DataStreamInterface/Enums.cs | 95 +++++++++++++++ DataStreamInterface/IDataStreamMeter.cs | 114 ++++++++++++++++++ .../Properties/AssemblyInfo.cs | 38 ++++++ TBF.sln | 12 ++ clean.bat | 2 + 9 files changed, 347 insertions(+), 1 deletion(-) create mode 100644 DataStreamInterface/DataFrame.cs create mode 100644 DataStreamInterface/DataStreamInterface.csproj create mode 100644 DataStreamInterface/Doc/Software interface for datastream water meters.docx create mode 100644 DataStreamInterface/Enums.cs create mode 100644 DataStreamInterface/IDataStreamMeter.cs create mode 100644 DataStreamInterface/Properties/AssemblyInfo.cs diff --git a/.gitignore b/.gitignore index 96b6c986f..e4e7016bd 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ Common/bin/ Common/obj/ Config/bin/ Config/obj/ +DataStreamInterface/bin/ +DataStreamInterface/obj/ Decrypt/bin/ Decrypt/obj/ DeviceTest/bin/ @@ -40,7 +42,6 @@ Users/bin/ Users/obj/ UserManagement/bin/ UserManagement/obj/ -Doc/ .vs/ *.suo *.bak diff --git a/DataStreamInterface/DataFrame.cs b/DataStreamInterface/DataFrame.cs new file mode 100644 index 000000000..6338df650 --- /dev/null +++ b/DataStreamInterface/DataFrame.cs @@ -0,0 +1,23 @@ +/// +/// Copyright (c) 2020 Sensus Slovensko a.s. +/// +using System; + +namespace DataStreamInterface +{ + public class DataFrame + { + public readonly UInt64 ID; /// Frame ID + public readonly double Time; /// Time stamp in units of time + public readonly double Volume; /// Volume in units of volume + public readonly double[] Quantity; /// An array of optional quantities in their respective units + + public DataFrame(UInt64 id, double time, double volume, double[] quantity) + { + ID = id; + Time = time; + Volume = volume; + Quantity = quantity; + } + } +} diff --git a/DataStreamInterface/DataStreamInterface.csproj b/DataStreamInterface/DataStreamInterface.csproj new file mode 100644 index 000000000..49ae9f254 --- /dev/null +++ b/DataStreamInterface/DataStreamInterface.csproj @@ -0,0 +1,61 @@ + + + + + Debug + AnyCPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28} + Library + Properties + DataStreamInterface + DataStreamInterface + v4.0 + 512 + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + Always + + + + + \ No newline at end of file diff --git a/DataStreamInterface/Doc/Software interface for datastream water meters.docx b/DataStreamInterface/Doc/Software interface for datastream water meters.docx new file mode 100644 index 0000000000000000000000000000000000000000..09770fbc19d565aefb51f5dadbd9c01f5cf65905 GIT binary patch literal 20551 zcmeFZW0W9KmM)sM?X0wI+s;bcwpnT0wr#tTm9}l$yjk7TGjrGU`|*C?iM8U3h=Ub7 z&ep+>BQFIEf&u^r00961Kmfq2D1K}Y2mnwB3IKo%00E>aWNYJOY~!S>o; zZS^A`1c*Er0O-5?{~rGjw?Jd!m_ zQvyTHP%G~CZY}W| zwR8PHdIdYkCbGia$vT+Go0cS?idi*QpJPQWj^YyP4+BBBH^EpK zw$9{KA+Rp(Y*;e#9K^_o*UA{DyO!t<*<5YRh0-yG8V>FG@<>?T5_f$Pp>ZZQPOD0h z@-8_&G$C4|PKR@5)d=In?D*hh!{)gp@IaJiCT@0Uh%H#VFJuai9T$LcASn>FM6RN0 z{pTMB6u)}80#Nq3P?=zlVrFu=gnn29miCnJjX*h$$8%P+$Z3+i@2$QyDU^GD%Effs z6W{-N3UDAgh;4DZvlx!<{?^B@FJJ)q|4UQx;;>q-zQs@WTM?nZHC5Na*vgTP_Amag zhWCYsoo-<$Q?14^d}t&C9?6c5x`R`hfvnQ;b{P*~TUGp8N}Jtc!- zLDZ0WkYRLhUM5;d8lOkuhnReNSN>lF;~T}=&WI~cbcE;1 zRBjW+bMRL2@oCC$SFltaYlB5@$M&1_Q*R*g3$JS~yU4&zn-nAQC?K4BV~Yz=o8d

GVdD0Mx%!v*MZ|Nt3yIHo+T3Mcwds2p7Aux_ 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 z zM5AM?TfhH>sFHfXq8fE^f_0M~!JX_=l%*MLnpW*X#7)Y4kZf8~C)$P)0^<<3w4;Z* z4r|JFbgauOdna(zrvgQvsa~Gr6TR0{PcC4zl4tYrG_@2l4Hp`*FX3ie^>Rgx*d_4Eudg{Wtovo=bPup1G6&NEo#vwUu zB<h1SoKwlQu-y6i zEv}5;;)?t~=2ZTFO{Y{UtXTxmV|3%6;|_R6EiU4j0p~YTHB!ynSk-2f_Fxr@#*dI1 zUUd&tYvb#=ZtYAx;nz!}F`T(U{SM9ZR}w@U>-JB2LF2XR*K@4Z-OVzG*(EAVLQG~R z0cDCZ-S)3HF>Xhmd# zjovE=Bt4wc$+P zsd@3hn&kGemMI{w9s0>vdx-2~GSM}|9^UD^Eo-v%dLv)$si^LEIhv-|#ynqZV8(Y` zzKseoOmxIO&!5<88bw`KQpBXBA?$I^p)o5CDL0I}$cA((o)+G8CWX#r%;GPJH}v#+pj_qGDkg zK0QQh_Tc7b4G|mjV1_+n9uD_*BOm<{Dl-D?v5Q8;Y4S*r{ni9BNpV|pFB7<7y-Yvp zjiW|J6ad`Sd_EkuswFMCg^ucK*s62@@6G^DAf~+@x)>MhvIJk2B?9T|@y^9A zM(Lx1V1GIs8L673*8M=L#7!NAkTI7%dWLz5l zj>OasuBlc)59Sltq%^k#&5u`#)#H?faV`4zSh6+EeM3)f`IZbL2xxT`1#*f-_8@qY<~aUuO;afKJFMY9 z6(&N!B^ZZ1Q}0`bEarA%yX@0U$>~lxmG!ut?Z;x(Vv?!Nwx{J2phB}0%0)8AD;ccd z=!v%cYRF(qYBW962e+mMd4;z&dRVYgc{)adAl)E)l#K+MAss=#e1ymtKN^&!?%9xJ zDPn&YNB#9^6&*pUzQZA)y~!P3$wh9FpiM)K3#M44asPndZ1!mv!l+OORi)vH+yIs((fdn&lM`4Qd51;%N zii#CW&@LI5C2g0rjA82$#llOj?*GZRd(3Ozl<-XO`m|T`UOIIu1h^N3WXTK2RWHwJ zQ&FNok>};@Uil#A)7;1QZ*{qj78mH^n}z$|od|^g-c8WAv-{s(!grJX$C3H7&t{Dt zrVDg^nMa>XiN*GLu z)Y?gShIUj#0lZpNeNl6vw4qlOVW^Mnm0|@X+e$B+8DSS4loS|U!gQ=NCN{{!g5C0n zFDebql{e^^g$g1bIMim@h|u@yub)#E*qVCC&`D8(s^ua&lXNxYOoO$ko-pq~%Mjat zUOBH17Qpq00w)CA2#8qX=)xTUsR_0V95o~m%X;1;;y1z82F`!cXZ@djWjb(4XhHXz z0K00@_)10{-iMowo+QLENefnfPI}*J%@Q|l?_tfBxgt{LS6J?G$O_!ZXUYrw!hDbG zs`Z;ktDGg*o^PsJEI9x9&2YgD`FE|}w}c-$Qllf?%$O~{=y|#QzWq1(Zn*Fmto7bF z>vNHYLP3-TOEc%8<=?bKP1}CA>52b;xXtG-pPbwJ&be1^e(bRiG2d2tD4_dh%Zj7- z4>hlT`T?!F9{nT|AvnN;CktAQ|xyy_M3%tWW?6Pn8XIj0c z-?U!+*V-x>d0l<+%}x6fd;4V89{Muthd(f~Ax#rTCS72OhW&UlSdxIzSPm--@J2NN z_0%MoMi9LUnD3CzP(s&;dYlZh##6vGb@&dKK{pBgFcE}VVw_lx7D3mJzKjo{{kAGp zJNlwNbR*CgY9NfT(Sc0^Aypjc+EM3T5t + /// Get state of the connected data stream meter + /// + /// Current state of the meter + /// true when successful + bool GetState(out int state, out string parameter); + + ///

+ /// Set state of the connected data stream meter + /// + /// Required state of the meter + /// true when successful + bool SetState(int state, string parameter); + + /// + /// Establish connection with a data stream meter + /// + /// Connection parameters + /// Meter ID (e.g. serial number) + /// true when successful + bool OpenConnection(string connectionParameters, out string meterId); + + /// + /// Closes connection with the data stream meter + /// + /// true when successful + bool CloseConnection(); + + /// + /// Stars saving measurement results into internal data structures of the component. + /// Each data frame obtains a unique ID. + /// The very first data fraim obrains ID = 0. + /// + /// true when successful + bool StartMeasurement(); + + /// + /// Stops saving measurement results into internal data structures of the component. + /// Updates ID of the last date frame received from the meter. + /// + /// ID of the last date frame + /// true when successful + bool StopMeasurement(out UInt64 lastFrameID); + + ///------------------------------------------------ + /// Units of time, volume and optional quantities + ///------------------------------------------------ + + /// + /// Returns time units (s, ms, ...) + /// + Unit GetTimeUnits(); + + /// + /// Returns units of volume (ml, l, ...) + /// + Unit GetVolumeUnits(); + + ///----------------------------------------------- + /// Ooptional quantities: count, units, captions + ///----------------------------------------------- + + /// + /// Returns count of optional quantities in each data frame + /// + /// Count of optional quantities + int GetQuantitiesCount(); + + /// + /// Returns units of the specified quantity + /// + /// Zero based quantity number 0 .. quantites count-1 + Unit GetQuantityUnits(int quanityNr); + + /// + /// Returns caption of the specified quantity + /// + /// Zero based quantity number 0 .. quantites count-1 + string GetQuantityCaption(int quanityNr); + + ///--------------------------- + /// Datastream data exchange + ///--------------------------- + + /// + /// Retuns 'count' data frames starting with data frame with ID = 'id' + /// + /// First frame ID + /// Frames count + /// Selected data frames + DataFrame[] GetFrames(UInt64 id, int count); + + /// + /// Returns ID of the data frame where time equals or exceeds the specified time. + /// When time of the first frame (ID=0) is larger then specified time, function returns 0. + /// + /// Time + /// ID of the data frame at or after the pecified time + UInt64 GetID(double time); + } +} diff --git a/DataStreamInterface/Properties/AssemblyInfo.cs b/DataStreamInterface/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..7e172011f --- /dev/null +++ b/DataStreamInterface/Properties/AssemblyInfo.cs @@ -0,0 +1,38 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Resources; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("DataStreamInterface")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("DataStreamInterface")] +[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("e44458ee-b635-4d7c-a763-20054399e817")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: NeutralResourcesLanguageAttribute("en")] diff --git a/TBF.sln b/TBF.sln index 777120a0e..8d202f8ac 100644 --- a/TBF.sln +++ b/TBF.sln @@ -67,6 +67,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EventViewer", "EventViewer\ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common", "Common\Common.csproj", "{C8939821-BA5C-4988-A3D0-BF53B74865C7}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataStreamInterface", "DataStreamInterface\DataStreamInterface.csproj", "{7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -291,6 +293,16 @@ Global {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Release|Mixed Platforms.Build.0 = Release|Any CPU {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Release|x86.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Debug|x86.ActiveCfg = Debug|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Release|Any CPU.Build.0 = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Release|x86.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/clean.bat b/clean.bat index bc5931579..1e408ae9a 100644 --- a/clean.bat +++ b/clean.bat @@ -2,6 +2,8 @@ rmdir /s /q Common\bin rmdir /s /q Common\obj rmdir /s /q Config\bin rmdir /s /q Config\obj +rmdir /s /q DataStreamInterface\bin +rmdir /s /q DataStreamInterface\obj rmdir /s /q Decrypt\bin rmdir /s /q Decrypt\obj rmdir /s /q DeviceTest\bin