Exemplo n.º 1
0
        public void LoadDictionaryTest()
        {
            SerialOptions serial     = new SerialOptions();
            var           dictionary = new Dictionary <string, object>()
            {
                { "serial1", "dummy" },
                { "serial2", "modem listenport:333" },
                { "serial3", "nullmodem port:222 server:localhost" },
                { "serial4", "directserial realport:COM5" }
            };

            serial.LoadDictionary(dictionary);

            Assert.AreEqual(serial.Serial1.Device, SerialDevice.Dummy);

            Assert.AreEqual(serial.Serial2.Device, SerialDevice.Modem);
            Assert.AreEqual(serial.Serial2.Port, 333);

            Assert.AreEqual(serial.Serial3.Device, SerialDevice.NullModem);
            Assert.AreEqual(serial.Serial3.Port, 222);
            Assert.AreEqual(serial.Serial3.Server, "localhost");

            Assert.AreEqual(serial.Serial4.Device, SerialDevice.DirectSerial);
            Assert.AreEqual(serial.Serial4.RealPort, "COM5");
        }
Exemplo n.º 2
0
        public void ToStringTest()
        {
            var serial = SerialOptions.Create()
                         .AddSerial1(Serial.CreateDummy())
                         .AddSerial2(Serial.CreateModem(333))
                         .AddSerial3(Serial.CreateNullModem(222, "localhost"))
                         .AddSerial4(Serial.CreateDirectSerial("COM5"));

            var iniSerial = serial.ToString();

            Assert.AreEqual(iniSerial, "[serial]\r\n\r\nserial1=dummy\r\nserial2=modem listenport:333\r\nserial3=nullmodem port:222 server:localhost\r\nserial4=directserial realport:COM5\r\n");
        }
Exemplo n.º 3
0
        /// <summary>
        /// main entry point
        /// </summary>
        /// <param name="args">Arguments</param>
        /// <returns>some sort of weird exit code</returns>
        static int Main(string[] args)
        {
#if DEBUG
            //while debugging we supply fake arguments matching our serial port
            //args is different from C++ "argv", as it does not contains the
            //executable call itself, so a length of 0 means 0 arguments.
            if (args.Length == 0)
            {
                args = new string[] { "COM3,9600,8,1,n,n" };
                //args = new string[] { "net.cs" };
            }
#endif
            SerialOptions SO = parseParams(args);

            if (SO.valid)
            {
                SerialPort SP = new SerialPort(SO.Portname, SO.Baudrate, SO.Parity, SO.Databits, SO.Stopbits);
                SP.Handshake = SO.Handshake;
                SP.NewLine   = "\r"; //VT100 return key is '\r'
                SP.Open();
                VTconsole C = new VTconsole(SP);

                if (C.State != VTconsole.TerminalState.Ready)
                {
                    Console.WriteLine("Waiting for terminal ready on {0}...", SO.Portname);
                    while (C.State != VTconsole.TerminalState.Ready)
                    {
                        if (consoleExit())
                        {
                            return(1);
                        }
                        Thread.Sleep(2000);
                    }
                    Console.WriteLine("Terminal ready");
                }

                IPlugin P = null;

                if (File.Exists("INIT.cs") || File.Exists("INIT.dll"))
                {
                    Console.WriteLine("Found 'INIT' Plugin. Loading external plugin...");
                    try
                    {
                        P = File.Exists("INIT.cs") ? PluginManager.LoadPlugin("INIT.cs") : PluginManager.LoadPluginLib("INIT.dll");
                        if (P == null)
                        {
                            throw new Exception("Cannot run INIT Plugin, see errors below");
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("Loading failed.\r\nError: {0}", ex.Message);
                    }
                    if (P == null)
                    {
                        if (PluginManager.LastErrors != null)
                        {
                            foreach (CompilerError EE in PluginManager.LastErrors)
                            {
                                C.WriteLine("[{0};{1}] {2} {3}", EE.Line, EE.Column, EE.ErrorNumber, EE.ErrorText);
                            }
                        }
                        Console.WriteLine("Defaulting to main plugin...");
                        P = new DirList();
                    }
                }
                else
                {
                    Console.WriteLine("Starting main Plugin...");
                    P = new DirList();
                }
                P.Start(C);

                while (!consoleExit() && P.IsRunning)
                {
                    Thread.Sleep(500);
                }
                P.Stop();

                C.Clear();
                SP.Close();

                Console.WriteLine("Application terminated");
            }
            else
            {
                if (args.Length > 0 && File.Exists(args[0]))
                {
                    try
                    {
                        PluginManager.Compile(File.ReadAllText(args[0]), args[0].Substring(0, args[0].LastIndexOf('.')) + ".dll");
                        Console.WriteLine("File compiled");
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("Error compiling {0}.\r\n{1}", args[0], ex.Message);
                    }
                }
                else
                {
                    help();
                }
            }
            return(0);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Extracts serial port options from arguments
        /// </summary>
        /// <param name="args">arguments</param>
        /// <returns>SerialOptions struct filled out as good as possible</returns>
        private static SerialOptions parseParams(string[] args)
        {
            SerialOptions SO = new SerialOptions();

            //defaults
            SO.Baudrate  = 9600;
            SO.Databits  = 8;
            SO.Stopbits  = StopBits.One;
            SO.Parity    = Parity.None;
            SO.Handshake = Handshake.None;
            SO.valid     = false;

            if (args.Length > 0)
            {
                args = args[0].Split(',');
                string[] ports = SerialPort.GetPortNames();
                foreach (string port in ports)
                {
                    if (port.ToLower() == args[0].ToLower())
                    {
                        SO.Portname = port;
                        SO.valid    = true;
                    }
                }
            }
            if (args.Length > 1 && SO.valid)
            {
                SO.valid = int.TryParse(args[1], out SO.Baudrate);
            }
            if (args.Length > 2 && SO.valid)
            {
                SO.valid = int.TryParse(args[2], out SO.Databits);
            }
            if (args.Length > 3 && SO.valid)
            {
                SO.valid = true;
                switch (args[3])
                {
                case "0":
                    SO.Stopbits = StopBits.None;
                    break;

                case "1":
                    SO.Stopbits = StopBits.One;
                    break;

                case "1.5":
                    SO.Stopbits = StopBits.OnePointFive;
                    break;

                case "2":
                    SO.Stopbits = StopBits.Two;
                    break;

                default:
                    SO.valid = false;
                    break;
                }
            }
            if (args.Length > 4 && SO.valid)
            {
                SO.valid = true;
                switch (args[4].ToUpper())
                {
                case "N":
                    SO.Parity = Parity.None;
                    break;

                case "E":
                    SO.Parity = Parity.Even;
                    break;

                case "O":
                    SO.Parity = Parity.Odd;
                    break;

                case "S":
                    SO.Parity = Parity.Space;
                    break;

                case "M":
                    SO.Parity = Parity.Mark;
                    break;

                default:
                    SO.valid = false;
                    break;
                }
            }
            if (args.Length > 5 && SO.valid)
            {
                SO.valid = true;
                switch (args[5].ToUpper())
                {
                case "N":
                    SO.Handshake = Handshake.None;
                    break;

                case "X":
                    SO.Handshake = Handshake.XOnXOff;
                    break;

                case "R":
                    SO.Handshake = Handshake.RequestToSend;
                    break;

                case "B":
                    SO.Handshake = Handshake.RequestToSendXOnXOff;
                    break;

                default:
                    SO.valid = false;
                    break;
                }
            }
            return(SO);
        }