private List<ChannelDataPoints> getStatusFeedbacks(StatusRegister reg, IEnumerable<RegisterFeedback> feedbacks) { var vals = new List<StatusRegisterFeedbackBitValue>(); foreach (var feedback in feedbacks) { foreach (var bit in reg.StatusRegisterBits.Where(b => b.Enabled)) { var val = new StatusRegisterFeedbackBitValue(feedback, bit, reg); vals.Add(val); } } var channelsAndPointsToSend = new List<ChannelDataPoints>(); var bitGroups = vals.GroupBy(value => value.Bit); foreach(var values in bitGroups) { var valuesToSend = new List<SensorCloud.Point>(values.Count()); foreach (var bit in values) { if (bit.Value) { valuesToSend.Add(new SensorCloud.Point(bit.Feedback.ReadAt, (float)1.0)); } else { valuesToSend.Add(new SensorCloud.Point(bit.Feedback.ReadAt, (float)0.0)); } } var channelId = reg.Id.ToString() + "Bit" + values.Key.Bit.ToString(); var channelAndPoints = new ChannelDataPoints() { ChannelID=channelId, DataPoints = valuesToSend }; channelsAndPointsToSend.Add(channelAndPoints); } return channelsAndPointsToSend; }
private ChannelDataPoints getAnalogFeedbacks(AnalogRegister reg, IEnumerable<RegisterFeedback> feedbacks) { var dataPoints = new List<SensorCloud.Point>(feedbacks.Count()); foreach (var feedback in feedbacks) { dataPoints.Add(new SensorCloud.Point(feedback.ReadAt, reg.BuildScaledValue(feedback))); } var channelID = reg.RegisterNumber.ToString(); var channelAndPoints = new ChannelDataPoints() { ChannelID = channelID, DataPoints = dataPoints }; return channelAndPoints; }