2017-04-26 update 2 TaskManager data function call change.

This commit is contained in:
parallelbgls
2017-04-26 16:31:54 +08:00
parent 28fec77c1a
commit 80991bafbd
2 changed files with 20 additions and 10 deletions

View File

@@ -868,18 +868,26 @@ namespace Modbus.Net
bool KeepConnect { get; set; } bool KeepConnect { get; set; }
/// <summary> /// <summary>
/// 读取数据 /// 调用Machine中的方法
/// </summary> /// </summary>
/// <returns>从设备读取的数据</returns> /// <typeparam name="TMachineMethod">Machine实现的接口名称</typeparam>
Task<Dictionary<string, ReturnUnit>> GetDatasAsync(MachineGetDataType getDataType); /// <typeparam name="TReturnType">返回值的类型</typeparam>
/// <param name="methodName">方法的名称</param>
/// <param name="parameters">方法的参数</param>
/// <returns></returns>
TReturnType InvokeMachineMethod<TMachineMethod, TReturnType>(string methodName,
params object[] parameters) where TMachineMethod : IMachineMethod;
/// <summary> /// <summary>
/// 写入数据 /// 调用Utility中的方法
/// </summary> /// </summary>
/// <param name="setDataType">写入类型</param> /// <typeparam name="TUtilityMethod">Utility实现的接口名称</typeparam>
/// <param name="values">需要写入的数据字典当写入类型为Address时键为需要写入的地址当写入类型为CommunicationTag时键为需要写入的单元的描述</param> /// <typeparam name="TReturnType">返回值的类型</typeparam>
/// <returns>是否写入成功</returns> /// <param name="methodName">方法的名称</param>
Task<bool> SetDatasAsync(MachineSetDataType setDataType, Dictionary<string, double> values); /// <param name="parameters">方法的参数</param>
/// <returns></returns>
TReturnType InvokeUtilityMethod<TUtilityMethod, TReturnType>(string methodName,
params object[] parameters) where TUtilityMethod : IUtilityMethod;
/// <summary> /// <summary>
/// 连接设备 /// 连接设备

View File

@@ -725,7 +725,7 @@ namespace Modbus.Net
machine = _machines.FirstOrDefault(p => p.ConnectionToken == connectionToken); machine = _machines.FirstOrDefault(p => p.ConnectionToken == connectionToken);
} }
if (machine == null) return false; if (machine == null) return false;
return await machine.SetDatasAsync(SetDataType, values); return await machine.InvokeMachineMethod<IMachineData, Task<bool>>("SetDatasAsync", SetDataType, values);
} }
/// <summary> /// <summary>
@@ -798,7 +798,9 @@ namespace Modbus.Net
//超时后取消任务 //超时后取消任务
cts.CancelAfter(TimeSpan.FromSeconds(_getCycle)); cts.CancelAfter(TimeSpan.FromSeconds(_getCycle));
//读取数据 //读取数据
var ans = await machine.GetDatasAsync(GetDataType).WithCancellation(cts.Token); var ans =
await machine.InvokeMachineMethod<IMachineData, Task<Dictionary<string, ReturnUnit>>>("GetDatasAsync",
GetDataType).WithCancellation(cts.Token);
if (!machine.IsConnected) if (!machine.IsConnected)
{ {
MoveMachineToUnlinked(machine.Id); MoveMachineToUnlinked(machine.Id);