Пример #1
0
        /// <summary>
        /// 各モードに応じて、クローズ
        /// </summary>
        public void Close()
        {
            if (null != urgLog)
            {
                urgLog.CloseFile();
                urgLog = null;
            }

            if (null != stream)
            {
                try
                {
                    write(stream, SCIP_Writer.QT()); // stop measurement mode
                    read_line(stream);               // ignore echo back

                    stream.Close();
                    urg.Close();

                    stream = null;
                }
                catch
                {
                }
            }
        }
Пример #2
0
        public static void TestMode()
        {
            const int GET_NUM    = 10;
            const int start_step = 0;
            const int end_step   = 1080;

            try
            {
                string ip_address  = LRF_IP_ADDR;
                int    port_number = LRF_PORT;
                //get_connect_information(out ip_address, out port_number);

                TcpClient urg = new TcpClient();
                urg.Connect(ip_address, port_number);
                NetworkStream stream = urg.GetStream();

                write(stream, SCIP_Writer.SCIP2());
                read_line(stream); // ignore echo back
                write(stream, SCIP_Writer.MD(start_step, end_step));
                read_line(stream); // ignore echo back

                List <double> distances  = new List <double>();
                long          time_stamp = 0;
                for (int i = 0; i < GET_NUM; ++i)
                {
                    string receive_data = read_line(stream);
                    if (!SCIP_Reader.MD(receive_data, ref time_stamp, ref distances))
                    {
                        Console.WriteLine(receive_data);
                        break;
                    }
                    if (distances.Count == 0)
                    {
                        Console.WriteLine(receive_data);
                        continue;
                    }
                    // show distance data
                    Console.WriteLine("time stamp: " + time_stamp.ToString() + " distance[100] : " + distances[100].ToString());
                }
                write(stream, SCIP_Writer.QT()); // stop measurement mode
                read_line(stream);               // ignore echo back
                stream.Close();
                urg.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);
            }
            finally
            {
                Console.WriteLine("Press any key.");
                //Console.ReadKey();
            }
        }
Пример #3
0
        /// <summary>
        /// LANからデータ取得
        /// </summary>
        /// <returns></returns>
        public double[] getScanDataIP()
        {
            const int start_step = 0;
            const int end_step   = 1080;

            try
            {
                write(stream, SCIP_Writer.MD(start_step, end_step, 4, 1));  //   270=度のParticleFilterの仕様にあわせる
                //read_line(stream);  // ignore echo back

                List <double> distances  = new List <double>();
                long          time_stamp = 0;
                bool          retryFlg   = true;

                while (retryFlg)
                {
                    string receive_data = read_line(stream);
                    if (!SCIP_Reader.MD(receive_data, ref time_stamp, ref distances))
                    {
                        //Console.WriteLine(receive_data);
                        break;
                    }

                    if (distances.Count == 0)
                    {
                        Console.WriteLine("not DistanceData :" + receive_data);
                        continue;
                    }
                    else
                    {
                        retryFlg = false;
                    }
                    // show distance data
                    //Console.WriteLine("time stamp: " + time_stamp.ToString() + " distance[100] : " + distances[100].ToString());
                }

                return(distances.ToArray());
            }
            catch
            {
                return(new double[0]);
            }
        }
Пример #4
0
        /// <summary>
        /// IP モードでオープン
        /// </summary>
        /// <param name="LRFip">ip addr</param>
        /// <param name="LRFport">ip port</param>
        /// <returns></returns>
        public bool IpOpen(string LRFip = LRF_IP_ADDR, int LRFport = LRF_PORT)
        {
            try
            {
                urg         = new TcpClient();
                urg.NoDelay = true;
                urg.Connect(LRFip, LRFport);
                stream = urg.GetStream();

                if (null != stream)
                {
                    // SCIP Ver2 Command
                    write(stream, SCIP_Writer.SCIP2());
                    read_line(stream); // ignore echo back
                    return(true);
                }
                return(false);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return(false);
            }
        }