public bool LogErrorData(SensorAcqResult senacqreslt, string tablename = "") { ISensorData data = senacqreslt.Data; var errdata = new StringBuilder(); errdata.AppendFormat("{0},{1}", senacqreslt.Sensor.SensorID, senacqreslt.ResponseTime); foreach (var d in data.RawValues) { errdata.AppendFormat(",{0:0.######}", d); } if (!string.IsNullOrEmpty(tablename)) { errdata.AppendFormat(",{0}", tablename); } FileService.Write(_errorPath, errdata.ToString()); errdata.Clear(); errdata.AppendFormat("{0},{1},{2}", senacqreslt.Sensor.SensorID, senacqreslt.ResponseTime, senacqreslt.Sensor.FactorType); foreach (var d in data.ThemeValues) { errdata.AppendFormat(",{0:0.######}", d); } if (!string.IsNullOrEmpty(tablename)) { errdata.AppendFormat(",{0}", tablename); } FileService.Write(_errorPath, errdata.ToString()); return(true); }
private async void SendData(Guid sensorId, string name, ISensorData payload) { var bodyJson = new JObject(); bodyJson.Add("Name", name); var payloadJson = JToken.FromObject(payload); bodyJson.Add("Payload", payloadJson); string body = bodyJson.ToString(); using (var client = new HttpClient()) { client.BaseAddress = new Uri(_uri); var request = new HttpRequestMessage(HttpMethod.Post, $"/api/sensors/{sensorId}/value/set") { Content = new StringContent(body, Encoding.UTF8, "application/json") }; request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", _apiKey); var response = await client.SendAsync(request); var responseStr = await response.Content.ReadAsStringAsync(); } }
public SoilMoistureSensor(Guid id, string name, SensorStatus status, ISensorData lastData) { this.Id = id; this.Name = name; this.Status = status; this.LastData = lastData; }
public int SaveDacResult(DACTaskResult result) { IList <SensorAcqResult> sresults = result.SensorResults; if (sresults == null || sresults.Count <= 0) { return(0); } var sqlCmds = new List <SqlCmdInfo>(); foreach (SensorAcqResult sr in sresults) { ISensorData data = sr.Data; try { // 2. 存储到对应的主题数据. // 入原始数据 // 入主题数据表 if (data == null) { continue; } string themeSql = GenerateAddValueSql(sr); if (!string.IsNullOrEmpty(themeSql)) { sqlCmds.Add(new SqlCmdInfo(themeSql)); } } catch (Exception ex) { Log.ErrorFormat("{0},产生SQL语句错误:" + ex.Message, sr.Sensor.SensorID); } } return(_helper.ExecuteSqlTran(sqlCmds)); }
public ISensorData GetSensorData(bool getAll) { ISensorData sensorData = this._command.GetSensorData(getAll); this.GetError((object)this, sensorData.SensorErrors); this.VerifyCommandResponse((ICauseError)sensorData); return(sensorData); }
public void Insert(ISensorData obj) { SensorDataEntity sde = new SensorDataEntity(); sde.Time = obj.Time; sde.Type = (int)obj.Type; sde.Value = obj.Value; this.genericRepository.Insert(sde); }
public SensorDataReceiver(ILogger <SensorDataReceiver> logger, ISensorData sensorData, IOptions <SensorDataOptions> options) { _logger = logger; _sensorData = sensorData; _options = options.Value; _bufferPool = ArrayPool <byte> .Create( maxArrayLength : SensorDataConstants.SensorDataSize, maxArraysPerBucket : _options.BufferPoolSize); _stateLock = new object(); }
public async void Update(ISensorData obj) { SensorDataEntity sde = await this.genericRepository.GetById(obj.Id); if (sde == null) { throw new ArgumentException("SensorDataItem not in db, nothing to update"); } this.genericRepository.Update(sde); }
public static void Main() { IMPU sensor = MPUSensor.GetInstance(SensorType.With6Axis); while (true) { ISensorData result = sensor.GetMeasurements(); Debug.Print(result.ToString()); Thread.Sleep(100); } }
public void DoWork(bool getAll) { ISensorData sensorData = this._command.GetSensorData(getAll); this._repository.Set(sensorData); if (!this.HasProgramChanged(sensorData.SettingCounter)) { this.RaiseGetSensorDataEvent(sensorData); } else { this.AcquireUpdatedSensorSettings(); } }
public SensorDataProcessor( ILogger <SensorDataProcessor> logger, ISensorDataReceiver sensorDataReceiver, ISensorData sensorData, ISensorDataWriter writer, ISensorDataUtil sensorDataUtil, IOptions <SensorDataOptions> options) { _logger = logger; _sensorDataReceiver = sensorDataReceiver; _sensorData = sensorData; _writer = writer; _sensorDataUtil = sensorDataUtil; _options = options.Value; }
private void RaiseGetSensorDataEvent(ISensorData sensorData) { if (!this.EnableEvent) { return; } if (sensorData.LiveImage != null) { this.ImageAcquired((object)this, sensorData.LiveImage); } if (sensorData.ToolResult == null) { return; } this.ResultUpdated((object)this, sensorData.ToolResult); }
public static void Main() { IMPU sensor = MPUSensor.GetInstance(SensorType.With9Axis); while (true) { ISensorData result = sensor.GetMeasurements(); Debug.Print(result.ToString()); SensorData9Axis result9Axis = result as SensorData9Axis; if (result9Axis != null) { Debug.Print("MagX:" + result9Axis.MagnometerX + ", MagY:" + result9Axis.MagnometerY + ", MagZ:" + result9Axis.MagnometerZ); } Thread.Sleep(100); } }
public bool StoreValue(Guid valueTypeId, ISensorData payload) { var value = new Value(valueTypeId, payload); return(_valuesRepository.Create(value)); }
public void Set(ISensorData sensorData) { this._latestData = sensorData; }
public int SaveDacResult(DACTaskResult result) { IList <SensorAcqResult> sresults = result.SensorResults; if (sresults == null || sresults.Count <= 0) { return(0); } var sqlCmds = new List <SqlCmdInfo>(); foreach (SensorAcqResult sr in sresults) { if (!sr.IsOK || sr.Data == null) { continue; } ISensorData data = sr.Data; try { if (data == null) { continue; } // 1. 存储到 T_DATA_ORIGINAL, Value 1/2/3/4 对应了主题中的属性值. // 2. 存储到对应的主题数据. // 入原始数据 if (sr.ErrorCode == (int)Errors.SUCCESS) { if (data.IsSaveDataOriginal) { ((BasicSensorData)data).IsSaveDataOriginal = false; string rawValueSql = GenerateAddValueSql(RawDataTable, sr, GetStorageTime(result, sr)); if (!string.IsNullOrEmpty(rawValueSql)) { sqlCmds.Add(new SqlCmdInfo(rawValueSql)); } } else { // 入主题数据表 if (data.ThemeValues.Any(d => d != null)) { string themeSql = GenerateAddValueSql(sr.Sensor.FactorTypeTable, sr, GetStorageTime(result, sr)); if (!string.IsNullOrEmpty(themeSql)) { sqlCmds.Add(new SqlCmdInfo(themeSql)); } } } } else { FileService.Write(_errorPath, string.Format("Dtu[{3}-{4}] s:{5} - m:{0} - c:{1}, Error Code: {2}", sr.Sensor.ModuleNo, sr.Sensor.ChannelNo, sr.ErrorCode, sr.Sensor.DtuID, sr.DtuCode, sr.Sensor.SensorID)); } } catch (Exception ex) { Log.ErrorFormat("Dtu:{0}-{1} s:{2} - m{3} - c{4}, create SQL error:{5}", sr.Sensor.DtuID, sr.DtuCode, sr.Sensor.SensorID, sr.Sensor.ModuleNo, sr.Sensor.ChannelNo, ex.Message); } } return(_helper.ExecuteSqlTran(sqlCmds)); }
/// <summary> /// 数据 /// </summary> /// <param name="tableName"></param> /// <param name="data"></param> /// <param name="acqtime"></param> /// <returns></returns> public string GenerateAddValueSql(string tableName, SensorAcqResult senacqreslt, DateTime acqtime) { ISensorData data = senacqreslt.Data; double?[] values = tableName == RawDataTable?Double2NullableDouble(data.RawValues) : data.ThemeValues.ToArray(); if (values == null || values.Length == 0) { return(null); } TableInfo table = _tables.ContainsKey(tableName) ? _tables[tableName] : default(TableInfo); if (table == null) { string error = string.Format(" miss table {0} ;", tableName); try { LogErrorData(senacqreslt); } catch (Exception ex) { error += ex.Message; } throw new Exception(error); } string columnStr = _tables[tableName].Colums; var valueStr = new StringBuilder(); string tableCommonColumns = GetTableCommonColumns(tableName, senacqreslt.Sensor, acqtime); valueStr.Append(tableCommonColumns); int tableCommonColumnscount = tableCommonColumns.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Length; int columscount = columnStr.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Length; if (values.Length + tableCommonColumnscount > columscount) { string error = string.Format("values's count is out of {0}'s columns's count ", table.TableName); try { LogErrorData(senacqreslt, tableName); } catch (Exception ex) { error += ex.Message; } throw new Exception(error); } for (int i = tableCommonColumnscount; i < columscount; i++) { int index = i - tableCommonColumnscount; if (index >= values.Length || values[index] == null) { valueStr.AppendFormat(",{0}", "null"); } else { valueStr.AppendFormat(",{0:0.######}", values[index].Value); } } string sql = string.Format(@"insert into {0} ({1}) values ({2})", table.TableName, table.Colums, valueStr); return(sql); }
/// <summary> /// 数据 /// </summary> /// <param name="protocol"></param> /// <param name="data"></param> /// <returns></returns> public string GenerateAddValueSql(SensorAcqResult sr) { ISensorData data = sr.Data; double?[] values = MergeRawvaluesAndThemeValues(data.RawValues, data.ThemeValues.ToArray()); if (values == null || values.Length == 0) { return(null); } TableInfo table = _tables.ContainsKey(sr.Sensor.ProtocolType) ? _tables[sr.Sensor.ProtocolType] : default(TableInfo); if (table == null) { // TODO 记录数据 string error = string.Format(" miss protocol {0} ;", sr.Sensor.ProtocolType); try { LogErrorData(sr, values); } catch (Exception ex) { error += ex.Message; } throw new Exception(error); } string columnStr = _tables[sr.Sensor.ProtocolType].Colums; var valueStr = new StringBuilder(); string tableCommonColumns = GetTableCommonColumns(sr); valueStr.Append(tableCommonColumns); int tableCommonColumnscount = tableCommonColumns.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Length; int columscount = columnStr.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Length; try { for (int i = tableCommonColumnscount; i < columscount; i++) { int index = i - tableCommonColumnscount; if (index >= values.Length || values[index] == null) { valueStr.AppendFormat(",{0}", "null"); } else { valueStr.AppendFormat(",{0:0.######}", values[index].Value); } } } catch (Exception ex) { string error = string.Format(" {0} ;", ex.Message); try { LogErrorData(sr, values, table.TableName); } catch (Exception e) { error += e.Message; } throw new Exception(error); } string sql = string.Format(@"insert into {0} ({1}) values ({2})", table.TableName, table.Colums, valueStr); return(sql); }
public Value(Guid valueTypeId, ISensorData payload) { ValueTypeId = valueTypeId; DateTime = payload.DateTime; Data = payload.Data; }
//public IMvxCommand LoadFromConfigCommand { get; } #endregion #region Constructors public SensorInfoViewModel(ISensorData nSensor)//, IPiControlPublisher commandPublisher) { sensor = nSensor; //_commandPublisher = commandPublisher; //LoadFromConfigCommand = new MvxAsyncCommand(OnLoadFromConfig); }
public SensorControlViewModel(ISensorData nSensor, IPiControlPublisher commandPublisher) { sensor = nSensor; _commandPublisher = commandPublisher; LoadFromConfigCommand = new MvxAsyncCommand(OnLoadFromConfig); }
private void AssertThatResultItemIsValid(ISensorData item, DateTime expectedTimeStamp, float expectedValue) { Assert.That(item.TimeStamp, Is.EqualTo(expectedTimeStamp)); Assert.That(item.Value, Is.EqualTo(expectedValue)); }
public TiltMeDataService(IGravityData gravityData, ISensorData sensorData) { _gravityData = gravityData; _sensorData = sensorData; }