예제 #1
0
        public void SaveFile()
        {
            ParameterManager.Instance.DeviceName       = "BQ20Z45-R";
            ParameterManager.Instance.SMBusAddressSize = 1;
            ParameterManager.Instance.SMBusSpeed       = 10000;
            ParameterManager.Instance.SMBusAdapter     = "SIL CP2112";

            ParameterItem pi1 = new ParameterItem
            {
                Commmand     = 0,
                Name         = "ManufacturerAccess",
                Mode         = "R/W",
                Format       = "X4",
                Size         = 2,
                DefaultValue = "-",
                Unit         = "-",
            };

            ParameterItem pi2 = new ParameterItem
            {
                Commmand     = 0,
                Name         = "RemainingCapacityAlarm",
                Mode         = "R/W",
                Format       = "D5",
                Size         = 2,
                DefaultValue = "300",
                Unit         = "mAh",
            }
            ;

            ParameterManager.Instance.Parameters.Add(pi1);
            ParameterManager.Instance.Parameters.Add(pi2);

            ParameterManager.SaveFile(ParamFilePath);
        }
예제 #2
0
        void MakeReport()
        {
            string report = @"D:\Battery report.txt";

            ParameterManager.LoadFromFile(@"D:\BQ20Z45_V2.xml");
            System.IO.File.Delete(report);
            IoLog.Instance.FilePath = report;

            foreach (ParameterItem item in ParameterManager.Instance.Parameters)
            {
                string line = item.Name + ": ";

                try
                {
                    switch (item.Format)
                    {
                    case "D3":     /*000 256*/
                    {
                        line += SbsRead(item.Commmand, item.Size)[0].ToString(item.Format);
                        break;
                    }

                    case "D5":     /*00000 .. 65535*/
                    {
                        line += BitConverter.ToUInt16(SbsRead(item.Commmand, item.Size), 0).ToString(item.Format);
                        break;
                    }

                    case "X4":     /*0000 .. FFFF*/
                    {
                        line += "0x" + BitConverter.ToUInt16(SbsRead(item.Commmand, item.Size), 0).ToString(item.Format);
                        break;
                    }

                    case "X8":     /*00000000 .. FFFFFFFF*/
                    {
                        line += "0x" + BitConverter.ToUInt32(SbsRead(item.Commmand, item.Size), 0).ToString(item.Format);
                        break;
                    }

                    case "string":
                    {
                        line += System.Text.Encoding.UTF8.GetString(SbsBlockRead(item.Commmand, item.Size));
                        break;
                    }

                    case "yyyyMMdd":
                    {
                        ushort temp   = BitConverter.ToUInt16(SbsRead(item.Commmand, item.Size), 0);
                        var    years  = ((temp & 0xFE00) >> 9) + 1980;
                        var    months = (temp & 0x01E0) >> 5;
                        var    days   = (temp & 0x001F);
                        line += new DateTime(years, months, days).ToString(item.Format, System.Globalization.CultureInfo.InvariantCulture);
                        break;
                    }

                    default:
                    {
                        throw new Exception("Format " + item.Format + " not support.");
                    }
                    }
                }
                catch (Exception ex)
                {
                    line += "Error:" + ex.Message;
                }

                line += " " + item.Unit;
                IoLog.Instance.WriteLine(line);
            }
        }
예제 #3
0
 public void LoadFile()
 {
     ParameterManager.LoadFromFile(ParamFilePath);
     Assert.AreEqual(2, ParameterManager.Instance.Parameters.Count);
 }