Exemple #1
0
 public void Request(ref SensorAcqResult sensorAcq)
 {
     if (sensorAcq != null)
     {
         sensorAcq.ErrorCode = (int)Errors.SUCCESS;
         sensorAcq.Request   = null;
     }
 }
Exemple #2
0
        private void dtm_OnSensorCollectMsgHandler(CollectState state, DAC.SensorAcqResult acqResult)
        {
            switch (state)
            {
            case CollectState.Request:
                Log.InfoFormat("======> Dtu:{4} sensor:{0} p={1},m={2},channel={3}", acqResult.Sensor.SensorID,
                               acqResult.Sensor.ProtocolType, acqResult.Sensor.ModuleNo, acqResult.Sensor.ChannelNo, acqResult.DtuCode);
                return;

            case CollectState.Response:
                Log.InfoFormat("<====== Dtu:{4} result='sensor:{0} m={5},channel={6} [{1}-{2}]', data = [{3}]",
                               acqResult.Sensor.SensorID, acqResult.ErrorCode, acqResult.ErrorMsg,
                               acqResult.Data == null ? "null" : acqResult.Data.JsonResultData, acqResult.DtuCode,
                               acqResult.Sensor.ModuleNo, acqResult.Sensor.ChannelNo);
                break;
            }
        }
Exemple #3
0
        public virtual void ParseResult(ref SensorAcqResult rawData)
        {
            string raw = System.Text.Encoding.Default.GetString(rawData.Response);

            string[] d = raw.Split(',');
            try
            {
                double   x       = Convert.ToDouble(d[this._idxDX]) * 1000;
                double   y       = Convert.ToDouble(d[this._idxDY]) * 1000;
                double   height  = Convert.ToDouble(d[this._idxDH]) * 1000;
                DateTime acqTime = Convert.ToDateTime(d[this._idxTime], this._dtformat);

                // 减去初值
                double iniX = rawData.Sensor.Parameters[0].Value;
                double iniY = rawData.Sensor.Parameters[1].Value;
                double iniZ = rawData.Sensor.Parameters[2].Value;
                if (iniX == 0 || iniY == 0 || iniZ == 0)
                {
                    // 查询第一条数据?
                }

                double cx = x - iniX;
                double cy = y - iniY;
                double cz = height - iniZ;

                // 计算偏角
                double drift = rawData.Sensor.Parameters[3].Value;
                cx *= Math.Cos(drift);
                cy *= Math.Cos(drift);
                if (rawData.Sensor.TableColums.Split(',').Length == 3)
                {
                    rawData.ResponseTime = acqTime;
                    rawData.Data         = new Gps3dData(x, y, height, cx, cy, cz)
                    {
                        //Sensor = rawData.Sensor,
                        //AcqTime = acqTime,
                        //ResultCode = Errors.SUCCESS,
                        JsonResultData =
                            string.Format(
                                "{0}\"sensorId\":{1},\"data\":\"X方向位移:{2} mm,Y方向位移:{3} mm,Z方向位移:{4} mm\"{5}",
                                '{',
                                rawData.Sensor.SensorID,
                                x,
                                y,
                                height,
                                '}')
                    };
                }
                else
                {
                    rawData.ResponseTime = acqTime;
                    rawData.Data         = new GpsHeightData(height, cz)
                    {
                        JsonResultData =
                            string.Format(
                                "{0}\"sensorId\":{1},\"data\":\"沉降值:{2} mm\"{3}",
                                '{',
                                rawData.Sensor.SensorID,
                                height,
                                '}')
                    };
                }
            }
            catch (Exception e)
            {
                this._log.Warn("Data parse error", e);
                rawData.ErrorCode = (int)Errors.ERR_DATA_PARSEFAILED;
            }
        }