2015-04-15 update 2
This commit is contained in:
@@ -10,15 +10,20 @@ namespace ModBus.Net
|
||||
{
|
||||
public abstract class BaseMachine : IMachineProperty
|
||||
{
|
||||
public string Id { get; set; }
|
||||
|
||||
public string ProjectName { 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
|
||||
{
|
||||
@@ -60,7 +65,7 @@ namespace ModBus.Net
|
||||
p => p.Area == communicateAddress.Area && p.Address == pos + communicateAddress.Address);
|
||||
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
|
||||
{
|
||||
@@ -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 string Area { get; set; }
|
||||
@@ -129,6 +147,7 @@ namespace ModBus.Net
|
||||
|
||||
public interface IMachineProperty
|
||||
{
|
||||
string Id { get; set; }
|
||||
string ProjectName { get; set; }
|
||||
string MachineName { get; set; }
|
||||
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
|
||||
{
|
||||
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)
|
||||
{
|
||||
lock (_machines)
|
||||
@@ -318,7 +337,7 @@ namespace ModBus.Net
|
||||
var ans = _tasks.StartNew(machine.GetDatas).Result;
|
||||
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)
|
||||
@@ -326,7 +345,7 @@ namespace ModBus.Net
|
||||
|
||||
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