Esempio n. 1
0
        /// <summary>
        /// Query the next data in the streaming database.
        /// </summary>
        /// <param name="nWait">Specfies the maximum amount of time (in ms.) to wait for data.</param>
        /// <returns>A simple datum containing the data is returned.</returns>
        public SimpleDatum Query(int nWait)
        {
            if (m_iquery.QueryType == CUSTOM_QUERY_TYPE.REAL_DOUBLE)
            {
                List <double[]> rgData = m_iquery.QueryRealD();

                if (rgData == null || rgData.Count == 0 || rgData[0].Length == 0)
                {
                    return(null);
                }

                double[] rgFullData = new double[rgData[0].Length * rgData.Count];
                int      nOffset    = 0;

                for (int i = 0; i < rgData.Count; i++)
                {
                    Array.Copy(rgData[i], 0, rgFullData, nOffset, rgData[i].Length);
                    nOffset += rgData[i].Length;
                }

                return(new SimpleDatum(true, rgData.Count, 1, rgData[0].Length, -1, DateTime.MinValue, rgFullData.ToList(), 0, false, -1));
            }
            else if (m_iquery.QueryType == CUSTOM_QUERY_TYPE.REAL_FLOAT)
            {
                List <float[]> rgData = m_iquery.QueryRealF();

                if (rgData == null || rgData.Count == 0 || rgData[0].Length == 0)
                {
                    return(null);
                }

                float[] rgFullData = new float[rgData[0].Length * rgData.Count];
                int     nOffset    = 0;

                for (int i = 0; i < rgData.Count; i++)
                {
                    Array.Copy(rgData[i], 0, rgFullData, nOffset, rgData[i].Length);
                    nOffset += rgData[i].Length;
                }

                return(new SimpleDatum(true, rgData.Count, 1, rgData[0].Length, -1, DateTime.MinValue, rgFullData.ToList(), 0, false, -1));
            }
            else
            {
                byte[] rgData = m_iquery.QueryBytes();

                if (rgData == null || rgData.Length == 0)
                {
                    return(null);
                }

                return(new SimpleDatum(false, rgData.Length, 1, 1, -1, DateTime.MinValue, rgData.ToList(), 0, false, -1));
            }
        }