//Is called when "YourDyno" Closes
        private void OnApplicationExit(object sender, EventArgs e)
        {
            try
            {
                RelayManager.CloseAllChannels(); //Closes all relay channels
            }
            catch
            {
                MessageBox.Show("Failed to close relays.");
            }

            try
            {
                //Removes the driver (Needs to be done though CMD since not every one runs "YourDyno" as admin.
                System.Diagnostics.Process          process   = new System.Diagnostics.Process();
                System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
                startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                startInfo.FileName    = "cmd.exe";
                startInfo.Arguments   = "/C del " + dlldir;
                process.StartInfo     = startInfo;
                process.Start();
            }
            catch
            {
                MessageBox.Show("Failed to clean up USB Relay Driver.");
            }
        }
 private void timer2000_Tick(object sender, EventArgs e)
 {
     RelayManager.Open(0, 2);
     R2.BackColor = Color.Orange;
     timer2000.Stop();
     timer500.Start();
     Properties.Status.Default.race_state = 1;
 }
示例#3
0
 public Manager()
 {
     if (Manager.manager != null)
     {
         throw new UnityException("Cannot create another instance of Manager");
     }
     this.rManager = new RelayManager();
     this.sManager = new SatelliteManager();
     this.eManager = new EchoManager();
     this.cManager = new CityManager();
     this.lManager = new LeverManager();
     this.mManager = new MusicManager();
 }
示例#4
0
 private void Awake()
 {
     if (Instance == null)
     {
         Instance             = this;
         _constructiblesTiles = new List <BaseTileData>();
         _relayInRange        = new List <BaseTileData>();
         InitState            = InitializationState.Ready;
     }
     else
     {
         Destroy(gameObject);
     }
 }
        private void buttonCancelRace_Click(object sender, EventArgs e)
        {
            groupBox2.Enabled = true;
            groupBox3.Enabled = true;
            stopwatch.Stop();
            startButton.Enabled = true;
            RelayManager.Close(0, 1);
            R1.BackColor = SystemColors.Control;
            RelayManager.Close(0, 2);
            R2.BackColor = SystemColors.Control;
            RelayManager.Close(0, 3);
            R3.BackColor = SystemColors.Control;
            RelayManager.Close(0, 4);
            R4.BackColor = SystemColors.Control;
            RelayManager.Close(0, 5);
            R5.BackColor = SystemColors.Control;

            buttonCancelRace.Visible = false;
        }
        private void startButton_Click(object sender, EventArgs e)
        {
            SaveEverything();
            Properties.Status.Default.race_state = 0;
            //Race State:
            //0 - before start
            //1 - starting
            //2 - green, Go!
            //3 - false start
            //4 - Finished

            counter = 0;
            RelayManager.Open(0, 1);
            R1.BackColor = Color.Blue;
            RelayManager.Close(0, 2);
            R2.BackColor = SystemColors.Control;
            RelayManager.Close(0, 3);
            R3.BackColor = SystemColors.Control;
            RelayManager.Close(0, 4);
            R4.BackColor = SystemColors.Control;
            RelayManager.Close(0, 5);
            R5.BackColor = SystemColors.Control;

            buttonCancelRace.Visible = false;

            timer2000.Interval = Properties.Settings.Default.preStageTime_ms;
            if (Properties.Settings.Default.start_mode)
            {
                timer500.Interval = 500;
            }
            else
            {
                timer500.Interval = 400;
            }
            groupBox2.Enabled = false;
            groupBox3.Enabled = false;

            stopwatch.Stop();
            stopwatch.Reset();

            timer2000.Start();
        }
        private void timer500_Tick(object sender, EventArgs e)
        {
            counter++;
            switch (counter)
            {
            case 1:
                if (Properties.Settings.Default.start_mode)
                {
                    RelayManager.Close(0, 2);
                    R2.BackColor = SystemColors.Control;
                }
                RelayManager.Open(0, 3);
                R3.BackColor = Color.Orange;
                break;

            case 2:
                if (Properties.Settings.Default.start_mode)
                {
                    RelayManager.Close(0, 3);
                    R3.BackColor = SystemColors.Control;
                }
                RelayManager.Open(0, 4);
                R4.BackColor = Color.Orange;
                break;

            case 3:
                RelayManager.Close(0, 2);
                RelayManager.Close(0, 3);
                RelayManager.Close(0, 4);
                RelayManager.Open(0, 5);
                R2.BackColor = SystemColors.Control;
                R3.BackColor = SystemColors.Control;
                R4.BackColor = SystemColors.Control;
                R5.BackColor = Color.ForestGreen;
                timer500.Stop();
                buttonCancelRace.Visible = true;
                stopwatch.Restart();
                Properties.Status.Default.race_state = 2;
                break;
            }
        }
示例#8
0
    public void ResetExceptMusic()
    {
        this.rManager.Destroy();
        this.rManager = null;

        this.sManager.Destroy();
        this.sManager = null;

        this.eManager.Destroy();
        this.eManager = null;

        this.cManager.Destroy();
        this.cManager = null;

        this.lManager.Destroy();
        this.lManager = null;

        this.rManager = new RelayManager();
        this.sManager = new SatelliteManager();
        this.eManager = new EchoManager();
        this.cManager = new CityManager();
        this.lManager = new LeverManager();
    }
示例#9
0
    public void Destroy()
    {
        this.rManager.Destroy();
        this.rManager = null;

        this.sManager.Destroy();
        this.sManager = null;

        this.eManager.Destroy();
        this.eManager = null;

        this.cManager.Destroy();
        this.cManager = null;

        this.lManager.Destroy();
        this.lManager = null;

        this.mManager.Destroy();
        this.mManager = null;


        Manager.manager = null;
        //GameObject.Destroy(gameObject);
    }
示例#10
0
        private Exception RegisterForPacketRelay()
        {
            if (_worker.CancellationPending)
            {
                return(null);
            }
            var msgResult = MessageBox.Show(String.Format("Failed to configure NAT/Firewall. " +
                                                          "MiracleSticks can still connect using a hosted relay service, but performance may be degraded. " +
                                                          "To ensure optimal performance, either enable UPnP on your NAT/Firewall or manually configure it to forward port {0} to this computer.",
                                                          ConfigManager.Data.Port),
                                            "Configuration Warning",
                                            MessageBoxButton.OKCancel,
                                            MessageBoxImage.Warning);

            if (msgResult == MessageBoxResult.Cancel || _worker.CancellationPending)
            {
                return(null);
            }

            _worker.ReportProgress(80, "Registering Server");
            log.Write(TraceLevel.Info, "Registering with service (proxy = true)");

            var response = _apiClient.Register(new RegistrationRequest
            {
                ComputerName = ConfigManager.Data.ComputerName,
                StickID      = ConfigManager.Data.StickId,
                GroupID      = ConfigManager.Data.GroupId,
                RequireRelay = true
            });

            if (!response.Success)
            {
                log.Write(TraceLevel.Error, "Registration failed: " + response.Description);
                return(new Exception("Registration failed: " + response.Description));
            }
            else
            {
                if (String.IsNullOrWhiteSpace(response.RelayIPAddress) || response.RelayPort == 0)
                {
                    log.Write(TraceLevel.Error, "Relay registration error: Invalid response from server. Please contact technical support.");
                    return(new Exception("Relay registration error: Incomplete response from server: " + response.Description));
                }

                log.Write(TraceLevel.Info, String.Format("Connecting to relay: {0}:{1}", response.RelayIPAddress, response.RelayPort));

                var relayHost = Dns.GetHostEntry(response.RelayIPAddress);
                if (relayHost == null || relayHost.AddressList == null || relayHost.AddressList.Length == 0 || relayHost.AddressList[0] == null)
                {
                    log.Write(TraceLevel.Error, "Relay registration error: Could not resolve hostname of relay server: " + response.RelayIPAddress);
                    return(new Exception("Relay registration error: Could not resolve hostname of relay server: " + response.RelayIPAddress));
                }

                IPEndPoint relayEP = new IPEndPoint(relayHost.AddressList[0], response.RelayPort);
                _relayManager = new RelayManager();
                if (!_relayManager.Start(relayEP, ConfigManager.Data.Port))
                {
                    log.Write(TraceLevel.Error, "Local relay error: " + _relayManager.ErrorDescription);
                    return(new Exception(_relayManager.ErrorDescription));
                }
                else
                {
                    MainServerWindow.ViewModel.Address = "Relay Mode";

                    _worker.ReportProgress(100, "Listening for Connections...");
                    log.Write(TraceLevel.Info, "Listening for Connections...");
                }
            }
            return(null);
        }
示例#11
0
        static void Main(string[] args)
        {
            RelayManager.Init();
            Console.WriteLine("Total devices : " + RelayManager.DevicesCount().ToString());
            for (int i = 0; i < RelayManager.DevicesCount(); ++i)
            {
                RelayManager.OpenDevice(i);
                Console.WriteLine("Device number   : {0}", RelayManager.CurrentDeviceIndex());
                Console.WriteLine("Device serial   : {0}", RelayManager.RelaySerial());
                Console.WriteLine("Device channels : {0}", RelayManager.ChannelsCount());
                Console.WriteLine("--------------------------------");
            }

            Console.WriteLine("Enter 'q' for quit");

            while (true)
            {
                string s = Console.ReadLine();
                if (s == "1")
                {
                    Console.WriteLine("Opening...");
                    RelayManager.Open(0, 1);
                    Console.WriteLine("Channel 1 opened status : " + RelayManager.ChannelOpened(1));
                }
                if (s == "2")
                {
                    Console.WriteLine("Closing...");
                    RelayManager.Close(0, 1);
                    Console.WriteLine("Channel 1 opened status : " + RelayManager.ChannelOpened(1));
                }
                if (s == "3")
                {
                    Console.WriteLine("Opening...");
                    RelayManager.Open(1, 1);
                    Console.WriteLine("Channel 1 opened status : " + RelayManager.ChannelOpened(1));
                }
                if (s == "4")
                {
                    Console.WriteLine("Closing...");
                    RelayManager.Close(1, 1);
                    Console.WriteLine("Channel 1 opened status : " + RelayManager.ChannelOpened(1));
                }
                if (s == "5")
                {
                    Console.WriteLine("Inverting channel 1 on relay 0...");
                    RelayManager.Invert(0, 1);
                    Console.WriteLine("Channel 1 opened status : " + RelayManager.ChannelOpened(1));
                }
                if (s == "6")
                {
                    Console.WriteLine("Inverting channel 1 on relay 1 ...");
                    RelayManager.Invert(1, 1);
                    Console.WriteLine("Channel 1 opened status : " + RelayManager.ChannelOpened(1));
                }
                if (s == "q")
                {
                    break;
                }
            }
            RelayManager.Close();
        }
        public SetDistancePerRev()
        {
            ////////////////////////////////////
            ///Hotkeys
            ///
            ////////////////////////////////////
            //Hilfsform erschaffen um die Hotkeys zu behandeln. nicht sichtbar
            Form HKHandlerForm = new Form()
            {
                Visible = false
            };

            HK.OwnerForm      = HKHandlerForm;
            HK.HotKeyPressed += new HotKey.HotKeyPressedEventHandler(HK_HotKeyPressed);

            /*HK.AddHotKey(Keys.F1, HotKey.MODKEY.MOD_CONTROL, "Relay1Key");
            *  HK.AddHotKey(Keys.F2, HotKey.MODKEY.MOD_CONTROL, "Relay2Key");
            *  HK.AddHotKey(Keys.F3, HotKey.MODKEY.MOD_CONTROL, "Relay3Key");
            *  HK.AddHotKey(Keys.F4, HotKey.MODKEY.MOD_CONTROL, "Relay4Key");
            *  HK.AddHotKey(Keys.F5, HotKey.MODKEY.MOD_CONTROL, "Relay5Key");*/
            HK.AddHotKey(Keys.F6, HotKey.MODKEY.MOD_NONE, "Relay6Key");
            HK.AddHotKey(Keys.F7, HotKey.MODKEY.MOD_NONE, "Relay7Key");
            HK.AddHotKey(Keys.F8, HotKey.MODKEY.MOD_NONE, "Relay8Key");
            HK.AddHotKey(Keys.F9, HotKey.MODKEY.MOD_NONE, "ResetDistance");

            //////////////////////////////
            ///Relay Status
            ///
            Rectangle screensize = Screen.PrimaryScreen.WorkingArea;
            int       width      = 600;
            int       xpos       = screensize.Width - width;

            int ypos = 25;

            statusOverlay.Location = new System.Drawing.Point(xpos, ypos);
            statusOverlay.Size     = new Size(width, 38);

            InitializeComponent();

            statusOverlay.Show();


            R6.Text = Properties.Settings.Default.R_6Name;
            R7.Text = Properties.Settings.Default.R_7Name;
            R8.Text = Properties.Settings.Default.R_8Name;

            //Starts the driver
            RelayManager.Init();
            startButton.Enabled = true;
            R1.Enabled          = false; R1.BackColor = SystemColors.Control;
            R2.Enabled          = false; R2.BackColor = SystemColors.Control;
            R3.Enabled          = false; R3.BackColor = SystemColors.Control;
            R4.Enabled          = false; R4.BackColor = SystemColors.Control;
            R5.Enabled          = false; R5.BackColor = SystemColors.Control;
            R6.Enabled          = true;
            R7.Enabled          = true;
            R8.Enabled          = true;

            //Checks to see if there is a connected USB Relay board.
            if (RelayManager.DevicesCount() == 0)
            {
                Properties.Status.Default.NoRelayBrd = true;
                //MessageBox.Show("USBRelay (No Connected Devices)");
            }
            else
            {
                //Opens first USB Relay board found
                RelayManager.OpenDevice(0);

                //Reads serial number
                RSerial.Text = "USB Relay Serial: " + (RelayManager.RelaySerial().ToString());

                //Reads info on how many channels and enables the correct number of buttons.
                switch (RelayManager.ChannelsCount())
                {
                case 1:
                    R1.Enabled = true;
                    //Checks state of relay and sets colour accordingly.
                    if (RelayManager.ChannelOpened(1).ToString() == "False")
                    {
                        R1.BackColor = SystemColors.Control;
                    }
                    else
                    {
                        R1.BackColor = Color.ForestGreen;
                    }

                    break;

                case 2:
                    R1.Enabled = true;
                    R2.Enabled = true;
                    if (RelayManager.ChannelOpened(1).ToString() == "False")
                    {
                        R1.BackColor = SystemColors.Control;
                    }
                    else
                    {
                        R1.BackColor = Color.ForestGreen;
                    }
                    if (RelayManager.ChannelOpened(2).ToString() == "False")
                    {
                        R2.BackColor = SystemColors.Control;
                    }
                    else
                    {
                        R2.BackColor = Color.ForestGreen;
                    }

                    break;

                case 4:
                    R1.Enabled = true;
                    R2.Enabled = true;
                    R3.Enabled = true;
                    R4.Enabled = true;
                    if (RelayManager.ChannelOpened(1).ToString() == "False")
                    {
                        R1.BackColor = SystemColors.Control;
                    }
                    else
                    {
                        R1.BackColor = Color.ForestGreen;
                    }
                    if (RelayManager.ChannelOpened(2).ToString() == "False")
                    {
                        R2.BackColor = SystemColors.Control;
                    }
                    else
                    {
                        R2.BackColor = Color.ForestGreen;
                    }
                    if (RelayManager.ChannelOpened(3).ToString() == "False")
                    {
                        R3.BackColor = SystemColors.Control;
                    }
                    else
                    {
                        R3.BackColor = Color.ForestGreen;
                    }
                    if (RelayManager.ChannelOpened(4).ToString() == "False")
                    {
                        R4.BackColor = SystemColors.Control;
                    }
                    else
                    {
                        R4.BackColor = Color.ForestGreen;
                    }
                    break;

                case 8:
                    R1.Enabled = true;
                    R2.Enabled = true;
                    R3.Enabled = true;
                    R4.Enabled = true;
                    R5.Enabled = true;
                    R6.Enabled = true;
                    R7.Enabled = true;
                    R8.Enabled = true;
                    if (RelayManager.ChannelOpened(1).ToString() == "False")
                    {
                        R1.BackColor = SystemColors.Control;
                    }
                    else
                    {
                        R1.BackColor = Color.ForestGreen;
                    }
                    if (RelayManager.ChannelOpened(2).ToString() == "False")
                    {
                        R2.BackColor = SystemColors.Control;
                    }
                    else
                    {
                        R2.BackColor = Color.ForestGreen;
                    }
                    if (RelayManager.ChannelOpened(3).ToString() == "False")
                    {
                        R3.BackColor = SystemColors.Control;
                    }
                    else
                    {
                        R3.BackColor = Color.ForestGreen;
                    }
                    if (RelayManager.ChannelOpened(4).ToString() == "False")
                    {
                        R4.BackColor = SystemColors.Control;
                    }
                    else
                    {
                        R4.BackColor = Color.ForestGreen;
                    }
                    if (RelayManager.ChannelOpened(5).ToString() == "False")
                    {
                        R5.BackColor = SystemColors.Control;
                    }
                    else
                    {
                        R5.BackColor = Color.ForestGreen;
                    }
                    if (RelayManager.ChannelOpened(6).ToString() == "False")
                    {
                        R6.BackColor = SystemColors.Control;
                    }
                    else
                    {
                        R6.BackColor = Color.ForestGreen;
                    }
                    if (RelayManager.ChannelOpened(7).ToString() == "False")
                    {
                        R7.BackColor = SystemColors.Control;
                    }
                    else
                    {
                        R7.BackColor = Color.ForestGreen;
                    }
                    if (RelayManager.ChannelOpened(8).ToString() == "False")
                    {
                        R8.BackColor = SystemColors.Control;
                    }
                    else
                    {
                        R8.BackColor = Color.ForestGreen;
                    }
                    break;

                default:
                    MessageBox.Show("Something went wrong with detecting number of relays.");
                    break;
                }
            }

            //Fill Text Boxes and other control elements with Settings
            textBoxBrakeCirc.Value = (decimal)Properties.Settings.Default.brakeCirc;
            textBoxCdA.Text        = Properties.Settings.Default.CdA.ToString();
            textBoxStageTime.Text  = Properties.Settings.Default.preStageTime_ms.ToString();
            textBoxWeight.Text     = Properties.Settings.Default.VehicleWeight.ToString();
            if (Properties.Settings.Default.start_mode)
            {
                radioButtonModeStd.Checked = true;
            }
            else
            {
                radioButtonModeNHRA.Checked = true;
            }
            switch (Properties.Settings.Default.race_mode)
            {
            case 0:
                radioButtonRaceMode1.Checked = true;
                break;

            case 1:
                radioButtonRaceMode2.Checked = true;
                break;

            case 2:
                radioButtonRaceMode3.Checked = true;
                break;

            case 3:
                radioButtonRaceMode4.Checked = true;
                break;

            case 4:
                radioButtonRaceMode5.Checked = true;
                break;
            }
        }
        public void toggleRelay(int RelayNo)
        {
            //Set RelayNo to 0 if rollers are turning and deactivation checkbox is checked
            //DEBUG:
            //Properties.Status.Default.RollersTurning = true;
            if (Properties.Status.Default.RollersTurning & Properties.Settings.Default.R6dis_on_speed & RelayNo == 6)
            {
                RelayNo = 0;
            }
            if (Properties.Status.Default.RollersTurning & Properties.Settings.Default.R7dis_on_speed & RelayNo == 7)
            {
                RelayNo = 0;
            }
            if (Properties.Status.Default.RollersTurning & Properties.Settings.Default.R8dis_on_speed & RelayNo == 8)
            {
                RelayNo = 0;
            }

            switch (RelayNo)
            {
            case 0:
                break;

            case 1:
                if (R1.BackColor == SystemColors.Control)
                {
                    //Enables that relay when button pressed.
                    RelayManager.Open(0, 1);
                    R1.BackColor = Color.ForestGreen;
                }
                else
                {
                    //Disables that relay when button pressed.
                    RelayManager.Close(0, 1);
                    R1.BackColor = SystemColors.Control;
                }
                break;

            case 2:
                if (R2.BackColor == SystemColors.Control)
                {
                    //Enables that relay when button pressed.
                    RelayManager.Open(0, 2);
                    R2.BackColor = Color.ForestGreen;
                }
                else
                {
                    //Disables that relay when button pressed.
                    RelayManager.Close(0, 2);
                    R2.BackColor = SystemColors.Control;
                }
                break;

            case 3:
                if (R3.BackColor == SystemColors.Control)
                {
                    //Enables that relay when button pressed.
                    RelayManager.Open(0, 3);
                    R3.BackColor = Color.ForestGreen;
                }
                else
                {
                    //Disables that relay when button pressed.
                    RelayManager.Close(0, 3);
                    R3.BackColor = SystemColors.Control;
                }
                break;

            case 4:
                if (R4.BackColor == SystemColors.Control)
                {
                    //Enables that relay when button pressed.
                    RelayManager.Open(0, 4);
                    R4.BackColor = Color.ForestGreen;
                }
                else
                {
                    //Disables that relay when button pressed.
                    RelayManager.Close(0, 4);
                    R4.BackColor = SystemColors.Control;
                }
                break;

            case 5:
                if (R5.BackColor == SystemColors.Control)
                {
                    //Enables that relay when button pressed.
                    RelayManager.Open(0, 5);
                    R5.BackColor = Color.ForestGreen;
                }
                else
                {
                    //Disables that relay when button pressed.
                    RelayManager.Close(0, 5);
                    R5.BackColor = SystemColors.Control;
                }
                break;

            case 6:
                if (R6.BackColor == SystemColors.Control)
                {
                    //Enables that relay when button pressed.
                    RelayManager.Open(0, 6);
                    R6.BackColor = Color.ForestGreen;
                    statusOverlay.button1.BackColor = Color.ForestGreen;
                }
                else
                {
                    //Disables that relay when button pressed.
                    RelayManager.Close(0, 6);
                    R6.BackColor = SystemColors.Control;
                    statusOverlay.button1.BackColor = SystemColors.Control;
                }
                break;

            case 7:
                if (R7.BackColor == SystemColors.Control)
                {
                    //Enables that relay when button pressed.
                    RelayManager.Open(0, 7);
                    R7.BackColor = Color.ForestGreen;
                    statusOverlay.button2.BackColor = Color.ForestGreen;
                }
                else
                {
                    //Disables that relay when button pressed.
                    RelayManager.Close(0, 7);
                    R7.BackColor = SystemColors.Control;
                    statusOverlay.button2.BackColor = SystemColors.Control;
                }
                break;

            case 8:
                if (R8.BackColor == SystemColors.Control)
                {
                    //Enables that relay when button pressed.
                    RelayManager.Open(0, 8);
                    R8.BackColor = Color.ForestGreen;
                    statusOverlay.button3.BackColor = Color.ForestGreen;
                }
                else
                {
                    //Disables that relay when button pressed.
                    RelayManager.Close(0, 8);
                    R8.BackColor = SystemColors.Control;
                    statusOverlay.button3.BackColor = SystemColors.Control;
                }
                break;
            }
        }