private void LoadDevice() { foreach (ChannelInfoControl child in Channels.Children.OfType <ChannelInfoControl>()) { child.ToggleStateClicked -= ChannelControl_ToggleStateClicked; } Channels.Children.Clear(); IRelayDeviceInfo device = GetCurrentDevice(); if (device == null) { return; } using (var relayController = new RelayController()) { relayController.ConnectDevice(device); List <IRelayChannelInfo> channels = relayController.ListChannels(device); foreach (var channel in channels) { var channelControl = new ChannelInfoControl(device, channel); channelControl.ToggleStateClicked += ChannelControl_ToggleStateClicked; Channels.Children.Add(channelControl); } } }
/// <summary> // Deterministic Update /// <summary> public void SpecUpdate() { timelefttilorder++; timepassedactual += TrueSyncManager.DeltaTime; if (timelefttilorder > 50 && ismission && PhotonNetwork.isMasterClient && shipstartspawn.Count > 0) { shipsmissionspawned++; TSVector spawnpos = PositinonRelativeToHeadset.getspawnpos(team); if (crosslevelvar.campaignlevel.objective == MainMenuCampaignControlScript.eMissionObjective.Survive) { spawnpos = startpos; } if (spawnpos == new TSVector(0, 0, 0)) { spawnpos = defaultspawnpos; } if (InputRelay == null) { InputRelay = GameObject.Find("TrueSyncManager").GetComponent <RelayController>(); } if (InputRelay != null) { InputRelay.ordershipspawn(shipstartspawn[0], (defaultspawnpos * 500) + new TSVector(0, 0, shipsmissionspawned * 1000), UnitMovementcommandcontroller.findspawnteamreverse(team), PhotonNetwork.AllocateViewID()); } shipstartspawn.RemoveAt(0); } }
public void SendData() { string text = ""; int expected_byte_count = CONSTANTS.MAX_FRAME_DATA; for (int i = 0; i < expected_byte_count; i++) { text += "x"; } byte[] data_bytes = Encoding.UTF8.GetBytes(text); IEmissionProcessor receiver = new ApiFrameEmissionProcessor(); IRelay relay = new SerialRelay("COM4", receiver); using (RelayController ctrl_send = new RelayController(relay, receiver, transmissionFactory)) { ulong long_address = 0x0013A20041B764AD; ushort short_address = ctrl_send.Discover(long_address); for (int i = 0; i < 1000; i++) { // send ACTUAL data try { ctrl_send.SendRawBytes(short_address, data_bytes); } catch (Exception e) { Console.WriteLine($"Failed at iteration {i} after {CONSTANTS.MAX_FRAME_DATA * i} bytes"); break; } } } }
void ChannelConnection_DisconnectedEvent(object sender, EventArgs e) { Log.Info("Relay IP: {0} disconnected", this.m_CurrentInfo != null ? this.m_CurrentInfo.Id.ToString() : this.ToString()); this.Dispose(); RelayController.DisconnecteRelayServer(this.m_CurrentInfo != null ? this.m_CurrentInfo.Id : this.CurrentInfo.Id); this.m_CurrentInfo = null; //Game server will be corresponding status offline }
private void Initialize() { // Initialize Relay Controller relayController = new RelayController(); // Configure timer to 2000ms delayed start and 10000ms interval relayTimer = new Timer(new TimerCallback(RelayTimerTick), null, 2000, 10000); }
public static void Handle_RegisterRelayServer(RelayConnection net, PacketReader reader) { byte id = reader.ReadByte(); short port = reader.ReadLEInt16(); string ip = reader.ReadDynamicString(); string password = reader.ReadDynamicString(); bool success = RelayController.RegisterRelayServer(id, password, net, port, ip); net.SendAsync(new NET_RelayRegistrationResult(success)); }
private void ChannelControl_ToggleStateClicked(object sender, ChannelToggledEventArgs e) { using (var relayController = new RelayController()) { relayController.ConnectDevice(e.DeviceInfo); var control = sender as ChannelInfoControl; control.ChannelInfo = relayController.ToggleChannel(e.DeviceInfo, e.ChannelInfo.Index); } }
private void Connect() { try { this.relay = this.relayFactory.Create("XBee A", "12345"); this.relayController = new RelayController(this.relay, this.processor, new TransmissionObjectFactory(new NonCompressor())); } catch (Exception e) { Debug.WriteLine($"Error while connecting to bluetooth ({e.Message})"); } }
public MainPage() { this.InitializeComponent(); // Giriş / Çıkış Portunu başlat gc = new IOPort(false, false, false, false); // Röle Denetleyicisini başlat role = new RelayController(); // Ölçüm timer'ını yapılandır sensorTimer = new Timer(new TimerCallback(SensorTimerTick), null, 2000, 10000); }
private void CloseAllChannels() { IRelayDeviceInfo device = GetCurrentDevice(); if (device == null) { return; } using (var relayController = new RelayController()) { relayController.ConnectDevice(device); relayController.CloseAllChannels(device); } }
/// <summary> /// Given order immidately after the countdown ends. /// </summary> /// <param name="a">The ship to spawn</param> public void spawnshiprightnow(int a) { if (InputRelay == null) { InputRelay = GameObject.Find("TrueSyncManager").GetComponent <RelayController>(); } if (unitcon == null) { unitcon = GameObject.Find("Controllers").GetComponent <UnitMovementcommandcontroller>(); crossvar = GameObject.Find("CrossLevelVariables").GetComponent <CrossLevelVariableHolder>(); } if (InputRelay != null) { InputRelay.ordershipspawn(a, getspawnpos(unitcon.team), crossvar.findspawnpos(PhotonNetwork.player.ID), PhotonNetwork.AllocateViewID()); } }
/// <summary> /// Dumps the state of the relays. /// </summary> /// <param name="relayBoard">The relay board.</param> private static void DumpRelaysState(RelayController relayBoard) { var states = relayBoard.GetRelaysStateDictionary(); "STATUS DUMP".Info(); "RELAY: \t8\t7\t6\t5\t4\t3\t2\t1".Info(); ($"STATE: \t" + $"{(states[RelayNumber.Relay08] ? 1 : 0)}\t" + $"{(states[RelayNumber.Relay07] ? 1 : 0)}\t" + $"{(states[RelayNumber.Relay06] ? 1 : 0)}\t" + $"{(states[RelayNumber.Relay05] ? 1 : 0)}\t" + $"{(states[RelayNumber.Relay04] ? 1 : 0)}\t" + $"{(states[RelayNumber.Relay03] ? 1 : 0)}\t" + $"{(states[RelayNumber.Relay02] ? 1 : 0)}\t" + $"{(states[RelayNumber.Relay01] ? 1 : 0)}\t").Info(); }
public void TransmitLargeObject() { int expected_byte_count = 20000; byte[] raw_bytes = new byte[expected_byte_count]; Random rnd = new Random(); for (int i = 0; i < expected_byte_count; i++) { //raw_bytes[i] = (byte)rnd.Next(); raw_bytes[i] = (byte)'x'; } using (RelayController ctrl_send = RelayController.ConnectSerial("COM4")) { using (RelayController ctrl_rcv = RelayController.ConnectSerial("COM6")) { ctrl_send.Clear(); ulong long_address = 0x0013A20041B764AD; ushort short_address = ctrl_send.Discover(long_address); // receive "Discover" emission List <byte> rcv_bytes = ctrl_rcv.ReceiveBytes(); Assert.AreEqual("Discover".Length, rcv_bytes.Count); // send actual data try { ctrl_send.Transmit(short_address, raw_bytes); } catch { // ignored Console.WriteLine("Transmission failed"); } List <EmissionDescriptor> emissions = ctrl_send.GetAllEmissions(); foreach (EmissionDescriptor descriptor in emissions) { Console.WriteLine($"Unused emission with frame type {descriptor.Header.FrameType}"); } // receive actual data byte[] rcv_data_bytes = ctrl_rcv.ReceiveTransmission(0); Assert.AreEqual(expected_byte_count, rcv_data_bytes.Length); for (int i = 0; i < expected_byte_count; i++) { Assert.AreEqual(raw_bytes[i], rcv_data_bytes[i]); } } } }
private void ListDevices() { using (var relayController = new RelayController()) { //var devices = relayController.ListDevices(); var devices = relayController.ListDevices(); if (devices.Count == 1) { // o bước này khi cắm mạch vào thì biến devices.Count = 1 // khi rút mạch vào thì biến devices.Count = 0 MessageBox.Show("co ket noi"); comboBox1.Items.Add(devices); comboBox1.SelectedIndex = 0; } else { MessageBox.Show("k ket noi"); } } }
public MainPage() { this.InitializeComponent(); // BME280 Sensörünü başlat bme = new BME280Sensor(); // VEML6075 Sensörünü başlat veml = new VEML6075Sensor(); // VEML6075 Sensörünü yapılandır veml.Config(VEML6075Sensor.IntegrationTime.IT_800ms, VEML6075Sensor.DynamicSetting.Normal, VEML6075Sensor.Trigger.NoActiveForceTrigger, VEML6075Sensor.ActiveForceMode.NormalMode, VEML6075Sensor.PowerMode.PowerOn); // Giriş / Çıkış Portunu başlat gc = new IOPort(false, false, false, false); // Röle Denetleyicisini başlat role = new RelayController(); // Ölçüm timer'ını yapılandır sensorTimer = new Timer(new TimerCallback(SensorTimerTick), null, 2000, 10000); }
private void ListDevices() { using (var relayController = new RelayController()) { var devices = relayController.ListDevices(); while (devices.Count == 0) { var result = MessageBox.Show(this, "No devices were found. Would you like to try again?", "No Devices Found", MessageBoxButton.YesNo, MessageBoxImage.Asterisk, MessageBoxResult.Yes); if (result.HasFlag(MessageBoxResult.No)) { Application.Current.Shutdown(); return; } devices = relayController.ListDevices(); } DevicesComboBox.ItemsSource = devices; DevicesComboBox.SelectedIndex = 0; } }
/// <summary> // checks if it can buy ship and if so, buys ship. /// <summary> void BuyShip() { addmoney(increaserate); if (actualshiptobuy == 0) { NextBuy = randominst.Next(0, 200); actualshiptobuy = getshiptobuy(NextBuy); if (unitcontrol.getshipbynumber(actualshiptobuy) != null) { NextBuyCost = unitcontrol.getshipbynumber(actualshiptobuy).GetComponent <_Ship>().PointsToDeploy; } } if (PhotonNetwork.isMasterClient && unitcontrol && checkmoney(money)) { TSVector spawnpos = startpos; if (unitcontrol.teammembersout(team).Count != 0) { spawnpos = PositinonRelativeToHeadset.getspawnpos(team); } if (crosslevelvar.campaign == true && crosslevelvar.campaignlevel.objective == MainMenuCampaignControlScript.eMissionObjective.Survive) { spawnpos = startpos; } if (InputRelay == null) { InputRelay = GameObject.Find("TrueSyncManager").GetComponent <RelayController>(); } if (InputRelay != null) { InputRelay.ordershipspawn(actualshiptobuy, spawnpos, UnitMovementcommandcontroller.findspawnteamreverse(team), PhotonNetwork.AllocateViewID()); } lastbuy = actualshiptobuy; actualshiptobuy = 0; } }
/// <summary> /// Main entry point /// </summary> /// <param name="args">The arguments.</param> private static void Main(string[] args) { using (var relayBoard = new RelayController(s => s.Trace(), (e) => e.Error())) { var isOpen = false; var password = RelayController.DefaultPassword; const string serialPort = "COM6"; while (isOpen == false) { try { $"Opening port {serialPort}".Info(); relayBoard.Open(serialPort, password); isOpen = true; } catch (Exception ex) { ex.Log(nameof(Main)); password = PromptForPassword(); } } while (true) { var selectedOption = Terminal.ReadPrompt("Select an option", ActionOptions, "Exit this program"); if (selectedOption.Key == ConsoleKey.Q) { $"Board: Model: {relayBoard.BoardModel}, Version: {relayBoard.BoardVersion}, FW: {relayBoard.FirmwareVersion}, Channels: {relayBoard.RelayChannelCount}, Mode: {relayBoard.RelayOperatingMode}".Info(); } else if (selectedOption.Key == ConsoleKey.W) { DumpRelaysState(relayBoard); } else if (selectedOption.Key == ConsoleKey.E) { var newOpModeKey = Terminal.ReadKey("Enter Operating Mode (L for Latching, anything else, Momentary): ", false); relayBoard.RelayOperatingMode = newOpModeKey.Key == ConsoleKey.L ? RelayOperatingMode.Latching : RelayOperatingMode.Momentary; $"Relay Operating Mode is now: {relayBoard.RelayOperatingMode}".Info(); } else if (selectedOption.Key == ConsoleKey.R) { $"Relay Board Working Voltage: {relayBoard.WorkingVoltage}".Info(); $"Relay Board Temperature : {relayBoard.Temperature}".Info(); } else if (selectedOption.Key == ConsoleKey.T) { relayBoard.ChangePassword(PromptForPassword()); } else if (selectedOption.Key == ConsoleKey.A) { relayBoard.SetRelayStateAll(true); } else if (selectedOption.Key == ConsoleKey.S) { relayBoard.SetRelayStateAll(false); } else if (selectedOption.Key == ConsoleKey.D) { var relayNumber = (RelayNumber)Terminal.ReadNumber("Enter a relay number from 1 to 8", 1); if ((int)relayNumber >= 1 && (int)relayNumber <= 8) { relayBoard[relayNumber] = true; } else { "Bad relay number. Argument must be between 1 and 8".Error(); } } else if (selectedOption.Key == ConsoleKey.F) { var relayNumber = (RelayNumber)Terminal.ReadNumber("Enter a relay number from 1 to 8", 1); if ((int)relayNumber >= 1 && (int)relayNumber <= 8) { relayBoard[relayNumber] = false; } else { "Bad relay number. Argument must be between 1 and 8".Error(); } } else { break; } } } Terminal.ReadKey("Press any key to continue . . ."); }
/// <summary> /// Reset the InputRelay. /// </summary> public override void OnSyncedStart() { InputRelay = GameObject.Find("TrueSyncManager").GetComponent <RelayController>(); }
/// <summary> /// the truesync deterministic start, update everything relating to that. /// </summary> public override void OnSyncedStart() { inputrelay = GameObject.Find("TrueSyncManager").GetComponent <RelayController>(); owner = TrueSyncManager.LocalPlayer; ownerIndex = TrueSyncManager.LocalPlayer.Id; }
/// <summary> /// Run 90 times a second to accept input from the player and reduce the build and move order stack. /// </summary> public override void OnSyncedInput() { if (running) { foreach (_Ship ship in unitcomscript.allshipsscript) { if (ship && ship.gameObject != null) { ship.Update(); } } } if (shipstobuy.Count == 0 && orderstodo.Count == 0) { TrueSyncInput.SetInt(0, 10); } if (manager == null || (manager.relay == null && unitcomscript != null)) { if (unitcomscript) { manager = GameObject.Find("TrueSyncManager").GetComponent <RelayController>(); unitcomscript.output = true; manager.relay = this; Debug.Log(manager.relay); } } if (unitcomscript) { unitcomscript.output = true; } else { unitcomscript = unitcomscript = GameObject.Find("Controllers").GetComponent <UnitMovementcommandcontroller>(); } if (shipstobuy.Count > 0) { TrueSyncInput.SetInt(0, 1); TrueSyncInput.SetInt(1, shipstobuy[0].spawnship); TrueSyncInput.SetTSVector(2, shipstobuy[0].spawnpos); TrueSyncInput.SetInt(3, shipstobuy[0].spawnteam); TrueSyncInput.SetInt(4, shipstobuy[0].viewID); Debug.Log(shipstobuy[0].spawnship + " " + shipstobuy[0].spawnpos + " " + shipstobuy[0].viewID); shipstobuy.RemoveAt(0); } else { TrueSyncInput.SetInt(1, 0); } if (orderstodo.Count > 0) { int i = 2; TrueSyncInput.SetInt((byte)0, 0); // i++; foreach (GameObject gam in orderstodo[0].selectedships) { if (orderstodo[0].targethold == null && gam.gameObject != null) { PhotonView targetview = gam.GetComponent <PhotonView>(); TrueSyncInput.SetInt((byte)i, targetview.viewID); i++; TrueSyncInput.SetTSVector((byte)i, TargetPosition((i / 2), GameObject.Find("World").transform.Find("Objects").InverseTransformPoint(orderstodo[0].targetpos.ToVector()).ToTSVector(), orderstodo[0].selectedships.Count)); i++; TrueSyncInput.SetInt((byte)i, 3000); i++; TrueSyncInput.SetFP((byte)i, orderstodo[0].averagespeed); i++; TrueSyncInput.SetBool((byte)i, orderstodo[0].waypoints); i++; } else if (gam.gameObject != null) { PhotonView targetview = gam.GetComponent <PhotonView>(); TrueSyncInput.SetInt((byte)i, targetview.viewID); i++; TrueSyncInput.SetTSVector((byte)i, TargetPosition((i / 2), GameObject.Find("World").transform.Find("Objects").InverseTransformPoint(orderstodo[0].targetpos.ToVector()).ToTSVector(), orderstodo[0].selectedships.Count)); i++; TrueSyncInput.SetInt((byte)i, orderstodo[0].targethold.GetComponent <PhotonView>().viewID); i++; TrueSyncInput.SetFP((byte)i, orderstodo[0].averagespeed); i++; TrueSyncInput.SetBool((byte)i, orderstodo[0].waypoints); i++; } } TrueSyncInput.SetInt(1, i); orderstodo.RemoveAt(0); } if (runsimulationnow) { TrueSyncInput.SetInt(100, 1); runsimulationnow = false; } }
public void ScrambleAndTransmit() { int expected_byte_count = 1000; uint expected_object_id = 5; byte[] raw_bytes = new byte[expected_byte_count]; for (int i = 0; i < expected_byte_count; i++) { raw_bytes[i] = (byte)i; } using (RelayController ctrl_send = RelayController.ConnectSerial("COM4")) { using (RelayController ctrl_rcv = RelayController.ConnectSerial("COM6")) { ctrl_send.Clear(); ulong long_address = 0x0013A20041B764AD; ushort short_address = ctrl_send.Discover(long_address); // receive "Discover" emission List <byte> rcv_bytes = ctrl_rcv.ReceiveBytes(); Assert.AreEqual("Discover".Length, rcv_bytes.Count); // send actual data try { TransmissionObject xm = transmissionFactory.Create(raw_bytes, expected_object_id); byte[] header_bytes = xm.Header.Pack().ToArray(); ctrl_send.SendRawBytes(short_address, header_bytes); int total_byte_count = header_bytes.Length; Random rnd = new Random(); IEnumerable <TransmissionChunk> chunks = xm.Chunks.OrderBy(c => rnd.Next()); foreach (TransmissionChunk chunk in chunks) { byte[] packet_bytes = chunk.Pack().ToArray(); try { ctrl_send.SendRawBytes(short_address, packet_bytes); total_byte_count += packet_bytes.Length; } catch (Exception e) { Console.WriteLine($"Failed at packet {chunk.Header.ID} after {total_byte_count} bytes"); throw e; } } } catch { // ignored Console.WriteLine("Transmission failed"); } List <EmissionDescriptor> emissions = ctrl_send.GetAllEmissions(); foreach (EmissionDescriptor descriptor in emissions) { Console.WriteLine($"Unused emission with frame type {descriptor.Header.FrameType}"); } // receive actual data byte[] rcv_data_bytes = ctrl_rcv.ReceiveTransmission(expected_object_id); Assert.AreEqual(expected_byte_count, rcv_data_bytes.Length); for (int i = 0; i < expected_byte_count; i++) { Assert.AreEqual(raw_bytes[i], rcv_data_bytes[i]); } } } }
static void Main(string[] args)//(ip, port, channel, cycletime of updating)<----all are optional { Console.WriteLine("--------------------------------------------------------------"); string host = HOST; int port = PORT, channel = CHANNEL, cycleTime = CYCLETIME; int tMonth = DateTime.Now.Month; try { if (args[0] != null) { host = args[0]; } } catch (IndexOutOfRangeException e) { } try { if (args[1] != null) { port = int.Parse(args[1]); } } catch (IndexOutOfRangeException e) { } try { if (args[2] != null) { channel = int.Parse(args[2]); } } catch (IndexOutOfRangeException e) { } try { if (args[3] != null) { cycleTime = int.Parse(args[3]); } } catch (IndexOutOfRangeException e) { } try { c = new RelayController(host, port, channel); t1 = new Timer(new TimerCallback((Object obj) => { DateTime now = DateTime.Now; if (now.Date != lastUpdate.Date || isDefault) { updateTime(); } }), new AutoResetEvent(true), 1000, TIME_UPDATE_INTERVAL); t2 = new Timer(new TimerCallback((Object obj) => { updateRelay(); }), new AutoResetEvent(true), 1000, cycleTime); string line = null; while (line != "EXIT") { Console.WriteLine("\nType \"Exit\" if you leave." + "\n\"LT\", for showing last update date." + "\n\"R\", for update relay status immediately." + "\n\"UR\", for update the cycle time for relay update period immediately." + "\n\"T\", for update time immediately.\n" ); line = Console.ReadLine().ToUpper(); switch (line) { case "LT": Console.WriteLine("Last time to request sunrise and sunset time is " + lastUpdate.ToLongDateString()); Console.WriteLine("The light stops between " + start_hour.ToString().PadLeft(2, '0') + ":" + start_min.ToString().PadLeft(2, '0') + " and " + end_hour.ToString().PadLeft(2, '0') + ":" + end_min.ToString().PadLeft(2, '0') + "."); break; case "R": updateRelay(); break; case "T": updateTime(); break; case "UR": while (true) { Console.WriteLine("Really updates in every " + cycleTime / 1000 + " second. Please enter new update time, or type \"E\" to cancel."); string input = Console.ReadLine(); int time = 0; bool isValid = Int32.TryParse(input, out time); if (isValid && time > 0) { cycleTime = time * 1000; t2.Change(1000, cycleTime); Console.WriteLine("Updated."); break; } else { if (input.ToUpper() == "E") { break; } Console.WriteLine("Invalid input!"); } } break; case "Z": throw new Exception(); case "EXIT": default: break; } } } catch (Exception e) { t1.Dispose(); t2.Dispose(); Main(new string[] { host, port.ToString(), channel.ToString(), cycleTime.ToString() }); Debugger.print(e.Message); } }
static void Main(string[] args) { var relay = new RelayController <VrpnManager>(args); relay.RunServerLoop(); }