Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
bvtvusn committed Oct 31, 2023
2 parents 8c2900c + 5979448 commit fafb594
Show file tree
Hide file tree
Showing 20 changed files with 189 additions and 52 deletions.
2 changes: 1 addition & 1 deletion BV_Modbus_Client/AboutWindow.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public AboutWindow()
InitializeComponent();
//Assembly ass = Assembly.GetExecutingAssembly();
Version version = Assembly.GetExecutingAssembly().GetName().Version;
string softwareVersion = version.ToString();
string softwareVersion = "v.1.2.2"; //version.ToString();
lblVersion.Text = $"{softwareVersion}";
//lblVersion.Text = ass.GetName().Version.ToString();
lblAuthor.Text = "Bjørn Vegard Tveraaen";
Expand Down
7 changes: 6 additions & 1 deletion BV_Modbus_Client/BusinessLayer/FcWrapperBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ public virtual ushort NumberOfRegisters
[Browsable(false)]
[DataMember]
public string[] FcAddressDescription { get => fcAddressDescription; set { fcAddressDescription = value; FcSettingsChangedEvent?.Invoke(); } }
public string FcType { get; internal set; }
//[Browsable(false)]
//[DataMember]
//public Dictionary<ushort, string> AddressDescription { get; set; } // Databuffer contains the address read, the value and a description.
Expand All @@ -90,12 +91,15 @@ public virtual ushort NumberOfRegisters
[Browsable(false)]
public int WriteCount { get; set; }
[Browsable(false)]
public int ErrorCount { get; set; }
[Browsable(false)]
public double ResponseTimeMs { get; set; }

[Browsable(false)]
[DataMember]
public int SavedPollOrder { get; set; } = -1; // -1 means not polled. Only used for saving and restoring applionstate. Not kept up to date during program execution.
[DataMember]
[Browsable(false)]
public FormatContainer formatContainer { get; set; }
//public string Type
//{
Expand All @@ -109,6 +113,7 @@ public FcWrapperBase()
//refreshDataEventBatcher.BatchedEvent += RefreshDataEventBatcher_BatchedEvent;

InitializeObject();

}

private void RefreshDataEventBatcher_BatchedEvent(object? sender, EventArgs e)
Expand Down Expand Up @@ -235,7 +240,7 @@ public string[] GetRegDescriptions(bool useDefaultName = false)
string[] strData = new string[NumberOfRegisters];
for (int i = 0; i < NumberOfRegisters; i++)
{
ushort address = (ushort)(i + startAddress);
ushort address = (ushort)(i + StartAddress);
//ushort datavalue;
//string dataDescription;

Expand Down
3 changes: 2 additions & 1 deletion BV_Modbus_Client/BusinessLayer/FormatContainer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public FormatContainer(FcWrapperBase fcWrapperBase)
public FormatConverter.FormatName DefaultFormat { get; internal set; }
public bool SwapRegisters { get => swapRegisters; set => swapRegisters = value; }
public bool SwapBytes { get => swapBytes; set => swapBytes = value; }
public string FloatFormatting { get; set; } = "0.0";

internal int SetFormat(int register, FormatConverter.FormatName type, int customLength)
{
Expand Down Expand Up @@ -73,7 +74,7 @@ internal string[] BinaryToString(ushort[] rawData, bool onlyOnestringPerValue =
{
singlevalueData = FormatConverter.SwapBytesInArray(singlevalueData);
}
stringValues[item.Register] = item.BinaryToString(singlevalueData, logValue);
stringValues[item.Register] = item.BinaryToString(singlevalueData, logValue,FloatFormatting);
}
}

Expand Down
11 changes: 7 additions & 4 deletions BV_Modbus_Client/BusinessLayer/FormatConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ public enum FormatName


//}
internal static string GetStringRepresentation(ushort[] rawdata, FormatName format, bool swapBytes = false, bool swapRegisters = false)
internal static string GetStringRepresentation(ushort[] rawdata, FormatName format,string floatFormat, bool swapBytes = false, bool swapRegisters = false)
{
if (swapRegisters)
{
Expand All @@ -177,7 +177,10 @@ internal static string GetStringRepresentation(ushort[] rawdata, FormatName form
}
else if (format == FormatName.Half)
{
return FormatConverter.HalfToFloat(rawdata[0]).ToString();
float half = FormatConverter.HalfToFloat(rawdata[0]);

return half.ToString(floatFormat);

//return rawdata.Select(x => FormatConverter.HalfToFloat(x).ToString()).ToArray();
}
else if (format == FormatName.Hex)
Expand Down Expand Up @@ -207,15 +210,15 @@ internal static string GetStringRepresentation(ushort[] rawdata, FormatName form
uint temp = ((uint)rawdata[0] << 16) | (uint)rawdata[1];
byte[] bytes = BitConverter.GetBytes(temp);
float dval = BitConverter.ToSingle(bytes, 0);
return dval.ToString();
return dval.ToString(floatFormat);

}
else if (format == FormatName.Double)
{
ulong temp = ((ulong)rawdata[0] << 48) | ((ulong)rawdata[1] << 32) | ((ulong)rawdata[2] << 16) | (ulong)rawdata[3];
byte[] bytes = BitConverter.GetBytes(temp);
double dval = BitConverter.ToDouble(bytes, 0);
return dval.ToString();
return dval.ToString(floatFormat);

}
else if (format == FormatName.Ascii)
Expand Down
7 changes: 5 additions & 2 deletions BV_Modbus_Client/BusinessLayer/MultipleCoils.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public MultipleCoils(MbConnection mbCon) : base() // Read multiple coils

base.mbCon = mbCon;
Description = "Multiple Coils";
FcType = Description;
//base.DisplayType = FormatConverter.FormatName.Boolean;
formatContainer.DefaultFormat = FormatConverter.FormatName.Boolean;

Expand Down Expand Up @@ -83,14 +84,15 @@ internal override async Task ExecuteReadAsync()
rawdata[i] = (Convert.ToUInt16(coil));
}
SetDatabuffer(rawdata);
base.ForceFcActivatedEvent();
base.ForceDataRefresh("");
}
catch (Exception e)
{
ErrorCount++;
base.ForceDataRefresh(e.Message);

}
base.ForceFcActivatedEvent();
}
internal override async Task ExecuteWriteAsync()
{
Expand All @@ -111,14 +113,15 @@ internal override async Task ExecuteWriteAsync()
ResponseTimeMs = stopwatch.Elapsed.TotalMilliseconds;

WriteCount++;
base.ForceFcActivatedEvent();
base.ForceDataRefresh("");
}
catch (Exception e)
{
ErrorCount++;
base.ForceDataRefresh(e.Message);

}
base.ForceFcActivatedEvent();
}


Expand Down
8 changes: 5 additions & 3 deletions BV_Modbus_Client/BusinessLayer/MultipleHoldingRegisters.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public MultipleHoldingRegisters(MbConnection mbCon) :base() // Read multiple coi

base.mbCon = mbCon;
Description = "Multiple Holding Registers";

FcType = Description;
//Testing
//startAddress = 0;
//base.SlaveAddress = 1;
Expand Down Expand Up @@ -102,14 +102,15 @@ internal override async Task ExecuteReadAsync()

//}
SetDatabuffer(rawData);
base.ForceFcActivatedEvent();
base.ForceDataRefresh("");
}
catch (Exception e)
{
ErrorCount++;
base.ForceDataRefresh(e.Message);

}
base.ForceFcActivatedEvent();
}
internal override async Task ExecuteWriteAsync()
{
Expand All @@ -127,14 +128,15 @@ internal override async Task ExecuteWriteAsync()


WriteCount++;
base.ForceFcActivatedEvent();
base.ForceDataRefresh("");
}
catch (Exception e)
{
ErrorCount++;
base.ForceDataRefresh(e.Message);

}
base.ForceFcActivatedEvent();
}
//internal override void ExecuteWrite()
//{
Expand Down
4 changes: 3 additions & 1 deletion BV_Modbus_Client/BusinessLayer/ReadDiscreteInputs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ public ReadDiscreteInputs(MbConnection mbCon) : base()// Read multiple coils

base.mbCon = mbCon;
Description = "Read Discrete Inputs";
FcType = Description;
formatContainer.DefaultFormat = FormatConverter.FormatName.Boolean;
NumberOfRegisters = 4;

Expand Down Expand Up @@ -60,14 +61,15 @@ internal override async Task ExecuteReadAsync()
rawData[i] = (Convert.ToUInt16(coil));
}
SetDatabuffer(rawData);
base.ForceFcActivatedEvent();
base.ForceDataRefresh("");
}
catch (Exception e)
{
ErrorCount++;
base.ForceDataRefresh(e.Message);

}
base.ForceFcActivatedEvent();
}
internal override async Task ExecuteWriteAsync()
{
Expand Down
6 changes: 4 additions & 2 deletions BV_Modbus_Client/BusinessLayer/ReadInputRegisters.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,10 @@ public ReadInputRegisters(MbConnection mbCon) : base() // Read multiple coils

base.mbCon = mbCon;
Description = "Read Input Registers";
FcType = Description;
//base.DisplayType = FormatConverter.FormatName.Boolean;


NumberOfRegisters = 4;
DataBuffer = new Dictionary<ushort, ushort>();

Expand Down Expand Up @@ -61,13 +62,14 @@ internal override async Task ExecuteReadAsync()

//}
SetDatabuffer(rawData);
base.ForceFcActivatedEvent();
base.ForceDataRefresh("");
}
catch (Exception e)
{
ErrorCount++;
base.ForceDataRefresh(e.Message);
}
base.ForceFcActivatedEvent();
}
internal override async Task ExecuteWriteAsync()
{
Expand Down
7 changes: 5 additions & 2 deletions BV_Modbus_Client/BusinessLayer/SingleHoldingRegister.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ public SingleHoldingRegister(MbConnection mbCon) // Read multiple coils
{
base.mbCon = mbCon;
Description = "Single Holding Register";
FcType = Description;
NumberOfRegisters = 1;
DataBuffer = new Dictionary<ushort, ushort>();
}
Expand Down Expand Up @@ -61,14 +62,15 @@ internal override async Task ExecuteReadAsync()

//}
SetDatabuffer(rawData);
base.ForceFcActivatedEvent();
base.ForceDataRefresh("");
}
catch (Exception e)
{
ErrorCount++;
base.ForceDataRefresh(e.Message);

}
base.ForceFcActivatedEvent();
}

//internal override void ExecuteWrite()
Expand All @@ -92,14 +94,15 @@ internal override async Task ExecuteWriteAsync()


WriteCount++;
base.ForceFcActivatedEvent();
base.ForceDataRefresh("");
}
catch (Exception e)
{
ErrorCount++;
base.ForceDataRefresh(e.Message);

}
base.ForceFcActivatedEvent();
}
}
}
4 changes: 2 additions & 2 deletions BV_Modbus_Client/BusinessLayer/ValueFormat.cs
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,9 @@ public ValueFormat(FormatContainer formatContainer, int register, FormatConverte
isVisibleInPlot = true;
}

internal string BinaryToString(ushort[] singlevalueData, bool logValue = false)
internal string BinaryToString(ushort[] singlevalueData, bool logValue = false, string floatFormat = "")
{
string value = FormatConverter.GetStringRepresentation(singlevalueData, FormatType);
string value = FormatConverter.GetStringRepresentation(singlevalueData, FormatType, floatFormat);
if (logValue)
{

Expand Down
Loading

0 comments on commit fafb594

Please sign in to comment.