public void Start() { _listener?.Stop(); _slave?.Dispose(); _listener = new TcpListener(IPAddress.Any, 502); _slave = ModbusTcpSlave.CreateTcp(1, _listener); _slave.DataStore = DataStoreFactory.CreateDefaultDataStore(); _slave.ListenAsync(); }
public void InitServer() { try { IPHostEntry ipEntry = Dns.GetHostEntry(Dns.GetHostName()); //IPAddress[] addr = ipEntry.AddressList; IPAddress IPaddr = IPAddress.Parse(IPaddress); //IPAddress address = new IPAddress(new byte[] { 192, 168, 0, 33 }); // create and start the TCP slave slaveTcpListener = new TcpListener(IPaddr, port); slaveTcpListener.Start(); slave = ModbusTcpSlave.CreateTcp(slaveId, slaveTcpListener); slave.DataStore = DataStoreFactory.CreateDefaultDataStore(); slave.ModbusSlaveRequestReceived += new EventHandler <ModbusSlaveRequestEventArgs>(Modbus_Request_Event); //slave.ListenAsync().GetAwaiter().GetResult(); slave.ListenAsync(); Console.WriteLine(DateTime.Now.ToString() + " ModbusTCP/IP сервер запущен на адресе : " + IPaddress); } catch (Exception ex) { Console.WriteLine(DateTime.Now.ToString() + " Error in InitServer : " + ex.Message); isListen = false; slaveTcpListener.Stop(); slaveTcpListener = null; slave.Dispose(); } }
public void SendData() { if (!isListen) { InitServer(); isListen = true; } int i = 0; try { foreach (var videocard in ferma.listVideoCard) { i = i + 1; slave.DataStore.HoldingRegisters[i] = Convert.ToUInt16(videocard.temperature); slave.DataStore.HoldingRegisters[ferma.listVideoCard.Count + i] = Convert.ToUInt16(videocard.control); } } catch (Exception ex) { Console.WriteLine(DateTime.Now.ToString() + " Error in SendData : " + ex.Message); isListen = false; slaveTcpListener.Stop(); slaveTcpListener = null; slave.Dispose(); } }
private void button3_Click(object sender, EventArgs e) { button3.Enabled = false; button4.Enabled = true; slaveTcpM.Dispose(); slaveTcpListener.Stop(); slaveTcp.Abort(); }
private void btCloseCOM_Click(object sender, EventArgs e) { //Close comport first,then stop and dispose slave. comPort.Close(); slave.Stop(); slave.Dispose(); btOpenCOM.Enabled = true; btCloseCOM.Enabled = false; timer1.Enabled = false; }
private void Disconnect() { if (PortIsOpen) { _slave.Dispose(); _slaveThread.Abort(); _port.Close(); PortIsOpen = false; OperationStatus = ""; СonnectionStatus = "Отключено"; } }
private void ButtonCloseRTUASCII_Click(object sender, EventArgs e) { if (SerPort != null) { if (SerPort.IsOpen) { SerPort.DiscardInBuffer(); SerPort.DiscardOutBuffer(); SerPort.Close(); } SerPort.Dispose(); } if (slave != null) { slave.Transport.Dispose(); slave.StopListen(); slave.Dispose(); } btnOpenRTUASCII.Enabled = true; btnOpenRTUASCII.BackColor = Color.LightSteelBlue; btnCloseRTUASCII.Enabled = false; btnCloseRTUASCII.BackColor = Color.Gainsboro; btnRefresh.Enabled = true; btnRefresh.BackColor = Color.LightSteelBlue; cbPort.Enabled = true; cbBaud.Enabled = true; cbDataBits.Enabled = true; cbParity.Enabled = true; cbStopBits.Enabled = true; cbCommMode.Enabled = true; cbRowCount.Enabled = true; tbManualCOM.Enabled = true; }
override public void stopDriver() // переопределяемая функция остановки драйвера { drvthr.Abort(); drvthr.Join(); if (slave != null) { slave.Dispose(); slaveTcpListener.Stop(); } slave = null; slaveTcpListener = null; device.status = 0; device.ready = false; }
public void Bring_down() { runsimulator = false; if (MCU_Modbusserver != null) { MCU_Modbusserver.Dispose(); } PLC_emulator_thread.Join(); PLCTCPClient.Dispose(); PLCModbusMaster.Dispose(); if (MCU_emulator_thread.IsAlive) { MCU_emulator_thread.Join(); } MCU_TCPListener.Stop(); }
public void stop() { if (_isRunning == false) { return; } _status = "服务停止"; _isRunning = false; try { _modbusSlave.Dispose(); //_listener.Stop(); _thread.Abort(); } catch { } }
public void CleanUp() { log.Debug("Clean up after tests."); if (Master != null) { Master.Dispose(); } if (Slave != null) { Slave.Dispose(); } if (Jamod != null) { Jamod.Kill(); Thread.Sleep(4000); } }
public override bool RequestStopAsyncAcceptingClientsAndJoin() { MCU.RequestStopAsyncAcceptingClientsAndJoin(); keep_modbus_server_alive = false; try { PLC_Modbusserver.Dispose(); PLCTCPListener.Stop(); ClientManagmentThread.Join(); } catch (Exception e) { if ((e is ThreadStateException) || (e is ThreadStartException)) { logger.Error(e); return(false); } else { throw e; } // Unexpected exception } return(true); }
private static void ServerProc(object obj) { Plugin self = (Plugin)obj; /*try * { * * IPAddress address = new IPAddress(new byte[] { 0, 0, 0, 0 }); * * // create and start the TCP slave * TcpListener slaveTcpListener = new TcpListener(address, 502); * slaveTcpListener.Start(); * ModbusSlave tcpSlave = ModbusTcpSlave.CreateTcp(self._unit_id, slaveTcpListener); * tcpSlave.DataStore = self._ds; * * tcpSlave.Listen(); * } * catch (Exception e) * { * Env.Current.Logger.LogError(e.Message); * } */ while (true) { var slavePort = new SerialPort(self._comport); ModbusSlave serialSlave = null; try { slavePort.BaudRate = self._baudrate; slavePort.DataBits = 8; slavePort.Parity = Parity.None; slavePort.StopBits = StopBits.One; Env.Current.Logger.LogError(String.Format("try to open port {0}", self._comport)); slavePort.Open(); // create modbus slave serialSlave = ModbusSerialSlave.CreateRtu(self._unit_id, slavePort); serialSlave.DataStore = self._ds; serialSlave.Listen(); } catch (Exception e) { Env.Current.Logger.LogError(e.Message); if (e is ThreadAbortException) { return; } if (e is System.IO.IOException) { return; } if (serialSlave != null) { serialSlave.Dispose(); } slavePort.Close(); Thread.Sleep(2000); } } }