Job Scheduler Function Add
This commit is contained in:
@@ -32,26 +32,44 @@ namespace Modbus.Net
|
|||||||
|
|
||||||
public sealed class MachineJobSchedulerCreator
|
public sealed class MachineJobSchedulerCreator
|
||||||
{
|
{
|
||||||
public static async Task<MachineGetJobScheduler> CreateScheduler(string triggerKey, int count, double interval)
|
public static async Task<MachineGetJobScheduler> CreateScheduler(string triggerKey, int count = 0, double interval = 1)
|
||||||
{
|
{
|
||||||
IScheduler scheduler = await StdSchedulerFactory.GetDefaultScheduler();
|
IScheduler scheduler = await StdSchedulerFactory.GetDefaultScheduler();
|
||||||
|
|
||||||
ITrigger trigger;
|
ITrigger trigger;
|
||||||
if (count >= 0)
|
if (count >= 0)
|
||||||
trigger = TriggerBuilder.Create()
|
trigger = TriggerBuilder.Create()
|
||||||
.WithIdentity("Modbus.Net.DataQuery.Trigger." + triggerKey, "Modbus.Net.DataQuery.Group")
|
.WithIdentity(triggerKey, "Modbus.Net.DataQuery.Group."+ triggerKey)
|
||||||
.StartNow()
|
.StartNow()
|
||||||
.WithSimpleSchedule(b => b.WithInterval(TimeSpan.FromSeconds(interval)).WithRepeatCount(count))
|
.WithSimpleSchedule(b => b.WithInterval(TimeSpan.FromSeconds(interval)).WithRepeatCount(count))
|
||||||
.Build();
|
.Build();
|
||||||
else
|
else
|
||||||
trigger = TriggerBuilder.Create()
|
trigger = TriggerBuilder.Create()
|
||||||
.WithIdentity("Modbus.Net.DataQuery.Trigger." + triggerKey, "Modbus.Net.DataQuery.Group")
|
.WithIdentity(triggerKey, "Modbus.Net.DataQuery.Group."+ triggerKey)
|
||||||
.StartNow()
|
.StartNow()
|
||||||
.WithSimpleSchedule(b => b.WithInterval(TimeSpan.FromSeconds(interval)).RepeatForever())
|
.WithSimpleSchedule(b => b.WithInterval(TimeSpan.FromSeconds(interval)).RepeatForever())
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
|
var listener = new JobChainingJobListenerWithDataMap("Modbus.Net.DataQuery.Chain." + triggerKey, new string[1] { "Value" });
|
||||||
|
scheduler.ListenerManager.AddJobListener(listener, GroupMatcher<JobKey>.GroupEquals("Modbus.Net.DataQuery.Group." + triggerKey));
|
||||||
|
|
||||||
|
if (await scheduler.GetTrigger(new TriggerKey(triggerKey)) != null)
|
||||||
|
{
|
||||||
|
await scheduler.UnscheduleJob(new TriggerKey(triggerKey, "Modbus.Net.DataQuery.Group." + triggerKey));
|
||||||
|
}
|
||||||
|
var jobKeys = await scheduler.GetJobKeys(GroupMatcher<JobKey>.GroupEquals("Modbus.Net.DataQuery.Group." + triggerKey));
|
||||||
|
await scheduler.DeleteJobs(jobKeys);
|
||||||
|
|
||||||
return new MachineGetJobScheduler(scheduler, trigger);
|
return new MachineGetJobScheduler(scheduler, trigger);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static async void CancelJob(string triggerKey)
|
||||||
|
{
|
||||||
|
IScheduler scheduler = await StdSchedulerFactory.GetDefaultScheduler();
|
||||||
|
var jobKeys = await scheduler.GetJobKeys(GroupMatcher<JobKey>.GroupEquals("Modbus.Net.DataQuery.Group." + triggerKey));
|
||||||
|
await scheduler.DeleteJobs(jobKeys);
|
||||||
|
await scheduler.UnscheduleJob(new TriggerKey(triggerKey, "Modbus.Net.DataQuery.Group." + triggerKey));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class MachineGetJobScheduler
|
public sealed class MachineGetJobScheduler
|
||||||
@@ -60,24 +78,44 @@ namespace Modbus.Net
|
|||||||
|
|
||||||
ITrigger _trigger;
|
ITrigger _trigger;
|
||||||
|
|
||||||
|
JobKey _parentJobKey = null;
|
||||||
|
|
||||||
public MachineGetJobScheduler(IScheduler scheduler, ITrigger trigger)
|
public MachineGetJobScheduler(IScheduler scheduler, ITrigger trigger)
|
||||||
{
|
{
|
||||||
_scheduler = scheduler;
|
_scheduler = scheduler;
|
||||||
_trigger = trigger;
|
_trigger = trigger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MachineGetJobScheduler(IScheduler scheduler, ITrigger trigger, JobKey parentJobKey)
|
||||||
|
{
|
||||||
|
_scheduler = scheduler;
|
||||||
|
_trigger = trigger;
|
||||||
|
_parentJobKey = parentJobKey;
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<MachineQueryJobScheduler> From(string queryId, IMachineMethodData machine, MachineDataType machineDataType)
|
public async Task<MachineQueryJobScheduler> From(string queryId, IMachineMethodData machine, 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." + _trigger.Key.Name);
|
||||||
|
|
||||||
IJobDetail job = JobBuilder.Create<MachineGetDataJob>()
|
IJobDetail job = JobBuilder.Create<MachineGetDataJob>()
|
||||||
.WithIdentity(jobKey)
|
.WithIdentity(jobKey)
|
||||||
|
.StoreDurably(true)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
job.JobDataMap.Put("DataType", machineDataType);
|
job.JobDataMap.Put("DataType", machineDataType);
|
||||||
job.JobDataMap.Put("Machine", machine);
|
job.JobDataMap.Put("Machine", machine);
|
||||||
|
|
||||||
await _scheduler.ScheduleJob(job, _trigger);
|
if (_parentJobKey != null)
|
||||||
|
{
|
||||||
|
var listener = _scheduler.ListenerManager.GetJobListener("Modbus.Net.DataQuery.Chain." + _trigger.Key.Name) as JobChainingJobListenerWithDataMap;
|
||||||
|
listener.AddJobChainLink(_parentJobKey, jobKey);
|
||||||
|
|
||||||
|
await _scheduler.AddJob(job, true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
await _scheduler.ScheduleJob(job, _trigger);
|
||||||
|
}
|
||||||
|
|
||||||
return new MachineQueryJobScheduler(_scheduler, _trigger, jobKey);
|
return new MachineQueryJobScheduler(_scheduler, _trigger, jobKey);
|
||||||
}
|
}
|
||||||
@@ -89,20 +127,63 @@ namespace Modbus.Net
|
|||||||
|
|
||||||
public async Task<MachineQueryJobScheduler> Apply<TMachineKey>(string queryId, Dictionary<string, ReturnUnit> values, MachineDataType machineDataType) where TMachineKey : IEquatable<TMachineKey>
|
public async Task<MachineQueryJobScheduler> Apply<TMachineKey>(string queryId, Dictionary<string, ReturnUnit> values, MachineDataType machineDataType) where TMachineKey : IEquatable<TMachineKey>
|
||||||
{
|
{
|
||||||
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." + _trigger.Key.Name);
|
||||||
|
|
||||||
IJobDetail job = JobBuilder.Create<MachineQueryDataJob<TMachineKey>>()
|
IJobDetail job = JobBuilder.Create<MachineQueryDataJob<TMachineKey>>()
|
||||||
.WithIdentity(jobKey)
|
.WithIdentity(jobKey)
|
||||||
|
.StoreDurably(true)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
job.JobDataMap.Put("DataType", machineDataType);
|
job.JobDataMap.Put("DataType", machineDataType);
|
||||||
job.JobDataMap.Put("Value", values);
|
job.JobDataMap.Put("Value", values);
|
||||||
job.JobDataMap.Put("QueryMethod", null);
|
job.JobDataMap.Put("QueryMethod", null);
|
||||||
|
|
||||||
await _scheduler.ScheduleJob(job, _trigger);
|
if (_parentJobKey != null)
|
||||||
|
{
|
||||||
|
var listener = _scheduler.ListenerManager.GetJobListener("Modbus.Net.DataQuery.Chain." + _trigger.Key.Name) as JobChainingJobListenerWithDataMap;
|
||||||
|
listener.AddJobChainLink(_parentJobKey, jobKey);
|
||||||
|
|
||||||
|
await _scheduler.AddJob(job, true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
await _scheduler.ScheduleJob(job, _trigger);
|
||||||
|
}
|
||||||
|
|
||||||
return new MachineQueryJobScheduler(_scheduler, _trigger, jobKey);
|
return new MachineQueryJobScheduler(_scheduler, _trigger, jobKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Task<MachineSetJobScheduler> ApplyTo(string queryId, Dictionary<string, ReturnUnit> values, MachineDataType machineDataType)
|
||||||
|
{
|
||||||
|
return ApplyTo<string>(queryId, values, machineDataType);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<MachineSetJobScheduler> ApplyTo<TMachineKey>(string queryId, Dictionary<string, ReturnUnit> values, MachineDataType machineDataType) where TMachineKey : IEquatable<TMachineKey>
|
||||||
|
{
|
||||||
|
JobKey jobKey = JobKey.Create("Modbus.Net.DataQuery.Job." + queryId, "Modbus.Net.DataQuery.Group." + _trigger.Key.Name);
|
||||||
|
|
||||||
|
IJobDetail job = JobBuilder.Create<MachineQueryDataJob<TMachineKey>>()
|
||||||
|
.WithIdentity(jobKey)
|
||||||
|
.StoreDurably(true)
|
||||||
|
.Build();
|
||||||
|
|
||||||
|
job.JobDataMap.Put("DataType", machineDataType);
|
||||||
|
job.JobDataMap.Put("Value", values);
|
||||||
|
|
||||||
|
if (_parentJobKey != null)
|
||||||
|
{
|
||||||
|
var listener = _scheduler.ListenerManager.GetJobListener("Modbus.Net.DataQuery.Chain." + _trigger.Key.Name) as JobChainingJobListenerWithDataMap;
|
||||||
|
listener.AddJobChainLink(_parentJobKey, jobKey);
|
||||||
|
|
||||||
|
await _scheduler.AddJob(job, true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
await _scheduler.ScheduleJob(job, _trigger);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new MachineSetJobScheduler(_scheduler, _trigger, jobKey);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class MachineQueryJobScheduler
|
public sealed class MachineQueryJobScheduler
|
||||||
@@ -127,20 +208,9 @@ namespace Modbus.Net
|
|||||||
|
|
||||||
public async Task<MachineSetJobScheduler> Query<TMachineKey>(string queryId = null, Func<DataReturnDef, Dictionary<string, ReturnUnit>> QueryDataFunc = null) where TMachineKey : IEquatable<TMachineKey>
|
public async Task<MachineSetJobScheduler> Query<TMachineKey>(string queryId = null, Func<DataReturnDef, Dictionary<string, ReturnUnit>> QueryDataFunc = null) where TMachineKey : IEquatable<TMachineKey>
|
||||||
{
|
{
|
||||||
JobChainingJobListenerWithDataMap listener;
|
if (queryId == null) return new MachineSetJobScheduler(_scheduler, _trigger, _parentJobKey);
|
||||||
try
|
|
||||||
{
|
|
||||||
listener = _scheduler.ListenerManager.GetJobListener("Modbus.Net.DataQuery.Chain") as JobChainingJobListenerWithDataMap;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
listener = new JobChainingJobListenerWithDataMap("Modbus.Net.DataQuery.Chain", new string[1]{ "Value" });
|
|
||||||
_scheduler.ListenerManager.AddJobListener(listener, GroupMatcher<JobKey>.GroupEquals("Modbus.Net.DataQuery.Group"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (queryId == null) return new MachineSetJobScheduler(_scheduler, _trigger, listener, _parentJobKey);
|
JobKey jobKey = JobKey.Create("Modbus.Net.DataQuery.Job." + queryId, "Modbus.Net.DataQuery.Group." + _trigger.Key.Name);
|
||||||
|
|
||||||
JobKey jobKey = JobKey.Create("Modbus.Net.DataQuery.Job." + queryId, "Modbus.Net.DataQuery.Group");
|
|
||||||
|
|
||||||
IJobDetail job = JobBuilder.Create<MachineQueryDataJob<TMachineKey>>()
|
IJobDetail job = JobBuilder.Create<MachineQueryDataJob<TMachineKey>>()
|
||||||
.WithIdentity(jobKey)
|
.WithIdentity(jobKey)
|
||||||
@@ -149,11 +219,12 @@ namespace Modbus.Net
|
|||||||
|
|
||||||
job.JobDataMap.Put("QueryMethod", QueryDataFunc);
|
job.JobDataMap.Put("QueryMethod", QueryDataFunc);
|
||||||
|
|
||||||
|
var listener = _scheduler.ListenerManager.GetJobListener("Modbus.Net.DataQuery.Chain." + _trigger.Key.Name) as JobChainingJobListenerWithDataMap;
|
||||||
listener.AddJobChainLink(_parentJobKey, jobKey);
|
listener.AddJobChainLink(_parentJobKey, jobKey);
|
||||||
|
|
||||||
await _scheduler.AddJob(job, true);
|
await _scheduler.AddJob(job, true);
|
||||||
|
|
||||||
return new MachineSetJobScheduler(_scheduler, _trigger, listener, jobKey);
|
return new MachineSetJobScheduler(_scheduler, _trigger, jobKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -163,24 +234,20 @@ namespace Modbus.Net
|
|||||||
|
|
||||||
ITrigger _trigger;
|
ITrigger _trigger;
|
||||||
|
|
||||||
JobChainingJobListenerWithDataMap _listener;
|
|
||||||
|
|
||||||
JobKey _parentJobKey;
|
JobKey _parentJobKey;
|
||||||
|
|
||||||
public MachineSetJobScheduler(IScheduler scheduler, ITrigger trigger, JobChainingJobListenerWithDataMap listener, JobKey parentJobKey)
|
public MachineSetJobScheduler(IScheduler scheduler, ITrigger trigger, JobKey parentJobKey)
|
||||||
{
|
{
|
||||||
_scheduler = scheduler;
|
_scheduler = scheduler;
|
||||||
|
|
||||||
_trigger = trigger;
|
_trigger = trigger;
|
||||||
|
|
||||||
_listener = listener;
|
|
||||||
|
|
||||||
_parentJobKey = parentJobKey;
|
_parentJobKey = parentJobKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<MachineSetJobScheduler> To(string queryId, IMachineMethodData machine)
|
public async Task<MachineSetJobScheduler> To(string queryId, IMachineMethodData machine)
|
||||||
{
|
{
|
||||||
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." + _trigger.Key.Name);
|
||||||
|
|
||||||
IJobDetail job = JobBuilder.Create<MachineSetDataJob>()
|
IJobDetail job = JobBuilder.Create<MachineSetDataJob>()
|
||||||
.WithIdentity(jobKey)
|
.WithIdentity(jobKey)
|
||||||
@@ -189,11 +256,17 @@ namespace Modbus.Net
|
|||||||
|
|
||||||
job.JobDataMap.Put("Machine", machine);
|
job.JobDataMap.Put("Machine", machine);
|
||||||
|
|
||||||
_listener.AddJobChainLink(_parentJobKey, jobKey);
|
var listener = _scheduler.ListenerManager.GetJobListener("Modbus.Net.DataQuery.Chain." + _trigger.Key.Name) as JobChainingJobListenerWithDataMap;
|
||||||
|
listener.AddJobChainLink(_parentJobKey, jobKey);
|
||||||
|
|
||||||
await _scheduler.AddJob(job, true);
|
await _scheduler.AddJob(job, true);
|
||||||
|
|
||||||
return new MachineSetJobScheduler(_scheduler, _trigger, _listener, jobKey);
|
return new MachineSetJobScheduler(_scheduler, _trigger, jobKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<MachineQueryJobScheduler> From(string queryId, IMachineMethodData machine, MachineDataType machineDataType)
|
||||||
|
{
|
||||||
|
return await new MachineGetJobScheduler(_scheduler, _trigger, _parentJobKey).From(queryId, machine, machineDataType);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Run()
|
public async Task Run()
|
||||||
@@ -208,8 +281,8 @@ namespace Modbus.Net
|
|||||||
{
|
{
|
||||||
object machine;
|
object machine;
|
||||||
object machineDataType;
|
object machineDataType;
|
||||||
context.MergedJobDataMap.TryGetValue("Machine", out machine);
|
context.JobDetail.JobDataMap.TryGetValue("Machine", out machine);
|
||||||
context.MergedJobDataMap.TryGetValue("DataType", out machineDataType);
|
context.JobDetail.JobDataMap.TryGetValue("DataType", out machineDataType);
|
||||||
var values = await (machine as IMachineMethodData)!.GetDatasAsync((MachineDataType)machineDataType);
|
var values = await (machine as IMachineMethodData)!.GetDatasAsync((MachineDataType)machineDataType);
|
||||||
|
|
||||||
context.JobDetail.JobDataMap.Put("Value", values);
|
context.JobDetail.JobDataMap.Put("Value", values);
|
||||||
@@ -224,14 +297,14 @@ namespace Modbus.Net
|
|||||||
object machine;
|
object machine;
|
||||||
object values;
|
object values;
|
||||||
object QueryMethod;
|
object QueryMethod;
|
||||||
context.MergedJobDataMap.TryGetValue("Machine", out machine);
|
context.JobDetail.JobDataMap.TryGetValue("Machine", out machine);
|
||||||
context.MergedJobDataMap.TryGetValue("Value", out values);
|
context.JobDetail.JobDataMap.TryGetValue("Value", out values);
|
||||||
context.MergedJobDataMap.TryGetValue("QueryMethod", out QueryMethod);
|
context.JobDetail.JobDataMap.TryGetValue("QueryMethod", out QueryMethod);
|
||||||
Func<DataReturnDef, Dictionary<string, ReturnUnit>> QueryMethodDispatch = (Func<DataReturnDef, Dictionary<string, ReturnUnit>>)QueryMethod;
|
Func<DataReturnDef, Dictionary<string, ReturnUnit>> QueryMethodDispatch = (Func<DataReturnDef, Dictionary<string, ReturnUnit>>)QueryMethod;
|
||||||
|
|
||||||
if (QueryMethod != null)
|
if (QueryMethod != null)
|
||||||
{
|
{
|
||||||
context.JobDetail.JobDataMap.Put("Value", QueryMethodDispatch(new DataReturnDef() { MachineId = ((IMachineProperty<TMachineKey>)machine).GetMachineIdString(), ReturnValues = (Dictionary<string, ReturnUnit>)values }));
|
context.JobDetail.JobDataMap.Put("Value", QueryMethodDispatch(new DataReturnDef() { MachineId = machine == null ? null : ((IMachineProperty<TMachineKey>)machine).GetMachineIdString(), ReturnValues = (Dictionary<string, ReturnUnit>)values }));
|
||||||
await context.Scheduler.AddJob(context.JobDetail, true, false);
|
await context.Scheduler.AddJob(context.JobDetail, true, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -244,9 +317,9 @@ namespace Modbus.Net
|
|||||||
object machine;
|
object machine;
|
||||||
object machineDataType;
|
object machineDataType;
|
||||||
object values;
|
object values;
|
||||||
context.MergedJobDataMap.TryGetValue("Machine", out machine);
|
context.JobDetail.JobDataMap.TryGetValue("Machine", out machine);
|
||||||
context.MergedJobDataMap.TryGetValue("DataType", out machineDataType);
|
context.JobDetail.JobDataMap.TryGetValue("DataType", out machineDataType);
|
||||||
context.MergedJobDataMap.TryGetValue("Value", out values);
|
context.JobDetail.JobDataMap.TryGetValue("Value", out values);
|
||||||
Dictionary<string, double> valuesSet = ((Dictionary<string, ReturnUnit>)values).MapGetValuesToSetValues();
|
Dictionary<string, double> valuesSet = ((Dictionary<string, ReturnUnit>)values).MapGetValuesToSetValues();
|
||||||
|
|
||||||
var success = await (machine as IMachineMethodData)!.SetDatasAsync((MachineDataType)machineDataType, valuesSet);
|
var success = await (machine as IMachineMethodData)!.SetDatasAsync((MachineDataType)machineDataType, valuesSet);
|
||||||
|
|||||||
@@ -17,9 +17,11 @@ List<AddressUnit> _addresses = new List<AddressUnit>
|
|||||||
new AddressUnit() { Area = "4X", Address = 10, DataType = typeof(short), Id = "10", Name = "Test10" }
|
new AddressUnit() { Area = "4X", Address = 10, DataType = typeof(short), Id = "10", Name = "Test10" }
|
||||||
};
|
};
|
||||||
|
|
||||||
IMachine<string> machine = new ModbusMachine<string, string>("ModbusMachine1", ModbusType.Tcp, "192.168.0.172:502", _addresses, true, 1, 2, Endian.BigEndianLsb);
|
IMachine<string> machine = new ModbusMachine<string, string>("ModbusMachine1", ModbusType.Tcp, "192.168.0.172", _addresses, true, 1, 2, Endian.BigEndianLsb);
|
||||||
|
IMachine<string> machine2 = new ModbusMachine<string, string>("ModbusMachine2", ModbusType.Tcp, "192.168.0.172:503", _addresses, true, 3, 2, Endian.BigEndianLsb);
|
||||||
|
|
||||||
await MachineJobSchedulerCreator.CreateScheduler("Trigger1", -1, 5).Result.From(machine.Id, machine, MachineDataType.Name).Result.Query("ConsoleQuery", QueryConsole).Result.To(machine.Id + ".To", machine).Result.Run();
|
await MachineJobSchedulerCreator.CreateScheduler("Trigger1", -1, 5).Result.From(machine.Id, machine, MachineDataType.Name).Result.Query(machine.Id + ".ConsoleQuery", QueryConsole).Result.To(machine.Id + ".To", machine).Result.To(machine2.Id + ".To", machine2).Result.Run();
|
||||||
|
//await MachineJobSchedulerCreator.CreateScheduler("Trigger2", -1, 5).Result.Apply(machine2.Id + ".Apply", null, MachineDataType.Name).Result.Query(machine.Id + ".ConsoleQuery2", QueryConsole2).Result.To(machine2.Id + ".To2", machine2).Result.From(machine2.Id, machine2, MachineDataType.Name).Result.Query(machine.Id + ".ConsoleQuery", QueryConsole).Result.Run();
|
||||||
|
|
||||||
Console.ReadLine();
|
Console.ReadLine();
|
||||||
|
|
||||||
@@ -31,31 +33,77 @@ Dictionary<string, ReturnUnit> QueryConsole(DataReturnDef dataReturnDef)
|
|||||||
Console.WriteLine(dataReturnDef.MachineId + " " + value.Key + " " + value.Value.DeviceValue);
|
Console.WriteLine(dataReturnDef.MachineId + " " + value.Key + " " + value.Value.DeviceValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
using (var context = new DatabaseWriteContext())
|
try
|
||||||
{
|
{
|
||||||
context.DatabaseWrites.Add(new DatabaseWriteEntity
|
using (var context = new DatabaseWriteContext())
|
||||||
{
|
{
|
||||||
Value1 = values["Test1"].DeviceValue,
|
context.DatabaseWrites.Add(new DatabaseWriteEntity
|
||||||
Value2 = values["Test2"].DeviceValue,
|
{
|
||||||
Value3 = values["Test3"].DeviceValue,
|
Value1 = values["Test1"].DeviceValue,
|
||||||
Value4 = values["Test4"].DeviceValue,
|
Value2 = values["Test2"].DeviceValue,
|
||||||
Value5 = values["Test5"].DeviceValue,
|
Value3 = values["Test3"].DeviceValue,
|
||||||
Value6 = values["Test6"].DeviceValue,
|
Value4 = values["Test4"].DeviceValue,
|
||||||
Value7 = values["Test7"].DeviceValue,
|
Value5 = values["Test5"].DeviceValue,
|
||||||
Value8 = values["Test8"].DeviceValue,
|
Value6 = values["Test6"].DeviceValue,
|
||||||
Value9 = values["Test9"].DeviceValue,
|
Value7 = values["Test7"].DeviceValue,
|
||||||
Value10 = values["Test10"].DeviceValue,
|
Value8 = values["Test8"].DeviceValue,
|
||||||
UpdateTime = DateTime.Now,
|
Value9 = values["Test9"].DeviceValue,
|
||||||
});
|
Value10 = values["Test10"].DeviceValue,
|
||||||
context.SaveChanges();
|
UpdateTime = DateTime.Now,
|
||||||
|
});
|
||||||
|
context.SaveChanges();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
//ignore
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Random r = new Random();
|
||||||
foreach (var value in values)
|
foreach (var value in values)
|
||||||
{
|
{
|
||||||
value.Value.DeviceValue = new Random().Next(65536) - 32768;
|
value.Value.DeviceValue = r.Next(65536) - 32768;
|
||||||
}
|
}
|
||||||
|
|
||||||
return values;
|
return values;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Dictionary<string, ReturnUnit> QueryConsole2(DataReturnDef dataReturnDef)
|
||||||
|
{
|
||||||
|
Random r = new Random();
|
||||||
|
var datas = new Dictionary<string, ReturnUnit>()
|
||||||
|
{
|
||||||
|
{
|
||||||
|
"Test1", new ReturnUnit(){DeviceValue = r.Next(65536) - 32768 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Test2", new ReturnUnit(){DeviceValue = r.Next(65536) - 32768 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Test3", new ReturnUnit(){DeviceValue = r.Next(65536) - 32768 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Test4", new ReturnUnit(){DeviceValue = r.Next(65536) - 32768 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Test5", new ReturnUnit(){DeviceValue = r.Next(65536) - 32768 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Test6", new ReturnUnit(){DeviceValue = r.Next(65536) - 32768 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Test7", new ReturnUnit(){DeviceValue = r.Next(65536) - 32768 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Test8", new ReturnUnit(){DeviceValue = r.Next(65536) - 32768 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Test9", new ReturnUnit(){DeviceValue = r.Next(65536) - 32768 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Test10", new ReturnUnit(){DeviceValue = r.Next(65536) - 32768 }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return datas;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ await MachineJobSchedulerCreator.CreateScheduler("Trigger1", -1, 10).Result.Appl
|
|||||||
"4X 3.0", new ReturnUnit(){DeviceValue = r.Next() % 65536 }
|
"4X 3.0", new ReturnUnit(){DeviceValue = r.Next() % 65536 }
|
||||||
}
|
}
|
||||||
}, MachineDataType.Address).Result.Query().Result.To(machine.Id + ".To", machine).Result.Run();
|
}, MachineDataType.Address).Result.Query().Result.To(machine.Id + ".To", machine).Result.Run();
|
||||||
await MachineJobSchedulerCreator.CreateScheduler("Trigger1", -1, 10).Result.Apply(machine2.Id + ".Apply", new Dictionary<string, ReturnUnit>() {{
|
await MachineJobSchedulerCreator.CreateScheduler("Trigger2", -1, 10).Result.Apply(machine2.Id + ".Apply", new Dictionary<string, ReturnUnit>() {{
|
||||||
"4X 1.0", new ReturnUnit(){DeviceValue = r.Next() % 65536 }
|
"4X 1.0", new ReturnUnit(){DeviceValue = r.Next() % 65536 }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -112,7 +112,7 @@ await MachineJobSchedulerCreator.CreateScheduler("Trigger1", -1, 10).Result.Appl
|
|||||||
"4X 3.0", new ReturnUnit(){DeviceValue = r.Next() % 65536 }
|
"4X 3.0", new ReturnUnit(){DeviceValue = r.Next() % 65536 }
|
||||||
}
|
}
|
||||||
}, MachineDataType.Address).Result.Query().Result.To(machine2.Id + ".To", machine2).Result.Run();
|
}, MachineDataType.Address).Result.Query().Result.To(machine2.Id + ".To", machine2).Result.Run();
|
||||||
await MachineJobSchedulerCreator.CreateScheduler("Trigger1", -1, 10).Result.Apply(machine3.Id + ".Apply", new Dictionary<string, ReturnUnit>() {{
|
await MachineJobSchedulerCreator.CreateScheduler("Trigger3", -1, 10).Result.Apply(machine3.Id + ".Apply", new Dictionary<string, ReturnUnit>() {{
|
||||||
"4X 1.0", new ReturnUnit(){DeviceValue = r.Next() % 65536 }
|
"4X 1.0", new ReturnUnit(){DeviceValue = r.Next() % 65536 }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user