Exemplo n.º 1
0
        public CommunicationsBus(string uartPort, int baudRate = 9600)
        {
            this.disposed    = false;
            this.commandFile = null;
            this.protocal    = CommunicationsProtocal.Uart;
            this.uartPort    = uartPort;

            this.serialPort = UartController.FromName(uartPort);

            var uartSetting = new UartSetting()
            {
                BaudRate    = baudRate,
                DataBits    = 8,
                Parity      = UartParity.None,
                StopBits    = UartStopBitCount.One,
                Handshaking = UartHandshake.None //UartHandshake.RequestToSend
            };

            this.serialPort.SetActiveSettings(uartSetting);

            this.serialPort.WriteBufferSize = 16 * 1024;
            this.serialPort.ReadBufferSize  = 16 * 1024;

            this.serialPort.Enable();
        }
Exemplo n.º 2
0
        // TODO: if we want to make this public then we're going to have to add
        // a bunch of checks around baud rate, 8n1, etc.
        protected Mt3339(string serialPortControllerName)
        {
            serialPort = UartController.FromName(serialPortControllerName);

            var uartSetting = new UartSetting()
            {
                BaudRate    = 115200,
                DataBits    = 8,
                Parity      = UartParity.None,
                StopBits    = UartStopBitCount.One,
                Handshaking = UartHandshake.None,
            };

            serialPort.SetActiveSettings(uartSetting);

            serialPort.Enable();

            serialPort.DataReceived += SerialPort_DataReceived;

            //this.serialPort = serialPort;

            //this.serialPort.MessageReceived += SerialPort_MessageReceived;

            Init();
        }
Exemplo n.º 3
0
        protected void OpenComPort(string port = "COM1", int baudRate = 38400)
        {
            CloseComPort();

            //ToDo  serialPort = new SerialPort(port, baudRate, Parity.None, 8, StopBits.One);

            //serialPort.ReadTimeout = 10 * 2;
            vc0706.ReadTimeout = 10 * 2;
            // serialPort.WriteTimeout = 10 * 2;

            //serialPort.Enable();
            serialPort = UartController.FromName(port);
            var uartSetting = new UartSetting()
            {
                BaudRate    = baudRate,
                DataBits    = 8,
                Parity      = UartParity.None,
                StopBits    = UartStopBitCount.One,
                Handshaking = UartHandshake.None,
            };

            vc0706.BaudRate = baudRate;
            serialPort.SetActiveSettings(uartSetting);

            serialPort.Enable();
        }
Exemplo n.º 4
0
        static void StartMaster()
        {//MASTER
            var serial = GHIElectronics.TinyCLR.Devices.Uart.UartController.FromName
                             (GHIElectronics.TinyCLR.Pins.SC20260.UartPort.Uart5);

            var setting = new UartSetting()
            {
                BaudRate    = 19200,
                DataBits    = 8,
                Parity      = UartParity.None,
                StopBits    = UartStopBitCount.One,
                Handshaking = UartHandshake.None,
            };

            serial.SetActiveSettings(setting);

            serial.Enable();

            GHIElectronics.TinyCLR.Devices.Modbus.Interface.IModbusInterface mbInterface;
            mbInterface = new GHIElectronics.TinyCLR.Devices.Modbus.Interface.ModbusRtuInterface(
                serial,
                19200,
                8,
                GHIElectronics.TinyCLR.Devices.Uart.UartStopBitCount.One,
                GHIElectronics.TinyCLR.Devices.Uart.UartParity.None);

            GHIElectronics.TinyCLR.Devices.Modbus.ModbusMaster mbMaster;
            mbMaster = new GHIElectronics.TinyCLR.Devices.Modbus.ModbusMaster(mbInterface);

            var mbTimeout = false;

            ushort[] reply = null;
            int      count = 0;

            while (true)
            {
                try
                {
                    mbTimeout = false;

                    reply = mbMaster.ReadHoldingRegisters(11, 0, 1, 3333);
                    count++;

                    //if (count == 5)
                    //    break;
                }
                catch (System.Exception error)
                {
                    System.Diagnostics.Debug.WriteLine("Modbus Timeout");
                    mbTimeout = true;
                }

                if (!mbTimeout)
                {
                    System.Diagnostics.Debug.WriteLine("Modbus : " + (object)reply[0].ToString());
                }

                System.Threading.Thread.Sleep(1000);
            }
        }
Exemplo n.º 5
0
        private bool DoTestUart()
        {
            this.UpdateStatusText("Testing VCOM Uart5.", true);

            this.UpdateStatusText(" - Connect VCOM Uart5 to PC.", false);
            this.UpdateStatusText(" - Open Tera Term. Baudrate: 9600, Data: 8, Parity: None, StopBit: One.", false);
            this.UpdateStatusText(" - Type 'A' or 'a'", false);
            this.UpdateStatusText(" - The test is waiting any character on Tera Term screen.", false);

            var result = false;

            using (var uart5 = UartController.FromName(SC20260.UartPort.Uart5)) {
                var setting = new UartSetting()
                {
                    BaudRate = 9600
                };

                uart5.SetActiveSettings(setting);
                uart5.Enable();

                this.AddNextButton();

                while (this.doNext == false && this.isRunning)
                {
                    if (uart5.BytesToRead == 0)
                    {
                        Thread.Sleep(100);

                        uart5.Write(new byte[] { (byte)('a') });
                        continue;
                    }

                    var byteToRead = uart5.BytesToRead > uart5.ReadBufferSize ? uart5.ReadBufferSize : uart5.BytesToRead;

                    var read = new byte[byteToRead];

                    uart5.Read(read);

                    for (var i = 0; i < read.Length; i++)
                    {
                        if (read[i] == 'a')
                        {
                            result = true;
                            break;
                        }
                    }

                    if (result == true)
                    {
                        break;
                    }
                }
            }

            this.RemoveNextButton();

            return(result);
        }
Exemplo n.º 6
0
        private void ThreadTest()
        {
            this.isRuning = true;


            using (var uart1 = UartController.FromName(SC20260.UartPort.Uart5)) {
                var setting = new UartSetting()
                {
                    BaudRate = 115200
                };

                uart1.SetActiveSettings(setting);
                uart1.Enable();

                var totalReceived = 0;
                var totalSent     = 0;

                while (this.isRuning)
                {
                    this.UpdateStatusText("Total received: " + totalReceived, true);
                    this.UpdateStatusText("Total sent: " + totalSent, false);
                    this.UpdateStatusText(WaitForMessage, false);

                    while (uart1.BytesToRead == 0)
                    {
                        Thread.Sleep(10);
                    }

                    var byteToRead = uart1.BytesToRead > uart1.ReadBufferSize ? uart1.ReadBufferSize : uart1.BytesToRead;

                    var read = new byte[byteToRead];


                    this.UpdateStatusText("Receiving... " + byteToRead + " byte(s)", false);
                    totalReceived += uart1.Read(read);



                    for (var i = 0; i < read.Length; i++)
                    {
                        var write = new byte[1] {
                            (byte)(read[i] + 1)
                        };
                        totalSent += uart1.Write(write);

                        uart1.Flush();
                    }


                    this.UpdateStatusText("Writing back... " + byteToRead + " byte(s)", false);
                }
            }


            this.isRuning = false;

            return;
        }
Exemplo n.º 7
0
        public void SetBaudRate(int baudRate)
        {
            var uartSetting = new UartSetting()
            {
                BaudRate    = baudRate,
                DataBits    = 8,
                Parity      = UartParity.None,
                StopBits    = UartStopBitCount.One,
                Handshaking = UartHandshake.None //UartHandshake.RequestToSend
            };

            this.serialPort.SetActiveSettings(uartSetting);
        }
Exemplo n.º 8
0
        /// <summary>
        ///     Create a new SerialTextFile and attach the instance to the specfied serial port.
        /// </summary>
        /// <param name="port">Serial port name.</param>
        /// <param name="baudRate">Baud rate.</param>
        /// <param name="parity">Parity.</param>
        /// <param name="dataBits">Data bits.</param>
        /// <param name="stopBits">Stop bits.</param>
        /// <param name="endOfLine">Text indicating the end of a line of text.</param>
        public SerialTextFile(string UartControllerName, int baudRate, UartParity parity, int dataBits, UartStopBitCount stopBits,
                              string endOfLine)
        {
            serialPort = UartController.FromName(UartControllerName);
            var uartSetting = new UartSetting()
            {
                BaudRate    = baudRate,
                DataBits    = dataBits,
                Parity      = parity,
                StopBits    = stopBits,
                Handshaking = UartHandshake.None,
            };

            serialPort.SetActiveSettings(uartSetting);

            serialPort.Enable();
            IsEnabled = true;
            LINE_END  = endOfLine;
            serialPort.DataReceived += SerialPort_DataReceived;
        }
Exemplo n.º 9
0
        /// <summary>
        /// Create an IDxxLA RFID reader
        /// </summary>
        /// <param name="device">Device to use</param>
        /// <param name="serialPortName">Port name to use</param>
        public IDxxLA(string serialPortName)

        {
            var myUart = UartController.FromName(serialPortName);

            var uartSetting = new UartSetting()
            {
                BaudRate    = 115200,
                DataBits    = 8,
                Parity      = UartParity.None,
                StopBits    = UartStopBitCount.One,
                Handshaking = UartHandshake.None,
            };

            myUart.SetActiveSettings(uartSetting);


            Setup(myUart);
            //device.CreateSerialPort(serialPortName, BaudRate, DataBits))
        }
Exemplo n.º 10
0
        public Vc0706(string serialPortName, int baudRate)
        {
            //serialPort = device.CreateSerialPort(serialPortName, baudRate);
            serialPort = UartController.FromName(serialPortName);

            var uartSetting = new UartSetting()
            {
                BaudRate    = baudRate,
                DataBits    = 8,
                Parity      = UartParity.None,
                StopBits    = UartStopBitCount.One,
                Handshaking = UartHandshake.None,
            };

            serialPort.SetActiveSettings(uartSetting);

            serialPort.Enable();

            vc0706          = new Vc0706Core();
            vc0706.BaudRate = baudRate;
            vc0706.PortName = serialPortName;
        }
Exemplo n.º 11
0
        static void StartSlave()
        {
            //SLAVE
            var slavePort = GHIElectronics.TinyCLR.Devices.Uart.UartController.FromName
                                (GHIElectronics.TinyCLR.Pins.SC20260.UartPort.Uart5);
            var setting = new UartSetting()
            {
                BaudRate    = 19200,
                DataBits    = 8,
                Parity      = UartParity.None,
                StopBits    = UartStopBitCount.One,
                Handshaking = UartHandshake.None,
            };

            slavePort.SetActiveSettings(setting);

            slavePort.Enable();
            //new SerialPort("COM1", 19200, Parity.None, 8, StopBits.One);
            var RtuInterface = new ModbusRtuInterface(slavePort, 19200, 8, UartStopBitCount.One, UartParity.None);

            Debug.WriteLine("rtu open:" + RtuInterface.isOpen + ", rtu connection:" + RtuInterface.IsConnectionOk);
            byte ModbusID = 5;

            slave = new ModbusSlave(RtuInterface, ModbusID);
            slave.CoilsChanged     += Slave_CoilsChanged;
            slave.RegistersChanged += Slave_RegistersChanged;
            //
            // Init the SLAVE REGISTERS
            //
            initSlave();
            //
            // Start the slave now
            //
            slave.Start();
            Debug.WriteLine("running:" + slave.IsRunning);
        }
        public CommunicationsBus(string uartPort, int baudRate = 115200)
        {
            this.disposed    = false;
            this.commandFile = null;
            this.protocal    = CommunicationsProtocal.Uart;

            this.serialPort = UartController.FromName(uartPort);

            var uartSetting = new UartSetting()
            {
                BaudRate    = baudRate,
                DataBits    = 8,
                Parity      = UartParity.None,
                StopBits    = UartStopBitCount.One,
                Handshaking = UartHandshake.None
            };


            this.serialPort.SetActiveSettings(uartSetting);

            this.serialPort.Enable();

            this.serialPort.DataReceived += this.SerialPort_DataReceived;
        }
Exemplo n.º 13
0
        /// <summary>
        ///     Create a new SerialLcd object.
        /// </summary>
        /// <param name="config">TextDisplayConfig object defining the Lcd dimension (null will default to 16x2).</param>
        /// <param name="baudRate">Baud rate to use (default = 9600).</param>
        /// <param name="parity">Parity to use (default is None).</param>
        /// <param name="dataBits">Number of data bits (default is 8 data bits).</param>
        /// <param name="stopBits">Number of stop bits (default is one stop bit).</param>
        public SerialLcd(string portName, TextDisplayConfig config = null, int baudRate = 9600,
                         UartParity parity = UartParity.None, int dataBits = 8, UartStopBitCount stopBits = UartStopBitCount.One)
        {
            if (config == null)
            {
                // assume a 16x2 Lcd.
                DisplayConfig = new TextDisplayConfig()
                {
                    Height = 2, Width = 16
                };
            }
            else
            {
                DisplayConfig = config;
            }
            var myUart = UartController.FromName(portName);

            var uartSetting = new UartSetting()
            {
                BaudRate    = baudRate,
                DataBits    = dataBits,
                Parity      = parity,
                StopBits    = stopBits,
                Handshaking = UartHandshake.None,
            };

            myUart.SetActiveSettings(uartSetting);

            myUart.Enable();

            // configure the Lcd controller for the appropriate screen size
            byte lines      = 0;
            byte characters = 0;

            switch (DisplayConfig.Width)
            {
            case 16:
                characters = (byte)LcdDimensions.Characters16Wide;
                break;

            case 20:
                characters = (byte)LcdDimensions.Characters20Wide;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(config.Width), "Display width should be 16 or 20.");
            }
            switch (DisplayConfig.Height)
            {
            case 2:
                lines = (byte)LcdDimensions.Lines2;
                break;

            case 4:
                lines = (byte)LcdDimensions.Lines4;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(config.Height), "Display height should be 2 or 4 lines.");
            }
            Send(new[] { ConfigurationCommandCharacter, characters, ConfigurationCommandCharacter, lines });
            Thread.Sleep(10);
        }