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

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