private void initializeComponents()
        {
            string[] ports = SerialPort.GetPortNames();
            _comPortSelection.Items.AddRange(ports);
            _arduinoPort = new SerialPort();

            _currentState = new ArduinoTest();
            _mTimer.Elapsed +=new System.Timers.ElapsedEventHandler( timer_elapsed );
            _mTimer.Interval = ARDUINO_WAIT_TIME*2;

            //open_config_file();
            string path = System.Environment.GetEnvironmentVariable("XPlanePlugin");

            //Check that path exists
            if (path == null)
            {
                folderBrowserDialog1.ShowDialog();
                path = folderBrowserDialog1.SelectedPath;

                if (path == null)
                {
                    return;
                }

                System.Environment.SetEnvironmentVariable("XPlanePlugin", path, EnvironmentVariableTarget.User);

            }
            else
            {
                string filename = path + "\\ArduinoConfig.xml";
                open_config(filename);
            }

            find_arduino();
        }
示例#2
0
    // Use this for initialization
    void Start()
    {
        arduino = new SerialPort("/dev/tty.usbmodem1411", 9600);
        arduino.Open();

        cube1 = GameObject.Find("Cube").GetComponent <ArduinoTest>();
        cube2 = GameObject.Find("Cube (1)").GetComponent <ArduinoTest2>();
    }
示例#3
0
    public void OnMessageReceived(object o, string msg)
    {
        ArduinoTest arduino      = o as ArduinoTest;
        var         otherArduino = GetOtherArduino(arduino);

        if (arduino.isArduinoA)
        {
            print("A " + msg);
        }
        else
        {
            print("B " + msg);
        }

        var index = Convert.ToInt32(msg);

        if (arduino.isCityNotDead(index))
        {
            if (arduino.isCityPlugged(index))
            {
                //TODO: see if the city really available
                arduino.SetCityState(index, ECityState.Available);
                arduino.OnWireDisconnected?.Invoke(this, index);
            }
            else if (arduino.isCityAvailable(index))
            {
                //connected city
                if (otherArduino.cables.Count > 0 &&
                    otherArduino.cables[otherArduino.cables.Count - 1].Item2 == index)
                {
                    //TODO: positive feedback sound
                    arduino.OnWireFriendlyPlugged?.Invoke(this, index);
                    arduino._cityStates[index] = ECityState.Plugged;
                    arduino.cableInPlugs       = new Tuple <int, int>(index, -1);
                }
                else
                {
                    //disconnect previously on leds
                    foreach (int i in allCities[index].cities)
                    {
                        if (allCities[i].state != ECityState.Available)
                        {
                            arduino.serial.SendSerialMessage("D" + i);
                        }
                    }
                    arduino.SetCityState(index, ECityState.Plugged);

                    var city = allCities[index];
                    city.state       = ECityState.Available;// for the other player
                    allCities[index] = city;
                }
            }
            else if (arduino.isCityConnected(index))
            {
                arduino.SetCityState(index, ECityState.Available);
                arduino.OnWireDisconnected?.Invoke(this, index);

                Tuple <int, int> c = null;

                foreach (Tuple <int, int> cable in arduino.cables)
                {
                    if (cable.Item1 == index)
                    {
                        //chiant
                        c = cable;

                        arduino.serial.SendSerialMessage("D" + cable.Item2);
                    }
                    else if (cable.Item2 == index)
                    {
                        foreach (var city in allCities[index].cities)
                        {
                            arduino.serial.SendSerialMessage("A" + city);
                        }
                    }
                }

                arduino.cables.Remove(c);
                //available for this city and plugged for the other not connected
            }
        }
        else
        {
            //BEEP !
            print("bad feedback");
        }
    }
示例#4
0
 public ArduinoTest GetOtherArduino(ArduinoTest a)
 {
     return(a == arduinoA ? arduinoB : arduinoA);
 }