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 26, 2023
2 parents 72ee9a1 + fcb7b61 commit 6dedb79
Show file tree
Hide file tree
Showing 14 changed files with 291 additions and 277 deletions.
5 changes: 4 additions & 1 deletion BV_Modbus_Client/BusinessLayer/BLL.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ public BLL()
UserConfig = new UserConfiguration();
dal = new Dal();
mbCon = new MbConnection(false);
UserConfig.conData = mbCon.conData;

UserConfig.GlobFcData.ActivePollingChangedEvent += GlobFcData_ActivePollingChangedEvent;
//formatConverter = new FormatConverter();
Expand Down Expand Up @@ -215,6 +216,7 @@ internal void RemoveFC(FcWrapperBase fcCommand)

if (Object.ReferenceEquals(fcCommand, SelectedFcRequest)) // If removing the selected, also reomove the object from "Selected object"
{
selectedFcRequest.OnDeleteMe();
selectedFcRequest.RefreshDataEvent -= SelectedFcRequest_ResponseReceived;
selectedFcRequest.FormatValidStateEvent -= SelectedFcRequest_FormatValidStateEvent;
this.SelectedFcRequest = null;
Expand Down Expand Up @@ -270,7 +272,8 @@ internal void LoadConfig()
UserConfig = dal.LoadFromFile();

UserConfig.GlobFcData.ActivePollingChangedEvent += GlobFcData_ActivePollingChangedEvent; // used for starting and stopping polling


mbCon.conData = UserConfig.conData; // Loading the connection details into the mbConObject
//UserConfig.FcWrappers[0].m
foreach (FcWrapperBase item in UserConfig.FcWrappers)
{
Expand Down
40 changes: 40 additions & 0 deletions BV_Modbus_Client/BusinessLayer/ConnectionData.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
using System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;

namespace BV_Modbus_Client.BusinessLayer
{
[DataContract]
internal class ConnectionData
{
[DataMember]
public bool isFake;
[DataMember]
public string RTU_SerialPortName { get; set; }
[DataMember]
public Parity RTU_Parity { get; set; } = Parity.None;
[DataMember]
public StopBits RTU_StopBits { get; set; } = StopBits.One;
[DataMember]
public int RTU_DataBits { get; set; } = 8;
[DataMember]
public int RTU_BaudRate { get; set; } = 115200;
[DataMember]
public bool IsTcp
{
get ;
set;
}
[DataMember]
public int TCP_Port
{
get;
set;
}
public string TCP_Hostname { get; set; }
}
}
17 changes: 15 additions & 2 deletions BV_Modbus_Client/BusinessLayer/FcWrapperBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ public virtual ushort NumberOfRegisters
public Dictionary<ushort, ushort> DataBuffer { get; internal set; } // Databuffer contains the address read, the value and a description.
[Browsable(false)]
[DataMember]
public string[] FcAddressDescription { get => fcAddressDescription; set => fcAddressDescription = value; }
public string[] FcAddressDescription { get => fcAddressDescription; set { fcAddressDescription = value; FcSettingsChangedEvent?.Invoke(); } }
//[Browsable(false)]
//[DataMember]
//public Dictionary<ushort, string> AddressDescription { get; set; } // Databuffer contains the address read, the value and a description.
Expand Down Expand Up @@ -123,6 +123,7 @@ private void RefreshDataEventBatcher_BatchedEvent(object? sender, EventArgs e)
public event Action<FcWrapperBase, bool> SelectedChanged;
public event Action FcActivatedEvent;
public event Action<bool> ActivePollingChangedEvent;
public event Action DeleteMeEvent;

public void SetDatabuffer(ushort[] rawData)
{
Expand Down Expand Up @@ -224,6 +225,11 @@ public virtual (string, string)[] GetDataAsString(bool UseRegOnMissingDescriptio
return strData;
}

internal void OnDeleteMe()
{
DeleteMeEvent?.Invoke();
}

public string[] GetRegDescriptions(bool useDefaultName = false)
{
string[] strData = new string[NumberOfRegisters];
Expand Down Expand Up @@ -333,7 +339,14 @@ internal virtual void SetFcData(string[] strings) // Called when table is chang

internal void InitializeObject()
{
formatContainer = new FormatContainer(this);
if (formatContainer == null)
{
formatContainer = new FormatContainer(this);
}
else
{
formatContainer.valueFormats.ForEach(x => x.valueHistory = new (DateTime, float)[100]);
}
refreshDataEventBatcher = new EventBatcher(300);
refreshDataEventBatcher.BatchedEvent += RefreshDataEventBatcher_BatchedEvent;
}
Expand Down
5 changes: 4 additions & 1 deletion BV_Modbus_Client/BusinessLayer/FormatContainer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ internal class FormatContainer
[DataMember]
bool swapRegisters;

public event Action datatypesChangedEvent;

public FormatContainer(FcWrapperBase fcWrapperBase)
{
this.fcWrapperBase = fcWrapperBase;
Expand All @@ -43,8 +45,9 @@ internal int SetFormat(int register, FormatConverter.FormatName type, int custom

valueFormats.Add(new ValueFormat(this,register,type, DataLength));
valueFormats = valueFormats.OrderBy(x => x.Register).ToList();
return DataLength;

datatypesChangedEvent?.Invoke();
return DataLength;
}

internal string[] BinaryToString(ushort[] rawData, bool onlyOnestringPerValue = false, bool logValue = true)
Expand Down
73 changes: 38 additions & 35 deletions BV_Modbus_Client/BusinessLayer/MbConnection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,62 +16,65 @@ internal class MbConnection
{
//public SerialPort port;
//TcpClient cli;
private int TCP_port;
private bool isFake;
//private int TCP_port;
//private bool isFake;

//private IModbusMaster master1;
////private IModbusMaster master1;
private ModbusClient master1;

private bool isTCP = false;
public string RTU_SerialPortName { get; set; }
public Parity RTU_Parity { get; set; } = Parity.None;
public StopBits RTU_StopBits { get; set; } = StopBits.One;
public int RTU_DataBits { get; set; } = 8;
public int RTU_BaudRate { get; set; } = 115200;
public bool IsTcp
{
get { return isTCP; }
set { isTCP = value; }
}
//private bool isTCP = false;
//public string RTU_SerialPortName { get; set; }
//public Parity RTU_Parity { get; set; } = Parity.None;
//public StopBits RTU_StopBits { get; set; } = StopBits.One;
//public int RTU_DataBits { get; set; } = 8;
//public int RTU_BaudRate { get; set; } = 115200;
//public bool IsTcp
//{
// get { return isTCP; }
// set { isTCP = value; }
//}

public ModbusClient Master
{
get { return master1; }
}


public int TCP_Port
{
get { return TCP_port; }
set { TCP_port = value; }
}
//public int TCP_Port
//{
// get { return TCP_port; }
// set { TCP_port = value; }
//}

private string TCP_hostname;
//private string TCP_hostname;

public string TCP_Hostname
{
get { return TCP_hostname; }
set { TCP_hostname = value; }
}
//public string TCP_Hostname
//{
// get { return TCP_hostname; }
// set { TCP_hostname = value; }
//}
public ConnectionData conData;

public MbConnection()
{

}
public MbConnection(bool fakeConnection)
{
isFake = fakeConnection;
conData = new ConnectionData();
conData.isFake = fakeConnection;

}
public void ConnectToSlave()
{
if (isFake)
if (conData.isFake)
{
//master1 = new DummyModbus();
}
else if (IsTcp)
else if (conData.IsTcp)
{
master1 = new ModbusTcpClient();
(master1 as ModbusTcpClient).Connect(TCP_Hostname + ":" + TCP_port);
(master1 as ModbusTcpClient).Connect(conData.TCP_Hostname + ":" + conData.TCP_Port);
//cli = new TcpClient(TCP_Hostname, TCP_port);
//var factory = new ModbusFactory();
////factory.CreateMaster()
Expand All @@ -82,12 +85,12 @@ public void ConnectToSlave()
// RTU
master1 = new ModbusRtuClient()
{
BaudRate = RTU_BaudRate,
Parity = RTU_Parity,
StopBits = RTU_StopBits
BaudRate = conData.RTU_BaudRate,
Parity = conData.RTU_Parity,
StopBits = conData.RTU_StopBits
// Databits
};
(master1 as ModbusRtuClient).Connect(RTU_SerialPortName);
(master1 as ModbusRtuClient).Connect(conData.RTU_SerialPortName);
//(master1 as ModbusRtuClient).WriteMultipleRegistersAsync


Expand Down Expand Up @@ -158,11 +161,11 @@ internal void DisconnectToSlave()

public string GetConnectionStatus()
{
if (isFake)
if (conData.isFake)
{
return "Dummy connection";
}
else if (IsTcp)
else if (conData.IsTcp)
{
return GetStatusTcp();
}
Expand Down
3 changes: 2 additions & 1 deletion BV_Modbus_Client/BusinessLayer/UserConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,9 @@ public UserConfiguration()
pollLoggerSettings = new PollLogger();
//pollTimer.PollFinishedEvent += pollLogger.PollTimer_PollFinishedEvent;
}
[DataMember]
public ConnectionData conData { get; internal set; }



[DataMember]
public List<FcWrapperBase> FcWrappers { get; set; }
Expand Down
1 change: 1 addition & 0 deletions BV_Modbus_Client/BusinessLayer/ValueFormat.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ public ValueFormat(FormatContainer formatContainer, int register, FormatConverte
Length = length;

valueHistory = new (DateTime, float)[100];
isVisibleInPlot = true;
}

internal string BinaryToString(ushort[] singlevalueData, bool logValue = false)
Expand Down
Loading

0 comments on commit 6dedb79

Please sign in to comment.