Ejemplo n.º 1
0
        /// <summary>
        /// Thread used for scanning
        /// Populates a list of Measurements, and adds that list to
        /// </summary>
        public void ScanThread()
        {
            DateTime _LastSyncBit = new DateTime();
            //Make some room for a measurement
            Response_PointFormat measurementType = null;

            //Start writing output (for piping to csv)
            if (WriteOutCoordinates)
            {
                Console.WriteLine("X:Y");
            }
            //Loop while we're scanning
            while (this._isScanning)
            {
                //Init Point format
                measurementType = new Response_PointFormat();
                //Poll for data and parse response
                measurementType.parseData(waitPoint(1000));
                //measurementType.parseData(Reponse(1000, (iRPLidarResponse)measurementType));
                //Check for new 360 degree scan bit
                if (measurementType.CheckBit)
                {
                    _motorSpeed  = (1 / (DateTime.Now - _LastSyncBit).TotalSeconds) * 60;
                    _LastSyncBit = DateTime.Now;
                    //New Frame
                    _Frames.Add(Frame);
                    if (Data != null)
                    {
                        //Publish new frame
                        Data(Frame);
                    }
                    //Keep it below 10 frames
                    if (_Frames.Count > 10)
                    {
                        _Frames.RemoveAt(0);
                    }
                    //Start a new Frame list
                    Frame = new List <Response_PointFormat>();
                    if (Verbose)
                    {
                        Console.WriteLine(":: Syncbit, last # of valid measurements: " + _Frames[_Frames.Count - 1].Count);
                    }
                }

                if (WriteOutCoordinates)
                {
                    Console.WriteLine("{0}:{1}", measurementType.X.ToString(), measurementType.Y.ToString());
                }
                //Dont collect invalid data
                if (measurementType.IsValid)
                {
                    Frame.Add(measurementType);
                }
            }
        }
Ejemplo n.º 2
0
 public static Frame Convert(Response_PointFormat frame)
 {
     return(new Frame(frame.X, frame.Y, frame.Distance, frame.AngleDegrees, frame.CheckBit));
 }