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 7d3ed1dcd7
commit 95a46ac9ea
2 changed files with 20 additions and 10 deletions

View File

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

View File

@@ -725,7 +725,7 @@ namespace Modbus.Net
machine = _machines.FirstOrDefault(p => p.ConnectionToken == connectionToken);
}
if (machine == null) return false;
return await machine.SetDatasAsync(SetDataType, values);
return await machine.InvokeMachineMethod<IMachineData, Task<bool>>("SetDatasAsync", SetDataType, values);
}
/// <summary>
@@ -798,7 +798,9 @@ namespace Modbus.Net
//超时后取消任务
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)
{
MoveMachineToUnlinked(machine.Id);