public ModBusResponseHeader(ModBusRequestHeader modBusReqHeader) : this()
 {
     this.TransId   = modBusReqHeader.TransId;
     this.UnitId    = modBusReqHeader.UnitId;
     this.StartAddr = modBusReqHeader.StartAddr;
     this.RegisNum  = modBusReqHeader.RegisNum;
 }
        /// <summary>
        /// 作为服务器接收PLC数据
        /// </summary>
        /// <returns></returns>
        public void ServerReceive()
        {
            while (null != this.socketServerWrapper.TempClientSocket)
            {
                //接收PLC客户端发送过来的消息并回复
                byte[] receiveBuf = new byte[256];
                if (this.socketServerWrapper.Read(receiveBuf))
                {
                    ModBusRequestHeader tempModBusReqHeader = new ModBusRequestHeader(receiveBuf, 0);
                    ModBusResponseHeader respHeader = new ModBusResponseHeader(tempModBusReqHeader);

                    //将接收到的数据追加到消息队列中
                    PLCData data = new PLCData(receiveBuf, ModBusRequestHeader.TotalLength);

                    lock (BasicData.PLCQueue)
                    {
                        BasicData.PLCQueue.Enqueue(data);
                    }

                    byte[] resp = new byte[ModBusResponseHeader.TotalLength];
                    respHeader.ToBytes(resp, 0);

                    //默认回复PLC ModBus protocol头
                    this.socketServerWrapper.Write(resp);
                }
                else //客户端终端连接
                {
                    Flag.PLCConnected = false;

                    this.socketServerWrapper.TempClientSocket.Close();

                    this.socketServerWrapper.TempClientSocket = null;

                    Log.Write("Server: PLC断开了连接.");
                }
            }

            //重新监听
            Listen();
        }
 public ModBusRequest()
 {
     ModBusReqHeader = new ModBusRequestHeader();
     ModBusReqBody   = new ModBusRequestBody();
 }
 public ModBusRequest()
 {
     ModBusReqHeader = new ModBusRequestHeader();
     ModBusReqBody = new ModBusRequestBody();
 }
 public ModBusResponseHeader(ModBusRequestHeader modBusReqHeader)
     : this()
 {
     this.TransId = modBusReqHeader.TransId;
     this.UnitId = modBusReqHeader.UnitId;
     this.StartAddr = modBusReqHeader.StartAddr;
     this.RegisNum = modBusReqHeader.RegisNum;
 }