コード例 #1
0
            public Exp TranslateSimpleVar(Access var, Level home)
            {
                Expr  res = new TEMP(home.Frame.FP());
                Level l   = home;

                while (l != var.Home)
                {
                    res = l.StaticLink().Acc.Exp(res);
                    l   = l.Parent;
                }
                return(new Ex(var.Acc.Exp(res)));
            }
コード例 #2
0
    void OnEnable()             // Create all of the objects
    {
//		Instantiate (BossMusic_Controller);
//		MusicController.control.Fade_Play_Unfade (BossMusic);
        MusicController.control.PlayNewClip(BossMusic);

        NewObjectSpawner TEMP;

        CenterHead.SetColor(0, Color.white);
        BackgroundSpin.SetActive(true);
        CenterHead.UnfadeObject(0, BackgroundSpin, 1f);

        TEMP = BackgroundSpin.GetComponent <NewObjectSpawner> ();
        TEMP.RotateDegrees(0, 0.1f, 0, false);

        TEMP = LeftEar.GetComponent <NewObjectSpawner> ();
        TEMP.CreateTriangle(0, 0.1f, 9, 0.25f, 0.25f);
        CenterHead.TESTCOMBINE(3, TEMP);

        TEMP = RightEar.GetComponent <NewObjectSpawner> ();
        TEMP.CreateTriangle(0, 0.1f, 9, 0.25f, 0.25f);
        CenterHead.TESTCOMBINE(3, TEMP);

        LeftEye = LeftEyeObject.GetComponent <NewObjectSpawner> ();
        LeftEye.CreateLineInDirection(0, 0, 1, new Vector2(0, 0), 0);
        LeftEye.RotateDegrees(0, 0, 315, true);
//		LeftEye.RotateTwordsObject_Player (0, 5, false);

        RightEye = RightEyeObject.GetComponent <NewObjectSpawner> ();
        RightEye.CreateLineInDirection(0, 0, 1, new Vector2(0, 0), 0);
        RightEye.RotateDegrees(0, 0, 315, true);
//		RightEye.RotateTwordsObject_Player (0, 5, false);

        TEMP = Mouth.GetComponent <NewObjectSpawner> ();
        TEMP.CreateCircle(0, 0.1f, 7, 0.5f, 0.5f, 2);
        TEMP.CreateCircle(0, 0.1f, 5, 0.05f, 0.05f, 1);
        TEMP.CreateLineInDirection_World(0, 0.1f, 2, new Vector2(0, -1), 0.5f);

        CenterHead.TESTCOMBINE(3, TEMP);
        LeftArm.SetColor(0, Color.white);
        RightArm.SetColor(0, Color.white);

        CenterHead.CreateCircle(0, 0.05f, 30, 1, 1, 1);
        LeftArm.CreateSquare(0, 0.1f, 16, 0.5f, 0.4f);
        RightArm.CreateSquare(0, 0.1f, 16, 0.5f, 0.4f);
        LeftArm.SetColor_Random(3);
        RightArm.SetColor_Random(3);

        StartCoroutine(C_StartBattle());
    }
コード例 #3
0
        public ActionResult XacNhanXoaRau(int id, TEMP temp)
        {
            //lấy ra đối tượng cần xóa theo mã:
            SANPHAM sp = data.SANPHAMs.SingleOrDefault(n => n.MASP == id);

            ViewBag.MaSP = sp.MASP;
            temp.MASP    = sp.MASP;
            if (sp == null)
            {
                Response.StatusCode = 404;
                return(null);
            }
            data.TEMPs.InsertOnSubmit(temp);
            data.SubmitChanges();
            return(RedirectToAction("Rau"));
        }
コード例 #4
0
 public Exp TranslateCallExp(Level home, Level dst, Label name, List<Exp> argValue)
 {
     Tree.ExpList args = null;
     for (int i = argValue.Count - 1; i >= 0; --i)
     {
         args = new Tree.ExpList(argValue[i].UnEx(), args);
     }
     Level lv = home;
     Expr staticLink = new TEMP(lv.Frame.FP());
     while (dst.Parent != lv)
     {
         staticLink = lv.StaticLink().Acc.Exp(staticLink);
         lv = lv.Parent;
     }
     if (!name.Name.StartsWith("_"))
         args = new Tree.ExpList(staticLink, args);
     return new Ex(new CALL(new NAME(name), args));
 }
コード例 #5
0
 private void btnTK_DoanhThu_Click(object sender, EventArgs e)
 {
     using (DBKhoHangDataContext db = new DBKhoHangDataContext())
     {
         var rs = from ctpx in db.CT_PHIEUXUATs
                  join px in db.PHIEUXUATs on ctpx.id_phieuxuat equals px.id_phieuxuat
                  join sp in db.HANGHOAs on ctpx.id_hanghoa equals sp.id_hanghoa
                  where px.ngayxuat >= dtpTK_NgayBatDau.Value && px.ngayxuat <= dtp_NgayKetThuc.Value
                  select new
         {
             ThanhTien = ctpx.soluongxuat * Convert.ToInt32(sp.giaban)
         } into OD
         group OD by OD.ThanhTien into TEMP
             select new { Total = TEMP.Sum(n => n.ThanhTien) };
         foreach (var item in rs)
         {
             lbTongDoanhThu.Text = item.ToString();
         }
     }
 }
コード例 #6
0
            public Exp TranslateCallExp(Level home, Level dst, Label name, List <Exp> argValue)
            {
                Tree.ExpList args = null;
                for (int i = argValue.Count - 1; i >= 0; --i)
                {
                    args = new Tree.ExpList(argValue[i].UnEx(), args);
                }
                Level lv         = home;
                Expr  staticLink = new TEMP(lv.Frame.FP());

                while (dst.Parent != lv)
                {
                    staticLink = lv.StaticLink().Acc.Exp(staticLink);
                    lv         = lv.Parent;
                }
                if (!name.Name.StartsWith("_"))
                {
                    args = new Tree.ExpList(staticLink, args);
                }
                return(new Ex(new CALL(new NAME(name), args)));
            }
コード例 #7
0
        public ActionResult UploadArticle()
        {
            AddArticleViewModel aavm = new AddArticleViewModel();

            aavm.SideBarData = new SideBarViewModel();
            aavm.SideBarData.CurrentIndex = 1;
            aavm.CreateDate = DateTime.Now;

            Markdown m   = new Markdown();
            Regex    rgx = new Regex("<[^>]+>");
            String   TEMP;

            Article readyArticle = new Article();
            ArticleBusinessLayer articleBusinessLayer = new ArticleBusinessLayer();

            readyArticle.Author     = Request.Form["Author"];
            readyArticle.Title      = Request.Form["Title"];
            readyArticle.CreateDate = Convert.ToDateTime(Request.Form["CreateDate"]);
            readyArticle.Content    = m.Transform(Request.Unvalidated.Form["Content"]);
            TEMP = rgx.Replace(readyArticle.Content, " ");
            TEMP = TEMP.Replace("\n", "");
            if (TEMP.Length >= 80)
            {
                readyArticle.Description = TEMP.Substring(0, 79) + "...";
            }
            else
            {
                readyArticle.Description = TEMP.Substring(0) + "...";
            }

            articleBusinessLayer.UploadArticle(readyArticle);

            aavm.Message   = "Add article successfully!";
            aavm.AlertType = "success";

            return(View("Add", aavm));
        }
コード例 #8
0
ファイル: BuildForm.cs プロジェクト: venegret77/NDD
        private void button1_Click(object sender, EventArgs e)
        {
            name = textBox1.Text;
            if (checkBox1.Checked)
            {
                basement = true;
            }
            if (checkBox2.Checked)
            {
                loft = true;
            }
            int max   = (int)((float)textBox1.Width / textBox1.Font.Size);
            var lines = TEMP.WrapText(textBox1.Text, max);

            name = "";
            for (int i = 0; i < lines.Count(); i++)
            {
                if (i != lines.Count() - 1)
                {
                    name += lines[i] + Environment.NewLine;
                }
                else
                {
                    name += lines[i];
                }
            }
            if (name.Length <= 1)
            {
                MessageBox.Show("Пожалуйста введите имя здания");
            }
            else
            {
                count        = (int)numericUpDown1.Value;
                dialogResult = DialogResult.Yes;
                Close();
            }
        }
コード例 #9
0
    void Awake()                // Setup all of the objects
    {
        EventManager.resetObjects += Reset;
        LeftArmStartingPosition    = LeftArmObject.transform.localPosition;
        RightArmStartingPosition   = RightArmObject.transform.localPosition;
        CenterStartingPosition     = gameObject.transform.localPosition;

        StartingMusic = MusicController.control.musicclip;

        Rigidbody2D      TEMPBODY;
        NewObjectSpawner TEMP;

        BottomLeftSpawn = BottomLeft.AddComponent <NewObjectSpawner> ();
        BottomLeftSpawn.SetProjectile(0, Projectile);
        BottomLeftSpawn.SetColor_Random(0);
        BottomLeftSpawn.SetDeathTimer(0, 10);
        BottomRightSpawn = BottomRight.AddComponent <NewObjectSpawner> ();
        BottomRightSpawn.SetProjectile(0, Projectile);
        BottomRightSpawn.SetColor_Random(0);
        BottomRightSpawn.SetDeathTimer(0, 10);

        if (!BackgroundSpin.GetComponent <NewObjectSpawner>())
        {
            BackgroundSpin.AddComponent <NewObjectSpawner> ();
        }
        CenterHead = gameObject.AddComponent <NewObjectSpawner> ();
        CenterHead.SetProjectile(0, Projectile);
        CenterHead.SetColor(0, Color.white);
        TEMPBODY             = gameObject.AddComponent <Rigidbody2D> ();
        TEMPBODY.isKinematic = true;

        TEMP = LeftEar.AddComponent <NewObjectSpawner> ();
        TEMP.SetProjectile(0, Projectile);
        TEMP.SetColor(0, Color.white);
        TEMP.RotateDegrees(0, 0, 45, true);

        TEMP = RightEar.AddComponent <NewObjectSpawner> ();
        TEMP.SetProjectile(0, Projectile);
        TEMP.SetColor(0, Color.white);
        TEMP.RotateDegrees(0, 0, 315, true);

        LeftEye = LeftEyeObject.AddComponent <NewObjectSpawner> ();
        LeftEye.SetProjectile(0, EyeballPrefab);
        LeftEye.SetColor(0, Color.white);

        RightEye = RightEyeObject.AddComponent <NewObjectSpawner> ();
        RightEye.SetProjectile(0, EyeballPrefab);
        RightEye.SetColor(0, Color.white);

        TEMP = Mouth.AddComponent <NewObjectSpawner> ();
        TEMP.SetProjectile(0, Projectile);
        TEMP.SetColor(0, Color.white);
        TEMP.RotateDegrees(0, 0, 260, true);

        LeftArm = LeftArmObject.AddComponent <NewObjectSpawner> ();
        LeftArm.SetProjectile(0, Projectile);
        LeftArm.SetColor(0, Color.white);
        TEMPBODY             = LeftArmObject.AddComponent <Rigidbody2D> ();
        TEMPBODY.isKinematic = true;

        RightArm = RightArmObject.AddComponent <NewObjectSpawner> ();
        RightArm.SetProjectile(0, Projectile);
        RightArm.SetColor(0, Color.white);
        TEMPBODY             = RightArmObject.AddComponent <Rigidbody2D> ();
        TEMPBODY.isKinematic = true;
    }
コード例 #10
0
ファイル: Comm.cs プロジェクト: fsaux/LionRiver_old_zz
        public void SendNMEA()
        {
            string message;

            // Build HDG Sentence ****************************************************************************************

            if (HDT.IsValid())  // Implies MVAR is valid too
            {
                string mv;

                if (MVAR.Val > 0)
                {
                    mv = "E";
                }
                else
                {
                    mv = "W";
                }

                double hdg = (HDT.Val - MVAR.Val + 360) % 360;

                message = "IIHDG," + hdg.ToString("0.#") + ",,," + Math.Abs(MVAR.Val).ToString("0.#") + "," + mv;

                int checksum = 0;

                foreach (char c in message)
                {
                    checksum ^= Convert.ToByte(c);
                }

                message = "$" + message + "*" + checksum.ToString("X2") + "\r\n";

                if (Properties.Settings.Default.HeadingSentence.OutPort1)
                {
                    if (SerialPort1.IsOpen)
                    {
                        SerialPort1.WriteLine(message);
                    }
                }
                if (Properties.Settings.Default.HeadingSentence.OutPort2)
                {
                    if (SerialPort2.IsOpen)
                    {
                        SerialPort2.WriteLine(message);
                    }
                }
                if (Properties.Settings.Default.HeadingSentence.OutPort3)
                {
                    if (SerialPort3.IsOpen)
                    {
                        SerialPort3.WriteLine(message);
                    }
                }
                if (Properties.Settings.Default.HeadingSentence.OutPort4)
                {
                    if (SerialPort4.IsOpen)
                    {
                        SerialPort4.WriteLine(message);
                    }
                }
            }

            // Build MWV Sentence ****************************************************************************************

            if (AWA.IsValid())
            {
                message = "IIMWV," + ((AWA.Val + 360) % 360).ToString("0") + ",R," + AWS.Val.ToString("0.#") + ",N,A";

                int checksum = 0;

                foreach (char c in message)
                {
                    checksum ^= Convert.ToByte(c);
                }

                message = "$" + message + "*" + checksum.ToString("X2") + "\r\n";

                if (Properties.Settings.Default.AppWindSentence.OutPort1)
                {
                    if (SerialPort1.IsOpen)
                    {
                        SerialPort1.WriteLine(message);
                    }
                }
                if (Properties.Settings.Default.AppWindSentence.OutPort2)
                {
                    if (SerialPort2.IsOpen)
                    {
                        SerialPort2.WriteLine(message);
                    }
                }
                if (Properties.Settings.Default.AppWindSentence.OutPort3)
                {
                    if (SerialPort3.IsOpen)
                    {
                        SerialPort3.WriteLine(message);
                    }
                }
                if (Properties.Settings.Default.AppWindSentence.OutPort4)
                {
                    if (SerialPort4.IsOpen)
                    {
                        SerialPort4.WriteLine(message);
                    }
                }
            }

            // Build VHW Sentence ****************************************************************************************

            if (SPD.IsValid())
            {
                string hdg;
                if (HDT.IsValid())
                {
                    hdg = HDT.Val.ToString("0") + ",T,,M,";
                }
                else
                {
                    hdg = ",T,,M,";
                }

                message = "IIVHW," + hdg + SPD.Val.ToString("0.##") + ",N,,K";

                int checksum = 0;

                foreach (char c in message)
                {
                    checksum ^= Convert.ToByte(c);
                }

                message = "$" + message + "*" + checksum.ToString("X2") + "\r\n";

                if (Properties.Settings.Default.HullSpeedSentence.OutPort1)
                {
                    if (SerialPort1.IsOpen)
                    {
                        SerialPort1.WriteLine(message);
                    }
                }
                if (Properties.Settings.Default.HullSpeedSentence.OutPort2)
                {
                    if (SerialPort2.IsOpen)
                    {
                        SerialPort2.WriteLine(message);
                    }
                }
                if (Properties.Settings.Default.HullSpeedSentence.OutPort3)
                {
                    if (SerialPort3.IsOpen)
                    {
                        SerialPort3.WriteLine(message);
                    }
                }
                if (Properties.Settings.Default.HullSpeedSentence.OutPort4)
                {
                    if (SerialPort4.IsOpen)
                    {
                        SerialPort4.WriteLine(message);
                    }
                }
            }

            // Build DPT Sentence ****************************************************************************************

            if (DPT.IsValid())
            {
                message = "IIDPT," + DPT.Val.ToString("0.#") + ",0";

                int checksum = 0;

                foreach (char c in message)
                {
                    checksum ^= Convert.ToByte(c);
                }

                message = "$" + message + "*" + checksum.ToString("X2") + "\r\n";

                if (Properties.Settings.Default.DepthSentence.OutPort1)
                {
                    if (SerialPort1.IsOpen)
                    {
                        SerialPort1.WriteLine(message);
                    }
                }
                if (Properties.Settings.Default.DepthSentence.OutPort2)
                {
                    if (SerialPort2.IsOpen)
                    {
                        SerialPort2.WriteLine(message);
                    }
                }
                if (Properties.Settings.Default.DepthSentence.OutPort3)
                {
                    if (SerialPort3.IsOpen)
                    {
                        SerialPort3.WriteLine(message);
                    }
                }
                if (Properties.Settings.Default.DepthSentence.OutPort4)
                {
                    if (SerialPort4.IsOpen)
                    {
                        SerialPort4.WriteLine(message);
                    }
                }
            }

            // Build RMC Sentence ****************************************************************************************

            if (COG.IsValid())   // Implies SOG, LAT and LON are also valid
            {
                DateTime UTC = DateTime.UtcNow;

                string hms  = UTC.Hour.ToString("00") + UTC.Minute.ToString("00") + UTC.Second.ToString("00");
                string date = UTC.Date.Day.ToString("00") + UTC.Date.Month.ToString("00") + UTC.Date.Year.ToString().Substring(2, 2);

                double deg, min;
                string cd;

                deg = Math.Abs(Math.Truncate(LAT.Val));
                min = (Math.Abs(LAT.Val) - deg) * 60;

                if (LAT.Val > 0)
                {
                    cd = "N";
                }
                else
                {
                    cd = "S";
                }

                string lat = deg.ToString("000") + min.ToString("00.###") + "," + cd;

                deg = Math.Abs(Math.Truncate(LON.Val));
                min = (Math.Abs(LON.Val) - deg) * 60;

                if (LON.Val > 0)
                {
                    cd = "E";
                }
                else
                {
                    cd = "W";
                }

                string lon = deg.ToString("000") + min.ToString("00.###") + "," + cd;

                if (MVAR.Val > 0)
                {
                    cd = "E";
                }
                else
                {
                    cd = "W";
                }

                double cog = (COG.Val + 360) % 360;

                message = "IIRMC," + hms + ",A," + lat + "," + lon + "," + SOG.Val.ToString("#.##") + "," + cog.ToString("0.#") + ","
                          + date + "," + Math.Abs(MVAR.Val).ToString("0.#") + "," + cd + ",A";

                int checksum = 0;

                foreach (char c in message)
                {
                    checksum ^= Convert.ToByte(c);
                }

                message = "$" + message + "*" + checksum.ToString("X2") + "\r\n";

                if (Properties.Settings.Default.NavSentence.OutPort1)
                {
                    if (SerialPort1.IsOpen)
                    {
                        SerialPort1.WriteLine(message);
                    }
                }
                if (Properties.Settings.Default.NavSentence.OutPort2)
                {
                    if (SerialPort2.IsOpen)
                    {
                        SerialPort2.WriteLine(message);
                    }
                }
                if (Properties.Settings.Default.NavSentence.OutPort3)
                {
                    if (SerialPort3.IsOpen)
                    {
                        SerialPort3.WriteLine(message);
                    }
                }
                if (Properties.Settings.Default.NavSentence.OutPort4)
                {
                    if (SerialPort4.IsOpen)
                    {
                        SerialPort4.WriteLine(message);
                    }
                }
            }

            // Build RMB Sentence ****************************************************************************************

            if (WPT.IsValid())   // Implies BRG and DST are also valid
            {
                string xte  = ",,";
                string owpt = ",";

                if (XTE.IsValid())
                {
                    if (XTE.Val > 0)
                    {
                        xte = XTE.Val.ToString("0.##") + ",R,";
                    }
                    else
                    {
                        xte = Math.Abs(XTE.Val).ToString("0.##") + ",L,";
                    }
                    owpt = LWPT.FormattedValue + ",";
                }

                double brg = (BRG.Val + 360) % 360;

                message = "IIRMB,A," + xte + owpt + WPT.FormattedValue + ",,,,," + DST.Val.ToString("0.##") + "," + brg.ToString("0.#")
                          + "," + VMGWPT.Val.ToString("0.##") + ",,A";

                int checksum = 0;

                foreach (char c in message)
                {
                    checksum ^= Convert.ToByte(c);
                }

                message = "$" + message + "*" + checksum.ToString("X2") + "\r\n";

                if (Properties.Settings.Default.RouteSentence.OutPort1)
                {
                    if (SerialPort1.IsOpen)
                    {
                        SerialPort1.WriteLine(message);
                    }
                }
                if (Properties.Settings.Default.RouteSentence.OutPort2)
                {
                    if (SerialPort2.IsOpen)
                    {
                        SerialPort2.WriteLine(message);
                    }
                }
                if (Properties.Settings.Default.RouteSentence.OutPort3)
                {
                    if (SerialPort3.IsOpen)
                    {
                        SerialPort3.WriteLine(message);
                    }
                }
                if (Properties.Settings.Default.RouteSentence.OutPort4)
                {
                    if (SerialPort4.IsOpen)
                    {
                        SerialPort4.WriteLine(message);
                    }
                }
            }

            // Build MTW Sentence ****************************************************************************************

            if (TEMP.IsValid())
            {
                message = "IIMTW," + TEMP.Val.ToString("0.#") + ",C";

                int checksum = 0;

                foreach (char c in message)
                {
                    checksum ^= Convert.ToByte(c);
                }

                message = "$" + message + "*" + checksum.ToString("X2") + "\r\n";

                if (Properties.Settings.Default.WaterTempSentence.OutPort1)
                {
                    if (SerialPort1.IsOpen)
                    {
                        SerialPort1.WriteLine(message);
                    }
                }
                if (Properties.Settings.Default.WaterTempSentence.OutPort2)
                {
                    if (SerialPort2.IsOpen)
                    {
                        SerialPort2.WriteLine(message);
                    }
                }
                if (Properties.Settings.Default.WaterTempSentence.OutPort3)
                {
                    if (SerialPort3.IsOpen)
                    {
                        SerialPort3.WriteLine(message);
                    }
                }
                if (Properties.Settings.Default.WaterTempSentence.OutPort4)
                {
                    if (SerialPort4.IsOpen)
                    {
                        SerialPort4.WriteLine(message);
                    }
                }
            }

            // Build PTAK4 Sentence ****************************************************************************************

            if (LINEDST.IsValid())
            {
                string message4;

                message4 = "PTAK,FFD4," + LINEDST.Val.ToString("0");

                int checksum = 0;

                foreach (char c in message4)
                {
                    checksum ^= Convert.ToByte(c);
                }
                message4 = "$" + message4 + "*" + checksum.ToString("X2") + "\r\n";

                if (Properties.Settings.Default.TacktickPerformanceSentence.OutPort1)
                {
                    if (SerialPort1.IsOpen)
                    {
                        SerialPort1.WriteLine(message4);
                    }
                }
                if (Properties.Settings.Default.TacktickPerformanceSentence.OutPort2)
                {
                    if (SerialPort2.IsOpen)
                    {
                        SerialPort2.WriteLine(message4);
                    }
                }
                if (Properties.Settings.Default.TacktickPerformanceSentence.OutPort3)
                {
                    if (SerialPort3.IsOpen)
                    {
                        SerialPort3.WriteLine(message4);
                    }
                }
                if (Properties.Settings.Default.TacktickPerformanceSentence.OutPort4)
                {
                    if (SerialPort4.IsOpen)
                    {
                        SerialPort4.WriteLine(message4);
                    }
                }
            }
        }
コード例 #11
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            Database.SetInitializer(new DropCreateDatabaseIfModelChanges <OTSDBDAL>());

            /* Create by Dwayne 2015-12-4 14:05:12 */
            UserInfoBusinessLayer userInfoBusinessLayer = new UserInfoBusinessLayer();
            UserInfo userInfo = new UserInfo();

            userInfo.NickName = "Admin";
            userInfo.Mail     = "*****@*****.**";
            userInfo.Password = "******";
            userInfo.Grade    = 1;
            userInfoBusinessLayer.SignUp(userInfo);

            ArticleBusinessLayer articleBusinessLayer = new ArticleBusinessLayer();
            Article  article = new Article();
            Regex    rgx     = new Regex("<[^>]+>");
            String   TEMP;
            Markdown m = new Markdown();

            StreamReader SR1 = new StreamReader(Server.MapPath("./testArticle/Markdown_Documentation_Basics.text"));
            StreamReader SR2 = new StreamReader(Server.MapPath("./testArticle/Markdown_Documentation_Syntax.text"));
            StreamReader SR3 = new StreamReader(Server.MapPath("./testArticle/markdown-readme.text"));

            article.Author     = "TestTest";
            article.CreateDate = DateTime.Now;
            article.Title      = "Test" + (1).ToString();

            TEMP            = SR1.ReadToEnd();
            article.Content = m.Transform(TEMP);
            TEMP            = rgx.Replace(article.Content, " ");
            TEMP            = TEMP.Replace("\n", "");
            if (TEMP.Length >= 80)
            {
                article.Description = TEMP.Substring(0, 79) + "...";
            }
            else
            {
                article.Description = TEMP.Substring(0) + "...";
            }

            articleBusinessLayer.UploadArticle(article);

            article.Author     = "TestTest";
            article.CreateDate = DateTime.Now;
            article.Title      = "Test" + (2).ToString();

            TEMP            = SR2.ReadToEnd();
            article.Content = m.Transform(TEMP);
            TEMP            = rgx.Replace(article.Content, " ");
            TEMP            = TEMP.Replace("\n", "");
            if (TEMP.Length >= 80)
            {
                article.Description = TEMP.Substring(0, 79) + "...";
            }
            else
            {
                article.Description = TEMP.Substring(0) + "...";
            }

            articleBusinessLayer.UploadArticle(article);

            article.Author     = "TestTest";
            article.CreateDate = DateTime.Now;
            article.Title      = "Test" + (3).ToString();

            TEMP            = SR3.ReadToEnd();
            article.Content = m.Transform(TEMP);
            TEMP            = rgx.Replace(article.Content, " ");
            TEMP            = TEMP.Replace("\n", "");
            if (TEMP.Length >= 80)
            {
                article.Description = TEMP.Substring(0, 79) + "...";
            }
            else
            {
                article.Description = TEMP.Substring(0) + "...";
            }

            articleBusinessLayer.UploadArticle(article);

            SR1.Close();
            SR2.Close();
            SR3.Close();
        }
コード例 #12
0
ファイル: Tree.Print.cs プロジェクト: Nxun/Naive-Tiger
 void PrintExp(TEMP e, int d)
 {
     Indent(d); Say("TEMP ");
     Say(TempMap.TempMap(e.Temp));
 }
コード例 #13
0
ファイル: Nav.cs プロジェクト: fsaux/LionRiver_old_zz
        public void CalcNav(DateTime now, bool bypassComm = false)
        {
            #region Primitives
            if (rmc_received || bypassComm)
            {
                LAT.Val = lat;
                LON.Val = lon;
                SOG.Val = sog;
                COG.Val = cog;
                LAT.SetValid(now);
                LON.SetValid(now);
                SOG.SetValid(now);
                COG.SetValid(now);
                RMC_received_Timer.Start();
            }

            if (vhw_received || bypassComm)
            {
                SPD.Val = spd;
                SPD.SetValid(now);
            }

            if (dpt_received || bypassComm)
            {
                DPT.Val = dpt;
                DPT.SetValid(now);
            }

            if (mwv_received || bypassComm)
            {
                AWA.Val = awa;
                AWS.Val = aws;
                AWA.SetValid(now);
                AWS.SetValid(now);
            }

            if (mtw_received || bypassComm)
            {
                TEMP.Val = temp;
                TEMP.SetValid(now);
            }

            if (hdg_received || bypassComm)
            {
                double mv = Properties.Settings.Default.MagVar; //default
                if (mvar2 != 0)
                {
                    mv = mvar2;                                 //From HDG
                }
                if (mvar1 != 0)
                {
                    mv = mvar1;                                 //From RMC
                }
                MVAR.Val = mv;
                MVAR.SetValid(now);

                if (bypassComm)
                {
                    mv = 0;         // heading from log file is "true heading" no need for correction
                }
                HDT.Val = hdg + mv;
                HDT.SetValid(now);
            }

            #endregion

            #region Position, Leg bearing, distance, XTE and VMG

            if (LAT.IsValid() && LON.IsValid())
            {
                POS.Val.Latitude  = LAT.Val;
                POS.Val.Longitude = LON.Val;
                POS.SetValid(now);
            }
            else
            {
                POS.Invalidate();
            }

            if (ActiveLeg != null)
            {
                LWLAT.Val = ActiveLeg.FromLocation.Latitude;
                LWLAT.SetValid(now);
                LWLON.Val = ActiveLeg.FromLocation.Longitude;
                LWLON.SetValid(now);
                LWPT.Val.str = ActiveLeg.FromMark.Name;
                LWPT.SetValid(now);
            }
            else
            {
                LWLAT.Invalidate();
                LWLON.Invalidate();
                LWPT.Invalidate();
            }

            if (!bypassComm || replayLog)
            {
                if (ActiveMark != null && POS.IsValid())
                {
                    WLAT.Val = ActiveMark.Location.Latitude;
                    WLAT.SetValid(now);
                    WLON.Val = ActiveMark.Location.Longitude;
                    WLON.SetValid(now);
                    WPT.Val.str = ActiveMark.Name;
                    WPT.SetValid(now);
                    BRG.Val = CalcBearing(LAT.Val, LON.Val, WLAT.Val, WLON.Val);
                    BRG.SetValid(now);
                    DST.Val = CalcDistance(LAT.Val, LON.Val, WLAT.Val, WLON.Val) / 1852;
                    DST.SetValid(now);
                }
                else
                {
                    WLAT.Invalidate();
                    WLON.Invalidate();
                    WPT.Invalidate();
                    BRG.IsValid();
                    DST.IsValid();
                }
            }

            if (WPT.IsValid() && LWPT.IsValid())
            {
                LEGBRG.Val = CalcBearing(LWLAT.Val, LWLON.Val, WLAT.Val, WLON.Val);
                LEGBRG.SetValid(now);
            }
            else
            {
                if (LEGBRG.IsValid())
                {
                    LEGBRG.Invalidate();
                }
            }

            if (LWPT.IsValid())
            {
                XTE.Val = Math.Asin(Math.Sin(DST.Val * 1.852 / 6371) * Math.Sin((BRG.Val - LEGBRG.Val) * Math.PI / 180)) * 6371 / 1.852;
                XTE.SetValid(now);
            }
            else
            if (XTE.IsValid())
            {
                XTE.Invalidate();
            }

            if (SOG.IsValid() && BRG.IsValid())
            {
                VMGWPT.Val = SOG.Val * Math.Cos((COG.Val - BRG.Val) * Math.PI / 180);
                VMGWPT.SetValid(now);
            }
            else
            {
                if (VMGWPT.IsValid())
                {
                    VMGWPT.Invalidate();
                }
            }
            #endregion

            #region True Wind
            if (AWA.IsValid() && SPD.IsValid())
            {
                double Dx = AWS.Val * Math.Cos(AWA.Val * Math.PI / 180) - SPD.Val;
                double Dy = AWS.Val * Math.Sin(AWA.Val * Math.PI / 180);
                TWS.Val = Math.Sqrt(Dx * Dx + Dy * Dy);
                TWS.SetValid(now);
                TWA.Val = Math.Atan2(Dy, Dx) * 180 / Math.PI;
                TWA.SetValid(now);
                VMG.Val = SPD.Val * Math.Cos(TWA.Val * Math.PI / 180);
                VMG.SetValid(now);
            }
            else
            {
                if (TWS.IsValid())
                {
                    TWS.Invalidate();
                }
                if (TWA.IsValid())
                {
                    TWA.Invalidate();
                }
                if (VMG.IsValid())
                {
                    VMG.Invalidate();
                }
            }

            if (TWS.IsValid() && HDT.IsValid())
            {
                TWD.Val = HDT.Val + TWA.Val;
                TWD.SetValid(now);
            }
            else
            {
                if (TWD.IsValid())
                {
                    TWD.Invalidate();
                }
            }
            #endregion

            #region Heel
            //if (AWA.IsValid() && SPD.IsValid())
            //{
            //    double k = 7,
            //            a = 2,
            //            b = 200,
            //            c = 1.5;

            //    var awa = Math.Abs(AWA.Val);
            //    var aws = AWS.Val;

            //    HEEL.Val = k * awa * Math.Pow(aws, c) / (Math.Pow(awa, a) + b);
            //    if (HEEL.Val > 45) HEEL.Val = 45;
            //    HEEL.SetValid(now);
            //}
            //else
            //{
            //    if (HEEL.IsValid())
            //        HEEL.Invalidate();
            //}

            #endregion

            #region Drift
            if (SOG.IsValid() && COG.IsValid() && HDT.IsValid())
            {
                double Dx = SOG.Val * Math.Cos(COG.Val * Math.PI / 180) - SPD.Val * Math.Cos(HDT.Val * Math.PI / 180);
                double Dy = SOG.Val * Math.Sin(COG.Val * Math.PI / 180) - SPD.Val * Math.Sin(HDT.Val * Math.PI / 180);
                DRIFT.Val = Math.Sqrt(Dx * Dx + Dy * Dy);
                DRIFT.SetValid(now);
                SET.Val = Math.Atan2(Dy, Dx) * 180 / Math.PI;
                SET.SetValid(now);
            }
            else
            {
                if (DRIFT.IsValid())
                {
                    DRIFT.Invalidate();
                }
                if (SET.IsValid())
                {
                    SET.Invalidate();
                }
            }
            #endregion

            #region Performance
            if (BRG.IsValid() && TWD.IsValid() && SPD.IsValid() && NavPolar.IsLoaded)
            {
                double Angle = Math.Abs((TWD.Val - BRG.Val) % 360);
                if (Angle > 180)
                {
                    Angle = 360 - Angle;
                }

                PolarPoint pb = NavPolar.GetBeatTarget(TWS.Average(Inst.BufHalfMin));
                PolarPoint pr = NavPolar.GetRunTarget(TWS.Average(Inst.BufHalfMin));

                if (Math.Abs(Angle) <= pb.TWA) // Beating
                {
                    TGTSPD.Val = pb.SPD;
                    TGTSPD.SetValid(now);
                    TGTTWA.Val = pb.TWA;
                    TGTTWA.SetValid(now);
                    PERF.Val = VMG.Val / (pb.SPD * Math.Cos(pb.TWA * Math.PI / 180));
                    PERF.SetValid(now);

                    sailingMode = SailingMode.Beating;
                }

                if (Math.Abs(Angle) < pr.TWA && Math.Abs(Angle) > pb.TWA) // Reaching
                {
                    TGTSPD.Val = NavPolar.GetTarget(Math.Abs(TWA.Average(Inst.BufHalfMin)), TWS.Average(Inst.BufHalfMin));
                    TGTSPD.SetValid(now);
                    TGTTWA.Val = Math.Abs(TWA.Val);
                    TGTTWA.SetValid(now);
                    PERF.Val = SPD.Val / TGTSPD.Val;
                    if (VMGWPT.Val < 0)
                    {
                        PERF.Val = -PERF.Val;
                    }
                    PERF.SetValid(now);

                    sailingMode = SailingMode.Reaching;
                }

                if (Math.Abs(Angle) >= pr.TWA) // Running
                {
                    TGTSPD.Val = pr.SPD;
                    TGTSPD.SetValid(now);
                    TGTTWA.Val = pr.TWA;
                    TGTTWA.SetValid(now);
                    PERF.Val = VMG.Val / (pr.SPD * Math.Cos(pr.TWA * Math.PI / 180));
                    PERF.SetValid(now);

                    sailingMode = SailingMode.Running;
                }
            }
            else
            {
                if (TGTSPD.IsValid())
                {
                    TGTSPD.Invalidate();
                }
                if (TGTTWA.IsValid())
                {
                    TGTTWA.Invalidate();
                }
                if (PERF.IsValid())
                {
                    PERF.Invalidate();
                }

                sailingMode = SailingMode.None;
            }
            #endregion

            #region Line
            if (p1_set && p2_set && LAT.IsValid() && HDT.IsValid())
            {
                double p3_lat = LAT.Val, p3_lon = LON.Val;

                if (Properties.Settings.Default.GPSoffsetToBow != 0)
                {
                    CalcPosition(LAT.Val, LON.Val, Properties.Settings.Default.GPSoffsetToBow, HDT.Val, ref p3_lat, ref p3_lon);
                }
                double brg32 = CalcBearing(p3_lat, p3_lon, p2_lat, p2_lon);
                double dst32 = CalcDistance(p3_lat, p3_lon, p2_lat, p2_lon);

                LINEDST.Val = dst32 * Math.Sin((linebrg - brg32) * Math.PI / 180);
                LINEDST.SetValid(now);
            }
            else
            {
                if (LINEDST.IsValid())
                {
                    LINEDST.Invalidate();
                }
            }
            #endregion

            #region Route nav
            if (!bypassComm)
            {
                if (ActiveMark != null && DST.IsValid() && !ManOverBoard)
                {
                    if (DST.Val <= Properties.Settings.Default.WptProximity)
                    {
                        (new SoundPlayer(@".\Sounds\BELL7.WAV")).PlaySync();
                        if (ActiveLeg != null)
                        {
                            if (ActiveLeg.NextLeg != null)
                            {
                                ActiveLeg  = ActiveLeg.NextLeg;
                                ActiveMark = ActiveLeg.ToMark;
                            }
                            else
                            {
                                ActiveMark  = null;
                                ActiveLeg   = null;
                                ActiveRoute = null;
                            }
                        }
                        else
                        {
                            ActiveMark = null;
                        }
                    }
                }
            }

            if (ActiveRoute != null)
            {
                if (ActiveLeg.NextLeg != null && TWD.IsValid())
                {
                    NTWA.Val = TWD.Average(Inst.BufTwoMin) - ActiveLeg.NextLeg.Bearing;
                    NTWA.SetValid();
                }
                else
                {
                    NTWA.Invalidate();
                }
            }

            #endregion

            #region Laylines

            //if (DRIFT.IsValid() && PERF.IsValid() && TWD.IsValid())
            //{
            //    double relset = SET.Average(Inst.BufTenMin) - TWD.Average(Inst.BufHalfMin);
            //    double dxs = TGTSPD.Average(Inst.BufHalfMin) * Math.Cos(TGTTWA.Average(Inst.BufHalfMin) * Math.PI / 180) + DRIFT.Average(Inst.BufTenMin) * Math.Cos(relset * Math.PI / 180);
            //    double dys = TGTSPD.Average(Inst.BufHalfMin) * Math.Sin(TGTTWA.Average(Inst.BufHalfMin) * Math.PI / 180) + DRIFT.Average(Inst.BufTenMin) * Math.Sin(relset * Math.PI / 180);

            //    TGTCOGs.Val = Math.Atan2(dys, dxs) * 180 / Math.PI + TWD.Average(Inst.BufHalfMin);
            //    TGTCOGs.SetValid(now);
            //    TGTSOGs.Val = Math.Sqrt(dxs * dxs + dys * dys);
            //    TGTSOGs.SetValid(now);

            //    double dxp = TGTSPD.Average(Inst.BufHalfMin) * Math.Cos(-TGTTWA.Average(Inst.BufHalfMin) * Math.PI / 180) + DRIFT.Average(Inst.BufTenMin) * Math.Cos(relset * Math.PI / 180);
            //    double dyp = TGTSPD.Average(Inst.BufHalfMin) * Math.Sin(-TGTTWA.Average(Inst.BufHalfMin) * Math.PI / 180) + DRIFT.Average(Inst.BufTenMin) * Math.Sin(relset * Math.PI / 180);

            //    TGTCOGp.Val = Math.Atan2(dyp, dxp) * 180 / Math.PI + TWD.Average(Inst.BufHalfMin);
            //    TGTCOGp.SetValid(now);
            //    TGTSOGp.Val = Math.Sqrt(dxp * dxp + dyp * dyp);
            //    TGTSOGp.SetValid(now);
            //}
            //else
            //{
            //    if (TGTCOGs.IsValid())
            //        TGTCOGs.Invalidate();
            //    if (TGTSOGs.IsValid())
            //        TGTSOGs.Invalidate();
            //    if (TGTCOGp.IsValid())
            //        TGTCOGp.Invalidate();
            //    if (TGTSOGp.IsValid())
            //        TGTSOGp.Invalidate();
            //}

            #endregion
        }
コード例 #14
0
 /// <summary>
 /// 确定
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void button1_Click(object sender, EventArgs e)
 {
     if (textBox1.Text != "" || textBox2.Text != "" || textBox3.Text != "" || textBox4.Text != "" || textBox5.Text != "" || textBox6.Text != "" || textBox7.Text != "" || textBox8.Text != "" || textBox9.Text != "")
     {
         try
         {
             TimeSpan t   = new TimeSpan();
             Random   rd  = new Random();
             DateTime dt1 = Convert.ToDateTime(dtStart.Value.ToString("yyyy/MM/dd HH:mm"));
             DateTime dt2 = Convert.ToDateTime(dtEnd.Value.ToString("yyyy/MM/dd HH:mm"));
             int      JGs = Convert.ToInt32(jiange);
             t = dt2 - dt1;
             string NIBPS; //收缩压
             string NIBPD; //舒张压
             string RRC;   //呼吸
             //int HR;//心率
             string Pulse; //脉搏
             string SpO2;  //血氧
             string ETCO2; //呼吸二氧化碳
             string TEMP;  //温度
             string BIS;   //bis
             string cvp;
             int    X = (t.Days * 24 * 60 + t.Hours * 60 + t.Minutes) / JGs;
             for (int i = 0; i <= X; i++)
             {
                 NIBPS = textBox1.Text;
                 NIBPD = textBox2.Text;
                 RRC   = textBox3.Text;
                 //HR = new Random().Next(31, 35);
                 Pulse = textBox4.Text;
                 SpO2  = textBox5.Text;
                 ETCO2 = textBox6.Text;
                 TEMP  = textBox7.Text;
                 BIS   = textBox8.Text;
                 cvp   = textBox9.Text;
                 if (bll.GetPointSingle(Mzjldid, dt1).Rows.Count == 0)
                 {
                     int result = bll.AddPoint(Mzjldid, dt1, NIBPS.ToString(), NIBPD.ToString(), RRC.ToString(), Pulse.ToString(), SpO2.ToString(), ETCO2.ToString(), BIS.ToString(), TEMP.ToString(), cvp);
                 }
                 //else
                 //    MessageBox.Show("该时间点数据已存在,不能重复添加");
                 dt1 = dt1.AddMinutes(JGs);
             }
             MessageBox.Show("设置完成");
             this.Close();
         }
         catch (Exception ex)
         {
             MessageBox.Show("设置失败!请重试!");
         }
     }
     else
     {
         MessageBox.Show("如果没有数据请填写0");
     }
 }
コード例 #15
0
ファイル: menzhencj.cs プロジェクト: JourneyChen88/SSMZ
        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                TimeSpan t   = new TimeSpan();
                Random   rd  = new Random();
                DateTime dt1 = Convert.ToDateTime(dtStart.Value.ToString("yyyy/MM/dd HH:mm"));
                DateTime dt2 = Convert.ToDateTime(dtEnd.Value.ToString("yyyy/MM/dd HH:mm"));
                int      JGs = Convert.ToInt32(jiange);
                t = dt2 - dt1;
                int NIBPS;    //收缩压
                int NIBPD;    //舒张压
                int RRC;      //呼吸
                //int HR;//心率
                int    Pulse; //脉搏
                int    SpO2;  //血氧
                int    ETCO2; //呼吸二氧化碳
                string TEMP;  //温度
                //string BIS;//bis
                //string cvp;
                int X = (t.Days * 24 * 60 + t.Hours * 60 + t.Minutes) / JGs;
                for (int i = 0; i <= X; i++)
                {
                    NIBPS = new Random().Next(110, 120);
                    NIBPD = new Random().Next(65, 70);
                    RRC   = new Random().Next(16, 20);
                    //HR = new Random().Next(31, 35);
                    Pulse = new Random().Next(70, 80);
                    SpO2  = 100;
                    ETCO2 = new Random().Next(31, 35);
                    TEMP  = "0";

                    if (bll.GetPointSinglePACU(Mzjldid, dt1).Rows.Count == 0)
                    {
                        int result = bll.AddPointmenzhen(Mzjldid, dt1, NIBPS.ToString(), NIBPD.ToString(), RRC.ToString(), Pulse.ToString(), SpO2.ToString(), ETCO2.ToString(), TEMP.ToString());
                    }
                    //else
                    //    MessageBox.Show("该时间点数据已存在,不能重复添加");
                    dt1 = dt1.AddMinutes(JGs);
                }
                MessageBox.Show("设置完成");
                this.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("设置失败!请重试!");
            }
        }
コード例 #16
0
 public Exp TranslateSimpleVar(Access var, Level home)
 {
     Expr res = new TEMP(home.Frame.FP());
     Level l = home;
     while (l != var.Home)
     {
         res = l.StaticLink().Acc.Exp(res);
         l = l.Parent;
     }
     return new Ex(var.Acc.Exp(res));
 }
コード例 #17
0
 Temp.Temp TranslateExpr(TEMP expr)
 {
     return(expr.Temp);
 }
コード例 #18
0
ファイル: Tree.Print.cs プロジェクト: signingoff/Naive-Tiger
 void PrintExp(TEMP e, int d)
 {
     Indent(d); Say("TEMP ");
     Say(TempMap.TempMap(e.Temp));
 }
コード例 #19
0
 Temp.Temp TranslateExpr(TEMP expr)
 {
     return expr.Temp;
 }
コード例 #20
0
    private int currentWaypoint   = 0;                          // Current waypoint


    void Start()
    {
        startingPosition  = gameObject.transform.position;
        startingDirection = forward;

        if (moveSpeed <= 0)             // using the MoveTwords function does not allow for negative numbers
        {
            print("MovingPlatform.cs ERROR - (moveSpeed = " + moveSpeed + ") is set below 0. This script does not take negative numbers. moveSpeed is now set to 1f");
            moveSpeed = 1;
        }

        if (GetComponent <Rigidbody2D>() != null)
        {
            GetComponent <Rigidbody2D>().isKinematic = true;
        }

        if (showLineRendering)          // If line rendering was selected - set it up
        {
            gameObject.GetComponent <SpriteRenderer> ().sortingOrder = 1;

            LineRenderer TEMP;
            for (int I = 0; I < wayPoints.Length - 1; I++)
            {
                TEMP = wayPoints[I].gameObject.AddComponent <LineRenderer>();

                TEMP.SetColors(firstColor, secondColor);
                TEMP.SetWidth(0.1F, 0.1F);
                TEMP.useWorldSpace = true;
                TEMP.material      = new Material(Shader.Find("Particles/Additive"));

                TEMP.SetPosition(0, wayPoints[I].transform.position);
                TEMP.SetPosition(1, wayPoints[I + 1].transform.position);
            }

            if (fullLoop)
            {
                TEMP = wayPoints[(wayPoints.Length - 1)].gameObject.AddComponent <LineRenderer>();

                TEMP.SetColors(firstColor, secondColor);
                TEMP.SetWidth(0.1F, 0.1F);
                TEMP.useWorldSpace = true;
                TEMP.SetPosition(0, wayPoints[(wayPoints.Length - 1)].transform.position);
                TEMP.material = new Material(Shader.Find("Particles/Additive"));
                TEMP.SetPosition(1, wayPoints[0].transform.position);
            }
        }

        if (startingIndex < 0)
        {
            startingIndex = 0;
        }
        if (startingIndex > wayPoints.Length - 1)
        {
            startingIndex = wayPoints.Length - 1;
        }

        currentWaypoint = startingIndex;

        if (restartOnReset)
        {
            EventManager.resetObjects += Reset;
        }
        if (enableOnStart)
        {
            Start_Machine();
        }
    }
コード例 #21
0
ファイル: Nav.cs プロジェクト: fsaux/LionRiver
        public void CalcNav(DateTime now, bool bypassComm = false)
        {
            sailingMode = SailingMode.None;

            #region Primitives
            if (rmc_received || bypassComm)
            {
                LAT.Val = lat;
                LON.Val = lon;
                SOG.Val = sog;
                COG.Val = cog;
                LAT.SetValid(now);
                LON.SetValid(now);
                SOG.SetValid(now);
                COG.SetValid(now);
                RMC_received_Timer.Start();
            }

            if (vhw_received || bypassComm)
            {
                SPD.Val = spd;
                SPD.SetValid(now);
            }

            if (dpt_received || bypassComm)
            {
                DPT.Val = dpt;
                DPT.SetValid(now);
            }

            if (mwv_received || bypassComm)
            {
                AWA.Val = awa;
                AWS.Val = aws;
                AWA.SetValid(now);
                AWS.SetValid(now);
            }

            if (mtw_received || bypassComm)
            {
                TEMP.Val = temp;
                TEMP.SetValid(now);
            }

            if (hdg_received || bypassComm)
            {
                double mv = Properties.Settings.Default.MagVar; //default
                if (mvar2 != 0)
                {
                    mv = mvar2;                                 //From HDG
                }
                if (mvar1 != 0)
                {
                    mv = mvar1;                                 //From RMC
                }
                MVAR.Val = mv;
                MVAR.SetValid(now);

                if (bypassComm)
                {
                    mv = 0;         // heading from log file is "true heading" no need for correction
                }
                HDT.Val = hdg + mv;
                HDT.SetValid(now);
            }

            #endregion

            #region Position, Leg bearing, distance, XTE and VMG

            if (LAT.IsValid() && LON.IsValid())
            {
                POS.Val.Latitude  = LAT.Val;
                POS.Val.Longitude = LON.Val;
                POS.SetValid(now);
            }
            else
            {
                POS.Invalidate();
            }

            if (ActiveLeg != null)
            {
                LWLAT.Val = ActiveLeg.FromLocation.Latitude;
                LWLAT.SetValid(now);
                LWLON.Val = ActiveLeg.FromLocation.Longitude;
                LWLON.SetValid(now);
                LWPT.Val.str = ActiveLeg.FromMark.Name;
                LWPT.SetValid(now);
            }
            else
            {
                LWLAT.Invalidate();
                LWLON.Invalidate();
                LWPT.Invalidate();
            }

            if (!bypassComm || replayLog)
            {
                if (ActiveMark != null && POS.IsValid())
                {
                    WLAT.Val = ActiveMark.Location.Latitude;
                    WLAT.SetValid(now);
                    WLON.Val = ActiveMark.Location.Longitude;
                    WLON.SetValid(now);
                    WPT.Val.str = ActiveMark.Name;
                    WPT.SetValid(now);
                    BRG.Val = CalcBearing(LAT.Val, LON.Val, WLAT.Val, WLON.Val);
                    BRG.SetValid(now);
                    DST.Val = CalcDistance(LAT.Val, LON.Val, WLAT.Val, WLON.Val) / 1852;
                    DST.SetValid(now);
                }
                else
                {
                    WLAT.Invalidate();
                    WLON.Invalidate();
                    WPT.Invalidate();
                    BRG.Invalidate();
                    DST.Invalidate();
                }
            }

            if (WPT.IsValid() && LWPT.IsValid())
            {
                LEGBRG.Val = CalcBearing(LWLAT.Val, LWLON.Val, WLAT.Val, WLON.Val);
                LEGBRG.SetValid(now);
            }
            else
            {
                if (LEGBRG.IsValid())
                {
                    LEGBRG.Invalidate();
                }
            }

            if (LWPT.IsValid())
            {
                XTE.Val = Math.Asin(Math.Sin(DST.Val * 1.852 / 6371) * Math.Sin((BRG.Val - LEGBRG.Val) * Math.PI / 180)) * 6371 / 1.852;
                XTE.SetValid(now);
            }
            else
            if (XTE.IsValid())
            {
                XTE.Invalidate();
            }

            if (SOG.IsValid() && BRG.IsValid() && WPT.IsValid())
            {
                VMGWPT.Val = SOG.Val * Math.Cos((COG.Val - BRG.Val) * Math.PI / 180);
                VMGWPT.SetValid(now);
            }
            else
            {
                if (VMGWPT.IsValid())
                {
                    VMGWPT.Invalidate();
                }
            }
            #endregion

            #region True Wind
            if (AWA.IsValid() && SPD.IsValid())
            {
                double Dx = AWS.Val * Math.Cos(AWA.Val * Math.PI / 180) - SPD.Val;
                double Dy = AWS.Val * Math.Sin(AWA.Val * Math.PI / 180);
                TWS.Val = Math.Sqrt(Dx * Dx + Dy * Dy);
                TWS.SetValid(now);
                TWA.Val = Math.Atan2(Dy, Dx) * 180 / Math.PI;
                TWA.SetValid(now);
                VMG.Val = SPD.Val * Math.Cos(TWA.Val * Math.PI / 180);
                VMG.SetValid(now);

                //Set estimated saling mode in case route and/or performance data is not available
                if (Math.Abs(TWA.Val) < 55)
                {
                    sailingMode = SailingMode.Beating;
                }
                else
                if (Math.Abs(TWA.Val) > 130)
                {
                    sailingMode = SailingMode.Running;
                }
                else
                {
                    sailingMode = SailingMode.Reaching;
                }
            }
            else
            {
                if (TWS.IsValid())
                {
                    TWS.Invalidate();
                }
                if (TWA.IsValid())
                {
                    TWA.Invalidate();
                }
                if (VMG.IsValid())
                {
                    VMG.Invalidate();
                }
            }

            if (TWS.IsValid() && HDT.IsValid())
            {
                TWD.Val = HDT.Val + TWA.Val;
                TWD.SetValid(now);
            }
            else
            {
                if (TWD.IsValid())
                {
                    TWD.Invalidate();
                }
            }
            #endregion

            #region Leeway
            if (AWA.IsValid() && SPD.IsValid() && LWay.IsAvailable() && Properties.Settings.Default.EstimateLeeway)
            {
                LWY.Val = LWay.Get(AWA.Val, AWS.Val, SPD.Val);
                LWY.SetValid(now);
            }

            #endregion

            #region Heel
            //if (AWA.IsValid() && SPD.IsValid())
            //{
            //    double k = 7,
            //            a = 2,
            //            b = 200,
            //            c = 1.5;

            //    var awa = Math.Abs(AWA.Val);
            //    var aws = AWS.Val;

            //    HEEL.Val = k * awa * Math.Pow(aws, c) / (Math.Pow(awa, a) + b);
            //    if (HEEL.Val > 45) HEEL.Val = 45;
            //    HEEL.SetValid(now);
            //}
            //else
            //{
            //    if (HEEL.IsValid())
            //        HEEL.Invalidate();
            //}

            #endregion

            #region Drift
            if (SOG.IsValid() && COG.IsValid() && HDT.IsValid() && SPD.IsValid())
            {
                double Dx = SOG.Val * Math.Cos(COG.Val * Math.PI / 180) - SPD.Val * Math.Cos(HDT.Val * Math.PI / 180);
                double Dy = SOG.Val * Math.Sin(COG.Val * Math.PI / 180) - SPD.Val * Math.Sin(HDT.Val * Math.PI / 180);

                if (LWY.IsValid())
                {
                    double lwy;
                    if (AWA.Val < 0)
                    {
                        lwy = -LWY.Val;
                    }
                    else
                    {
                        lwy = LWY.Val;
                    }

                    double lm = SPD.Val * Math.Tan(lwy * Math.PI / 180);
                    double la = HDT.Val - 90;
                    double lx = lm * Math.Cos(la * Math.PI / 180);
                    double ly = lm * Math.Sin(la * Math.PI / 180);

                    double ang = Math.Atan2(ly, lx) * 180 / Math.PI;

                    Dx -= lx;
                    Dy -= ly;
                }

                DRIFT.Val = Math.Sqrt(Dx * Dx + Dy * Dy);
                DRIFT.SetValid(now);
                SET.Val = Math.Atan2(Dy, Dx) * 180 / Math.PI;
                SET.SetValid(now);
            }
            else
            {
                if (DRIFT.IsValid())
                {
                    DRIFT.Invalidate();
                }
                if (SET.IsValid())
                {
                    SET.Invalidate();
                }
            }
            #endregion

            #region Performance
            if (TWA.IsValid() && SPD.IsValid() && NavPolar.IsLoaded && BRG.IsValid())
            {
                double Angle = Math.Abs(TWD.Val - BRG.Val + 360) % 360;
                if (Angle > 180)
                {
                    Angle = 360 - Angle;
                }

                PolarPoint pb = NavPolar.GetBeatTargeInterpolated(TWS.Val);
                PolarPoint pr = NavPolar.GetRunTargetInterpolated(TWS.Val);

                if (Angle <= (pb.TWA + 20)) // Beating
                {
                    TGTSPD.Val = pb.SPD;
                    TGTSPD.SetValid(now);
                    TGTTWA.Val = pb.TWA;
                    TGTTWA.SetValid(now);
                    PERF.Val = VMG.Val / (pb.SPD * Math.Cos(pb.TWA * Math.PI / 180));
                    PERF.SetValid(now);

                    sailingMode = SailingMode.Beating;
                }

                if (Angle < (pr.TWA - 20) && Angle > (pb.TWA + 20)) // Reaching
                {
                    TGTSPD.Val = NavPolar.GetTargeInterpolated(Math.Abs(TWA.Val), TWS.Val);
                    TGTSPD.SetValid(now);
                    TGTTWA.Val = Math.Abs(TWA.Val);
                    TGTTWA.SetValid(now);
                    PERF.Val = Math.Abs(SPD.Val * Math.Cos((COG.Val - BRG.Val) * Math.PI / 180) / TGTSPD.Val);
                    PERF.SetValid(now);

                    sailingMode = SailingMode.Reaching;
                }

                if (Angle >= (pr.TWA - 20)) // Running
                {
                    TGTSPD.Val = pr.SPD;
                    TGTSPD.SetValid(now);
                    TGTTWA.Val = pr.TWA;
                    TGTTWA.SetValid(now);
                    PERF.Val = VMG.Val / (pr.SPD * Math.Cos(pr.TWA * Math.PI / 180));
                    PERF.SetValid(now);

                    sailingMode = SailingMode.Running;
                }
            }
            else
            {
                if (TGTSPD.IsValid())
                {
                    TGTSPD.Invalidate();
                }
                if (TGTTWA.IsValid())
                {
                    TGTTWA.Invalidate();
                }
                if (PERF.IsValid())
                {
                    PERF.Invalidate();
                }
            }
            #endregion

            #region Line
            if (p1_set && p2_set && LAT.IsValid() && HDT.IsValid())
            {
                double p3_lat = LAT.Val, p3_lon = LON.Val;

                if (Properties.Settings.Default.GPSoffsetToBow != 0)
                {
                    CalcPosition(LAT.Val, LON.Val, Properties.Settings.Default.GPSoffsetToBow, HDT.Val, ref p3_lat, ref p3_lon);
                }
                double brg32 = CalcBearing(p3_lat, p3_lon, p2_lat, p2_lon);
                double dst32 = CalcDistance(p3_lat, p3_lon, p2_lat, p2_lon);

                LINEDST.Val = dst32 * Math.Sin((linebrg - brg32) * Math.PI / 180);
                LINEDST.SetValid(now);
            }
            else
            {
                if (LINEDST.IsValid())
                {
                    LINEDST.Invalidate();
                }
            }
            #endregion

            #region Route nav

            if (ActiveMark != null && DST.IsValid() && !ManOverBoard)
            {
                if (DST.Val <= Properties.Settings.Default.WptProximity && ActiveMark != MOB)
                {
                    (new SoundPlayer(@".\Sounds\BELL7.WAV")).PlaySync();
                    if (ActiveLeg != null)
                    {
                        if (ActiveLeg.NextLeg != null)
                        {
                            ActiveLeg  = ActiveLeg.NextLeg;
                            ActiveMark = ActiveLeg.ToMark;
                        }
                        else
                        {
                            ActiveMark  = null;
                            ActiveLeg   = null;
                            ActiveRoute = null;
                        }
                    }
                    else
                    {
                        ActiveMark = null;
                    }
                }
            }


            if (ActiveRoute != null)
            {
                if (ActiveLeg.NextLeg != null && TWD.IsValid())
                {
                    NTWA.Val = TWD.Val - ActiveLeg.NextLeg.Bearing;
                    NTWA.SetValid(now);
                }
                else
                {
                    NTWA.Invalidate();
                }
            }

            #endregion

            #region Laylines

            insideCourse = false; // Need to determine later

            if (DRIFT.IsValid() && PERF.IsValid() && TWD.IsValid())
            {
                double ttwa   = TGTTWA.Val;
                double tgtlwy = 0;

                if (LWY.IsValid())
                {
                    double awx    = TWS.Val * Math.Cos(ttwa * Math.PI / 180) + TGTSPD.Val;
                    double awy    = TWS.Val * Math.Sin(ttwa * Math.PI / 180);
                    double tgtawa = Math.Atan2(awy, awx) * 180 / Math.PI;
                    double tgtaws = Math.Sqrt(awx * awx + awy * awy);
                    tgtlwy = LWay.Get(tgtawa, tgtaws, TGTSPD.Val);
                }

                ttwa += tgtlwy;
                if (ttwa > 180)
                {
                    ttwa = 180;
                }

                double relset = SET.Val - TWD.Val;
                double dxs    = TGTSPD.Val * Math.Cos(ttwa * Math.PI / 180) + DRIFT.Val * Math.Cos(relset * Math.PI / 180);
                double dys    = TGTSPD.Val * Math.Sin(ttwa * Math.PI / 180) + DRIFT.Val * Math.Sin(relset * Math.PI / 180);

                TGTCOGp.Val = Math.Atan2(dys, dxs) * 180 / Math.PI + TWD.Val;
                TGTCOGp.SetValid(now);
                TGTSOGp.Val = Math.Sqrt(dxs * dxs + dys * dys);
                TGTSOGp.SetValid(now);

                double dxp = TGTSPD.Val * Math.Cos(-ttwa * Math.PI / 180) + DRIFT.Val * Math.Cos(relset * Math.PI / 180);
                double dyp = TGTSPD.Val * Math.Sin(-ttwa * Math.PI / 180) + DRIFT.Val * Math.Sin(relset * Math.PI / 180);

                TGTCOGs.Val = Math.Atan2(dyp, dxp) * 180 / Math.PI + TWD.Val;
                TGTCOGs.SetValid(now);
                TGTSOGs.Val = Math.Sqrt(dxp * dxp + dyp * dyp);
                TGTSOGs.SetValid(now);

                // Determine if sailing inside course +/- 0 degrees
                double a1 = (BRG.Val - TGTCOGs.Val - 0 + 360) % 360;
                double a2 = (TGTCOGp.Val - 0 - TGTCOGs.Val + 360) % 360;

                switch (sailingMode)
                {
                case SailingMode.Beating:

                    if (a1 < a2)
                    {
                        insideCourse = true;
                    }
                    break;

                case SailingMode.Running:

                    if (a2 < a1)
                    {
                        insideCourse = true;
                    }
                    break;
                }

                // Calculate Layline hit points

                if (ActiveMark != null)
                {
                    double alpha = (TGTCOGp.Val - BRG.Val + 360) % 360;
                    double beta  = (BRG.Val - TGTCOGs.Val + 360) % 360;

                    double dist_s, dist_p;

                    if (alpha == 0)
                    {
                        dist_p = DST.Val;
                        dist_s = 0;
                    }
                    else
                    {
                        if (beta == 0)
                        {
                            dist_s = DST.Val;
                            dist_p = 0;
                        }
                        else
                        {
                            dist_p = DST.Val * Math.Sin(beta * Math.PI / 180) /
                                     (Math.Sin(alpha * Math.PI / 180) * Math.Cos(beta * Math.PI / 180) +
                                      Math.Cos(alpha * Math.PI / 180) * Math.Sin(beta * Math.PI / 180));
                            dist_s = DST.Val * Math.Sin(alpha * Math.PI / 180) /
                                     (Math.Sin(alpha * Math.PI / 180) * Math.Cos(beta * Math.PI / 180) +
                                      Math.Cos(alpha * Math.PI / 180) * Math.Sin(beta * Math.PI / 180));
                        }
                    }
                    DSTLYLp.Val = dist_p * 1852;
                    DSTLYLp.SetValid(now);
                    DSTLYLs.Val = dist_s * 1852;
                    DSTLYLs.SetValid(now);

                    double xx = DSTLYLp.Val / TGTSOGp.Val * 3600 / 1852;
                    if (xx > TimeSpan.MaxValue.TotalHours)
                    {
                        xx = TimeSpan.MaxValue.TotalHours - 1;
                    }
                    if (xx < TimeSpan.MinValue.TotalHours)
                    {
                        xx = TimeSpan.MinValue.TotalHours + 1;
                    }
                    TTGLYLp.Val = TimeSpan.FromSeconds(xx);
                    TTGLYLp.SetValid(now);

                    xx = DSTLYLs.Val / TGTSOGs.Val * 3600 / 1852;
                    if (xx > TimeSpan.MaxValue.TotalHours)
                    {
                        xx = TimeSpan.MaxValue.TotalHours - 1;
                    }
                    if (xx < TimeSpan.MinValue.TotalHours)
                    {
                        xx = TimeSpan.MinValue.TotalHours + 1;
                    }
                    TTGLYLs.Val = TimeSpan.FromSeconds(xx);
                    TTGLYLs.SetValid(now);
                }
            }
            else
            {
                if (TGTCOGp.IsValid())
                {
                    TGTCOGp.Invalidate();
                }
                if (TGTSOGp.IsValid())
                {
                    TGTSOGp.Invalidate();
                }
                if (TGTCOGs.IsValid())
                {
                    TGTCOGs.Invalidate();
                }
                if (TGTSOGs.IsValid())
                {
                    TGTSOGs.Invalidate();
                }
                if (DSTLYLp.IsValid())
                {
                    DSTLYLp.Invalidate();
                }
                if (DSTLYLs.IsValid())
                {
                    DSTLYLs.Invalidate();
                }
            }

            #endregion

            if (replayLog == true)
            {
                if (deltaLog == TimeSpan.Zero)
                {
                    //deltaLog = now - new DateTime(2020, 03, 15);
                    deltaLog = now - DateTime.Now;
                }


                now = now - deltaLog;
            }

            PushToLogDB(now);
        }