public void TcpOverSerialTest() { var model = new ModbusModel(); var scanner = new ModbusTCPScanner(); using (var server = new SerialModel(SlaveCOM, model, scanner)) using (var stream = new ModbusSerialStream(new SerialSettings(MasterCOM), 400)) { var master = new ModbusMaster(stream, new ModbusTCPProtocol()); //race condition avoided by access order H.SharedSlaveTest(model, master); } }
public void TcpExceptionOverSerialTest() { var model = new ModbusModel(); var scanner = new ModbusTCPScanner(); using (var server = new SerialModel(SlaveCOM, model, scanner)) using (var stream = new ModbusSerialStream(new SerialSettings(MasterCOM), 400)) { var master = new ModbusMaster(stream, new ModbusTCPProtocol()); var ex = Assert.Throws <ModbusException>(() => H.SharedExceptionTest(master)); Assert.AreEqual("Modbus exception 2", ex.Message); Assert.AreEqual(2, ex.Code); } }
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)); }
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"); }