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)); }); }
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); }); }); }
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"; } }
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)); }
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); } }
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"); }