2017-04-26 update 2 TaskManager data function call change.
This commit is contained in:
@@ -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>
|
||||||
/// 连接设备
|
/// 连接设备
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user