Beispiel #1
0
        public void Dispose()
        {
            try
            {
                _arduino.Disconnect();
            }
            catch (Exception)
            {
                //we are closing, so we need to cleanup nicely!!!!!!!!!!!!!!
                //not crashy
            }

            if (localOnly)
            {
                return;
            }

            try
            {
                _service.Disconnect(type, name);
            }
            catch (Exception)
            {
                //we are closing, so we need to cleanup nicely!!!!!!!!!!!!!!
                //not crashy
            }
        }
Beispiel #2
0
 private void OnStateChange(KMGameInfo.State state)
 {
     currentState = state;
     setPins();
     if (currentState != KMGameInfo.State.PostGame)
     {
         arduinoConnection.Stop();
     }
     else
     {
         if (bombState == 0)
         {
             StopCoroutines(); arduinoConnection.sendMSG(String.Format("{0} {1} {2} 0 0 255", RP, GP, BP));
         }                                                                                                                      //For multiple bombs
     }
     if (currentState == KMGameInfo.State.Gameplay)
     {
         //if(arduinoConnection._connected) StartCoroutine(Test());
         bombState   = 0;
         lastStrikes = 0;
         lastSolves  = 0;
         strikeCounts.Clear();
         solveCounts.Clear();
         StartCoroutine(getField());
         StartCoroutine(Warning());
         StartCoroutine(OnStrike());
         StartCoroutine(OnSolve());
         StartCoroutine(CheckForBomb(true));
         StartCoroutine(FactoryCheck());
         StartCoroutine(getBomb());
         StartCoroutine(HandleReflectors());
     }
     else
     {
         currentModuleName = "";
         Modules.Clear();
         StopCoroutine(CheckForBomb(false));
         StopCoroutine(FactoryCheck());
         StopCoroutine(WaitUntilEndFactory());
         StopCoroutine(HandleReflectors());
         BombActive = false;
         Bombs.Clear();
         BombCommanders.Clear();
     }
     if (currentState == KMGameInfo.State.Quitting)
     {
         arduinoConnection.Disconnect();
     }
 }
Beispiel #3
0
 public void TestCleanup()
 {
     arduino.Disconnect();
 }
        void OnGUI()
        {
            GUI.skin = skin;

            GUILayout.BeginArea(new Rect(50, 50, 2 * Screen.width / 2 - 100, Screen.height - 100));
            {
                GUILayout.BeginVertical();
                {
                    GUILayout.BeginHorizontal();
                    {
                        if (GUILayout.Button("Connect"))
                        {
                            connect();
                        }

                        if (GUILayout.Button("Disconnect"))
                        {
                            Debug.Log("Closing connection to arduino");
                            //try {
                            arduino.Disconnect();

                            /*} catch ( Exception e)
                             * {
                             *  Debug.Log("Exception initializing arduino:" + e.ToString());
                             * }*/
                            received_pins = null;
                        }
                        if (GUILayout.Button("Relay Animation"))
                        {
                            Debug.Log("Start coroutine");
                            StartCoroutine(RelayControll());
                        }

                        if (GUILayout.Button("URGControl"))
                        {
                            Debug.Log("Start coroutine URGControl");
                            StartCoroutine(URGControl());
                        }
                        if (GUILayout.Button("URGControl_new_test"))
                        {
                            StartCoroutine(URGControl_new_test());
                        }

                        GUILayout.FlexibleSpace();

                        GUILayout.Label("Serial port:");
                        arduino.PortName = GUILayout.TextField(arduino.PortName);
                        if (GUILayout.Button("Guess"))
                        {
                            string pn = Arduino.guessPortName();
                            if (pn.Length > 0)
                            {
                                arduino.PortName = pn;
                            }
                        }
                    }
                    GUILayout.EndHorizontal();

                    GUILayout.BeginHorizontal();
                    {
                        string connection_status;
                        if (arduino != null && arduino.IsOpen && arduino.Connected)
                        {
                            connection_status = "Connected to Firmata protocol version " + arduino.MajorVersion + "." + arduino.MinorVersion;
                            GUILayout.Label(connection_status);
                        }
                        else if (arduino != null && arduino.IsOpen)
                        {
                            GUILayout.Label("Connected but waiting for Firmata protocol version");
                        }
                        else
                        {
                            GUILayout.Label("Not connected");
                        }

                        GUILayout.FlexibleSpace();
                        if (GUILayout.Button("Query capabilities"))
                        {
                            arduino.queryCapabilities();
                        }
                    }
                    GUILayout.EndHorizontal();

                    GUILayout.Space(20);

                    // draw pin states and controls
                    if (received_pins != null)     //arduino != null && arduino.Pins != null)
                    {
                        GUILayout.BeginHorizontal();
                        {
                            GUIStyle style = new GUIStyle(GUI.skin.label);

                            style.fontSize += 3;
                            style.fontStyle = FontStyle.Bold;

                            GUILayout.Label("Pin:Value", style, GUILayout.Width(label_column_width));
                            GUILayout.Label("Output", style, GUILayout.Width(test_column_width));
                            GUILayout.Label("Modes", style, GUILayout.Width(label_column_width));    // these widths hacked due to awful unity bug in label size calculations
                            GUILayout.FlexibleSpace();
                            GUILayout.Label("Reporting", style, GUILayout.MinWidth(style.CalcSize(new GUIContent("Reporting")).x));
                            GUILayout.Space(15);
                        }
                        GUILayout.EndHorizontal();

                        scroll_position = GUILayout.BeginScrollView(scroll_position /*, GUILayout.Width (100), GUILayout.Height (100)*/);
                        {
                            foreach (var pin in received_pins)
                            {
                                drawPinGUI(pin);
                            }
                        }
                        GUILayout.EndScrollView();
                    }
                }
                GUILayout.EndVertical();
            }
            GUILayout.EndArea();
        }
 void OnDestroy()
 {
     arduino.Disconnect();
 }