2021-07-10

DataTableToExcel 和 ExcelToDataTable

using System;
using System.IO;
using System.Data;
using System.Reflection;
using System.Diagnostics;
using cfg = System.Configuration;
using System.Runtime.InteropServices;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using NPOI.HSSF.UserModel;


namespace OIC.Common.Util
{
    /// <summary>
    /// Summary description for clsExcel.
    /// </summary>
    public class clsExcel
    {
        protected string templetFile = null;
        protected string outputFile = null;
        protected object missing = Missing.Value;

        //// <summary>
        /// 构造函數,需指定模板文件和導出文件完整路徑
        /// </summary>
        /// <param name="templetFilePath">Excel模板文件路?</param>
        /// <param name="outputFilePath">?出Excel文件路?</param>
        // add by jingping.zhang 20130910
        public clsExcel(string templetFilePath, string outputFilePath)
        {
            if (templetFilePath == null)
                throw new Exception("Excel模板文件路徑不能為空!");

            if (outputFilePath == null)
                throw new Exception("導出Excel文件路徑不能為空!");

            if (!File.Exists(templetFilePath))
                throw new Exception("指定路徑的Excel模板文件不存在!");

            this.templetFile = templetFilePath;
            this.outputFile = outputFilePath;
        }




        //// <summary>
        /// ?DataTable數據導入Excel文件(套用模板并分?)
        /// </summary>
        /// <param name="dt">DataTable</param>
        /// <param name="rows">每個WorkSheet輸入多少行數据</param>
        /// <param name="top">行索引</param>
        /// <param name="left">列索引</param>
        /// <param name="sheetPrefixName">WorkSheet前?名,比如:前?名?“Sheet”,那么WorkSheet名?依次?“Sheet-1,Sheet-2”</param>
        public void DataTableToExcel(System.Data.DataTable dt, int rows, int top, int left, string sheetPrefixName)
        {

            int rowCount = dt.Rows.Count;         //源DataTable行?

            int colCount = dt.Columns.Count;    //源DataTable列?

            int sheetCount = this.GetSheetCount(rowCount, rows);    //WorkSheet??

            DateTime beforeTime;
            DateTime afterTime;

            if (sheetPrefixName == null || sheetPrefixName.Trim() == "")
                sheetPrefixName = "Sheet";

            //創建一個Application對象并使其可用
            beforeTime = DateTime.Now;
            Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.ApplicationClass();
            app.Visible = true;
            afterTime = DateTime.Now;

            //打開模板文件,得到WorkBook對象

            Microsoft.Office.Interop.Excel.Workbook workBook = app.Workbooks.Open(templetFile, missing, missing, missing, missing, missing,
                missing, missing, missing, missing, missing, missing, missing, missing, missing);

            //得到WorkSheet對象

            Microsoft.Office.Interop.Excel.Worksheet workSheet = (Microsoft.Office.Interop.Excel.Worksheet)workBook.Sheets.get_Item(1);

            //复制sheetCount-1個WorkSheet對象

            for (int i = 1; i < sheetCount; i++)
            {
                ((Microsoft.Office.Interop.Excel.Worksheet)workBook.Worksheets.get_Item(i)).Copy(missing, workBook.Worksheets[i]);
            }


            for (int i = 1; i <= sheetCount; i++)
            {
                int startRow = (i - 1) * rows;        //??起始行索引
                int endRow = i * rows;            //???束行索引

                //若是最后一個WorkSheet,那么???束行索引?源DataTable行?

                if (i == sheetCount)
                    endRow = rowCount;

                //?取要?入?据的WorkSheet?象,并重命名

                Microsoft.Office.Interop.Excel.Worksheet sheet = (Microsoft.Office.Interop.Excel.Worksheet)workBook.Worksheets.get_Item(i);
                sheet.Name = sheetPrefixName + "-" + i.ToString();

                //?dt中的?据?入WorkSheet

                for (int j = 0; j < endRow - startRow; j++)
                {
                    for (int k = 0; k < colCount; k++)
                    {
                        sheet.Cells[top + j, left + k] = dt.Rows[startRow + j][k].ToString();
                    }
                }

                //?文本框?据

                //				Excel.TextBox txtAuthor = (Excel.TextBox)sheet.TextBoxes("txtAuthor");
                //				Excel.TextBox txtDate = (Excel.TextBox)sheet.TextBoxes("txtDate");
                //				Excel.TextBox txtVersion = (Excel.TextBox)sheet.TextBoxes("txtVersion");
                //
                //				txtAuthor.Text = "KLY.NET的Blog";
                //				txtDate.Text = DateTime.Now.ToShortDateString();
                //				txtVersion.Text = "1.0.0.0";
            }


            //?出Excel文件并退出
            try
            {
                string sspath = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString();
                sspath = sspath + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString();


                outputFile = outputFile + @"\" + sspath;
                workBook.SaveAs(outputFile, missing, missing, missing, missing, missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, missing, missing, missing, missing, missing);
                workBook.Close(null, null, null);
                app.Workbooks.Close();
                app.Application.Quit();
                app.Quit();

                System.Runtime.InteropServices.Marshal.ReleaseComObject(workSheet);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(workBook);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(app);

                workSheet = null;
                workBook = null;
                app = null;

                GC.Collect();
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                Process[] myProcesses;
                DateTime startTime;
                myProcesses = Process.GetProcessesByName("Excel");

                //得不到Excel?程ID,??只能判??程????
                foreach (Process myProcess in myProcesses)
                {
                    startTime = myProcess.StartTime;

                    if (startTime > beforeTime && startTime < afterTime)
                    {
                        myProcess.Kill();
                    }
                }
            }

        }

        //// <summary>
        /// ?取WorkSheet?量
        /// </summary>
        /// <param name="rowCount">???行?</param>
        /// <param name="rows">每WorkSheet行?</param>
        private int GetSheetCount(int rowCount, int rows)
        {
            int n = rowCount % rows;        //余?

            if (n == 0)
                return rowCount / rows;
            else
                return Convert.ToInt32(rowCount / rows) + 1;
        }

        //// <summary>
        /// ?二????据?入Excel文件(套用模板并分?)
        /// </summary>
        /// <param name="arr">二維數組</param>
        /// <param name="rows">每個WorkSheet插入多少行數据</param>

        /// <param name="top">行索引</param>
        /// <param name="left">列索引</param>
        /// <param name="sheetPrefixName">WorkSheet前?名,比如:前?名?“Sheet”,那么WorkSheet名?依次?“Sheet-1,Sheet-2”</param>
        public void ArrayToExcel(string[,] arr, int rows, int top, int left, string sheetPrefixName)
        {
            int rowCount = arr.GetLength(0);        //二維數組行數(一維長度)
            int colCount = arr.GetLength(1);    //二維數据列的長度(二維長度)

            int sheetCount = this.GetSheetCount(rowCount, rows);    //WorkSheet個數
            DateTime beforeTime;
            DateTime afterTime;

            if (sheetPrefixName == null || sheetPrefixName.Trim() == "")
                sheetPrefixName = "Sheet";

            //創建一個Application對象并使其可用

            beforeTime = DateTime.Now;
            Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.ApplicationClass();
            app.Visible = true;
            afterTime = DateTime.Now;

            /// ?二????据?入Excel文件(套用模板并分?)
            Microsoft.Office.Interop.Excel.Workbook workBook = app.Workbooks.Open(templetFile, missing, missing, missing, missing, missing,
                missing, missing, missing, missing, missing, missing, missing, missing, missing);

            //得到WorkSheet?象

            Microsoft.Office.Interop.Excel.Worksheet workSheet = (Microsoft.Office.Interop.Excel.Worksheet)workBook.Sheets.get_Item(1);

            //复制sheetCount-1個WorkSheet對象

            for (int i = 1; i < sheetCount; i++)
            {
                ((Microsoft.Office.Interop.Excel.Worksheet)workBook.Worksheets.get_Item(i)).Copy(missing, workBook.Worksheets[i]);
            }


            for (int i = 1; i <= sheetCount; i++)
            {
                int startRow = (i - 1) * rows;        //??起始行索引

                int endRow = i * rows;             //???束行索引

                //若是最后一?WorkSheet,那么???束行索引?源DataTable行?

                if (i == sheetCount)
                    endRow = rowCount;

                //?取要?入?据的WorkSheet?象,并重命名

                Microsoft.Office.Interop.Excel.Worksheet sheet = (Microsoft.Office.Interop.Excel.Worksheet)workBook.Worksheets.get_Item(i);
                sheet.Name = sheetPrefixName + "-" + i.ToString();

                //?二???中的?据?入WorkSheet

                for (int j = 0; j < endRow - startRow; j++)
                {
                    for (int k = 0; k < colCount; k++)
                    {
                        sheet.Cells[top + j, left + k] = arr[startRow + j, k];
                    }
                }

                //				Excel.TextBox txtAuthor = (Excel.TextBox)sheet.TextBoxes("txtAuthor");
                //				Excel.TextBox txtDate = (Excel.TextBox)sheet.TextBoxes("txtDate");
                //				Excel.TextBox txtVersion = (Excel.TextBox)sheet.TextBoxes("txtVersion");
                //
                //				txtAuthor.Text = "KLY.NET的Blog";
                //				txtDate.Text = DateTime.Now.ToShortDateString();
                //				txtVersion.Text = "1.0.0.0";
            }


            //導出Excel文件并退出
            try
            {
                string sspath = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString();
                sspath = sspath + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString();


                outputFile = outputFile + @"\" + sspath;
                workBook.SaveAs(outputFile, missing, missing, missing, missing, missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, missing, missing, missing, missing, missing);
                workBook.Close(null, null, null);
                app.Workbooks.Close();
                app.Application.Quit();
                app.Quit();

                System.Runtime.InteropServices.Marshal.ReleaseComObject(workSheet);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(workBook);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(app);

                workSheet = null;
                workBook = null;
                app = null;

                GC.Collect();
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                Process[] myProcesses;
                DateTime startTime;
                myProcesses = Process.GetProcessesByName("Excel");

                //得不到Excel?程ID,??只能判??程????

                foreach (Process myProcess in myProcesses)
                {
                    startTime = myProcess.StartTime;

                    if (startTime > beforeTime && startTime < afterTime)
                    {
                        myProcess.Kill();
                    }
                }
            }

        }
        /// <summary>
        /// 將Excel中的數據導入到DataTable
        /// </summary>
        /// <param name="filePath">文件路徑地址 </param>
        /// <param name="isColumnName">是否存在導入列名</param>
        /// <returns></returns>

        
        public static DataTable ExcelToDataTable(string filePath, bool isColumnName)
        {
            DataTable dataTable = null;
            FileStream fs = null;
            DataColumn column = null;
            DataRow dataRow = null;
            IWorkbook workbook = null;
            ISheet sheet = null;
            IRow row = null;
            ICell cell = null;
            int startRow = 0;
            try
            {
                using (fs = File.OpenRead(filePath))
                {
                    // 2007版本  
                    if (filePath.IndexOf(".xlsx") > 0)
                        workbook = new XSSFWorkbook(fs);
                    // 2003版本  
                    else if (filePath.IndexOf(".xls") > 0)
                        workbook = new HSSFWorkbook(fs);

                    if (workbook != null)
                    {
                        sheet = workbook.GetSheetAt(0);//读取第一个sheet,当然也可以循环读取每个sheet  
                        dataTable = new DataTable();
                        if (sheet != null)
                        {
                            int rowCount = sheet.LastRowNum;//总行数  
                            if (rowCount > 0)
                            {
                                IRow firstRow = sheet.GetRow(0);//第一行  
                                int cellCount = firstRow.LastCellNum;//列数  

                                //构建datatable的列  
                                if (isColumnName)
                                {
                                    startRow = 1;//如果第一行是列名,则从第二行开始读取  
                                    for (int i = firstRow.FirstCellNum; i < cellCount; ++i)
                                    {
                                        cell = firstRow.GetCell(i);
                                        if (cell != null)
                                        {
                                            if (cell.StringCellValue != null)
                                            {
                                                column = new DataColumn(cell.StringCellValue);
                                                dataTable.Columns.Add(column);
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    for (int i = firstRow.FirstCellNum; i < cellCount; ++i)
                                    {
                                        column = new DataColumn("column" + (i + 1));
                                        dataTable.Columns.Add(column);
                                    }
                                }

                                //填充行  
                                for (int i = startRow; i <= rowCount; ++i)
                                {
                                    row = sheet.GetRow(i);
                                    if (row == null) continue;

                                    dataRow = dataTable.NewRow();
                                    for (int j = row.FirstCellNum; j < cellCount; ++j)
                                    {
                                        cell = row.GetCell(j);
                                        if (cell == null)
                                        {
                                            dataRow[j] = "";
                                        }
                                        else
                                        {
                                            //CellType(Unknown = -1,Numeric = 0,String = 1,Formula = 2,Blank = 3,Boolean = 4,Error = 5,)  
                                            switch (cell.CellType)
                                            {
                                                case CellType.Blank:
                                                    dataRow[j] = "";
                                                    break;
                                                case CellType.Numeric:
                                                    short format = cell.CellStyle.DataFormat;
                                                    //对时间格式(2015.12.5、2015/12/5、2015-12-5等)的处理  
                                                    if (format == 14 || format == 31 || format == 57 || format == 58)
                                                        dataRow[j] = cell.DateCellValue;
                                                    else
                                                        dataRow[j] = cell.NumericCellValue;
                                                    break;
                                                case CellType.String:
                                                    dataRow[j] = cell.StringCellValue;
                                                    break;
                                            }
                                        }
                                    }
                                    dataTable.Rows.Add(dataRow);
                                }
                            }
                        }
                    }
                }
                return dataTable;
            }
            catch (Exception)
            {
                if (fs != null)
                {
                    fs.Close();
                }
                return null;
            }
        }

    }
}

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using EIC.Common.DB;
using System.IO;
using System.Net;
using OIC.Common.Util;

namespace EIC.Forms.Mat
{
    public partial class Mat_test : Form
    {
        private static string ftpAdress = "ftp://10.XX.XX.XXX/";
        private static string username = "XXX";
        private static string password = "XXX";
        private static string sPath = @"D:\TEST" + "\\";
        private string[][] sComlum = new string[1][];
        public Material_CNTFTINFO()
        {
            InitializeComponent();
            this.tb_LocalPath.Text = sPath;
            sComlum[0] = new string[7];

            sComlum[0][0] = "名字-1";
            sComlum[0][1] = "名字-1";
            sComlum[0][2] = "名字-1";
            sComlum[0][3] = "名字-1";
            sComlum[0][4] = "名字-1";
            sComlum[0][5] = "名字-1";
            sComlum[0][6] = "名字-1";
        }
        private delegate void AddMessageDelegate(string sType, string sMessage, bool isClear);

        //手動條碼上傳TFT
        private void tb_TFTID_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter) { 

                if(tb_TFTID.Equals("")) return;

                string TFTID = this.tb_TFTID.Text.ToUpper().Trim();

                string sGerChip = " ";
                string[][] clsGetChip = clsSql.GetAll(sGerChip);
                if (clsGetChip != null && clsGetChip.Length > 0) 
                {

                    DataTable dt = Convert(sComlum,clsGetChip);

                    string fullPath = sPath + TFTID +".csv";

                    SaveCSV1(dt, fullPath);

                    Invoke(new AddMessageDelegate(ShowMessage), new object[] { "Info", TFTID + "文件轉換為CSV成功", false });
                    //將文件上傳到FTP
                    //創建FTP文件夾
                    string DataTime = DateTime.Now.ToString("yyyyMMdd");
                    //bool aflag = MakeDir(ftpAdress + "/" + DataTime, username, password);

                    //bool aflag = MakeDir(ftpAdress, username, password);
                    //if (aflag)
                    //{
                        bool sFtp = ftpUp(TFTID + ".csv", fullPath);

                        if (sFtp)
                        {

                            Invoke(new AddMessageDelegate(ShowMessage), new object[] { "Info", TFTID + "文件上傳成功", false });
                            tb_TFTID.Text = "";
                            File.Delete(fullPath);
                        }
                        else
                        {

                            Invoke(new AddMessageDelegate(ShowMessage), new object[] { "Info", TFTID + "文件上傳失敗", false });

                        }
                    //}
                    /*else {

                        Invoke(new AddMessageDelegate(ShowMessage), new object[] { "Error", DataTime + "文件夾創建失敗", false });
                    
                    }*/
                
                }
            
            }
        }

        //將文件保存為CSV文件
        private static void SaveCSV1(DataTable dt, string fullPath)
        {
            var fi = new FileInfo(fullPath);
            if (!fi.Directory.Exists)
            {
                fi.Directory.Create();
            }
            var fs = new FileStream(fullPath, FileMode.Create, FileAccess.Write);
            //StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default);
            var sw = new StreamWriter(fs, Encoding.UTF8);
            var data = "";
            //写出列名称
            for (var i = 0; i < dt.Columns.Count; i++)
            {
                data += dt.Columns[i].ColumnName;
                if (i < dt.Columns.Count - 1)
                {
                    data += ",";
                }
            }
            sw.WriteLine(data);
            //写出各行数据
            for (var i = 0; i < dt.Rows.Count; i++)
            {
                data = "";
                for (var j = 0; j < dt.Columns.Count; j++)
                {
                    var str = dt.Rows[i][j].ToString();
                    str = str.Replace("\"", "\"\""); //替换英文冒号 英文冒号需要换成两个冒号
                    if (str.Contains(',') || str.Contains('"')
                        || str.Contains('\r') || str.Contains('\n')) //含逗号 冒号 换行符的需要放到引号中
                    {
                        str = string.Format("\"{0}\"", str);
                    }

                    data += str;
                    if (j < dt.Columns.Count - 1)
                    {
                        data += ",";
                    }
                }
                sw.WriteLine(data);
            }
            sw.Close();
            fs.Close();

        }

        //將二維數組轉換為DataTable
        public static DataTable Convert(string[][] comArrays, string[][] Arrays)
        {
            DataTable dt = new DataTable();

            int a = Arrays.GetLength(0);
            for (int i = 0; i < comArrays[0].Length; i++)
            {
                dt.Columns.Add(comArrays[0][i].ToString(), typeof(string));
            }

            for (int i1 = 0; i1 < a; i1++)
            {
                DataRow dr = dt.NewRow();
                for (int i = 0; i < Arrays[i1].Length; i++)
                {
                    dr[i] = Arrays[i1][i].ToString();
                }
                dt.Rows.Add(dr);
            }

            return dt;

        }

        private  bool ftpUp(string newfileName, string localFilePath)
        {
            System.Net.WebClient aw = new WebClient();
            string DataTime = DateTime.Now.ToString("yyyyMMdd");
            aw.Credentials = new NetworkCredential(username, password);
            aw.Proxy = null;//電腦使用代理需添加
            int Readcount = 0;
            bool upFlag = false;
            while (Readcount < 5)
            {
                try
                {

                    //aw.UploadFile(ftpAdress + @"/" + DataTime +"//"+ newfileName, localFilePath);
                    aw.UploadFile(ftpAdress + "//" + newfileName, localFilePath);
                    upFlag = true;
                    Readcount = 10;
                }
                catch (Exception ex)
                {
                    Readcount++;

                    Invoke(new AddMessageDelegate(ShowMessage), new object[] { "Error", localFilePath + "文件上傳FTP失敗", false });
                }
            }
            return upFlag;
        }

        /// <summary>
        ///  顯示機台數據信息
        /// </summary>
        /// <param name="sType"></param>
        /// <param name="sMessage"></param>
        /// <param name="isClear"></param>
        private void ShowMessage(string sType, string sMessage, bool isClear)
        {
            lock (dgv_msg1)
            {
                try
                {
                    dgv_msg1.Rows.Insert(0, 1);
                    dgv_msg1.Rows[0].Cells[0].Value = dgv_msg1.Rows.Count;
                    dgv_msg1.Rows[0].Cells[1].Value = sMessage;
                    switch (sType)
                    {
                        case "Info":
                            dgv_msg1.Rows[0].DefaultCellStyle.ForeColor = Color.Blue;
                            break;
                        case "Error":
                            dgv_msg1.Rows[0].DefaultCellStyle.ForeColor = Color.Red;
                            break;
                        default:
                            dgv_msg1.Rows[0].DefaultCellStyle.ForeColor = Color.Blue;
                            break;
                    }
                }
                catch (Exception ex)
                {
                   
                }
            }
        }

        //By excel上傳CSV文件
        private void bt_UpldTFT_Click(object sender, EventArgs e)
        {
             string fileName = null;
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "Microsoft Excel files(*.xls)|*.xls;*.xlsx";//过滤一下,只要表格格式的
            ofd.InitialDirectory = "c:\\";
            ofd.RestoreDirectory = true;
            ofd.FilterIndex = 1;
            ofd.AddExtension = true;
            ofd.CheckFileExists = true;
            ofd.CheckPathExists = true;
            ofd.ShowHelp = true;//是否显示帮助按钮
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                fileName = ofd.FileName.ToString();
                DataTable dtExcel = clsExcel.ExcelToDataTable(fileName, true);
                DirectoryInfo dirs = new DirectoryInfo(sPath);

                foreach (DataRow ds in dtExcel.Rows)
                {
                    string TFTID = ds["TFTID"].ToString();
                    string sGerChip = " ";

                string[][] clsGetChip = clsSql.GetAll(sGerChip);


                if (clsGetChip != null && clsGetChip.Length > 0)
                {
                    DataTable dt = Convert(sComlum, clsGetChip);

                    string fullPath = sPath + TFTID + ".csv";

                    SaveCSV1(dt, fullPath);

                    Invoke(new AddMessageDelegate(ShowMessage), new object[] { "Info", TFTID + "文件轉換為CSV成功", false });
                }
                }

                //創建FTP文件夾
                string DataTime = DateTime.Now.ToString("yyyyMMdd");
                //bool aflag = MakeDir(ftpAdress + "//" + DataTime, username, password);
                //bool aflag = MakeDir(ftpAdress + "//", username, password);
                //if (aflag)
                //{
                    foreach (FileInfo file in dirs.GetFiles())
                    {

                        bool sFTPUP = ftpUp(file.Name, sPath + file.Name);
                        if (sFTPUP)
                        {
                            Invoke(new AddMessageDelegate(ShowMessage), new object[] { "Info", file.Name + "文件上傳FTP成功", false });
                            File.Delete(sPath + file.Name);
                        }
                        else
                        {
                            Invoke(new AddMessageDelegate(ShowMessage), new object[] { "Error", file.Name + "文件上傳FTP失敗", false });

                        }



                    }
                //}
                /*else {

                    Invoke(new AddMessageDelegate(ShowMessage), new object[] { "Error", DataTime + "文件夾創建失敗", false });

                }*/


            
            }

        }

        //ftp創建文件夾
        public bool MakeDir(string FTPCONSTR, string username, string password)
        {
            try
            {
                if (RemoteFtpDirExists(FTPCONSTR, username, password))
                {
                    return true;
                }
                string url = FTPCONSTR;
                FtpWebRequest reqFtp = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));
                reqFtp.Proxy = null;
                reqFtp.UseBinary = true;
                // reqFtp.KeepAlive = false;
                reqFtp.Method = WebRequestMethods.Ftp.MakeDirectory;
                reqFtp.Credentials = new NetworkCredential(username, password);
                FtpWebResponse response = (FtpWebResponse)reqFtp.GetResponse();
                response.Close();

                return true;
            }
            catch (Exception ex)
            {
                //errorinfo = string.Format("因{0},无法下载", ex.Message);
                Invoke(new AddMessageDelegate(ShowMessage), new object[] { "Error", ex.Message, false });
                return false;
            }

        }

        public bool RemoteFtpDirExists( string FTPCONSTR, string username, string password)
        {


            FtpWebRequest reqFtp = (FtpWebRequest)FtpWebRequest.Create(new Uri(FTPCONSTR));
            reqFtp.UseBinary = true;
            reqFtp.Credentials = new NetworkCredential(username, password);
            reqFtp.Method = WebRequestMethods.Ftp.ListDirectory;
            FtpWebResponse resFtp = null;
            reqFtp.Proxy = null;
            try
            {
                resFtp = (FtpWebResponse)reqFtp.GetResponse();
                FtpStatusCode code = resFtp.StatusCode;//OpeningData
                resFtp.Close();
                return true;
            }
            catch
            {
                if (resFtp != null)
                {
                    resFtp.Close();
                }
                return false;
            }
        }



    }
}

Battery report COMPUTER NAME DESKTOP-RITPU28 SYSTEM PRODUCT NAME LENOVO 80VF BIOS 2JCN39WW 05/31/2017 OS BUILD 19041.1.amd64fre.vb_release.191206-1406 PLATFORM ROLE Mobile CONNECTED STANDBY Not supported REPORT TIME 2025-07-28 16:52:08 Installed batteries Information about each currently installed battery BATTERY 1 NAME BASE-BAT MANUFACTURER Simplo SERIAL NUMBER 123456789 CHEMISTRY LiP DESIGN CAPACITY -1 mWh FULL CHARGE CAPACITY -1 mWh CYCLE COUNT - Recent usage Power states over the last 3 days START TIME STATE SOURCE CAPACITY REMAINING 2025-07-25 16:56:38 Active Battery - - 16:56:38 Active AC - - 17:55:56 Active Battery - - 17:55:57 Suspended - - 17:56:32 Active Battery - - 17:56:32 Active AC - - 17:57:09 Active Battery - - 18:08:00 Suspended - - 18:55:29 Active AC - - 18:56:53 Suspended - - 22:21:27 Active Battery - - 2025-07-26 09:23:43 Suspended - - 09:24:18 Active Battery - - 09:53:00 Suspended - - 09:54:07 Active Battery - - 10:03:07 Suspended - - 13:03:46 Active AC - - 17:54:47 Suspended - - 17:55:22 Active AC - - 17:55:59 Active Battery - - 19:11:09 Suspended - - START TIME STATE SOURCE CAPACITY REMAINING 2025-07-27 09:23:59 Active Battery - - 11:21:23 Suspended - - 11:21:58 Active Battery - - 11:22:33 Suspended - - 11:22:11 Active AC - - 11:22:50 Suspended - - 17:04:24 Active Battery - - 17:04:59 Suspended - - 17:08:36 Active Battery - - 17:16:08 Suspended - - 2025-07-28 16:46:31 Active AC - - 16:47:09 Active Battery - - 16:47:13 Active AC - - 16:52:07 Report generated AC - - Batter y usage Battery drains over the last 3 days START TIME STATE DURATION ENERGY DRAINED 2025-07-25 16:56:38 Active 0:00:00 - - 17:55:56 Active 0:00:01 - - 17:56:32 Active 0:00:00 - - 17:57:09 Active 0:10:50 - - 22:21:27 Active 11:02:15 - - 09:24:18 Active 0:28:41 - - 09:54:07 Active 0:08:59 - - 17:55:59 Active 1:15:10 - - 2025-07-27 09:23:59 Active 1:57:23 - - 11:21:58 Active 0:00:35 - - 17:04:24 Active 0:00:35 - - 17:08:36 Active 0:07:32 - - 16:47:09 Active 0:00:04 - - Usage histor y History of system usage on AC and battery BATTERY DURATION AC DURATION PERIOD ACTIVE CONNECTED STANDBY ACTIVE CONNECTED STANDBY 2020-08-05 - 2020-08-11 0:19:14 - 0:28:55 - 2020-08-11 - 2020-08-26 5:07:03 - 2:32:02 - 2020-08-26 - 2020-09-19 - - - - 2020-09-19 - 2020-09-21 1:23:04 - 0:51:20 - 2020-09-21 - 2020-09-28 3:33:15 - 0:56:27 - 2020-09-28 - 2020-10-05 147:17:30 - 6:22:20 - 2020-10-05 - 2020-10-12 1:21:49 - 1:56:56 - 2020-10-12 - 2020-10-19 5:46:39 - 0:45:57 - 2020-10-19 - 2020-10-26 11:48:56 - 4:44:01 - 2020-10-26 - 2020-11-02 3:17:32 - 2:14:39 - 2020-11-02 - 2020-11-08 8:53:52 - 18:00:46 - 2020-11-08 - 2020-11-16 4:47:57 - 15:42:11 - 2020-11-16 - 2020-11-23 5:45:38 - 4:23:41 - 2020-11-23 - 2020-11-29 8:27:06 - 15:51:03 - 2020-11-29 - 2020-12-07 12:13:12 - 15:00:33 - 2020-12-07 - 2020-12-13 7:44:34 - 3:52:52 - 2020-12-13 - 2020-12-20 2:32:10 - 3:35:14 - 2020-12-20 - 2020-12-27 15:26:28 - 0:28:00 - 2020-12-27 - 2021-01-03 39:31:52 - 8:51:53 - 2021-01-03 - 2021-01-11 18:11:24 - 3:41:05 - 2021-01-11 - 2021-01-18 7:11:59 - 3:24:11 - 2021-01-18 - 2021-01-24 9:22:10 - 15:24:16 - 2021-01-24 - 2021-01-31 17:41:59 - 30:02:22 - 2021-01-31 - 2021-02-07 11:42:03 - 34:06:19 - 2021-02-07 - 2021-02-14 7:29:22 - 13:09:58 - 2021-02-14 - 2021-02-21 23:35:26 - 14:05:04 - 2021-02-21 - 2021-02-28 12:22:38 - 35:18:51 - 2021-02-28 - 2021-03-07 25:28:23 - 25:30:53 - 2021-03-07 - 2021-03-15 13:21:44 - 22:12:10 - 2021-03-15 - 2021-03-22 - - 16:16:43 - 2021-03-22 - 2021-03-29 9:06:31 - 11:22:34 - 2021-03-29 - 2021-04-05 7:45:29 - 8:13:37 - 2021-04-05 - 2021-04-12 2:33:00 - 2:28:00 - 2021-04-12 - 2021-04-18 21:27:01 - 41:51:03 - 2021-04-18 - 2021-04-25 45:25:15 - 16:25:56 - 2021-04-25 - 2021-05-02 7:25:57 - 31:38:50 - 2021-05-02 - 2021-05-09 10:02:40 - 15:10:18 - 2021-05-09 - 2021-05-16 11:34:44 - 37:03:44 - 2021-05-16 - 2021-05-23 66:09:36 - 31:12:43 - 2021-05-23 - 2021-05-30 23:37:39 - 77:04:45 - 2021-05-30 - 2021-06-06 29:11:51 - 37:13:49 - 2021-06-06 - 2021-06-13 19:22:00 - 31:02:08 - 2021-06-13 - 2021-06-20 9:25:51 - 29:14:07 - 2021-06-20 - 2021-06-27 10:53:44 - 44:56:59 - 2021-06-27 - 2021-07-04 8:01:30 - 38:03:58 - 2021-07-04 - 2021-07-11 11:28:54 - 26:23:04 - 2021-07-11 - 2021-07-19 9:59:11 - 97:20:38 - 2021-07-19 - 2021-07-26 0:38:17 - - - 2021-07-26 - 2021-08-02 1:08:48 - - - 2021-08-02 - 2021-08-09 1:16:42 - 2:48:49 - 2021-08-09 - 2021-08-23 14:27:29 - 1:34:55 - BATTERY DURATION AC DURATION PERIOD ACTIVE CONNECTED STANDBY ACTIVE CONNECTED STANDBY 2021-08-23 - 2021-08-30 2:23:23 - 0:42:29 - 2021-08-30 - 2021-09-06 5:07:19 - 0:54:07 - 2021-09-06 - 2021-09-12 14:18:23 - 20:52:40 - 2021-09-12 - 2021-09-19 49:18:13 - 15:58:52 - 2021-09-19 - 2021-09-26 58:06:12 - 15:41:08 - 2021-09-26 - 2021-10-03 18:09:25 - 23:53:37 - 2021-10-03 - 2021-10-10 12:43:15 - 33:23:35 - 2021-10-10 - 2021-10-17 19:59:19 - 103:17:14 - 2021-10-17 - 2021-10-24 28:06:32 - 36:25:49 - 2021-10-24 - 2021-10-31 10:36:55 - 46:12:31 - 2021-10-31 - 2021-11-07 11:34:53 - 31:31:49 - 2021-11-07 - 2021-11-19 13:14:41 - 14:45:40 - 2021-11-19 - 2021-11-21 1:49:06 - 11:37:26 - 2021-11-21 - 2021-11-28 10:08:29 - 14:48:53 - 2021-11-28 - 2021-12-07 12:38:18 - 31:53:32 - 2021-12-07 - 2021-12-14 0:54:47 - 0:59:07 - 2021-12-14 - 2021-12-20 0:57:28 - - - 2021-12-20 - 2021-12-28 0:20:01 - 1:28:45 - 2021-12-28 - 2022-01-03 - - - - 2022-01-03 - 2022-01-11 2:42:53 - 0:56:11 - 2022-01-11 - 2022-01-18 0:01:26 - 0:18:18 - 2022-01-18 - 2022-01-24 25:10:23 - - - 2022-01-24 - 2022-01-31 0:58:16 - - - 2022-01-31 - 2022-02-06 1:36:05 - 2:29:55 - 2022-02-06 - 2022-02-13 22:18:37 - 80:23:34 - 2022-02-13 - 2022-02-20 6:11:58 - 47:34:09 - 2022-02-20 - 2022-02-27 4:45:03 - 45:35:14 - 2022-02-27 - 2022-03-06 13:33:12 - 40:15:38 - 2022-03-06 - 2022-03-13 24:40:01 - 56:49:53 - 2022-03-13 - 2022-03-20 5:20:20 - 68:07:33 - 2022-03-20 - 2022-03-27 6:46:31 - 72:42:22 - 2022-03-27 - 2022-04-03 16:18:27 - 76:17:26 - 2022-04-03 - 2022-04-10 4:48:01 - 102:44:40 - 2022-04-10 - 2022-04-17 10:36:18 - 74:36:45 - 2022-04-17 - 2022-04-25 11:16:38 - 51:50:45 - 2022-04-25 - 2022-05-04 0:48:15 - 1:40:39 - 2022-05-04 - 2022-05-09 2:11:27 - 1:02:54 - 2022-05-09 - 2022-05-29 3:11:14 - 2:38:20 - 2022-05-29 - 2022-06-06 8:01:57 - 2:24:48 - 2022-06-06 - 2022-06-13 3:58:28 - 2:21:13 - 2022-06-13 - 2022-06-20 5:14:59 - - - 2022-06-20 - 2022-06-27 0:45:15 - 1:31:23 - 2022-06-27 - 2022-07-04 0:59:45 - 1:30:12 - 2022-07-04 - 2022-07-11 2:38:56 - 3:01:36 - 2022-07-11 - 2022-07-20 1:30:39 - 19:54:46 - 2022-07-20 - 2022-07-26 - - - - 2022-07-26 - 2022-08-08 7:58:11 - 26:40:43 - 2022-08-08 - 2022-08-22 24:16:14 - 56:53:46 - 2022-08-22 - 2022-08-29 0:45:51 - 0:20:58 - 2022-08-29 - 2022-09-08 146:35:52 - 57:50:04 - 2022-09-08 - 2022-09-12 0:25:55 - - - 2022-09-12 - 2022-09-19 1:27:29 - 1:01:49 - 2022-09-19 - 2022-09-25 152:34:50 - 71:37:38 - BATTERY DURATION AC DURATION PERIOD ACTIVE CONNECTED STANDBY ACTIVE CONNECTED STANDBY 2022-09-25 - 2022-10-02 168:00:02 - 102:20:40 - 2022-10-02 - 2022-10-09 29:04:53 - 46:42:33 - 2022-10-09 - 2022-10-16 28:08:20 - 30:07:13 - 2022-10-16 - 2022-10-23 49:01:01 - 77:44:48 - 2022-10-23 - 2022-10-30 5:35:46 - 74:34:52 - 2022-10-30 - 2022-11-07 1:41:17 - 7:51:55 - 2022-11-07 - 2022-11-14 10:26:00 - 6:30:41 - 2022-11-14 - 2022-11-21 6:41:58 - 11:19:56 - 2022-11-21 - 2022-12-01 0:31:48 - 0:38:16 - 2022-12-01 - 2022-12-05 0:41:11 - - - 2022-12-05 - 2022-12-13 51:57:07 - 27:15:45 - 2022-12-13 - 2022-12-19 0:32:49 - 0:51:31 - 2022-12-19 - 2023-01-11 - - - - 2023-01-11 - 2023-01-16 0:29:19 - 8:00:40 - 2023-01-16 - 2023-01-23 1:29:03 - - - 2023-01-23 - 2023-02-01 2:00:08 - 0:21:12 - 2023-02-01 - 2023-02-07 - - 0:43:13 - 2023-02-07 - 2023-02-13 0:57:38 - - - 2023-02-13 - 2023-02-20 1:41:58 - 0:41:47 - 2023-02-20 - 2023-02-27 0:03:48 - 1:16:06 - 2023-02-27 - 2023-03-06 7:58:55 - - - 2023-03-06 - 2023-03-14 19:32:09 - 1:14:27 - 2023-03-14 - 2023-03-28 4:57:36 - 3:08:37 - 2023-03-28 - 2023-04-03 7:08:20 - 5:35:29 - 2023-04-03 - 2023-04-12 2:04:57 - 2:22:21 - 2023-04-12 - 2023-04-30 1:49:57 - 0:46:49 - 2023-04-30 0:01:04 - 0:58:13 - 2023-05-01 - 2023-05-15 6:27:41 - 2:35:18 - 2023-05-15 - 2023-05-22 0:13:58 - 2:39:33 - 2023-05-22 - 2023-05-29 3:26:52 - 1:21:16 - 2023-05-29 - 2023-06-05 30:55:31 - 23:15:24 - 2023-06-05 - 2023-06-12 32:46:01 - 24:28:37 - 2023-06-12 - 2023-06-20 - - 0:00:17 - 2023-06-20 - 2023-06-26 0:41:07 - 0:31:56 - 2023-06-26 - 2023-07-03 0:51:28 - 1:02:20 - 2023-07-03 - 2023-07-09 5:12:42 - 1:10:18 - 2023-07-09 - 2023-07-17 12:41:00 - 22:32:32 - 2023-07-17 - 2023-07-24 73:13:46 - 23:43:22 - 2023-07-24 - 2023-07-31 74:14:32 - 1:59:59 - 2023-07-31 - 2023-08-07 149:02:57 - 26:53:20 - 2023-08-07 - 2023-08-15 0:13:43 - 6:37:39 - 2023-08-15 - 2023-08-21 1:03:34 - - - 2023-08-21 - 2023-08-27 5:04:19 - 27:09:04 - 2023-08-27 - 2023-09-03 12:55:25 - 80:53:17 - 2023-09-03 - 2023-09-18 17:33:46 - 71:24:47 - 2023-09-18 - 2023-09-26 2:54:23 - 2:45:01 - 2023-09-26 - 2023-10-06 0:53:39 - 0:22:04 - 2023-10-06 - 2023-10-15 1:14:02 - 29:02:46 - 2023-10-15 - - 1:37:26 - 2023-10-16 - 2023-10-23 28:08:56 - 24:03:33 - 2023-10-23 - 2023-11-03 30:33:50 - 37:37:37 - 2023-11-03 - 2023-11-06 - - 0:34:25 - 2023-11-06 - 2023-11-13 1:59:47 - 3:06:57 - BATTERY DURATION AC DURATION PERIOD ACTIVE CONNECTED STANDBY ACTIVE CONNECTED STANDBY 2023-11-13 - 2023-11-20 6:47:06 - 1:14:32 - 2023-11-20 - 2023-11-27 19:37:05 - 3:49:55 - 2023-11-27 - 2023-12-04 17:59:37 - 6:41:45 - 2023-12-04 - 2023-12-11 23:13:32 - 5:07:08 - 2023-12-11 - 2023-12-18 1:09:49 - 2:28:44 - 2023-12-18 - 2023-12-26 1:20:17 - 73:40:25 - 2023-12-26 - 2024-01-01 1:13:55 - 2:43:27 - 2024-01-01 - 2024-01-08 5:16:25 - 4:27:44 - 2024-01-08 - 2024-01-16 4:06:54 - 3:58:20 - 2024-01-16 - 2024-01-23 1:57:24 - 2:26:02 - 2024-01-23 - 2024-01-29 1:30:35 - 0:56:06 - 2024-01-29 - 2024-02-07 3:21:34 - 1:44:56 - 2024-02-07 - 2024-02-16 - - - - 2024-02-16 - 2024-02-19 - - 2:28:28 - 2024-02-19 - 2024-02-25 3:37:50 - 5:38:31 - 2024-02-25 - 2024-03-03 4:15:21 - 2:54:46 - 2024-03-03 - 2024-03-11 2:30:38 - 2:46:49 - 2024-03-11 - 2024-03-20 2:09:31 - 0:02:12 - 2024-03-20 - 2024-03-25 14:27:38 - 13:07:37 - 2024-03-25 - 2024-04-01 - - - - 2024-04-01 - 2024-04-08 0:18:56 - 2:08:45 - 2024-04-08 - 2024-04-30 - - - - 2024-04-30 - 2024-05-08 0:03:16 - 0:13:50 - 2024-05-08 - 2024-05-14 18:44:52 - 8:16:29 - 2024-05-14 - 2024-05-26 2:29:37 - 1:16:33 - 2024-05-26 - 2024-05-29 - - - - 2024-05-29 - 2024-06-03 4:57:43 - 4:17:14 - 2024-06-03 - 2024-06-10 1:13:18 - 3:32:28 - 2024-06-10 - 2024-06-17 3:04:03 - 1:37:05 - 2024-06-17 - 2024-06-24 4:57:22 - 3:11:59 - 2024-06-24 - 2024-07-01 0:47:39 - 0:50:24 - 2024-07-01 - 2024-07-09 7:55:24 - 5:43:11 - 2024-07-09 - 2024-07-15 - - 0:41:09 - 2024-07-15 - 2024-07-22 0:36:01 - 0:24:56 - 2024-07-22 - 2024-07-29 3:23:52 - 3:33:27 - 2024-07-29 - 2024-08-05 1:00:49 - 2:41:19 - 2024-08-05 - 2024-08-12 6:27:54 - 55:36:45 - 2024-08-12 - 2024-08-19 8:00:50 - 58:52:30 - 2024-08-19 - 2024-08-30 0:42:28 - 29:42:19 - 2024-08-30 - 2024-09-01 1:01:07 - 4:39:13 - 2024-09-01 - 2024-09-22 2:57:54 - 2:20:33 - 2024-09-22 - 2024-09-25 0:12:03 - 0:52:23 - 2024-09-25 - 2024-09-30 1:01:16 - 0:33:26 - 2024-09-30 - 2024-10-09 54:27:57 - 1:19:08 - 2024-10-09 - 2024-10-15 0:40:22 - 0:25:10 - 2024-10-15 - 2024-10-21 0:36:28 - 0:32:13 - 2024-10-21 - 2024-10-28 2:32:57 - 2:14:57 - 2024-10-28 - 2024-11-04 1:20:48 - 2:29:21 - 2024-11-04 - 2024-11-11 0:19:12 - 0:02:16 - 2024-11-11 - 2024-11-21 0:39:47 - 0:52:27 - 2024-11-21 - 2024-11-24 0:04:36 - - - 2024-11-24 - 2024-12-09 1:21:01 - 2:59:24 - 2024-12-09 - 2024-12-18 1:21:23 - 12:13:45 - BATTERY DURATION AC DURATION PERIOD ACTIVE CONNECTED STANDBY ACTIVE CONNECTED STANDBY 2024-12-18 - 2024-12-23 1:21:24 - 19:01:14 - 2024-12-23 - 2025-01-02 1:21:24 - 67:35:01 - 2025-01-02 - 2025-01-08 1:21:24 - 68:34:54 - 2025-01-08 - 2025-02-18 1:21:24 - 69:47:59 - 2025-02-18 - 2025-03-06 - - - - 2025-03-06 - 2025-03-20 - - - - 2025-03-20 - 2025-03-25 - - - - 2025-03-25 - 2025-03-31 - - - - 2025-03-31 - 2025-04-08 - - - - 2025-04-08 - 2025-04-22 - - - - 2025-04-22 - 2025-04-28 - - - - 2025-04-28 - 2025-05-06 - - - - 2025-05-06 - 2025-05-13 - - - - 2025-05-13 - 2025-06-02 - - - - 2025-06-02 - 2025-06-09 - - - - 2025-06-09 - 2025-06-18 - - - - 2025-06-18 - 2025-06-22 - - - - 2025-06-22 - 2025-06-30 - - - - 2025-06-30 - 2025-07-11 - - - - 2025-07-11 - 2025-07-15 - - - - 2025-07-15 - 2025-07-24 - - - - 2025-07-25 1:50:31 - 16:19:54 - 2025-07-26 11:13:27 - 0:00:40 - 2025-07-27 2:04:17 - 0:00:38 - Batter y capacity histor y Charge capacity history of the system's batteries PERIOD FULL CHARGE CAPACITY DESIGN CAPACITY 2020-08-05 - 2020-08-11 61.480 mWh 78.000 mWh 2020-08-11 - 2020-08-26 61.645 mWh 78.000 mWh 2020-08-26 - 2020-09-19 65.140 mWh 78.000 mWh 2020-09-19 - 2020-09-21 65.140 mWh 78.000 mWh 2020-09-21 - 2020-09-28 65.140 mWh 78.000 mWh 2020-09-28 - 2020-10-05 64.736 mWh 78.000 mWh 2020-10-05 - 2020-10-12 64.278 mWh 78.000 mWh 2020-10-12 - 2020-10-19 62.610 mWh 78.000 mWh 2020-10-19 - 2020-10-26 62.113 mWh 78.000 mWh 2020-10-26 - 2020-11-02 59.950 mWh 78.000 mWh 2020-11-02 - 2020-11-08 59.950 mWh 78.000 mWh 2020-11-08 - 2020-11-16 60.772 mWh 78.000 mWh 2020-11-16 - 2020-11-23 67.410 mWh 78.000 mWh 2020-11-23 - 2020-11-29 67.410 mWh 78.000 mWh 2020-11-29 - 2020-12-07 63.946 mWh 78.000 mWh 2020-12-07 - 2020-12-13 61.381 mWh 78.000 mWh 2020-12-13 - 2020-12-20 62.190 mWh 78.000 mWh 2020-12-20 - 2020-12-27 62.190 mWh 78.000 mWh 2020-12-27 - 2021-01-03 62.065 mWh 78.000 mWh 2021-01-03 - 2021-01-11 63.527 mWh 78.000 mWh 2021-01-11 - 2021-01-18 63.939 mWh 78.000 mWh 2021-01-18 - 2021-01-24 64.213 mWh 78.000 mWh 2021-01-24 - 2021-01-31 61.060 mWh 78.000 mWh PERIOD FULL CHARGE CAPACITY DESIGN CAPACITY 2021-01-31 - 2021-02-07 61.058 mWh 78.000 mWh 2021-02-07 - 2021-02-14 61.324 mWh 78.000 mWh 2021-02-14 - 2021-02-21 62.350 mWh 78.000 mWh 2021-02-21 - 2021-02-28 62.350 mWh 78.000 mWh 2021-02-28 - 2021-03-07 59.394 mWh 78.000 mWh 2021-03-07 - 2021-03-15 59.370 mWh 78.000 mWh 2021-03-15 - 2021-03-22 65.363 mWh 78.000 mWh 2021-03-22 - 2021-03-29 65.410 mWh 78.000 mWh 2021-03-29 - 2021-04-05 65.410 mWh 78.000 mWh 2021-04-05 - 2021-04-12 65.410 mWh 78.000 mWh 2021-04-12 - 2021-04-18 64.595 mWh 78.000 mWh 2021-04-18 - 2021-04-25 61.390 mWh 78.000 mWh 2021-04-25 - 2021-05-02 61.390 mWh 78.000 mWh 2021-05-02 - 2021-05-09 61.390 mWh 78.000 mWh 2021-05-09 - 2021-05-16 62.670 mWh 78.000 mWh 2021-05-16 - 2021-05-23 63.166 mWh 78.000 mWh 2021-05-23 - 2021-05-30 63.020 mWh 78.000 mWh 2021-05-30 - 2021-06-06 63.020 mWh 78.000 mWh 2021-06-06 - 2021-06-13 62.767 mWh 78.000 mWh 2021-06-13 - 2021-06-20 61.100 mWh 78.000 mWh 2021-06-20 - 2021-06-27 61.100 mWh 78.000 mWh 2021-06-27 - 2021-07-04 59.660 mWh 78.000 mWh 2021-07-04 - 2021-07-11 60.371 mWh 78.000 mWh 2021-07-11 - 2021-07-19 63.952 mWh 78.000 mWh 2021-07-19 - 2021-07-26 64.560 mWh 78.000 mWh 2021-07-26 - 2021-08-02 64.560 mWh 78.000 mWh 2021-08-02 - 2021-08-09 64.560 mWh 78.000 mWh 2021-08-09 - 2021-08-23 62.002 mWh 78.000 mWh 2021-08-23 - 2021-08-30 58.520 mWh 78.000 mWh 2021-08-30 - 2021-09-06 58.520 mWh 78.000 mWh 2021-09-06 - 2021-09-12 58.520 mWh 78.000 mWh 2021-09-12 - 2021-09-19 59.380 mWh 78.000 mWh 2021-09-19 - 2021-09-26 60.780 mWh 78.000 mWh 2021-09-26 - 2021-10-03 60.780 mWh 78.000 mWh 2021-10-03 - 2021-10-10 60.766 mWh 78.000 mWh 2021-10-10 - 2021-10-17 60.666 mWh 78.000 mWh 2021-10-17 - 2021-10-24 62.030 mWh 78.000 mWh 2021-10-24 - 2021-10-31 62.030 mWh 78.000 mWh 2021-10-31 - 2021-11-07 62.030 mWh 78.000 mWh 2021-11-07 - 2021-11-19 62.030 mWh 78.000 mWh 2021-11-19 - 2021-11-21 61.121 mWh 78.000 mWh 2021-11-21 - 2021-11-28 55.627 mWh 78.000 mWh 2021-11-28 - 2021-12-07 61.409 mWh 78.000 mWh 2021-12-07 - 2021-12-14 57.700 mWh 78.000 mWh 2021-12-14 - 2021-12-20 57.700 mWh 78.000 mWh 2021-12-20 - 2021-12-28 57.700 mWh 78.000 mWh 2021-12-28 - 2022-01-03 57.920 mWh 78.000 mWh 2022-01-03 - 2022-01-11 57.920 mWh 78.000 mWh 2022-01-11 - 2022-01-18 57.920 mWh 78.000 mWh 2022-01-18 - 2022-01-24 52.673 mWh 78.000 mWh 2022-01-24 - 2022-01-31 52.650 mWh 78.000 mWh 2022-01-31 - 2022-02-06 52.650 mWh 78.000 mWh 2022-02-06 - 2022-02-13 54.520 mWh 78.000 mWh 2022-02-13 - 2022-02-20 57.932 mWh 78.000 mWh PERIOD FULL CHARGE CAPACITY DESIGN CAPACITY 2022-02-20 - 2022-02-27 57.320 mWh 78.000 mWh 2022-02-27 - 2022-03-06 57.320 mWh 78.000 mWh 2022-03-06 - 2022-03-13 57.253 mWh 78.000 mWh 2022-03-13 - 2022-03-20 57.010 mWh 78.000 mWh 2022-03-20 - 2022-03-27 57.010 mWh 78.000 mWh 2022-03-27 - 2022-04-03 57.010 mWh 78.000 mWh 2022-04-03 - 2022-04-10 57.010 mWh 78.000 mWh 2022-04-10 - 2022-04-17 57.026 mWh 78.000 mWh 2022-04-17 - 2022-04-25 57.120 mWh 78.000 mWh 2022-04-25 - 2022-05-04 57.120 mWh 78.000 mWh 2022-05-04 - 2022-05-09 57.120 mWh 78.000 mWh 2022-05-09 - 2022-05-29 53.548 mWh 78.000 mWh 2022-05-29 - 2022-06-06 50.538 mWh 78.000 mWh 2022-06-06 - 2022-06-13 56.030 mWh 78.000 mWh 2022-06-13 - 2022-06-20 51.670 mWh 78.000 mWh 2022-06-20 - 2022-06-27 53.730 mWh 78.000 mWh 2022-06-27 - 2022-07-04 56.450 mWh 78.000 mWh 2022-07-04 - 2022-07-11 55.516 mWh 78.000 mWh 2022-07-11 - 2022-07-20 32.280 mWh 78.000 mWh 2022-07-20 - 2022-07-26 32.280 mWh 78.000 mWh 2022-07-26 - 2022-08-08 39.201 mWh 78.000 mWh 2022-08-08 - 2022-08-22 39.531 mWh 78.000 mWh 2022-08-22 - 2022-08-29 50.210 mWh 78.000 mWh 2022-08-29 - 2022-09-08 43.501 mWh 78.000 mWh 2022-09-08 - 2022-09-12 39.950 mWh 78.000 mWh 2022-09-12 - 2022-09-19 39.950 mWh 78.000 mWh 2022-09-19 - 2022-09-25 42.837 mWh 78.000 mWh 2022-09-25 - 2022-10-02 44.104 mWh 78.000 mWh 2022-10-02 - 2022-10-09 58.230 mWh 78.000 mWh 2022-10-09 - 2022-10-16 55.966 mWh 78.000 mWh 2022-10-16 - 2022-10-23 55.766 mWh 78.000 mWh 2022-10-23 - 2022-10-30 57.694 mWh 78.000 mWh 2022-10-30 - 2022-11-07 54.140 mWh 78.000 mWh 2022-11-07 - 2022-11-14 54.764 mWh 78.000 mWh 2022-11-14 - 2022-11-21 46.600 mWh 78.000 mWh 2022-11-21 - 2022-12-01 46.600 mWh 78.000 mWh 2022-12-01 - 2022-12-05 46.600 mWh 78.000 mWh 2022-12-05 - 2022-12-13 47.888 mWh 78.000 mWh 2022-12-13 - 2022-12-19 48.150 mWh 78.000 mWh 2022-12-19 - 2023-01-11 - - 2023-01-11 - 2023-01-16 48.283 mWh 78.000 mWh 2023-01-16 - 2023-01-23 51.257 mWh 78.000 mWh 2023-01-23 - 2023-02-01 50.330 mWh 78.000 mWh 2023-02-01 - 2023-02-07 50.330 mWh 78.000 mWh 2023-02-07 - 2023-02-13 50.330 mWh 78.000 mWh 2023-02-13 - 2023-02-20 50.330 mWh 78.000 mWh 2023-02-20 - 2023-02-27 50.330 mWh 78.000 mWh 2023-02-27 - 2023-03-06 50.330 mWh 78.000 mWh 2023-03-06 - 2023-03-14 52.542 mWh 78.000 mWh 2023-03-14 - 2023-03-28 52.446 mWh 78.000 mWh 2023-03-28 - 2023-04-03 45.720 mWh 78.000 mWh 2023-04-03 - 2023-04-12 34.530 mWh 78.000 mWh 2023-04-12 - 2023-04-30 34.530 mWh 78.000 mWh 2023-04-30 34.530 mWh 78.000 mWh PERIOD FULL CHARGE CAPACITY DESIGN CAPACITY 2023-05-01 - 2023-05-15 36.589 mWh 78.000 mWh 2023-05-15 - 2023-05-22 26.485 mWh 78.000 mWh 2023-05-22 - 2023-05-29 48.390 mWh 78.000 mWh 2023-05-29 - 2023-06-05 27.656 mWh 78.000 mWh 2023-06-05 - 2023-06-12 33.484 mWh 78.000 mWh 2023-06-12 - 2023-06-20 37.680 mWh 78.000 mWh 2023-06-20 - 2023-06-26 37.680 mWh 78.000 mWh 2023-06-26 - 2023-07-03 30.013 mWh 78.000 mWh 2023-07-03 - 2023-07-09 24.610 mWh 78.000 mWh 2023-07-09 - 2023-07-17 28.574 mWh 78.000 mWh 2023-07-17 - 2023-07-24 27.354 mWh 78.000 mWh 2023-07-24 - 2023-07-31 22.040 mWh 78.000 mWh 2023-07-31 - 2023-08-07 25.199 mWh 78.000 mWh 2023-08-07 - 2023-08-15 25.091 mWh 78.000 mWh 2023-08-15 - 2023-08-21 49.050 mWh 78.000 mWh 2023-08-21 - 2023-08-27 38.917 mWh 78.000 mWh 2023-08-27 - 2023-09-03 47.564 mWh 78.000 mWh 2023-09-03 - 2023-09-18 47.224 mWh 78.000 mWh 2023-09-18 - 2023-09-26 46.450 mWh 78.000 mWh 2023-09-26 - 2023-10-06 46.450 mWh 78.000 mWh 2023-10-06 - 2023-10-15 48.493 mWh 78.000 mWh 2023-10-15 51.570 mWh 78.000 mWh 2023-10-16 - 2023-10-23 52.824 mWh 78.000 mWh 2023-10-23 - 2023-11-03 46.544 mWh 78.000 mWh 2023-11-03 - 2023-11-06 28.340 mWh 78.000 mWh 2023-11-06 - 2023-11-13 49.354 mWh 78.000 mWh 2023-11-13 - 2023-11-20 49.520 mWh 78.000 mWh 2023-11-20 - 2023-11-27 48.949 mWh 78.000 mWh 2023-11-27 - 2023-12-04 48.460 mWh 78.000 mWh 2023-12-04 - 2023-12-11 48.460 mWh 78.000 mWh 2023-12-11 - 2023-12-18 47.176 mWh 78.000 mWh 2023-12-18 - 2023-12-26 45.780 mWh 78.000 mWh 2023-12-26 - 2024-01-01 45.780 mWh 78.000 mWh 2024-01-01 - 2024-01-08 45.780 mWh 78.000 mWh 2024-01-08 - 2024-01-16 47.855 mWh 78.000 mWh 2024-01-16 - 2024-01-23 51.930 mWh 78.000 mWh 2024-01-23 - 2024-01-29 51.930 mWh 78.000 mWh 2024-01-29 - 2024-02-07 51.930 mWh 78.000 mWh 2024-02-07 - 2024-02-16 - - 2024-02-16 - 2024-02-19 51.930 mWh 78.000 mWh 2024-02-19 - 2024-02-25 50.953 mWh 78.000 mWh 2024-02-25 - 2024-03-03 50.480 mWh 78.000 mWh 2024-03-03 - 2024-03-11 50.480 mWh 78.000 mWh 2024-03-11 - 2024-03-20 50.480 mWh 78.000 mWh 2024-03-20 - 2024-03-25 50.499 mWh 78.000 mWh 2024-03-25 - 2024-04-01 - - 2024-04-01 - 2024-04-08 49.960 mWh 78.000 mWh 2024-04-08 - 2024-04-30 49.960 mWh 78.000 mWh 2024-04-30 - 2024-05-08 49.960 mWh 78.000 mWh 2024-05-08 - 2024-05-14 49.524 mWh 78.000 mWh 2024-05-14 - 2024-05-26 47.262 mWh 78.000 mWh 2024-05-26 - 2024-05-29 47.230 mWh 78.000 mWh 2024-05-29 - 2024-06-03 40.117 mWh 78.000 mWh 2024-06-03 - 2024-06-10 16.640 mWh 78.000 mWh PERIOD FULL CHARGE CAPACITY DESIGN CAPACITY 2024-06-10 - 2024-06-17 33.854 mWh 78.000 mWh 2024-06-17 - 2024-06-24 37.097 mWh 78.000 mWh 2024-06-24 - 2024-07-01 23.970 mWh 78.000 mWh 2024-07-01 - 2024-07-09 31.065 mWh 78.000 mWh 2024-07-09 - 2024-07-15 24.632 mWh 78.000 mWh 2024-07-15 - 2024-07-22 3.490 mWh 78.000 mWh 2024-07-22 - 2024-07-29 12.015 mWh 78.000 mWh 2024-07-29 - 2024-08-05 15.300 mWh 78.000 mWh 2024-08-05 - 2024-08-12 13.965 mWh 78.000 mWh 2024-08-12 - 2024-08-19 13.715 mWh 78.000 mWh 2024-08-19 - 2024-08-30 29.062 mWh 78.000 mWh 2024-08-30 - 2024-09-01 40.330 mWh 78.000 mWh 2024-09-01 - 2024-09-22 40.330 mWh 78.000 mWh 2024-09-22 - 2024-09-25 40.330 mWh 78.000 mWh 2024-09-25 - 2024-09-30 40.472 mWh 78.000 mWh 2024-09-30 - 2024-10-09 44.330 mWh 78.000 mWh 2024-10-09 - 2024-10-15 43.877 mWh 78.000 mWh 2024-10-15 - 2024-10-21 43.530 mWh 78.000 mWh 2024-10-21 - 2024-10-28 41.936 mWh 78.000 mWh 2024-10-28 - 2024-11-04 25.190 mWh 78.000 mWh 2024-11-04 - 2024-11-11 25.190 mWh 78.000 mWh 2024-11-11 - 2024-11-21 25.190 mWh 78.000 mWh 2024-11-21 - 2024-11-24 25.190 mWh 78.000 mWh 2024-11-24 - 2024-12-09 5.063 mWh 78.000 mWh 2024-12-09 - 2024-12-18 6.394 mWh 78.000 mWh 2024-12-18 - 2024-12-23 4.899 mWh 78.000 mWh 2024-12-23 - 2025-01-02 5.435 mWh 78.000 mWh 2025-01-02 - 2025-01-08 5.628 mWh 78.000 mWh 2025-01-08 - 2025-02-18 5.404 mWh 78.000 mWh 2025-02-18 - 2025-03-06 - - 2025-03-06 - 2025-03-20 - - 2025-03-20 - 2025-03-25 - - 2025-03-25 - 2025-03-31 - - 2025-03-31 - 2025-04-08 - - 2025-04-08 - 2025-04-22 - - 2025-04-22 - 2025-04-28 - - 2025-04-28 - 2025-05-06 - - 2025-05-06 - 2025-05-13 - - 2025-05-13 - 2025-06-02 - - 2025-06-02 - 2025-06-09 - - 2025-06-09 - 2025-06-18 - - 2025-06-18 - 2025-06-22 - - 2025-06-22 - 2025-06-30 - - 2025-06-30 - 2025-07-11 - - 2025-07-11 - 2025-07-15 - - 2025-07-15 - 2025-07-24 - - 2025-07-25 -1 mWh -1 mWh 2025-07-26 -1 mWh -1 mWh 2025-07-27 -1 mWh -1 mWh Batter y life estimates Battery life estimates based on observed drains AT FULL CHARGE AT DESIGN CAPACITY PERIOD ACTIVE CONNECTED STANDBY ACTIVE CONNECTED STANDBY 2020-08-05 - 2020- 08-11 5:47:47 - 7:21:14 - 2020-08-11 - 2020- 08-26 13:23:03 - 16:56:07 - 2020-08-26 - 2020- 09-19 - - - - 2020-09-19 - 2020- 09-21 7:39:43 - 9:10:29 - 2020-09-21 - 2020- 09-28 27:59:41 - 33:31:18 - 2020-09-28 - 2020- 10-05 108:21:55 - 130:34:07 - 2020-10-05 - 2020- 10-12 4:57:47 - 6:01:21 - 2020-10-12 - 2020- 10-19 10:15:11 - 12:46:24 - 2020-10-19 - 2020- 10-26 6:13:10 - 7:48:37 - 2020-10-26 - 2020- 11-02 4:06:55 - 5:21:15 - 2020-11-02 - 2020- 11-08 6:23:53 - 8:19:28 - 2020-11-08 - 2020- 11-16 6:06:33 - 7:50:28 - 2020-11-16 - 2020- 11-23 6:09:00 - 7:06:58 - 2020-11-23 - 2020- 11-29 6:48:33 - 7:52:44 - 2020-11-29 - 2020- 12-07 7:11:02 - 8:45:47 - 2020-12-07 - 2020- 12-13 8:11:28 - 10:24:32 - 2020-12-13 - 2020- 12-20 6:56:52 - 8:42:51 - 2020-12-20 - 2020- 12-27 8:34:34 - 10:45:23 - 2020-12-27 - 2021- 01-03 7:53:18 - 9:54:50 - 2021-01-03 - 2021- 01-11 7:42:13 - 9:27:31 - 2021-01-11 - 2021- 01-18 6:58:29 - 8:30:31 - 2021-01-18 - 2021- 01-24 9:18:58 - 11:18:59 - 2021-01-24 - 2021- 01-31 8:39:10 - 11:03:12 - 2021-01-31 - 2021- 02-07 6:00:47 - 7:40:54 - 2021-02-07 - 2021- 02-14 7:46:35 - 9:53:28 - 2021-02-14 - 2021- 02-21 8:10:22 - 10:13:27 - 2021-02-21 - 2021- 02-28 6:13:48 - 7:47:37 - 2021-02-28 - 2021- 03-07 11:26:17 - 15:01:17 - AT FULL CHARGE AT DESIGN CAPACITY PERIOD ACTIVE CONNECTED STANDBY ACTIVE CONNECTED STANDBY 2021-03-07 - 2021- 03-15 6:38:35 - 8:43:39 - 2021-03-15 - 2021- 03-22 - - - - 2021-03-22 - 2021- 03-29 9:00:04 - 10:44:01 - 2021-03-29 - 2021- 04-05 17:57:23 - 21:24:46 - 2021-04-05 - 2021- 04-12 6:27:17 - 7:41:50 - 2021-04-12 - 2021- 04-18 14:57:52 - 18:04:12 - 2021-04-18 - 2021- 04-25 21:00:51 - 26:42:00 - 2021-04-25 - 2021- 05-02 6:20:42 - 8:03:43 - 2021-05-02 - 2021- 05-09 5:50:59 - 7:25:57 - 2021-05-09 - 2021- 05-16 9:14:38 - 11:30:18 - 2021-05-16 - 2021- 05-23 33:51:08 - 41:48:07 - 2021-05-23 - 2021- 05-30 24:47:31 - 30:41:06 - 2021-05-30 - 2021- 06-06 18:36:24 - 23:01:46 - 2021-06-06 - 2021- 06-13 9:09:47 - 11:23:13 - 2021-06-13 - 2021- 06-20 6:43:53 - 8:35:36 - 2021-06-20 - 2021- 06-27 6:41:23 - 8:32:25 - 2021-06-27 - 2021- 07-04 7:02:11 - 9:11:59 - 2021-07-04 - 2021- 07-11 6:46:16 - 8:44:54 - 2021-07-11 - 2021- 07-19 10:15:04 - 12:30:10 - 2021-07-19 - 2021- 07-26 6:35:27 - 7:57:46 - 2021-07-26 - 2021- 08-02 7:36:29 - 9:11:31 - 2021-08-02 - 2021- 08-09 8:06:25 - 9:47:40 - 2021-08-09 - 2021- 08-23 15:23:40 - 19:22:00 - 2021-08-23 - 2021- 08-30 5:25:58 - 7:14:29 - 2021-08-30 - 2021- 09-06 6:30:57 - 8:41:06 - 2021-09-06 - 2021- 09-12 9:38:19 - 12:50:49 - 2021-09-12 - 2021- 09-19 29:30:34 - 38:45:46 - 2021-09-19 - 2021- 09-26 23:10:16 - 29:44:09 - AT FULL CHARGE AT DESIGN CAPACITY PERIOD ACTIVE CONNECTED STANDBY ACTIVE CONNECTED STANDBY 2021-09-26 - 2021- 10-03 6:36:36 - 8:28:58 - 2021-10-03 - 2021- 10-10 6:00:13 - 7:42:23 - 2021-10-10 - 2021- 10-17 5:34:39 - 7:10:16 - 2021-10-17 - 2021- 10-24 15:48:27 - 19:52:39 - 2021-10-24 - 2021- 10-31 5:54:21 - 7:25:35 - 2021-10-31 - 2021- 11-07 5:54:47 - 7:26:08 - 2021-11-07 - 2021- 11-19 5:45:23 - 7:14:18 - 2021-11-19 - 2021- 11-21 4:43:02 - 6:01:11 - 2021-11-21 - 2021- 11-28 4:17:38 - 6:01:15 - 2021-11-28 - 2021- 12-07 7:01:36 - 8:55:30 - 2021-12-07 - 2021- 12-14 4:36:04 - 6:13:11 - 2021-12-14 - 2021- 12-20 4:17:02 - 5:47:28 - 2021-12-20 - 2021- 12-28 5:52:07 - 7:56:00 - 2021-12-28 - 2022- 01-03 - - - - 2022-01-03 - 2022- 01-11 4:16:13 - 5:45:03 - 2022-01-11 - 2022- 01-18 2:20:42 - 3:09:29 - 2022-01-18 - 2022- 01-24 58:58:59 - 87:20:39 - 2022-01-24 - 2022- 01-31 4:01:21 - 5:57:34 - 2022-01-31 - 2022- 02-06 2:55:42 - 4:20:18 - 2022-02-06 - 2022- 02-13 8:49:53 - 12:38:05 - 2022-02-13 - 2022- 02-20 4:48:35 - 6:28:33 - 2022-02-20 - 2022- 02-27 4:43:48 - 6:26:12 - 2022-02-27 - 2022- 03-06 5:48:44 - 7:54:33 - 2022-03-06 - 2022- 03-13 12:02:19 - 16:24:04 - 2022-03-13 - 2022- 03-20 4:50:11 - 6:37:02 - 2022-03-20 - 2022- 03-27 4:25:28 - 6:03:12 - 2022-03-27 - 2022- 04-03 6:56:13 - 9:29:27 - 2022-04-03 - 2022- 04-10 4:27:04 - 6:05:24 - AT FULL CHARGE AT DESIGN CAPACITY PERIOD ACTIVE CONNECTED STANDBY ACTIVE CONNECTED STANDBY 2022-04-10 - 2022- 04-17 4:38:12 - 6:20:31 - 2022-04-17 - 2022- 04-25 4:40:10 - 6:22:35 - 2022-04-25 - 2022- 05-04 4:25:15 - 6:02:13 - 2022-05-04 - 2022- 05-09 3:19:57 - 4:33:03 - 2022-05-09 - 2022- 05-29 3:23:32 - 4:56:29 - 2022-05-29 - 2022- 06-06 9:13:41 - 14:14:33 - 2022-06-06 - 2022- 06-13 15:22:44 - 21:24:33 - 2022-06-13 - 2022- 06-20 9:00:53 - 13:36:30 - 2022-06-20 - 2022- 06-27 4:06:34 - 5:57:57 - 2022-06-27 - 2022- 07-04 4:16:29 - 5:54:24 - 2022-07-04 - 2022- 07-11 4:22:45 - 6:09:10 - 2022-07-11 - 2022- 07-20 2:15:02 - 5:26:17 - 2022-07-20 - 2022- 07-26 - - - - 2022-07-26 - 2022- 08-08 2:48:50 - 5:35:57 - 2022-08-08 - 2022- 08-22 14:32:52 - 28:42:18 - 2022-08-22 - 2022- 08-29 2:47:25 - 4:20:05 - 2022-08-29 - 2022- 09-08 41:03:10 - 73:36:37 - 2022-09-08 - 2022- 09-12 2:14:48 - 4:23:12 - 2022-09-12 - 2022- 09-19 2:54:23 - 5:40:30 - 2022-09-19 - 2022- 09-25 26:41:04 - 48:35:18 - 2022-09-25 - 2022- 10-02 17:30:34 - 30:57:58 - 2022-10-02 - 2022- 10-09 8:30:43 - 11:24:07 - 2022-10-09 - 2022- 10-16 15:23:44 - 21:27:25 - 2022-10-16 - 2022- 10-23 13:30:04 - 18:53:03 - 2022-10-23 - 2022- 10-30 4:48:11 - 6:29:36 - 2022-10-30 - 2022- 11-07 4:26:42 - 6:24:14 - 2022-11-07 - 2022- 11-14 6:00:58 - 8:34:08 - 2022-11-14 - 2022- 11-21 9:32:18 - 15:57:56 - AT FULL CHARGE AT DESIGN CAPACITY PERIOD ACTIVE CONNECTED STANDBY ACTIVE CONNECTED STANDBY 2022-11-21 - 2022- 12-01 2:40:22 - 4:28:26 - 2022-12-01 - 2022- 12-05 3:33:42 - 5:57:43 - 2022-12-05 - 2022- 12-13 11:19:44 - 18:27:10 - 2022-12-13 - 2022- 12-19 4:38:40 - 7:31:26 - 2022-12-19 - 2023- 01-11 - - - - 2023-01-11 - 2023- 01-16 3:01:00 - 4:52:25 - 2023-01-16 - 2023- 01-23 3:49:01 - 5:48:30 - 2023-01-23 - 2023- 02-01 3:35:56 - 5:34:39 - 2023-02-01 - 2023- 02-07 - - - - 2023-02-07 - 2023- 02-13 4:06:26 - 6:21:56 - 2023-02-13 - 2023- 02-20 3:28:11 - 5:22:39 - 2023-02-20 - 2023- 02-27 3:05:41 - 4:47:46 - 2023-02-27 - 2023- 03-06 10:38:30 - 16:29:32 - 2023-03-06 - 2023- 03-14 21:24:24 - 31:46:43 - 2023-03-14 - 2023- 03-28 4:21:26 - 6:28:49 - 2023-03-28 - 2023- 04-03 3:56:06 - 6:42:49 - 2023-04-03 - 2023- 04-12 2:50:03 - 6:24:09 - 2023-04-12 - 2023- 04-30 3:39:27 - 8:15:43 - 2023-04-30 2:47:25 - 6:18:10 - 2023-05-01 - 2023- 05-15 2:12:00 - 4:41:25 - 2023-05-15 - 2023- 05-22 1:34:21 - 4:37:54 - 2023-05-22 - 2023- 05-29 3:41:48 - 5:57:32 - 2023-05-29 - 2023- 06-05 20:16:18 - 57:10:26 - 2023-06-05 - 2023- 06-12 14:23:41 - 33:31:55 - 2023-06-12 - 2023- 06-20 - - - - 2023-06-20 - 2023- 06-26 3:15:51 - 6:45:26 - 2023-06-26 - 2023- 07-03 1:55:57 - 5:01:22 - 2023-07-03 - 2023- 07-09 2:05:16 - 6:37:02 - 2023-07-09 - 2023- 07-17 2:09:56 - 5:54:41 - AT FULL CHARGE AT DESIGN CAPACITY PERIOD ACTIVE CONNECTED STANDBY ACTIVE CONNECTED STANDBY 2023-07-17 - 2023- 07-24 10:12:06 - 29:05:25 - 2023-07-24 - 2023- 07-31 81:46:26 - 289:23:59 - 2023-07-31 - 2023- 08-07 15:37:48 - 48:22:49 - 2023-08-07 - 2023- 08-15 1:20:13 - 4:09:23 - 2023-08-15 - 2023- 08-21 3:50:16 - 6:06:11 - 2023-08-21 - 2023- 08-27 2:54:23 - 5:49:31 - 2023-08-27 - 2023- 09-03 7:51:49 - 12:53:43 - 2023-09-03 - 2023- 09-18 8:27:59 - 13:59:03 - 2023-09-18 - 2023- 09-26 3:25:50 - 5:45:39 - 2023-09-26 - 2023- 10-06 3:25:36 - 5:45:16 - 2023-10-06 - 2023- 10-15 4:07:04 - 6:37:25 - 2023-10-15 - - - - 2023-10-16 - 2023- 10-23 22:41:02 - 33:29:42 - 2023-10-23 - 2023- 11-03 14:45:08 - 24:43:20 - 2023-11-03 - 2023- 11-06 - - - - 2023-11-06 - 2023- 11-13 3:22:35 - 5:20:11 - 2023-11-13 - 2023- 11-20 13:59:58 - 22:03:04 - 2023-11-20 - 2023- 11-27 33:54:30 - 54:01:58 - 2023-11-27 - 2023- 12-04 14:43:45 - 23:42:28 - 2023-12-04 - 2023- 12-11 41:44:50 - 67:11:44 - 2023-12-11 - 2023- 12-18 1:53:55 - 3:08:22 - 2023-12-18 - 2023- 12-26 4:03:33 - 6:54:59 - 2023-12-26 - 2024- 01-01 3:34:10 - 6:04:54 - 2024-01-01 - 2024- 01-08 8:28:37 - 14:26:35 - 2024-01-08 - 2024- 01-16 3:11:14 - 5:11:43 - 2024-01-16 - 2024- 01-23 4:03:05 - 6:05:07 - 2024-01-23 - 2024- 01-29 3:42:43 - 5:34:32 - 2024-01-29 - 2024- 02-07 3:48:35 - 5:43:21 - 2024-02-07 - 2024- 02-16 - - - - AT FULL CHARGE AT DESIGN CAPACITY PERIOD ACTIVE CONNECTED STANDBY ACTIVE CONNECTED STANDBY 2024-02-16 - 2024- 02-19 - - - - 2024-02-19 - 2024- 02-25 3:21:10 - 5:07:58 - 2024-02-25 - 2024- 03-03 3:24:40 - 5:16:14 - 2024-03-03 - 2024- 03-11 3:15:34 - 5:02:11 - 2024-03-11 - 2024- 03-20 3:22:58 - 5:13:38 - 2024-03-20 - 2024- 03-25 3:21:55 - 5:11:52 - 2024-03-25 - 2024- 04-01 - - - - 2024-04-01 - 2024- 04-08 3:03:40 - 4:46:45 - 2024-04-08 - 2024- 04-30 - - - - 2024-04-30 - 2024- 05-08 2:27:01 - 3:49:32 - 2024-05-08 - 2024- 05-14 37:26:17 - 58:57:53 - 2024-05-14 - 2024- 05-26 3:23:25 - 5:35:44 - 2024-05-26 - 2024- 05-29 - - - - 2024-05-29 - 2024- 06-03 2:48:47 - 5:28:10 - 2024-06-03 - 2024- 06-10 1:25:57 - 6:42:55 - 2024-06-10 - 2024- 06-17 3:32:08 - 8:08:47 - 2024-06-17 - 2024- 06-24 3:23:13 - 7:07:18 - 2024-06-24 - 2024- 07-01 1:46:38 - 5:47:01 - 2024-07-01 - 2024- 07-09 2:45:46 - 6:56:13 - 2024-07-09 - 2024- 07-15 - - - - 2024-07-15 - 2024- 07-22 0:15:34 - 5:48:06 - 2024-07-22 - 2024- 07-29 0:44:55 - 4:51:39 - 2024-07-29 - 2024- 08-05 1:08:55 - 5:51:23 - 2024-08-05 - 2024- 08-12 0:43:23 - 4:02:22 - 2024-08-12 - 2024- 08-19 0:35:22 - 3:21:11 - 2024-08-19 - 2024- 08-30 1:03:19 - 2:49:57 - 2024-08-30 - 2024- 09-01 2:45:58 - 5:21:01 - 2024-09-01 - 2024- 09-22 1:30:32 - 2:55:06 - AT FULL CHARGE AT DESIGN CAPACITY PERIOD ACTIVE CONNECTED STANDBY ACTIVE CONNECTED STANDBY 2024-09-22 - 2024- 09-25 8:15:53 - 15:59:04 - 2024-09-25 - 2024- 09-30 1:08:20 - 2:11:43 - 2024-09-30 - 2024- 10-09 87:06:07 - 153:15:31 - 2024-10-09 - 2024- 10-15 2:30:59 - 4:28:25 - 2024-10-15 - 2024- 10-21 3:31:05 - 6:18:14 - 2024-10-21 - 2024- 10-28 2:50:18 - 5:16:47 - 2024-10-28 - 2024- 11-04 1:21:01 - 4:10:53 - 2024-11-04 - 2024- 11-11 1:31:25 - 4:43:06 - 2024-11-11 - 2024- 11-21 2:19:46 - 7:12:47 - 2024-11-21 - 2024- 11-24 1:12:52 - 3:45:39 - 2024-11-24 - 2024- 12-09 0:26:44 - 6:51:56 - 2024-12-09 - 2024- 12-18 0:33:36 - 6:50:04 - 2024-12-18 - 2024- 12-23 0:25:45 - 6:50:09 - 2024-12-23 - 2025- 01-02 0:28:34 - 6:50:09 - 2025-01-02 - 2025- 01-08 0:29:35 - 6:50:09 - 2025-01-08 - 2025- 02-18 0:28:24 - 6:50:09 - 2025-02-18 - 2025- 03-06 - - - - 2025-03-06 - 2025- 03-20 - - - - 2025-03-20 - 2025- 03-25 - - - - 2025-03-25 - 2025- 03-31 - - - - 2025-03-31 - 2025- 04-08 - - - - 2025-04-08 - 2025- 04-22 - - - - 2025-04-22 - 2025- 04-28 - - - - 2025-04-28 - 2025- 05-06 - - - - 2025-05-06 - 2025- 05-13 - - - - 2025-05-13 - 2025- 06-02 - - - - 2025-06-02 - 2025- 06-09 - - - - 2025-06-09 - 2025- 06-18 - - - - AT FULL CHARGE AT DESIGN CAPACITY PERIOD ACTIVE CONNECTED STANDBY ACTIVE CONNECTED STANDBY 2025-06-18 - 2025- 06-22 - - - - 2025-06-22 - 2025- 06-30 - - - - 2025-06-30 - 2025- 07-11 - - - - 2025-07-11 - 2025- 07-15 - - - - 2025-07-15 - 2025- 07-24 - - - - 2025-07-25 - - - - 2025-07-26 - - - - 2025-07-27 - - - - Current estimate of battery life based on all observed drains since OS install Since OS install 904788:46:58 - 904788:46:58 - 我需要有分析过程 我是一个电池卖家 客户7月13日在我这买的电池 7月26日跟我说电池大图标显示100% 但是任务栏小图标显示0% 通过分析这个电池报告 我需要知道怎么帮客户处理这个问题
07-30
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值