From 0bf0f884f666f46cee662a465f3be680a84e7155 Mon Sep 17 00:00:00 2001 From: ig Date: Thu, 23 Feb 2023 07:55:15 +0100 Subject: [PATCH] add Units --- csharp/InnovEnergy.sln | 7 ++++ .../net6.0/API.csproj.AssemblyReference.cache | Bin 1449 -> 0 bytes .../BmsTunnel.csproj.CoreCompileInputs.cache | 1 - .../SaliMax.csproj.AssemblyReference.cache | Bin 6 -> 0 bytes .../Ampt.csproj.AssemblyReference.cache | Bin 73386 -> 0 bytes .../Adam6060.csproj.AssemblyReference.cache | Bin 6 -> 0 bytes .../TruConvert.csproj.AssemblyReference.cache | Bin 70487 -> 0 bytes .../DBus.csproj.AssemblyReference.cache | Bin 6 -> 0 bytes .../Modbus.csproj.AssemblyReference.cache | Bin 6 -> 0 bytes .../SysTools.csproj.AssemblyReference.cache | Bin 70487 -> 0 bytes .../Time.csproj.AssemblyReference.cache | Bin 6 -> 0 bytes csharp/lib/Units/Current.cs | 34 +++++++++++++++++ csharp/lib/Units/Power.cs | 31 ++++++++++++++++ csharp/lib/Units/Resistance.cs | 35 ++++++++++++++++++ csharp/lib/Units/Units.csproj | 9 +++++ csharp/lib/Units/Voltage.cs | 32 ++++++++++++++++ .../VeDBus.csproj.AssemblyReference.cache | Bin 6 -> 0 bytes .../VictronVRM.csproj.AssemblyReference.cache | Bin 437 -> 0 bytes 18 files changed, 148 insertions(+), 1 deletion(-) delete mode 100644 csharp/app/API/obj/Debug/net6.0/API.csproj.AssemblyReference.cache delete mode 100644 csharp/app/BmsTunnel/obj/Debug/net6.0/BmsTunnel.csproj.CoreCompileInputs.cache delete mode 100644 csharp/app/SaliMax/obj/Debug/net6.0/SaliMax.csproj.AssemblyReference.cache delete mode 100644 csharp/lib/Devices/AMPT/obj/Debug/net6.0/Ampt.csproj.AssemblyReference.cache delete mode 100644 csharp/lib/Devices/Adam6060/obj/Debug/net6.0/Adam6060.csproj.AssemblyReference.cache delete mode 100644 csharp/lib/Devices/Trumpf/TruConvert/obj/Debug/net6.0/TruConvert.csproj.AssemblyReference.cache delete mode 100644 csharp/lib/Protocols/DBus/obj/Debug/net6.0/DBus.csproj.AssemblyReference.cache delete mode 100644 csharp/lib/Protocols/Modbus/obj/Debug/net6.0/Modbus.csproj.AssemblyReference.cache delete mode 100644 csharp/lib/SysTools/obj/Debug/net6.0/SysTools.csproj.AssemblyReference.cache delete mode 100644 csharp/lib/Time/obj/Debug/net6.0/Time.csproj.AssemblyReference.cache create mode 100644 csharp/lib/Units/Current.cs create mode 100644 csharp/lib/Units/Power.cs create mode 100644 csharp/lib/Units/Resistance.cs create mode 100644 csharp/lib/Units/Units.csproj create mode 100644 csharp/lib/Units/Voltage.cs delete mode 100644 csharp/lib/Victron/VeDBus/obj/Debug/net6.0/VeDBus.csproj.AssemblyReference.cache delete mode 100644 csharp/lib/Victron/VictronVRM/obj/Debug/net6.0/VictronVRM.csproj.AssemblyReference.cache diff --git a/csharp/InnovEnergy.sln b/csharp/InnovEnergy.sln index 71a6f912e..cef15dbc8 100644 --- a/csharp/InnovEnergy.sln +++ b/csharp/InnovEnergy.sln @@ -91,6 +91,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Backend", "app\Backend\Back EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FossilTui", "app\FossilTui\FossilTui.csproj", "{C40264BB-C834-4C48-9B3F-6BEF8F37C0ED}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Units", "lib\Units\Units.csproj", "{C04FB6DA-23C6-46BB-9B21-8F4FBA32FFF7}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -240,6 +242,10 @@ Global {C40264BB-C834-4C48-9B3F-6BEF8F37C0ED}.Debug|Any CPU.Build.0 = Debug|Any CPU {C40264BB-C834-4C48-9B3F-6BEF8F37C0ED}.Release|Any CPU.ActiveCfg = Release|Any CPU {C40264BB-C834-4C48-9B3F-6BEF8F37C0ED}.Release|Any CPU.Build.0 = Release|Any CPU + {C04FB6DA-23C6-46BB-9B21-8F4FBA32FFF7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C04FB6DA-23C6-46BB-9B21-8F4FBA32FFF7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C04FB6DA-23C6-46BB-9B21-8F4FBA32FFF7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C04FB6DA-23C6-46BB-9B21-8F4FBA32FFF7}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {CF4834CB-91B7-4172-AC13-ECDA8613CD17} = {145597B4-3E30-45E6-9F72-4DD43194539A} @@ -284,5 +290,6 @@ Global {A56F58C2-B265-435B-A985-53B4D6F49B1A} = {145597B4-3E30-45E6-9F72-4DD43194539A} {C40264BB-C834-4C48-9B3F-6BEF8F37C0ED} = {145597B4-3E30-45E6-9F72-4DD43194539A} {F162D50B-4B99-496D-8354-1FB68E992B2D} = {D846B46B-46FF-4EF7-9B9D-DDBEF9533C56} + {C04FB6DA-23C6-46BB-9B21-8F4FBA32FFF7} = {AD5B98A8-AB7F-4DA2-B66D-5B4E63E7D854} EndGlobalSection EndGlobal diff --git a/csharp/app/API/obj/Debug/net6.0/API.csproj.AssemblyReference.cache b/csharp/app/API/obj/Debug/net6.0/API.csproj.AssemblyReference.cache deleted file mode 100644 index 542003cc53c9490140f012568d04f231af348d10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1449 zcmZQ$WMN=nU@X$l$j?pH&(6%%PtH$C)z8e!%P&jKOD#&T)Xz&T*H13aNGvMQPb?_V z_b*7z3oFQTPAw|QOv_A8EJ-a6PAw`+Ez(cQ%+q&CO)5FC{03kr8My zr*&||bgtVRjEszuI1L7?1S*CDkWLU_tcTDHU;!i|0H;|x3Sp^5#hLkewuX8JAgH6@ zT$)o-T9j&=ms(mlP&E=o{);=ouQC>E~o7fx@G>Brz`~u_(m|7%stqK2VkL zfMEEr*(o&dCMY1d5Yk|ua{w(bLG~z+jnn7O2+hb|1v`ag&t?+xEYP1tiRF4prFkhi zsqyJWsi}GTKo9DfzB$kw<7GBFI&eNsV6fYN6dALJs)Bfl&Cf3@tphL-=^-|75Vp}a=)6^!7MFqQ!yp=ySGmL z`8(r)@cG(_5}Pgtep5enCi3Mulcg`tyWQKgO)zxgDUPet*PfDNSiDm=pKH_Q=}&5> z$vfEy^ZK3Eu0AAXyr+b>rR@I=kr=h`;_2rP)K6jrMQxMXtJu%gr(QC~;q)^iCc%NL zXK8LmIN4el8JVRfnx>=~nvH051Rt diff --git a/csharp/lib/Devices/AMPT/obj/Debug/net6.0/Ampt.csproj.AssemblyReference.cache b/csharp/lib/Devices/AMPT/obj/Debug/net6.0/Ampt.csproj.AssemblyReference.cache deleted file mode 100644 index 890d617e60970bca3434de06689df7a5b718f969..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73386 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 diff --git a/csharp/lib/Devices/Adam6060/obj/Debug/net6.0/Adam6060.csproj.AssemblyReference.cache b/csharp/lib/Devices/Adam6060/obj/Debug/net6.0/Adam6060.csproj.AssemblyReference.cache deleted file mode 100644 index 204fdef644eaa2e6de09b015f5f4588ab58aa14d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6 LcmZQ$WB>vH051Rt diff --git a/csharp/lib/Devices/Trumpf/TruConvert/obj/Debug/net6.0/TruConvert.csproj.AssemblyReference.cache b/csharp/lib/Devices/Trumpf/TruConvert/obj/Debug/net6.0/TruConvert.csproj.AssemblyReference.cache deleted file mode 100644 index d1e398d3c489c3823860b3009bcba42383fa347d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70487 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 diff --git a/csharp/lib/Protocols/Modbus/obj/Debug/net6.0/Modbus.csproj.AssemblyReference.cache b/csharp/lib/Protocols/Modbus/obj/Debug/net6.0/Modbus.csproj.AssemblyReference.cache deleted file mode 100644 index 204fdef644eaa2e6de09b015f5f4588ab58aa14d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6 LcmZQ$WB>vH051Rt diff --git a/csharp/lib/SysTools/obj/Debug/net6.0/SysTools.csproj.AssemblyReference.cache b/csharp/lib/SysTools/obj/Debug/net6.0/SysTools.csproj.AssemblyReference.cache deleted file mode 100644 index d1e398d3c489c3823860b3009bcba42383fa347d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70487 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 diff --git a/csharp/lib/Units/Current.cs b/csharp/lib/Units/Current.cs new file mode 100644 index 000000000..e313271b8 --- /dev/null +++ b/csharp/lib/Units/Current.cs @@ -0,0 +1,34 @@ +namespace InnovEnergy.Units; + +public readonly struct Current +{ + public static String Unit => "A"; + public static String Symbol => "I"; + + public Decimal Value { get; } + + public Current(Decimal value) => Value = value; + + public override String ToString() => Value + Unit; + + + // parallel + public static Current operator |(Current left, Current right) => new Current(left.Value + right.Value); + + // scalar multiplication + public static Current operator *(Decimal scalar , Current current) => new Current(scalar * current.Value); + public static Current operator *(Current current, Decimal scalar) => new Current(scalar * current.Value); + public static Current operator *(Int32 scalar , Current current) => new Current(scalar * current.Value); + public static Current operator *(Current current, Int32 scalar) => new Current(scalar * current.Value); + public static Current operator /(Current current, Decimal scalar) => new Current(current.Value / scalar); + public static Current operator /(Current current, Int32 scalar) => new Current(current.Value / scalar); + + // P=UI + public static Power operator *(Current current, Voltage voltage) => new Power(current.Value * voltage.Value); + + // U=RI + public static Voltage operator *(Current current, Resistance resistance) => new Voltage(resistance.Value* current.Value); + + + +} \ No newline at end of file diff --git a/csharp/lib/Units/Power.cs b/csharp/lib/Units/Power.cs new file mode 100644 index 000000000..d6e88bccc --- /dev/null +++ b/csharp/lib/Units/Power.cs @@ -0,0 +1,31 @@ +namespace InnovEnergy.Units; + +public readonly struct Power +{ + public static String Unit => "W"; + public static String Symbol => "P"; + + public Decimal Value { get; } + + public Power(Decimal value) => Value = value; + + public override String ToString() => Value + Unit; + + + // parallel + public static Power operator |(Power left, Power right) => new Power(left.Value + right.Value); + // series + public static Power operator +(Power left, Power right) => new Power(left.Value + right.Value); + + // scalar multiplication + public static Power operator *(Decimal scalar, Power power ) => new Power(scalar * power.Value); + public static Power operator *(Power power , Decimal scalar) => new Power(scalar * power.Value); + public static Power operator *(Int32 scalar, Power power ) => new Power(scalar * power.Value); + public static Power operator *(Power power , Int32 scalar) => new Power(scalar * power.Value); + public static Power operator /(Power power , Decimal scalar) => new Power(power.Value / scalar); + public static Power operator /(Power power , Int32 scalar) => new Power(power.Value / scalar); + + // P=UI + public static Voltage operator /(Power power, Current current) => new Voltage(power.Value / current.Value); + public static Current operator /(Power power, Voltage voltage) => new Current(power.Value / voltage.Value); +} \ No newline at end of file diff --git a/csharp/lib/Units/Resistance.cs b/csharp/lib/Units/Resistance.cs new file mode 100644 index 000000000..ae551e019 --- /dev/null +++ b/csharp/lib/Units/Resistance.cs @@ -0,0 +1,35 @@ +namespace InnovEnergy.Units; + +public readonly struct Resistance +{ + public static String Unit => "Ω"; + public static String Symbol => "R"; + + public Decimal Value { get; } + + public Resistance(Decimal value) => Value = value; + + public override String ToString() => Value + Unit; + + // series + public static Resistance operator +(Resistance left, Resistance right) => new Resistance(left.Value + right.Value); + // parallel + public static Resistance operator |(Resistance left, Resistance right) => new Resistance(1m / (1m / left.Value + 1m / right.Value)); + + // scalar multiplication + public static Resistance operator *(Decimal scalar , Resistance resistance) => new Resistance(scalar * resistance.Value); + public static Resistance operator *(Resistance resistance, Decimal scalar ) => new Resistance(scalar * resistance.Value); + public static Resistance operator *(Int32 scalar , Resistance resistance) => new Resistance(scalar * resistance.Value); + public static Resistance operator *(Resistance resistance, Int32 scalar ) => new Resistance(scalar * resistance.Value); + public static Resistance operator /(Resistance resistance, Decimal scalar ) => new Resistance(resistance.Value / scalar); + public static Resistance operator /(Resistance resistance, Int32 scalar ) => new Resistance(resistance.Value / scalar); + + + // U=RI + public static Voltage operator *(Resistance resistance, Current current) => new Voltage(resistance.Value* current.Value); + + + + // public static Voltage operator /(Power power, Current current) => new Voltage(power.Value / current.Value); + // public static Current operator /(Power power, Voltage voltage) => new Current(power.Value / voltage.Value); +} \ No newline at end of file diff --git a/csharp/lib/Units/Units.csproj b/csharp/lib/Units/Units.csproj new file mode 100644 index 000000000..090825d42 --- /dev/null +++ b/csharp/lib/Units/Units.csproj @@ -0,0 +1,9 @@ + + + + + Library + InnovEnergy.Units + + + diff --git a/csharp/lib/Units/Voltage.cs b/csharp/lib/Units/Voltage.cs new file mode 100644 index 000000000..ae39f9a0d --- /dev/null +++ b/csharp/lib/Units/Voltage.cs @@ -0,0 +1,32 @@ +namespace InnovEnergy.Units; + +public readonly struct Voltage +{ + public static String Unit => "V"; + public static String Symbol => "U"; + + public Decimal Value { get; } + + public Voltage(Decimal value) => Value = value; + + public override String ToString() => Value + Unit; + + + // series + public static Voltage operator +(Voltage left, Voltage right) => new Voltage(left.Value + right.Value); + + public static Voltage operator *(Decimal scalar , Voltage voltage) => new Voltage(scalar * voltage.Value); + public static Voltage operator *(Voltage voltage, Decimal scalar) => new Voltage(scalar * voltage.Value); + public static Voltage operator *(Int32 scalar , Voltage voltage) => new Voltage(scalar * voltage.Value); + public static Voltage operator *(Voltage voltage, Int32 scalar) => new Voltage(scalar * voltage.Value); + + public static Voltage operator /(Voltage voltage, Decimal scalar) => new Voltage(voltage.Value / scalar); + public static Voltage operator /(Voltage voltage, Int32 scalar) => new Voltage(voltage.Value / scalar); + + + // U=RI + public static Current operator /(Voltage voltage, Resistance resistance) => new Current(voltage.Value / resistance.Value); + + // P=UI + public static Power operator *(Voltage voltage, Current current) => new Power(current.Value * voltage.Value); +} \ No newline at end of file diff --git a/csharp/lib/Victron/VeDBus/obj/Debug/net6.0/VeDBus.csproj.AssemblyReference.cache b/csharp/lib/Victron/VeDBus/obj/Debug/net6.0/VeDBus.csproj.AssemblyReference.cache deleted file mode 100644 index 204fdef644eaa2e6de09b015f5f4588ab58aa14d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6 LcmZQ$WB>vH051Rt diff --git a/csharp/lib/Victron/VictronVRM/obj/Debug/net6.0/VictronVRM.csproj.AssemblyReference.cache b/csharp/lib/Victron/VictronVRM/obj/Debug/net6.0/VictronVRM.csproj.AssemblyReference.cache deleted file mode 100644 index 341d34208c0866bf6008a836475dbc7e256df2c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 437 zcmZQ$WMp7qU<}vK$j?pH&(6%%*UKwSPc6|eNKDR7OiwM=&r2;Y${SYd>fGYJ;a&o|?Gvsw_Sf6s8gOQPuA59G- z572gG0CEioFxEq82Cx9*0uWDyfq|ugfnf@e$;JdEfc&6fM?(e{pmHGmns{HmCWqUz zHfe&<7J;+pHS&UMSlv~=|6d^H?D|dHE=57}`U;-IffGAJje5N9bg^_Ozn`$-yv3{9 z4c9eKecEPxc-KCT4Tg*}4su9NJvc#gPkP|w62H}Ri(PjtD~fm{eo^S$-rbuPHG0&Z zd-Z#6^Qy`GMgsQxWHkkyqK}q1Fdb*)0J_Owt^c!4%htVR3`X;*jzU;!QE_H|o-H^4 z4fG6j6r4+QN=l1TZSzt~ONtV6bQA(glX5bXy;Cbg^0QO(Y>f>PQ%urQ&611~%@R{n JQ-J1!0RYt?i>&|v