2015-04-15 update 2

This commit is contained in:
parallelbgls@outlook.com
2015-04-15 14:58:43 +08:00
parent 4d408b648a
commit 4ca5456e15
2 changed files with 57 additions and 19 deletions

View File

@@ -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; }

View File

@@ -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));
}
}
}