Exemple #1
0
        static public ArduinoDeviceManager Connect(String nodeID, String port, SerialBaudRate bps, int timeOut, Action <ADMMessage, ArduinoDeviceManager> listener)
        {
            if (String.IsNullOrEmpty(nodeID))
            {
                throw new Exception("ArduinoDeviceManager::Connect ... nodeID cannot be empty or null");
            }
            ISerialConnection connection = new XBeeFirmataSerialConnection(nodeID, port, bps);

            if (connection != null)
            {
                var session = new ArduinoSession(connection, timeOut);
                try
                {
                    var mgr = new ArduinoDeviceManager(session, listener, port, nodeID);
                    mgr.Connection = connection;
                    return(mgr);
                }
                catch (Exception e)
                {
                    if (connection.IsOpen)
                    {
                        connection.Close();
                    }
                    throw e;
                }
            }

            return(null);
        }
        public MonoSerialConnection(string portName, SerialBaudRate baudRate)
        {
            PortName = portName;
            BaudRate = (int)baudRate;

            cancellationTokenSource = new CancellationTokenSource();
            serialPort = new SerialPort(portName, (int)baudRate);

            internalBuffer = new Queue<byte>();
        }
        public ArduinoUnoR3(
            bool isEnabled,
            string comPort,
            SerialBaudRate baudRate,
            string instanceName,
            string instanceDescription) :

            base(isEnabled, comPort, "AUR3", baudRate, displayData:
                 new DeviceDisplayData(
                     "Arduino Uno R3", "Arduino Uno board",
                     instanceName, instanceDescription))
        {
        }
Exemple #4
0
        /// <summary>Инициализировать экземпляр базового класса Arduino-исполнителя.
        /// Такие исполнители работают на базе протокола Firmata, сервер использует
        /// библиотеку SolidSoils.Arduino для коммутации с ними.
        /// </summary>
        ///
        /// <param name="isEnabled">Используется ли этот исполнитель в системе или нет.</param>
        /// <param name="comPort">COM-порт, на котором необходимо запустить службу Firmata
        /// для этого исполнителя</param>
        /// <param name="driverId">Индентификатор драйвера исполнителя</param>
        /// <param name="baudRate">Скорость подключения к исполнителю, бод</param>
        /// <param name="parent">Если исполнитель является подчинённым, то —
        /// объект материнского исполнителя</param>
        /// <param name="displayData">Информация для отображения в вершителях</param>
        public ArduinoDevice(
            bool isEnabled,
            string comPort,
            string driverId,

            SerialBaudRate baudRate       = SerialBaudRate.Bps_115200,
            AqAbstractDevice parent       = null,
            DeviceDisplayData displayData = default) :

            base(isEnabled, parent is null, true,
                 "Arduino", comPort, driverId, ConnectionType.WireFirmata,
                 displayData)
        {
            ComPort  = comPort;
            Parent   = parent;
            BaudRate = baudRate;
        }
Exemple #5
0
        static public ArduinoDeviceManager Connect(String port, SerialBaudRate bps, int timeOut, Action <ADMMessage, ArduinoDeviceManager> listener)
        {
            ISerialConnection connection = new EnhancedSerialConnection(port, bps);

            if (connection != null)
            {
                var session = new ArduinoSession(connection, timeOut);
                try
                {
                    var mgr = new ArduinoDeviceManager(session, listener, port);
                    return(mgr);
                } catch (Exception e)
                {
                    if (connection.IsOpen)
                    {
                        connection.Close();
                    }
                    throw e;
                }
            }

            return(null);
        }
Exemple #6
0
 /// <summary>
 /// Initializes a new instance of <see cref="SerialConnection"/> class on the given serial port and at the given baud rate.
 /// </summary>
 /// <param name="portName">The port name (e.g. 'COM3')</param>
 /// <param name="baudRate">The baud rate</param>
 public SerialConnection(string portName, SerialBaudRate baudRate)
     : base(portName, (int)baudRate)
 {
     ReadTimeout  = 100;
     WriteTimeout = 100;
 }
Exemple #7
0
 public SerialPort()
 {
     comDevice = IntPtr.Zero;
     m_Port = SerialCommPort.COM02;
     m_BaudRate = SerialBaudRate.br004800;
     m_DataWidth = SerialDataWidth.dw8Bits;
     m_EnableDTROnOpen = true;
     m_EnableRTSOnOpen = true;
     Delay = 100;
     m_Priority = ThreadPriority.Normal;
     m_InputBuffer = 0x1000;
     m_OutputBuffer = 0x1000;
     m_ReadIntervalTimeout = -1;
     m_WriteTotalTimeoutMultiplier = 100;
     m_WriteTotalTimeoutConstant = 0x3e8;
     NativeMethods.timeBeginPeriod(1);
 }
Exemple #8
0
 static public ArduinoDeviceManager Connect(String nodeID, String port, SerialBaudRate bps, Action <ADMMessage, ArduinoDeviceManager> listener)
 {
     return(Connect(nodeID, port, bps, RESPONSE_TIMEOUT, listener));
 }
Exemple #9
0
 static public ArduinoDeviceManager Connect(String port, SerialBaudRate bps)
 {
     return(Connect(port, bps, RESPONSE_TIMEOUT, null));
 }
 /// <summary>
 /// Initializes a new instance of <see cref="SerialConnection"/> class on the given serial port and at the given baud rate.
 /// </summary>
 /// <param name="portName">The port name (e.g. 'COM3')</param>
 /// <param name="baudRate">The baud rate</param>
 public SerialConnection(string portName, SerialBaudRate baudRate)
     : base(portName, (int) baudRate)
 {
     ReadTimeout = 100;
     WriteTimeout = 100;
 }
        private static ISerialConnection FindConnection(Func<ArduinoSession, bool> isDeviceAvailable, string[] portNames, SerialBaudRate[] baudRates)
        {
            for (int x = portNames.Length - 1; x >= 0; x--)
            {
                foreach (SerialBaudRate rate in baudRates)
                {
                    try
                    {
                        using (var connection = new EnhancedSerialConnection(portNames[x], rate))
                        {
                            using (var session = new ArduinoSession(connection, 100))
                            {
                                Debug.WriteLine("{0}:{1}; ", portNames[x], (int)rate);

                                if (isDeviceAvailable(session))
                                    return new EnhancedSerialConnection(portNames[x], rate);
                            }
                        }
                    }
                    catch (UnauthorizedAccessException)
                    {
                        // Port is not available.
                        Debug.WriteLine("{0} NOT AVAILABLE; ", portNames[x]);
                        break;
                    }
                    catch (TimeoutException)
                    {
                        // Baudrate or protocol error.
                    }
                }
            }
            return null;
        }
Exemple #12
0
        public Config()
        {
            switch (ConfigurationManager.AppSettings["BaudRate"])
            {
                case "115200": baudRate = SerialBaudRate.br115200;
                    break;
                case "9600": baudRate = SerialBaudRate.br009600;
                    break;
                case "14400": baudRate = SerialBaudRate.br014400;
                    break;
                case "19200": baudRate = SerialBaudRate.br019200;
                    break;
                case "38400": baudRate = SerialBaudRate.br038400;
                    break;
                case "57600": baudRate = SerialBaudRate.br057600;
                    break;
                case "128000": baudRate = SerialBaudRate.br128000;
                    break;
                case "7200": baudRate = SerialBaudRate.br007200;
                    break;
                case "4800": baudRate = SerialBaudRate.br004800;
                    break;
                case "2400": baudRate = SerialBaudRate.br002400;
                    break;
                case "1800": baudRate = SerialBaudRate.br001800;
                    break;
                case "1200": baudRate = SerialBaudRate.br001200;
                    break;
                case "600": baudRate = SerialBaudRate.br000600;
                    break;
                default: baudRate = SerialBaudRate.br000300;
                    break;
            }

            switch (Int32.Parse(ConfigurationManager.AppSettings["DataWidth"]))
            {
                case 8: dataWidth = SerialDataWidth.dw8Bits;
                    break;
                case 7: dataWidth = SerialDataWidth.dw7Bits;
                    break;
                case 6: dataWidth = SerialDataWidth.dw6Bits;
                    break;
                default:
                    dataWidth = SerialDataWidth.dw5Bits;
                    break;
            }

            switch (Int32.Parse(ConfigurationManager.AppSettings["StopBits"]))
            {
                case 1: stopBits = SerialStopBits.sb1Bit;
                    break;
                case 2: stopBits = SerialStopBits.sb2Bits;
                    break;
                default:
                    stopBits = SerialStopBits.sb1_5Bits;
                    break;

            }

            switch (ConfigurationManager.AppSettings["ParityBits"].ToUpper())
            {
                case "NONE": parityBits = SerialParityBits.pbNone;
                    break;
                case "EVEN": parityBits = SerialParityBits.pbEven;
                    break;
                case "ODD": parityBits = SerialParityBits.pbOdd;
                    break;
                case "SPACE": parityBits = SerialParityBits.pbSpace;
                    break;
                default: parityBits = SerialParityBits.pbMark;
                    break;
            }

            port = SerialPort.StringToSerialCommPort(ConfigurationManager.AppSettings["Port"].ToUpper());
        }
 /// <summary>
 /// Initializes a new instance of <see cref="EnhancedSerialConnection"/> class on the given serial port and at the given baud rate.
 /// </summary>
 /// <param name="portName">The port name (e.g. 'COM3')</param>
 /// <param name="baudRate">The baud rate</param>
 public SerialConnection(string portName, SerialBaudRate baudRate) : this(portName, (int)baudRate)
 {
 }