コード例 #1
0
        public bool Read(byte[] buffer, int offset, int count, TimeSpan waitInterval, CancellationToken cancelToken)
        {
            var sample = new DataSample(DateTimeOffset.UtcNow, _generator.GetCurrentValue());
            var bytes = DataSampleConverter.ToBytes(sample);

            Array.Copy(bytes, 0, buffer, offset, Math.Min(bytes.Length, count));

            return true;
        }
コード例 #2
0
        public void ToBytes_FromBytes_roundtrip_conversion_for_10_or_8bit([Values(true, false)] bool voltage10bit )
        {
            var inputSample = new DataSample(DateTimeOffset.UtcNow, 4.679d);

            var bytes = DataSampleConverter.ToBytes(inputSample, voltage10bit);
            var resultSample = DataSampleConverter.FromBytes(bytes, DateTimeOffset.UtcNow, voltage10bit);

            resultSample.Voltage
                .Should().BeApproximately(inputSample.Voltage, TOLERANCE);
        }
コード例 #3
0
        /// <summary>
        /// Recalculates and updates readings according to the new sample.
        /// </summary>
        /// <param name="sample">Measured sample to process</param>
        public void AddSample(DataSample sample)
        {
            Contract.Requires <ArgumentOutOfRangeException>(TimeStamp == null || TimeStamp < sample.Timestamp);
            Contract.Ensures(TimeStamp == sample.Timestamp);

            TimeSpan interval = TimeStamp.HasValue
                ? sample.Timestamp - TimeStamp.Value
                : TimeSpan.Zero;

            TimeStamp = sample.Timestamp;
            var measuredVoltage = sample.Voltage <= NoiseThreshold ? 0.0 : sample.Voltage;

            CalculateAndUpdateReadings(measuredVoltage, Resistance, VoltageScale, interval);
        }
コード例 #4
0
ファイル: DataSample.cs プロジェクト: neremin/USB_Voltmeter
 /// <devdoc>
 /// This is approximate reverse algo.
 /// For emulation purposes only.
 /// </devdoc>
 public static byte[] ToBytes(DataSample sample, bool voltage10bit = true)
 {
     var bytes = new byte[DeviceConstants.InputReportLength];
     if (voltage10bit)
     {
         var value = (ushort)(sample.Voltage * 1023 / DeviceConstants.MaxMeasuredVoltage);
         bytes[1] = (byte)(value >> 2);
         bytes[2] = (byte)(value * 64);
     }
     else
     {
         bytes[1] = (byte)(sample.Voltage / DeviceConstants.MaxMeasuredVoltage * 255.0);
     }
     bytes[3] = (byte)(sample.IsTimeBased ? 0 : 1);
     // Skip frequency. Never used
     return bytes;
 }
コード例 #5
0
ファイル: DataSample.cs プロジェクト: neremin/USB_Voltmeter
        /// <devdoc>
        /// This is approximate reverse algo.
        /// For emulation purposes only.
        /// </devdoc>
        public static byte[] ToBytes(DataSample sample, bool voltage10bit = true)
        {
            var bytes = new byte[DeviceConstants.InputReportLength];

            if (voltage10bit)
            {
                var value = (ushort)(sample.Voltage * 1023 / DeviceConstants.MaxMeasuredVoltage);
                bytes[1] = (byte)(value >> 2);
                bytes[2] = (byte)(value * 64);
            }
            else
            {
                bytes[1] = (byte)(sample.Voltage / DeviceConstants.MaxMeasuredVoltage * 255.0);
            }
            bytes[3] = (byte)(sample.IsTimeBased ? 0 : 1);
            // Skip frequency. Never used
            return(bytes);
        }
コード例 #6
0
ファイル: DataSample.cs プロジェクト: neremin/USB_Voltmeter
 public DataSampleArgs(DataSample sample)
 {
     Sample = sample;
 }
コード例 #7
0
        /// <summary>
        /// Recalculates and updates readings according to the new sample.
        /// </summary>
        /// <param name="sample">Measured sample to process</param>
        public void AddSample(DataSample sample)
        {
            Contract.Requires<ArgumentOutOfRangeException>(TimeStamp == null || TimeStamp < sample.Timestamp);
            Contract.Ensures(TimeStamp == sample.Timestamp);

            TimeSpan interval = TimeStamp.HasValue
                ? sample.Timestamp - TimeStamp.Value
                : TimeSpan.Zero;

            TimeStamp = sample.Timestamp;
            var measuredVoltage = sample.Voltage <= NoiseThreshold ? 0.0 : sample.Voltage;
            CalculateAndUpdateReadings(measuredVoltage, Resistance, VoltageScale, interval);
        }
コード例 #8
0
ファイル: DataSample.cs プロジェクト: neremin/USB_Voltmeter
 public DataSampleArgs(DataSample sample)
 {
     Sample = sample;
 }