public static YGpsProxy FindGps(string name)
        {
            // cases to handle:
            // name =""  no matching unknwn
            // name =""  unknown exists
            // name != "" no  matching unknown
            // name !="" unknown exists
            YGps      func = null;
            YGpsProxy res  = (YGpsProxy)YFunctionProxy.FindSimilarUnknownFunction("YGpsProxy");

            if (name == "")
            {
                if (res != null)
                {
                    return(res);
                }
                res = (YGpsProxy)YFunctionProxy.FindSimilarKnownFunction("YGpsProxy");
                if (res != null)
                {
                    return(res);
                }
                func = YGps.FirstGps();
                if (func != null)
                {
                    name = func.get_hardwareId();
                    if (func.get_userData() != null)
                    {
                        return((YGpsProxy)func.get_userData());
                    }
                }
            }
            else
            {
                func = YGps.FindGps(name);
                if (func.get_userData() != null)
                {
                    return((YGpsProxy)func.get_userData());
                }
            }
            if (res == null)
            {
                res = new YGpsProxy(func, name);
            }
            if (func != null)
            {
                res.linkToHardware(name);
                if (func.isOnline())
                {
                    res.arrival();
                }
            }
            return(res);
        }
예제 #2
0
        private void refreshUI()
        {
            GPSOk = false;
            if (currentGps != null)
            {
                if (currentGps.isOnline())
                {
                    if (currentGps.get_isFixed() == YGps.ISFIXED_TRUE)
                    {
                        GPSOk = true;
                        double lat = currentLat.get_currentValue() / 1000;
                        double lon = currentLon.get_currentValue() / 1000;
                        currentPos.Position   = new PointLatLng(lat, lon);
                        Lat_value.Text        = currentGps.get_latitude();
                        Lon_value.Text        = currentGps.get_longitude();
                        Speed_value.Text      = Math.Round(currentGps.get_groundSpeed()).ToString();
                        Orient_value.Text     = Math.Round(currentGps.get_direction()).ToString() + '°';
                        GPS_Status.Text       = currentGps.get_satCount().ToString() + " sat";
                        overlayOne.IsVisibile = true;
                        if (centeringNeeded)
                        {
                            myMap.Position = currentPos.Position;
                        }
                        centeringNeeded = false;
                    }
                    else
                    {
                        GPS_Status.Text = "fixing";
                    }
                }
                else
                {
                    GPS_Status.Text = "Yocto-GPS disconnected";
                }
            }
            else
            {
                GPS_Status.Text = "No Yocto-GPS connected";
            }

            if (!GPSOk)
            {
                Lat_value.Text        = "N/A";
                Lon_value.Text        = "N/A";
                Speed_value.Text      = "N/A";
                Orient_value.Text     = "N/A";
                overlayOne.IsVisibile = false;
                centeringNeeded       = true;
            }
        }