This commit is contained in:
luosheng
2023-02-13 13:18:58 +08:00
parent e7a144e1c3
commit d076d640f0

View File

@@ -59,24 +59,21 @@ namespace Modbus.Net
return new MachineQueryJobScheduler(_scheduler, _trigger, jobKey); return new MachineQueryJobScheduler(_scheduler, _trigger, jobKey);
} }
public async Task<MachineSetJobScheduler> To(string queryId, Dictionary<string, ReturnUnit> values, IMachineMethodData machine, MachineDataType machineDataType) public async Task<MachineQueryJobScheduler> Apply(string queryId, Dictionary<string, ReturnUnit> values, MachineDataType machineDataType)
{ {
JobKey jobKey = JobKey.Create("Modbus.Net.DataQuery.Job." + queryId, "Modbus.Net.DataQuery.Group"); JobKey jobKey = JobKey.Create("Modbus.Net.DataQuery.Job." + queryId, "Modbus.Net.DataQuery.Group");
IJobDetail job = JobBuilder.Create<MachineSetDataJob>() IJobDetail job = JobBuilder.Create<MachineQueryDataJob>()
.WithIdentity(jobKey) .WithIdentity(jobKey)
.Build(); .Build();
job.JobDataMap.Put("DataType", machineDataType); job.JobDataMap.Put("DataType", machineDataType);
job.JobDataMap.Put("Machine", machine);
job.JobDataMap.Put("Value", values); job.JobDataMap.Put("Value", values);
job.JobDataMap.Put("QueryMethod", null);
await _scheduler.ScheduleJob(job, _trigger); await _scheduler.ScheduleJob(job, _trigger);
JobChainingJobListenerWithDataMap listener = new JobChainingJobListenerWithDataMap("Modbus.Net.DataQuery.Chain", false); return new MachineQueryJobScheduler(_scheduler, _trigger, jobKey);
_scheduler.ListenerManager.AddJobListener(listener, GroupMatcher<JobKey>.GroupEquals("Modbus.Net.DataQuery.Group"));
return new MachineSetJobScheduler(_scheduler, _trigger, listener, jobKey);
} }
} }
@@ -97,8 +94,12 @@ namespace Modbus.Net
public async Task<MachineSetJobScheduler> Query(string queryId = null, Func<Dictionary<string, ReturnUnit>, Dictionary<string, ReturnUnit>> QueryDataFunc = null) public async Task<MachineSetJobScheduler> Query(string queryId = null, Func<Dictionary<string, ReturnUnit>, Dictionary<string, ReturnUnit>> QueryDataFunc = null)
{ {
JobChainingJobListenerWithDataMap listener = new JobChainingJobListenerWithDataMap("Modbus.Net.DataQuery.Chain", false); JobChainingJobListenerWithDataMap listener = _scheduler.ListenerManager.GetJobListener("Modbus.Net.DataQuery.Chain") as JobChainingJobListenerWithDataMap;
_scheduler.ListenerManager.AddJobListener(listener, GroupMatcher<JobKey>.GroupEquals("Modbus.Net.DataQuery.Group")); if (listener == null)
{
listener = new JobChainingJobListenerWithDataMap("Modbus.Net.DataQuery.Chain", false);
_scheduler.ListenerManager.AddJobListener(listener, GroupMatcher<JobKey>.GroupEquals("Modbus.Net.DataQuery.Group"));
}
if (queryId == null) return new MachineSetJobScheduler(_scheduler, _trigger, listener, _parentJobKey); if (queryId == null) return new MachineSetJobScheduler(_scheduler, _trigger, listener, _parentJobKey);