Esempio n. 1
0
        private readonly double STOP_FLOW_THRESHOLD = 0.01; // 停止检测流量阈值,当启动测试后如果流量对值小于阈值,则开始检测停止条件

        public FlowValidator(double sampleRate, double calVolume = 1.0)
        {
            SAMPLE_RATE = sampleRate;
            SAMPLE_TIME = 1000 / sampleRate;

            m_waveAnalyzer = new WaveAnalyzer(sampleRate,
                                              START_SAMPLE_COUNT, START_FLOW_DELTA,
                                              STOP_SAMPLE_COUNT, STOP_FLOW_THRESHOLD);

            CalVolume = calVolume;

            m_waveAnalyzer.SampleStarted += (uint dataIndex, WaveSampleDirection direction) =>
            {
                /* 转换为呼吸方向 */
                RespireDirection respireDir = ToRespireDirection(direction);
                SampleStarted?.Invoke(dataIndex, respireDir);
            };

            m_waveAnalyzer.SampleStoped += (uint dataIndex, WaveSampleDirection direction, uint sampleIndex) =>
            {
                /* 转换为呼吸方向 */
                RespireDirection respireDir = ToRespireDirection(direction);
                SampleStoped?.Invoke(dataIndex, respireDir, sampleIndex);
            };
        }
Esempio n. 2
0
        /* 样本的呼吸方向 */
        public RespireDirection SampleFlowDirection(uint sampleIndex)
        {
            /* 取得样本方向 */
            WaveSampleDirection waveDir = m_waveAnalyzer.SampleDataDirection(sampleIndex);

            /* 转换为呼吸方向 */
            RespireDirection respireDir = ToRespireDirection(waveDir);

            return(respireDir);
        }
Esempio n. 3
0
        /* 转换为呼吸方向 */
        private static RespireDirection ToRespireDirection(WaveSampleDirection waveDir)
        {
            RespireDirection respireDir = RespireDirection.None;

            switch (waveDir)
            {
            case WaveSampleDirection.PositiveSample:       // 正方向样本
                respireDir = RespireDirection.Inspiration; // 吸气
                break;

            case WaveSampleDirection.NegativeSample:      // 负方向样本
                respireDir = RespireDirection.Expiration; // 呼气
                break;

            default:
                break;
            }

            return(respireDir);
        }