2015-04-15 update 2
This commit is contained in:
@@ -10,15 +10,20 @@ namespace ModBus.Net
|
|||||||
{
|
{
|
||||||
public abstract class BaseMachine : IMachineProperty
|
public abstract class BaseMachine : IMachineProperty
|
||||||
{
|
{
|
||||||
|
public string Id { get; set; }
|
||||||
|
|
||||||
public string ProjectName { get; set; }
|
public string ProjectName { get; set; }
|
||||||
|
|
||||||
public string MachineName { get; set; }
|
public string MachineName { get; set; }
|
||||||
|
|
||||||
public string ConnectionToken { get { return BaseUtility.ConnectionToken; } }
|
public string ConnectionToken
|
||||||
|
{
|
||||||
|
get { return BaseUtility.ConnectionToken; }
|
||||||
|
}
|
||||||
|
|
||||||
protected AddressFormater AddressFormater { get; set; }
|
public AddressFormater AddressFormater { get; set; }
|
||||||
|
|
||||||
protected AddressCombiner AddressCombiner { get; set; }
|
public AddressCombiner AddressCombiner { get; set; }
|
||||||
|
|
||||||
protected IEnumerable<CommunicationUnit> CommunicateAddresses
|
protected IEnumerable<CommunicationUnit> CommunicateAddresses
|
||||||
{
|
{
|
||||||
@@ -60,7 +65,7 @@ namespace ModBus.Net
|
|||||||
p => p.Area == communicateAddress.Area && p.Address == pos + communicateAddress.Address);
|
p => p.Area == communicateAddress.Area && p.Address == pos + communicateAddress.Address);
|
||||||
if (address != null)
|
if (address != null)
|
||||||
{
|
{
|
||||||
ans.Add(address.CommunicationTag, (String.Format("{0:#0.000}", Double.Parse(ValueHelper.Instance.GetValue(datas, ref pos, address.DataType).ToString()) * address.Zoom)));
|
ans.Add(address.CommunicationTag, (String.Format("{0:#0.#}", Math.Round(Double.Parse(ValueHelper.Instance.GetValue(datas, ref pos, address.DataType).ToString()) * address.Zoom, 3))));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -86,6 +91,19 @@ namespace ModBus.Net
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class BaseMachineEqualityComparer : IEqualityComparer<BaseMachine>
|
||||||
|
{
|
||||||
|
public bool Equals(BaseMachine x, BaseMachine y)
|
||||||
|
{
|
||||||
|
return x.ConnectionToken == y.ConnectionToken;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int GetHashCode(BaseMachine obj)
|
||||||
|
{
|
||||||
|
return obj.GetHashCode();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public struct CommunicationUnit
|
public struct CommunicationUnit
|
||||||
{
|
{
|
||||||
public string Area { get; set; }
|
public string Area { get; set; }
|
||||||
@@ -129,6 +147,7 @@ namespace ModBus.Net
|
|||||||
|
|
||||||
public interface IMachineProperty
|
public interface IMachineProperty
|
||||||
{
|
{
|
||||||
|
string Id { get; set; }
|
||||||
string ProjectName { get; set; }
|
string ProjectName { get; set; }
|
||||||
string MachineName { get; set; }
|
string MachineName { get; set; }
|
||||||
string ConnectionToken { get; }
|
string ConnectionToken { get; }
|
||||||
|
|||||||
@@ -166,19 +166,6 @@ namespace ModBus.Net
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class BaseMachineEqualityComparer : IEqualityComparer<BaseMachine>
|
|
||||||
{
|
|
||||||
public bool Equals(BaseMachine x, BaseMachine y)
|
|
||||||
{
|
|
||||||
return x.ConnectionToken == y.ConnectionToken;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int GetHashCode(BaseMachine obj)
|
|
||||||
{
|
|
||||||
return obj.GetHashCode();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class TaskManager
|
public class TaskManager
|
||||||
{
|
{
|
||||||
private HashSet<BaseMachine> _machines;
|
private HashSet<BaseMachine> _machines;
|
||||||
@@ -272,6 +259,38 @@ namespace ModBus.Net
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void AddMachines(IEnumerable<BaseMachine> machines)
|
||||||
|
{
|
||||||
|
foreach (var machine in machines)
|
||||||
|
{
|
||||||
|
AddMachine(machine);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RemoveMachineWithToken(string machineToken)
|
||||||
|
{
|
||||||
|
lock (_machines)
|
||||||
|
{
|
||||||
|
_machines.RemoveWhere(p => p.ConnectionToken == machineToken);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RemoveMachineWithId(string id)
|
||||||
|
{
|
||||||
|
lock (_machines)
|
||||||
|
{
|
||||||
|
_machines.RemoveWhere(p => p.Id == id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RemoveMachine(BaseMachine machine)
|
||||||
|
{
|
||||||
|
lock (_machines)
|
||||||
|
{
|
||||||
|
_machines.Remove(machine);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void MaintainTasks(object sender, System.Timers.ElapsedEventArgs e)
|
private void MaintainTasks(object sender, System.Timers.ElapsedEventArgs e)
|
||||||
{
|
{
|
||||||
lock (_machines)
|
lock (_machines)
|
||||||
@@ -318,7 +337,7 @@ namespace ModBus.Net
|
|||||||
var ans = _tasks.StartNew(machine.GetDatas).Result;
|
var ans = _tasks.StartNew(machine.GetDatas).Result;
|
||||||
if (ReturnValues != null)
|
if (ReturnValues != null)
|
||||||
{
|
{
|
||||||
ReturnValues(new KeyValuePair<string, Dictionary<string,string>>(machine.ConnectionToken, ans));
|
ReturnValues(new KeyValuePair<string, Dictionary<string,string>>(machine.Id, ans));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
@@ -326,7 +345,7 @@ namespace ModBus.Net
|
|||||||
|
|
||||||
if (ReturnValues != null)
|
if (ReturnValues != null)
|
||||||
{
|
{
|
||||||
ReturnValues(new KeyValuePair<string, Dictionary<string,string>>(machine.ConnectionToken, null));
|
ReturnValues(new KeyValuePair<string, Dictionary<string,string>>(machine.Id, null));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user