コード例 #1
0
        void ButtonOpenSerialClick(object sender, EventArgs e)
        {
            var name = comboBoxSerialPortName.Text;

            EnableControls(false);
            ior.Run(() => {
                var serialPort = new SerialPort(name);
                serial.CopyTo(serialPort);
                serialPort.Open();
                var stream   = new ModbusSerialStream(serialPort, 1000, IoLog);
                var protocol = new ModbusRTUProtocol();
                IoSetMaster(new ModbusMaster(stream, protocol));
                uir.Run(() => Log("success", "Serial {0}@{1} open", name, serial.BaudRate));
            });
        }
コード例 #2
0
 public void OpenSerial(string name, SerialSettings serial)
 {
     Io(() => {
         if (uir == null)
         {
             return;              //disposed
         }
         var serialPort = new SerialPort(name);
         serial.CopyTo(serialPort);
         serialPort.Open();
         var stream   = new ModbusSerialStream(serialPort, Config.FixedTimeout(), StreamLog);
         var protocol = new ModbusRTUProtocol();
         master       = new ModbusMaster(stream, protocol);
         start        = DateTime.Now;
         last         = DateTime.Now;
         Log("success", "Serial {0}@{1} open", name, serial.BaudRate);
         Ui(() => { connected(true, false); });
     });
 }
コード例 #3
0
ファイル: Form1.cs プロジェクト: swissbyte/ModbusMasterTool
        private void button1_Click(object sender, EventArgs e)
        {
            if (button1.Text == "Connect")
            {
                serialPort1.PortName = comboAvailablePorts.Text;
                serialPort1.BaudRate = int.Parse(comboBaudrate.Text);
                serialPort1.DataBits = int.Parse(comboDatabits.Text);
                serialPort1.Open();

                stream       = new ModbusSerialStream(serialPort1, 400);
                protocol     = new ModbusRTUProtocol();
                master       = new SharpModbus.ModbusMaster(stream, protocol);
                button1.Text = "Disconnect";
            }
            else
            {
                serialPort1.Close();
                button1.Text = "Connect";
            }
        }
コード例 #4
0
ファイル: MasterTest.cs プロジェクト: raffaeler/SharpModbus
        public void ModportSweepTest()
        {
            //m0 - MD-DIDC8 8 digital input
            //m1 - MD-DOSO8 8 digital output
            //all outputs wired to corresponding inputs
            var serial = new SerialPort("COM10");

            serial.BaudRate = 57600;
            serial.Open();
            var stream   = new ModbusSerialStream(serial, 400);
            var protocol = new ModbusRTUProtocol();
            var master   = new ModbusMaster(stream, protocol);

            master.WriteCoil(1, 3000, false);
            master.WriteCoil(1, 3001, true);
            master.WriteCoil(1, 3002, true);
            master.WriteCoil(1, 3003, false);
            Thread.Sleep(50);
            Assert.AreEqual(false, master.ReadCoil(1, 3000));
            Assert.AreEqual(true, master.ReadCoil(1, 3001));
            Thread.Sleep(50);
            Assert.AreEqual(new bool[] { false, true, true, false }, master.ReadCoils(1, 3000, 4));
        }
コード例 #5
0
        private void FormMain_Load(object sender, EventArgs e)
        {
            try
            {
                ModbusRTUProtocol.Start();
                displayControl1.Register = ModbusRTUProtocol.Registers[0];
                displayControl2.Register = ModbusRTUProtocol.Registers[1];
                displayControl3.Register = ModbusRTUProtocol.Registers[2];
                displayControl4.Register = ModbusRTUProtocol.Registers[3];
                displayControl5.Register = ModbusRTUProtocol.Registers[4];

                editorControl1.Register = ModbusRTUProtocol.Registers[5];
                editorControl2.Register = ModbusRTUProtocol.Registers[6];
                editorControl3.Register = ModbusRTUProtocol.Registers[7];
                editorControl4.Register = ModbusRTUProtocol.Registers[8];
                editorControl5.Register = ModbusRTUProtocol.Registers[9];
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: samuelventura/SharpChannel
        public static void Main(string[] args)
        {
            AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionTrapper;

            var cmdline = string.Join(" ", args);

            switch (cmdline)
            {
            case "--list":
                var names = SerialPort.GetPortNames();
                foreach (var name in names)
                {
                    Console.WriteLine(name);
                }
                Console.Out.Flush();
                return;
            }

            var serial = new SerialPort();

            Config.Parse(serial, cmdline);
            serial.Open();

            var thread = new Thread(() => { CheckLoop(serial); })
            {
                IsBackground = true
            };

            thread.Start();

            var stream      = new ModbusSerialStream(serial, 800);
            var tcpScanner  = new ModbusTCPScanner();
            var rtuProtocol = new ModbusRTUProtocol();

            var line = Console.ReadLine();

            while (line != null)
            {
                var bytes = Convert.FromBase64String(line);
                tcpScanner.Append(bytes, 0, bytes.Length);
                var tcpRequestCommand = tcpScanner.Scan();
                while (tcpRequestCommand != null)
                {
                    var rtuRequestCommand = rtuProtocol.Wrap(tcpRequestCommand.Wrapped);
                    var rtuRequestBytes   = new byte[rtuRequestCommand.RequestLength];
                    var rtuResponseBytes  = new byte[rtuRequestCommand.ResponseLength];
                    rtuRequestCommand.FillRequest(rtuRequestBytes, 0);
                    stream.Write(rtuRequestBytes);
                    stream.Read(rtuResponseBytes);
                    var rtuResponse      = rtuRequestCommand.ParseResponse(rtuResponseBytes, 0);
                    var tcpResponseBytes = new byte[tcpRequestCommand.ResponseLength];
                    tcpRequestCommand.FillResponse(tcpResponseBytes, 0, rtuResponse);
                    Console.WriteLine(Convert.ToBase64String(tcpResponseBytes, 0, tcpResponseBytes.Length));
                    Console.Out.Flush();
                    tcpRequestCommand = tcpScanner.Scan();
                }
                line = Console.ReadLine();
            }

            throw new Exception("Stdin closed unexpectedly");
        }