Наследование: MonoBehaviour
Пример #1
0
 public void WriteXml(XmlWriter writer)
 {
     writer.WriteAttributeString("Description", Description);
     writer.WriteAttributeString("Url", Url);
     writer.WriteAttributeString("Ports", Ports);
     writer.WriteAttributeString("AutoConnect", AutoConnect.ToString());
 }
Пример #2
0
 public void SaveSettings()
 {
     new XDocument(
         new XElement(Tag_Root,
                      new XElement(Tag_NamedPipeAddress, NamedPipeAddress),
                      new XElement(Tag_AutoConnect, AutoConnect.ToString()),
                      new XElement(Tag_TimePaddingForLoop, TimePaddingForLoop.ToString()),
                      new XElement(Tag_LoopSelection, LoopSelection.ToString()),
                      new XElement(Tag_LoopNumber, LoopNumber.ToString()),
                      new XElement(Tag_PlayMode, PlayMode.ToString()),
                      new XElement(Tag_Volume,
                                   new XElement(Tag_VolumeValue, VolumeValue.ToString()),
                                   new XElement(Tag_VolumeMute, VolumeMute.ToString())),
                      new XElement(Tag_Documents, DocumentByDocumentGuid.Select(x =>
                                                                                new XElement(Tag_Document, new XAttribute(Att_Document_Id, x.Key), new XElement(Tag_Document_Name, x.Value.Name), new XElement(Tag_Media, x.Value.Media)))),
                      new XElement(Tag_MinimalSeverityToShowInLog, MinimalSeverityToShowInLog.ToString()),
                      new XElement(Tag_Window,
                                   new XElement(Tag_Top, WindowTop.ToString()),
                                   new XElement(Tag_Left, WindowLeft.ToString()),
                                   new XElement(Tag_Width, WindowWidth.ToString()),
                                   new XElement(Tag_Height, WindowHeight.ToString()),
                                   new XElement(Tag_Maximized, WindowMaximized.ToString()),
                                   new XElement(Tag_AlwaysOnTop, AlwaysOnTop.ToString())),
                      new XElement(Tag_VlcLibPath, VlcLibPath),
                      new XElement(Tag_DoNotAskAgain, FontMissingWindowDoNotAskAgain.ToString()))
         ).Save(SettingsPath);
 }
Пример #3
0
 public void AutoC()
 {
     if (!PublicMethod.Instance.IsExecuteSystemCMD("autoc"))
     {
         var a = new AutoConnect();
         a.autoc();
     }
 }
Пример #4
0
 private void ToolSMI_Zdlj_Click(object sender, EventArgs e)
 {
     if (!PublicMethod.Instance.IsExecuteSystemCMD(""))
     {
         ConnectManager.CleanSelcol();
         var a = new AutoConnect();
         a.autoc();
     }
 }
Пример #5
0
        public void Save(string path)
        {
            System.Xml.XmlDocument doc          = new System.Xml.XmlDocument();
            System.Xml.XmlElement  project_root = doc.CreateElement("Root");

            {
                var e = doc.CreateElement("Target");
                e.AppendChild(doc.CreateTextNode(Target.ToString()));
                project_root.AppendChild(e);
            }

            {
                var e = doc.CreateElement("Port");
                e.AppendChild(doc.CreateTextNode(Port.ToString()));
                project_root.AppendChild(e);
            }

            {
                var e = doc.CreateElement("AutoConnect");
                e.AppendChild(doc.CreateTextNode(AutoConnect.ToString()));
                project_root.AppendChild(e);
            }

            {
                var e = doc.CreateElement("SendOnLoad");
                e.AppendChild(doc.CreateTextNode(SendOnLoad.ToString()));
                project_root.AppendChild(e);
            }

            {
                var e = doc.CreateElement("SendOnEdit");
                e.AppendChild(doc.CreateTextNode(SendOnEdit.ToString()));
                project_root.AppendChild(e);
            }

            {
                var e = doc.CreateElement("SendOnSave");
                e.AppendChild(doc.CreateTextNode(SendOnSave.ToString()));
                project_root.AppendChild(e);
            }

            doc.AppendChild(project_root);

            var dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);

            doc.InsertBefore(dec, project_root);

            // For failing to save
            try
            {
                doc.Save(path);
            }
            catch
            {
            }
        }
Пример #6
0
 /// <summary>
 /// 自动建连接
 /// </summary>
 /// <param name="strObjID">第一个设备</param>
 /// <param name="endObjID">第二个设备</param>
 private static void AutoTopology(ObjectId strObjID, ObjectId endObjID)
 {
     try
     {
         var at = new AutoConnect();
         at.autocbyobjid(strObjID, endObjID);
     }catch (Exception ex)
     {
         LogManager.Instance.Error(ex + "自动建连接关系错误!");
     }
 }
Пример #7
0
 public void SaveSettings()
 {
     new XDocument(
         new XElement(Tag_Root,
                      new XElement(Tag_NamedPipeAddress, NamedPipeAddress),
                      new XElement(Tag_AutoConnect, AutoConnect.ToString()),
                      new XElement(Tag_MinimalSeverityToShowInLog, MinimalSeverityToShowInLog.ToString()),
                      new XElement(Tag_Window,
                                   new XElement(Tag_Top, WindowTop.ToString()),
                                   new XElement(Tag_Left, WindowLeft.ToString()),
                                   new XElement(Tag_Width, WindowWidth.ToString()),
                                   new XElement(Tag_Height, WindowHeight.ToString()),
                                   new XElement(Tag_Maximized, WindowMaximized.ToString()),
                                   new XElement(Tag_AlwaysOnTop, AlwaysOnTop.ToString())))
         ).Save(SettingsPath);
 }
 private void ProcessAutoConnectMessage(AutoConnectMessageType autoConnectMessageType)
 {
     AutoConnect?.Invoke(new AutoConnectMessage(autoConnectMessageType));
 }
Пример #9
0
        /// <summary>
        /// Validates and processes any command-line arguments that were passed in.  Invalid arguments will halt program execution.
        /// </summary>
        /// <param name="args">Command-line parameters</param>
        static void ProcessArguments(string[] args)
        {
            port.name = String.Empty;

            // switch to lower case and remove '/', '--' and '-' from beginning of arguments - we can process correctly without them
            for (int i = 0; i < args.Count(); i++)
            {
                args[i] = (args[i].TrimStart('/', '-')).ToLower();
            }

            // sort the parameters so that they get processed in order of priority (i.e. 'quiet' option gets processed before something that would normally result in console output, etc.)
            Array.Sort(args, new ArgumentSorter());

            // iterate through command-line arguments
            foreach (string arg in args)
            {
                // split argument into components based on 'key:value' formatting
                string[] argument = arg.Split(':');

                // help
                if (argument[0].StartsWith("h") || argument[0].StartsWith("?"))
                {
                    ShowHelp();
                    ExitProgram(silent: true);
                }

                // list available ports
                else if (argument[0].StartsWith("l"))
                {
                    // get a list of all available ports
                    availablePorts = (SimplySerial.GetSerialPorts()).OrderBy(p => p.num).ToList();

                    if (availablePorts.Count >= 1)
                    {
                        Console.WriteLine("\nPORT\tVID\tPID\tDESCRIPTION");
                        Console.WriteLine("------------------------------------------------------------");
                        foreach (ComPort p in availablePorts)
                        {
                            Console.WriteLine("{0}\t{1}\t{2}\t{3}",
                                              p.name,
                                              p.vid,
                                              p.pid,
                                              (p.board.isCircuitPython) ? (p.board.make + " " + p.board.model) : p.description
                                              );
                        }
                        Console.WriteLine("");
                    }
                    else
                    {
                        Console.WriteLine("\nNo COM ports detected.\n");
                    }

                    ExitProgram(silent: true);
                }

                // quiet (no output to console other than comes in via serial)
                else if (argument[0].StartsWith("q"))
                {
                    SimplySerial.Quiet = true;
                }

                // the remainder of possible command-line arguments require two parameters, so let's enforce that now
                else if (argument.Count() < 2)
                {
                    ExitProgram(("Invalid or incomplete argument <" + arg + ">\nTry 'ss.exe help' to see a list of valid arguments"), exitCode: -1);
                }

                // preliminary validate on com port, final validation occurs towards the end of this method
                else if (argument[0].StartsWith("c"))
                {
                    string newPort = argument[1].ToUpper();

                    if (!argument[1].StartsWith("COM"))
                    {
                        newPort = "COM" + argument[1];
                    }
                    port.name   = newPort;
                    autoConnect = AutoConnect.ONE;
                }

                // validate baud rate, terminate on error
                else if (argument[0].StartsWith("b"))
                {
                    // these are the baud rates we're supporting for now
                    string[] availableBaudRates = new string[] { "1200", "2400", "4800", "7200", "9600", "14400", "19200", "38400", "57600", "115200" };

                    if (availableBaudRates.Contains(argument[1]))
                    {
                        baud = Convert.ToInt32(argument[1]);
                    }
                    else
                    {
                        ExitProgram(("Invalid baud rate specified <" + argument[1] + ">"), exitCode: -1);
                    }
                }

                // validate parity, terminate on error
                else if (argument[0].StartsWith("p"))
                {
                    if (argument[1].StartsWith("e"))
                    {
                        parity = Parity.Even;
                    }
                    else if (argument[1].StartsWith("m"))
                    {
                        parity = Parity.Mark;
                    }
                    else if (argument[1].StartsWith("n"))
                    {
                        parity = Parity.None;
                    }
                    else if (argument[1].StartsWith("o"))
                    {
                        parity = Parity.Odd;
                    }
                    else if (argument[1].StartsWith("s"))
                    {
                        parity = Parity.Space;
                    }
                    else
                    {
                        ExitProgram(("Invalid parity specified <" + argument[1] + ">"), exitCode: -1);
                    }
                }

                // validate databits, terminate on error
                else if (argument[0].StartsWith("d"))
                {
                    int newDataBits = Convert.ToInt32(argument[1]);

                    if ((newDataBits > 3) && (newDataBits < 9))
                    {
                        dataBits = newDataBits;
                    }
                    else
                    {
                        ExitProgram(("Invalid data bits specified <" + argument[1] + ">"), exitCode: -1);
                    }
                }

                // validate stopbits, terminate on error
                else if (argument[0].StartsWith("s"))
                {
                    if (argument[1] == "0")
                    {
                        stopBits = StopBits.None;
                    }
                    else if (argument[1] == "1")
                    {
                        stopBits = StopBits.One;
                    }
                    else if (argument[1] == "1.5")
                    {
                        stopBits = StopBits.OnePointFive;
                    }
                    else if (argument[1] == "2")
                    {
                        stopBits = StopBits.Two;
                    }
                    else
                    {
                        ExitProgram(("Invalid stop bits specified <" + argument[1] + ">"), exitCode: -1);
                    }
                }

                // validate auto connect, terminate on error
                else if (argument[0].StartsWith("a"))
                {
                    if (argument[1].StartsWith("n"))
                    {
                        autoConnect = AutoConnect.NONE;
                    }
                    else if (argument[1].StartsWith("o"))
                    {
                        autoConnect = AutoConnect.ONE;
                    }
                    else if (argument[1].StartsWith("a"))
                    {
                        autoConnect = AutoConnect.ANY;
                    }
                    else
                    {
                        ExitProgram(("Invalid auto connect setting specified <" + argument[1] + ">"), exitCode: -1);
                    }
                }

                // an invalid/incomplete argument was passed
                else
                {
                    ExitProgram(("Invalid or incomplete argument <" + arg + ">\nTry 'ss.exe -help' to see a list of valid arguments"), exitCode: -1);
                }
            }

            Console.Clear();
            if (autoConnect == AutoConnect.ANY)
            {
                Output("<<< Attemping to connect to any avaiable COM port.  Use CTRL-X to cancel >>>");
            }
            else if (autoConnect == AutoConnect.ONE)
            {
                Console.Clear();
                if (port.name == String.Empty)
                {
                    Output("<<< Attempting to connect to first available COM port.  Use CTRL-X to cancel >>>");
                }
                else
                {
                    Output("<<< Attempting to connect to " + port.name + ".  Use CTRL-X to concel >>>");
                }
            }

            // if we made it this far, everything has been processed and we're ready to proceed!
        }
Пример #10
0
        public void TestSolve()
        {
            var ps = new Collection <ProvidedSocket>();

            ps.Add(new ProvidedSocket()
            {
                Types = new Collection <string>()
                {
                    "A"
                }, Label = "ps1"
            });
            ps.Add(new ProvidedSocket()
            {
                Types = new Collection <string>()
                {
                    "B"
                }, Label = "ps2"
            });
            ps.Add(new ProvidedSocket()
            {
                Types = new Collection <string>()
                {
                    "C"
                }, Label = "ps3"
            });
            ps.Add(new ProvidedSocket()
            {
                Types = new Collection <string>()
                {
                    "D"
                }, Label = "ps4"
            });
            ps.Add(new ProvidedSocket()
            {
                Types = new Collection <string>()
                {
                    "O"
                }, Label = "ps5"
            });

            var mbDefs = new List <MainboardDefinition>()
            {
                ModelTest.CreateMainboardDef("happy", ps)
            };

            var moDefs = new List <ModuleDefinition>()
            {
                ModelTest.CreateModuleDef(Guid.Parse("015DF700-5A47-4282-BD91-BFD024D038FC"), "m1su1", "A", false),
                ModelTest.CreateModuleDef(Guid.Parse("9AB4B04B-A31B-4E8C-82E6-532456B8C0A0"), "m2su1", "B,C", false),
                ModelTest.CreateModuleDef(Guid.Parse("3B5F45A2-EE5A-4FE7-83E6-900D7096F0E2"), "m3su1", "B,A", false),
                ModelTest.CreateModuleDef(Guid.Parse("5FE253D2-3B61-4F84-8F4B-8B9B05AEE0AE"), "m4su1", "D", false),
                //ModelTest.CreateModuleDef(Guid.Parse("A5C823F5-88B8-4F33-BE2F-9D1956C9ED9C"),"m5su1","D",true),
                //ModelTest.CreateModuleDef(Guid.Parse("3FF4E16B-2DAD-4B93-BCF3-5FE359F95079"),"m6su1","O",true),
            };


            GadgeteerDefinitionsManager.Instance.Initialize(mbDefs, moDefs);

            var store = new Store(typeof(GadgeteerDSLDomainModel));
            var tx    = store.TransactionManager.BeginTransaction();

            var mainboard = new Mainboard(store);

            mainboard.Name = "happy";
            mainboard.CreateSockets();

            var modules = new Collection <Module>();

            var ids = new Collection <Guid>();

            ids.Add(Guid.Parse("015DF700-5A47-4282-BD91-BFD024D038FC"));
            ids.Add(Guid.Parse("9AB4B04B-A31B-4E8C-82E6-532456B8C0A0"));
            ids.Add(Guid.Parse("3B5F45A2-EE5A-4FE7-83E6-900D7096F0E2"));
            ids.Add(Guid.Parse("5FE253D2-3B61-4F84-8F4B-8B9B05AEE0AE"));
            //ids.Add(Guid.Parse("A5C823F5-88B8-4F33-BE2F-9D1956C9ED9C"));
            //ids.Add(Guid.Parse("3FF4E16B-2DAD-4B93-BCF3-5FE359F95079"));

            foreach (var guid in ids)
            {
                var m = new Module(store)
                {
                    ModuleDefinitionId = guid
                };
                m.CreateSocketUses();
                modules.Add(m);
            }


            //Basic test where all works
            using (var tx2 = store.TransactionManager.BeginTransaction())
            {
                var socketUses = from o in modules from su in o.SocketUses select su;
                var b1         = AutoConnect.Solve(mainboard, socketUses);
                Assert.IsTrue(b1, "Complex connection");
                tx2.Rollback();
            }

            // Test where there are mutiple optional sockets with the same type

            /*
             * using (var tx2 = store.TransactionManager.BeginTransaction())
             * {
             *      (GadgeteerDefinitionsManager.Instance.Modules.Last().Sockets[0].Types[0] as SingleSocketType).Value = "D";
             *      var socketUses = from o in modules from su in o.SocketUses select su;
             *      var b1 = AutoConnect.Solve(mainboard, socketUses);
             *      Assert.IsTrue(b1, "Multiple optional sockets with the same type");
             *      Assert.IsNotNull(modules[3].SocketUses[0].Socket);
             *      tx2.Rollback();
             * }
             */

            // Test where an optional socket cannot connect

            /*
             * using (var tx2 = store.TransactionManager.BeginTransaction())
             * {
             *      (GadgeteerDefinitionsManager.Instance.Modules.Last().Sockets[0].Types[0] as SingleSocketType).Value = "Z";
             *      var socketUses = from o in modules from su in o.SocketUses select su;
             *      var b1 = AutoConnect.Solve(mainboard, socketUses);
             *      Assert.IsTrue(b1, "Optional socket cannot connect");
             *      tx2.Rollback();
             * }
             */

            //Start from a partially connected state
            using (var tx2 = store.TransactionManager.BeginTransaction())
            {
                modules[0].SocketUses[0].Socket = mainboard.Sockets[0];
                var socketUses = from o in modules from su in o.SocketUses select su;
                var b1         = AutoConnect.Solve(mainboard, socketUses);
                Assert.IsTrue(b1, "Partial connection");
                tx2.Rollback();
            }

            using (var tx2 = store.TransactionManager.BeginTransaction())
            {
                (GadgeteerDefinitionsManager.Instance.Modules.First().Sockets[0].Types[0] as SingleSocketType).Value = "E";
                var socketUses = from o in modules from su in o.SocketUses select su;
                var b1         = AutoConnect.Solve(mainboard, socketUses);
                Assert.IsFalse(b1, "A module that cannot connect to the mainboard");
                tx2.Rollback();
            }


            using (var tx2 = store.TransactionManager.BeginTransaction())
            {
                (GadgeteerDefinitionsManager.Instance.Modules.First().Sockets[0].Types[0] as SingleSocketType).Value = "A";
                GadgeteerDefinitionsManager.Instance.Mainboards.First().ProvidedSockets.RemoveAt(3);
                mainboard.CreateSockets();
                var socketUses = from o in modules from su in o.SocketUses select su;
                var b1         = AutoConnect.Solve(mainboard, socketUses);
                Assert.IsFalse(b1, "Not enough sockets on the mainboard");
                tx2.Rollback();
            }

            tx.Rollback();
            store.Dispose();
        }