예제 #1
0
        public FusePanel(XmlElement xEle, string fuseBox, FuseCalculator owner)
            : this()
        {
            this.owner = owner;

            string fuseName = xEle.Name.ToLowerInvariant().Trim();

            typeOfFuse = GetTypeOfFuseFromName(fuseName);

            txtInfo.Text  = "Checked = Burnt = 0" + Environment.NewLine;
            txtInfo.Text += GetInfoXMLText(xEle);

            fuseReset = 0xFF;

            fuseReset = FillCheckListAndGetReset(typeOfFuse, xEle);

            FillDictionaries(xEle);

            FillControls();

            fuseVal = MatchAVRDUDEArgs(fuseBox, typeOfFuse, fuseReset);

            SetCheckListWithInt(fuseVal);

            txtManualHex.Text = fuseVal.ToString("X2");

            disablePresetChangeEvent = false;

            ManualEvent(null, null);
        }
예제 #2
0
        private int FillCheckListAndGetReset(FuseType typeOfFuse, XmlElement xEle)
        {
            int fuseReset = 0xFF;

            string fuseOrLock = typeOfFuse == FuseType.LockBits ? "LOCKBIT" : "FUSE";

            for (int i = 0; i < 8; i++)
            {
                string chkText = "Bit " + i.ToString("0");

                foreach (XmlElement j in xEle.GetElementsByTagName(fuseOrLock + i.ToString("0")))
                {
                    chkText += ": ";

                    foreach (XmlElement k in j.GetElementsByTagName("NAME"))
                    {
                        chkText += k.InnerText.Trim() + ": ";
                    }

                    foreach (XmlElement k in j.GetElementsByTagName("TEXT"))
                    {
                        chkText += k.InnerText.Trim();
                    }

                    foreach (XmlElement k in j.GetElementsByTagName("DEFAULT"))
                    {
                        string str = k.InnerText.Trim();
                        int    num = 1;
                        if (int.TryParse(str, out num))
                        {
                            if (num == 0)
                            {
                                fuseReset -= Convert.ToInt32(Math.Pow(2, i));
                                break;
                            }
                        }
                    }
                }

                chkListBits.Items[i] = chkText;
            }

            return(fuseReset);
        }
예제 #3
0
 public void Start(decimal startMax,
                   decimal startMin, FuseType ft)
 {
     if (isExecuting)
     {
         return;
     }
     HasDealsWhenFusing = false;
     isExecuting        = true;
     this.ftype         = ft;
     this.startMax      = startMax; this.startMin = startMin;
     if (t == null)
     {
         t          = new Timer();
         t.Interval = ContractFuse.FuseSpanInMin * 60 * 1000;
         t.Elapsed += t_Elapsed;
         SetStartTimeAction(DateTime.Now);
         t.Start();
     }
 }
예제 #4
0
 private static string GetAVRDUDEFuseStringFromType(FuseType typeOfFuse)
 {
     if (typeOfFuse == FuseType.Extended)
     {
         return("efuse");
     }
     else if (typeOfFuse == FuseType.Low)
     {
         return("lfuse");
     }
     else if (typeOfFuse == FuseType.High)
     {
         return("hfuse");
     }
     else if (typeOfFuse == FuseType.LockBits)
     {
         return("lock");
     }
     else
     {
         return("fuse");
     }
 }
예제 #5
0
        private static int MatchAVRDUDEArgs(string fuseBox, FuseType typeOfFuse, int fuseReset)
        {
            string avrdudeFuseStr = GetAVRDUDEFuseStringFromType(typeOfFuse);

            Regex r     = new Regex("-U\\s*" + avrdudeFuseStr + ":[wrv]:0[xX]([0-9a-fA-F]+):m");
            Match match = r.Match(fuseBox);

            if (match.Success)
            {
                try
                {
                    return(Convert.ToInt32("0x" + match.Groups[1].Value, 16));
                }
                catch
                {
                    return(fuseReset);
                }
            }
            else
            {
                return(fuseReset);
            }
        }
예제 #6
0
        public FusePanel(XmlElement xEle, string fuseBox, FuseCalculator owner)
            : this()
        {
            this.owner = owner;

            string fuseName = xEle.Name.ToLowerInvariant().Trim();

            typeOfFuse = GetTypeOfFuseFromName(fuseName);

            txtInfo.Text = "Checked = Burnt = 0" + Environment.NewLine;
            txtInfo.Text += GetInfoXMLText(xEle);

            fuseReset = 0xFF;

            fuseReset = FillCheckListAndGetReset(typeOfFuse, xEle);

            FillDictionaries(xEle);

            FillControls();

            fuseVal = MatchAVRDUDEArgs(fuseBox, typeOfFuse, fuseReset);

            SetCheckListWithInt(fuseVal);

            txtManualHex.Text = fuseVal.ToString("X2");

            disablePresetChangeEvent = false;

            ManualEvent(null, null);
        }
예제 #7
0
        private int FillCheckListAndGetReset(FuseType typeOfFuse, XmlElement xEle)
        {
            int fuseReset = 0xFF;

            string fuseOrLock = typeOfFuse == FuseType.LockBits ? "LOCKBIT" : "FUSE";

            for (int i = 0; i < 8; i++)
            {
                string chkText = "Bit " + i.ToString("0");

                foreach (XmlElement j in xEle.GetElementsByTagName(fuseOrLock + i.ToString("0")))
                {
                    chkText += ": ";

                    foreach (XmlElement k in j.GetElementsByTagName("NAME"))
                        chkText += k.InnerText.Trim() + ": ";

                    foreach (XmlElement k in j.GetElementsByTagName("TEXT"))
                        chkText += k.InnerText.Trim();

                    foreach (XmlElement k in j.GetElementsByTagName("DEFAULT"))
                    {
                        string str = k.InnerText.Trim();
                        int num = 1;
                        if (int.TryParse(str, out num))
                        {
                            if (num == 0)
                            {
                                fuseReset -= Convert.ToInt32(Math.Pow(2, i));
                                break;
                            }
                        }
                    }
                }

                chkListBits.Items[i] = chkText;
            }

            return fuseReset;
        }
예제 #8
0
 private static string GetAVRDUDEFuseStringFromType(FuseType typeOfFuse)
 {
     if (typeOfFuse == FuseType.Extended)
         return "efuse";
     else if (typeOfFuse == FuseType.Low)
         return "lfuse";
     else if (typeOfFuse == FuseType.High)
         return "hfuse";
     else if (typeOfFuse == FuseType.LockBits)
         return "lock";
     else
         return "fuse";
 }
예제 #9
0
        private static int MatchAVRDUDEArgs(string fuseBox, FuseType typeOfFuse, int fuseReset)
        {
            string avrdudeFuseStr = GetAVRDUDEFuseStringFromType(typeOfFuse);

            Regex r = new Regex("-U\\s*" + avrdudeFuseStr + ":[wrv]:0[xX]([0-9a-fA-F]+):m");
            Match match = r.Match(fuseBox);
            if (match.Success)
            {
                try
                {
                    return Convert.ToInt32("0x" + match.Groups[1].Value, 16);
                }
                catch
                {
                    return fuseReset;
                }
            }
            else
                return fuseReset;
        }