コード例 #1
0
ファイル: SlaveForm.cs プロジェクト: FreemanKing/JustTest
        /// <summary>
        /// Running thread handler
        /// </summary>
        protected void Worker()
        {
            var server = new ModbusServer(new ModbusTcpCodec())
            {
                Address = SlaveId
            };

            server.IncommingData += DriverIncommingData;
            server.OutgoingData  += DriverOutgoingData;
            try
            {
                while (_thread.ThreadState == ThreadState.Running)
                {
                    //wait for an incoming connection
                    _listener = _socket.GetTcpListener(server);
                    _listener.ServeCommand += listener_ServeCommand;
                    _listener.Start();
                    AppendLog(String.Format("Accepted connection."));
                    Thread.Sleep(1);
                }
            }
            catch (Exception ex)
            {
                String msg = ex.Message;
            }
        }
コード例 #2
0
ファイル: SlaveForm.cs プロジェクト: gbcwbz/ModbusTool
        private void BtnConnectClick(object sender, EventArgs e)
        {
            try
            {
                switch (CommunicationMode)
                {
                    case CommunicationMode.RTU:
                        _uart = new SerialPort(PortName, Baud, Parity, DataBits, StopBits);
                        _uart.Open();
                        var rtuServer = new ModbusServer(new ModbusRtuCodec()) { Address = SlaveId };
                        rtuServer.OutgoingData += DriverOutgoingData;
                        rtuServer.IncommingData += DriverIncommingData;
                        _listener = _uart.GetListener(rtuServer);
                        _listener.ServeCommand += listener_ServeCommand;
                        _listener.Start();
                        AppendLog(String.Format("Connected using RTU to {0}", PortName));
                        break;

                    case CommunicationMode.UDP:
                        _socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                        _socket.Bind(new IPEndPoint(IPAddress.Any, TCPPort));
                        //create a server driver
                        var udpServer = new ModbusServer(new ModbusTcpCodec()) { Address = SlaveId };
                        udpServer.OutgoingData += DriverOutgoingData;
                        udpServer.IncommingData += DriverIncommingData;
                        //listen for an incoming request
                        _listener = _socket.GetUdpListener(udpServer);
                        _listener.ServeCommand += listener_ServeCommand;
                        _listener.Start();
                        AppendLog(String.Format("Listening to UDP port {0}", TCPPort));
                        break;

                    case CommunicationMode.TCP:
                        _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                        _socket.Bind(new IPEndPoint(IPAddress.Any, TCPPort));
                        _socket.Listen(10);
                        //create a server driver
                        _thread = new Thread(Worker);
                        _thread.Start();
                        AppendLog(String.Format("Listening to TCP port {0}", TCPPort));

                        // simulate classic
                        broadcasrter = new UDPBroadcaster();
                        broadcasrter.SendDatagrams(TCPPort);
                        break;
                }
            }
            catch (Exception ex)
            {
                AppendLog(ex.Message);
                return;
            }
            btnConnect.Enabled = false;
            buttonDisconnect.Enabled = true;
            grpExchange.Enabled = true;
            groupBoxFunctions.Enabled = false;
            groupBoxTCP.Enabled = false;
            groupBoxRTU.Enabled = false;
            groupBoxMode.Enabled = false;
        }
コード例 #3
0
        private void BtnConnectClick(object sender, EventArgs e)
        {
            try
            {
                switch (CommunicationMode)
                {
                case CommunicationMode.RTU:
                    _uart = new SerialPort(PortName, Baud, Parity, DataBits, StopBits);
                    _uart.Open();
                    var rtuServer = new ModbusServer(new ModbusRtuCodec());
                    rtuServer.OutgoingData  += DriverOutgoingData;
                    rtuServer.IncommingData += DriverIncommingData;
                    _listener = _uart.GetListener(rtuServer);
                    _listener.ServeCommand += listener_ServeCommand;
                    _listener.Start();
                    AppendLog(String.Format("Connected using RTU to {0}", PortName));
                    break;

                case CommunicationMode.UDP:
                    _socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                    _socket.Bind(new IPEndPoint(IPAddress.Any, TCPPort));
                    //create a server driver
                    var udpServer = new ModbusServer(new ModbusTcpCodec());
                    udpServer.OutgoingData  += DriverOutgoingData;
                    udpServer.IncommingData += DriverIncommingData;
                    //listen for an incoming request
                    _listener = _socket.GetUdpListener(udpServer);
                    _listener.ServeCommand += listener_ServeCommand;
                    _listener.Start();
                    AppendLog(String.Format("Listening to UDP port {0}", TCPPort));
                    break;

                case CommunicationMode.TCP:
                    _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    _socket.Bind(new IPEndPoint(IPAddress.Any, TCPPort));
                    _socket.Listen(10);
                    //create a server driver
                    _thread = new Thread(Worker);
                    _thread.Start();
                    AppendLog(String.Format("Listening to TCP port {0}", TCPPort));
                    break;
                }
            }
            catch (Exception ex)
            {
                AppendLog(ex.Message);
                return;
            }
            btnConnect.Enabled       = false;
            buttonDisconnect.Enabled = true;
            grpExchange.Enabled      = true;
            groupBoxTCP.Enabled      = false;
            groupBoxRTU.Enabled      = false;
            groupBoxMode.Enabled     = false;
        }
コード例 #4
0
        public void Prepare()
        {
            try
            {
                Logger.Instance().SendLog("AdapterController", "正在初始化参数...");
                Init();

                CommandProcessor.instance().Start(true);
                m_ControllerServer.Start();//通讯服务器启动

                Logger.Instance().SendLog("AdapterController", "初始化完毕.");
            }
            catch (Exception ex)
            {
                Logger.Instance().SendLog("AdapterController", ex.ToString());
            }
        }
コード例 #5
0
ファイル: SlaveForm.cs プロジェクト: gbcwbz/ModbusTool
        /// <summary>
        /// Running thread handler
        /// </summary>
        protected void Worker()
        {
            var server = new ModbusServer(new ModbusTcpCodec()) { Address = SlaveId };
            server.IncommingData += DriverIncommingData;
            server.OutgoingData += DriverOutgoingData;
            try
            {
                while (_thread.ThreadState == ThreadState.Running)
                {
                    //wait for an incoming connection
                    _listener = _socket.GetTcpListener(server);
                    _listener.ServeCommand += listener_ServeCommand;
                    _listener.Start();
                    AppendLog(String.Format("Accepted connection."));
                    Thread.Sleep(1);
                }
            }
            catch (Exception ex)
            {
                String msg = ex.Message;
            }

        }