Exemplo n.º 1
0
        /// <summary>
        /// 请求数据
        /// </summary>
        /// <param name="packet"></param>
        /// <returns></returns>
        public ResponsePacket Request(RequestPacket packet, int timeout = 2000)
        {
            ResponsePacket ret = null;

            lock (_CommandLocker)
            {
                byte[] cmd = packet.ToBytes();
                if (cmd != null && cmd.Length > 0)
                {
                    _DeviceResponsed.Reset();
                    _RequestPakcet  = packet;
                    _ResponsePacket = null;
                    _Buffer.Clear();
                    SendData(cmd);
                    if (_DeviceResponsed.WaitOne(timeout))
                    {
                        if (_ResponsePacket.ResponseOk)
                        {
                            ret        = _ResponsePacket;
                            _LastError = string.Empty;
                        }
                        else
                        {
                            _LastError = string.Format("通讯状态:{0} 设备状态:{1}", _ResponsePacket.CommunicationError_Str(), _ResponsePacket.DeviceStatus_Str());
                        }
                    }
                    else
                    {
                        _LastError = "设备没有回复";
                        if (Debug)
                        {
                            LJH.GeneralLibrary.LOG.FileLog.Log("串口通讯", "解析包失败");
                        }
                    }
                }
            }
            return(ret);
        }