void SpawnFirstArcs() { for (int i = -2; i < 3; i++) { for (int j = 0; j < 5; j++) { ArcController arc = SpawnArc(new Vector3(i, j, 0), Random.Range(90, 190), (Direction)Random.Range(0, 2)); arcs.Add(arc); } } }
public void MoveGrid(Vector3 direction, Vector3 destination) { if (direction.y == 0) { for (int i = -2; i < 3; i++) { ArcController arc = SpawnArc(new Vector3(destination.x + direction.x * removeDistX, destination.y + i, 0), Random.Range(RotationSpeedMin, RotationSpeedMax), (Direction)Random.Range(0, 2)); arcs.Add(arc); } } else { for (int i = -2; i < 3; i++) { ArcController arc = SpawnArc(new Vector3(destination.x + i, destination.y + direction.y * removeDistY, 0), Random.Range(RotationSpeedMin, RotationSpeedMax), (Direction)Random.Range(0, 2)); arcs.Add(arc); } } }
static void Main(string[] args) { ArcController arc = new ArcController(); arc.GetArc(); arc.WriteNodes(); arc.OrderNodes(); if (arc.isValid) { //arc.ShowGraphAfterOrder(); arc.CaluclateExecutionTime(); arc.CalculateDeadline(); arc.CriticalPath(); arc.ShowFinalGraph(); } Console.WriteLine("Naciśnij dowolny klawisz aby zakończyć..."); Console.ReadLine(); }
private void applyACParameterFrom_To_(ArcController baseAC, IEnumerable <AbstractController> ACs) { var type = baseAC.GetType(); var propInfo = type.GetProperties(); var numProps = propInfo.GetLength(0) - (typeof(ArcController)).GetProperties().GetLength(0); var baseValues = new object[numProps]; for (var j = 0; j < numProps; j++) { baseValues[j] = propInfo[j].GetValue(baseAC, null); } foreach (ArcController a in ACs) { for (var j = 0; j < numProps; j++) { propInfo[j].SetValue(a, baseValues[j], null); } } Update(); }
void PurchaseK9Cooldown() { if ((currentWoolCost <= GameObject.FindGameObjectWithTag("Player").GetComponent <PlayerController>().woolTotal) && (currentWoolCost != -1)) { ArcController ArcGun = GameObject.FindGameObjectWithTag("ArcGun").GetComponent <ArcController>(); switch (ArcGun.FireRate) { case 0.75f: ArcGun.FireRate = 0.5f; break; case 0.5f: ArcGun.FireRate = 0.25f; break; case 0.25f: break; } GameObject.FindGameObjectWithTag("Player").GetComponent <PlayerController>().woolTotal -= currentWoolCost; } }
void PurchaseK9Damage() { if ((currentWoolCost <= GameObject.FindGameObjectWithTag("Player").GetComponent <PlayerController>().woolTotal) && (currentWoolCost != -1)) { ArcController ArcGun = GameObject.FindGameObjectWithTag("ArcGun").GetComponent <ArcController>(); switch (ArcGun.Damage) { case 2: ArcGun.Damage = 3; break; case 3: ArcGun.Damage = 4; break; case 4: break; } GameObject.FindGameObjectWithTag("Player").GetComponent <PlayerController>().woolTotal -= currentWoolCost; } }
static void Main(string[] args) { Logger.Disabled = false; ThreadPool.SetMaxThreads(3, 3); var cfg = ConverterConfigFactory.Get(); ConverterConfigFactory.Save(cfg); dbconrtoller = new ArcController(cfg.ArcFileName) { AllowMessageLogging = cfg.AllowMessageLogging, SavePeriod = cfg.SavePeriod, MaxDataLimit = cfg.MaxLimit, Hyst = cfg.Hyst }; //dbconrtoller.Start(); var cts = new CancellationTokenSource(); var wCts = new CancellationTokenSource(); var connnectionWfqydb = StreamSourceFactory.GetStreamSourceConfig(cfg.WFQYDBConnection).Get(); var wFQYDBServer = new WFQYDBServer( connnectionWfqydb, new byte[] { 1, 0, 0, 0 }, wCts.Token) { UpdatePeriod = new TimeSpan(0, 0, cfg.PeriodSec), CanA0 = cfg?.AllowedCommands.Contains <byte>(0xA0) ?? false, CanA1 = cfg?.AllowedCommands.Contains <byte>(0xA1) ?? false, CanA2 = cfg?.AllowedCommands.Contains <byte>(0xA2) ?? false, CanA3 = cfg?.AllowedCommands.Contains <byte>(0xA3) ?? false, }; wFQYDBServer.PropertyChanged += WFQYDBServer_PropertyChanged; var modbusSvr = new ModbusSvr( cfg.ModbusSlaveTcpPort, cfg.ModbusSlaveRtuOverTcpPort, wFQYDBServer) { ArcController = dbconrtoller, //UpdatePeriod = new TimeSpan(cfg.PeriodSec * 10_000_000) }; modbusSvr.Start(); System.Threading.ThreadPool.GetMaxThreads(out int workerTh, out int completionTh); Logger.Info($"workerTh: {workerTh} completionTh: {completionTh}"); if (args.Contains("TUI")) { Logger.Disabled = true; MainViewModel mvm = new MainViewModel(); //mvm.ConnnectionWfqydb = connnectionWfqydb; mvm.WFQYDBServer = wFQYDBServer; mvm.ModbusSvr = modbusSvr; Window window = (Window)ConsoleApplication .LoadFromXaml("WfqydbModbusGateway.View.MainWin.xml", mvm); WindowsHost windowsHost = new WindowsHost { Name = "temp" }; windowsHost.Show(window); ConsoleApplication.Instance.Run(windowsHost); } else { int i = 0; while (!cts.Token.IsCancellationRequested) { Thread.Sleep(200); //if (wFQYDBServer.NeedToRestart) //{ // // restart services // Logger.Warn("Restarting services"); // wCts.Cancel(); // wCts = new CancellationTokenSource(); // wFQYDBServer.PropertyChanged -= WFQYDBServer_PropertyChanged; // wFQYDBServer = new WFQYDBServer(connnectionWfqydb, new byte[] { 1, 0, 0, 0 }, cts.Token); // modbusSvr.WfqydbServer = wFQYDBServer; // GC.Collect(); // wFQYDBServer.PropertyChanged += WFQYDBServer_PropertyChanged; //} } wCts.Cancel(); //Task.Delay(1000, cts.Token).Wait(); } cts.Dispose(); wCts.Dispose(); dbconrtoller.Stop(); }//Main
protected override async Task ServiceTaskAsync(CancellationToken cancellationToken) { ArcController?.NewLogMessage(LogCode.ModbusStarting); Logger.Info("begin"); var tcpListener = new TcpListener(IPAddress.Any, TcpPort); var rtuListener = new TcpListener(IPAddress.Any, RtuOverTcpPort); Logger.Info("starting listener"); tcpListener.Start(); rtuListener.Start(); Logger.Info("generating slave net"); var factory = new ModbusFactory(); var tcpNetwork = factory.CreateSlaveNetwork(tcpListener); var rtuNetwork = factory.CreateRtuOverTcpSlaveNetwork(rtuListener); var slaveTcp = factory.CreateSlave(1); var slaveRtu = factory.CreateSlave(1, slaveTcp.DataStore); tcpNetwork.AddSlave(slaveTcp); rtuNetwork.AddSlave(slaveRtu); iRegisters = slaveTcp.DataStore.InputRegisters; hRegisters = slaveTcp.DataStore.HoldingRegisters; WfqydbServer.PropertyChanged += Wf_PropertyChanged; var timeOfStart = DateTime.Now.ToUnixTimestamp(); ushort[] timeOfStartBuffer = { (ushort)(timeOfStart >> 16), (ushort)(timeOfStart), }; var ver = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; ushort[] verBuffer = { (ushort)ver.Major, (ushort)ver.Minor, (ushort)ver.Build, }; byte[] myAddress = { 0x01, 0x00, 0x00, 0x00, }; iRegisters.WritePoints(0, verBuffer); iRegisters.WritePoints(3, timeOfStartBuffer); Logger.Info("starting slave net. step1"); var tcpListenerTask = tcpNetwork.ListenAsync(cancellationToken); var rtuListenerTask = rtuNetwork.ListenAsync(cancellationToken); Logger.Info($"starting slave net. step2 {WfqydbServer.ToString()}"); ArcController?.NewLogMessage(LogCode.ModbusStarted); ArcController?.NewLogMessage(LogCode.WFQYDBConnecting); //await WfqydbServer.PullBroadcastQuery().ConfigureAwait(false); //WfqydbServer.PullBroadcastQuery(); ArcController?.NewLogMessage(LogCode.WFQYDBConnected); const int waitTime = 100; //ms const int faultRestTime = 10_000; //ms const int responseTime = 500; //ms var lastRequestTime = DateTime.Now; var lastResetTime = DateTime.Now; var resetInterval = TimeSpan.FromSeconds(30); var faultRestTimer = 0; Logger.Info("entering inf loop"); // Главный цикл до отмены этой задачи. while (!cancellationToken.IsCancellationRequested) { try { // состояние связи iRegisters.WritePoints(5, new ushort[] { (ushort)WfqydbServer.ConnectionState }); // Habdle var buff = hRegisters.ReadPoints(10, 5); var cmd = buff[0]; var cmdState = buff[1]; if ((buff[2] + buff[3]) == 0) { // Чтобы не было пустого места на элкамрм hRegisters.WritePoints(12, new ushort[] { currentData[3], currentData[4], currentData[6] }); } // обработка команд по модбас if ((cmd > 0) && (cmdState == (ushort)CmdState.Rdy)) { var upFreq = (byte)buff[2]; var dnFreq = (byte)buff[3]; var stokeRate = (byte)buff[4]; hRegisters.WritePoints(10, new ushort[] { cmd, (ushort)CmdState.Working }); try { switch ((Cmd)cmd) { case Cmd.Reset: cmd = 0; cmdState = 0; hRegisters.WritePoints(10, new ushort[] { (ushort)Cmd.NoOp, (ushort)CmdState.Rdy }); break; case Cmd.BroadcastQuery: lastRequestTime = DateTime.Now; //await WfqydbServer.PullBroadcastQuery().ConfigureAwait(false); WfqydbServer.PullBroadcastQuery(); hRegisters.WritePoints(10, new ushort[] { (ushort)Cmd.NoOp, (ushort)CmdState.Rdy }); ArcController?.NewLogMessage(LogCode.WFQYDBCmdRead); break; case Cmd.AutoRun: lastRequestTime = DateTime.Now; //await WfqydbServer.PullAutoRun(upFreq, dnFreq, stokeRate).ConfigureAwait(false); WfqydbServer.PullAutoRun(upFreq, dnFreq, stokeRate); hRegisters.WritePoints(10, new ushort[] { (ushort)Cmd.NoOp, (ushort)CmdState.Rdy }); ArcController?.NewLogMessage(LogCode.WFQYDBCmdCtart, $"u:{upFreq}, d:{dnFreq}, sr:{stokeRate}"); break; case Cmd.Shutdown: lastRequestTime = DateTime.Now; //await WfqydbServer.PullShutdown().ConfigureAwait(false); WfqydbServer.PullShutdown(); hRegisters.WritePoints(10, new ushort[] { (ushort)Cmd.NoOp, (ushort)CmdState.Rdy }); ArcController?.NewLogMessage(LogCode.WFQYDBCmdCtop); break; case Cmd.ThrowException: throw new Exception("Test exception"); default: hRegisters.WritePoints(10, new ushort[] { cmd, (ushort)CmdState.NotImplementedCmd }); faultRestTimer = faultRestTime; break; } } catch (Exception ex) { hRegisters.WritePoints(10, new ushort[] { cmd, (ushort)CmdState.CommonError }); faultRestTimer = faultRestTime; FireOnError(ex); Logger.Alarm(ex.Message); ArcController?.NewLogMessage(LogCode.ModbusFailed); } } if (cmdState != (ushort)CmdState.Rdy) { if ((faultRestTimer -= waitTime) <= 0) { hRegisters.WritePoints(10, new ushort[] { (ushort)Cmd.NoOp, (ushort)CmdState.Rdy }); } } await Task.Delay(waitTime, cancellationToken).ConfigureAwait(false); // передернем сеть rtu. Так как она периодически подвисает. //var lastResetTime = DateTime.Now; //var resetInterval = TimeSpan.FromSeconds(30); if ((lastResetTime + resetInterval) < DateTime.Now) { lastResetTime = DateTime.Now; Logger.Info("restarting rtu"); //var rtuListener = new TcpListener(IPAddress.Any, RtuOverTcpPort); rtuListener.Stop(); rtuListener.Start(); // var rtuNetwork = factory.CreateRtuOverTcpSlaveNetwork(rtuListener); // var slaveRtu = factory.CreateSlave(1, slaveTcp.DataStore); // rtuNetwork.AddSlave(slaveRtu); // var rtuListenerTask = rtuNetwork.ListenAsync(cancellationToken); } } catch (Exception ex) { FireOnError(ex); Logger.Alarm(ex.Message); ArcController?.NewLogMessage(LogCode.ModbusFailed); await Task.Delay(waitTime, cancellationToken).ConfigureAwait(false); } }// while tcpListener.Stop(); rtuListener.Stop(); tcpNetwork.Dispose(); rtuNetwork.Dispose(); await tcpListenerTask.ConfigureAwait(true); await rtuListenerTask.ConfigureAwait(true); }