Acer 5830TG 電池電量顯示不正確


http://wp.me/ph3BR-Zt

最近發現, 每天開電腦的時候, AC 電源沒有打開以前, 昨日明明都是充電中使用, 電池應該都是 100% 充滿然後關機下班的, 但是最近都看到開機後顯示電量就只剩 40% 多, 一旦打開電源充電, 不到3分鐘, 它就飆到差不多 60% 左右.

剛開始以為錯覺, 今天再來確認, 確實這樣, 那就看看是不是電池電量顯示出問題, 還是電池真的有問題. 如果電池那麼容易壞, 應該又是中獎買到機王了.

2013-10-14

11:09, 電池充到 100%, 拔出AC電源, 用電池供電, 正常使用

13:14, 中午飯回來, 電池掉到6%, 顯示只剩8分鐘, 那就繼續等待看看

13:30, 還是顯示剩6%, 只剩8或9分鐘不等, 那就繼續等待看看

.

.

14: 04 還是顯示剩6%, 只剩8或9分鐘不等, 那就繼續等待看看

有了以上簡單的記錄資料, 足以證明電池還沒有 [完全損壞], 只是數據顯示出了問題, 或校正的資料跑掉了

這是ACER 大陸的一份資料, 說明如何校正這個顯示的, 還沒有試驗
簡單來說就是關機充滿電後, WINDOWS 開機按F8 進入安全模式, 然後以電池運作, 直到自動關機為止….

nEO_IMG_acer_cal_bat

.

.

.

既然用人家的工具可以看到電池電量資料

所以GOOGLE了一下, 抄了一段 C# 的CODE (csapps.blogspot.nl/2008/07/battery-status-monitor.html), 改了一下, 試驗了讀取電池電量資訊的工作.

VISUAL STUDIO 2012 C#, WIN7 64 BIT 編譯的

運行的樣子就下面那個

BatterMonitor_in_action1

.

.

寫碼時要注意的事項及 Form1 的排版

BatterMonitor_Csharp_form1_design

BatterMonitor_Csharp_timer_setup

.

.

.

俺的源碼, 簡化很多, 懶得提供圖片, 所以那個 PictureBox1 是空包彈, 沒作用的

喜歡的話可以屏蔽掉


// code example and idea by csapps.blogspot.nl/2008/07/battery-status-monitor.html
//
// heavy modified code by xiaolaba
// 2013-oct-15
//
// no images source, so no effect and pictureBox1 has nothing to display
// Visual Studio 2012 C# complied, success.

// ensure to enable timer to run
//            // timer1
//            //
//            this.timer1.Enabled = true;
//            this.timer1.Interval = 1000;  //1000ms = 1sec
//            this.timer1.Tick += new System.EventHandler(this.timer1_Tick);

using System;
using System.Collections.Generic;
using System.ComponentModel;

using System.Drawing;
using System.Text;
using System.Windows.Forms;

using System.Diagnostics;

namespace BatteryMonitor
{
public partial class Form1 : Form
{
PowerStatus power = SystemInformation.PowerStatus;

int count = 0;

public Form1()
{
InitializeComponent();
}

private void RefreshStatus()
{
int powerPercent = (int)(power.BatteryLifePercent * 100);
float secondsRemaining = power.BatteryLifePercent;

count = count + 1;

ChargeRemaining.Text = "Battery " + (secondsRemaining * 100).ToString() + "% available.";
BatteryStatus.Text = "BatteryChargeStatus = " + power.BatteryChargeStatus.ToString();

if (powerPercent <= 100) BatteryIndicator.Value = powerPercent;
else BatteryIndicator.Value = 0;

switch (power.PowerLineStatus)
{
case PowerLineStatus.Online:
pictureBox1.ImageLocation = "images/winamp.png"; //是空包彈, 沒作用的, 喜歡的話可以屏蔽掉
groupBox1.Text = "AC power supply, counter = " + count ;
break;

case PowerLineStatus.Offline:
pictureBox1.ImageLocation = "images/oil.png";  //是空包彈, 沒作用的, 喜歡的話可以屏蔽掉
groupBox1.Text = "Running On Battery, counter = " + count ;
break;

case PowerLineStatus.Unknown:
break;
}

}

private void timer1_Tick(object sender, EventArgs e)
{
RefreshStatus();
}

private void Form1_Load(object sender, EventArgs e)
{
RefreshStatus();
timer1.Enabled = true;
}
}
}

.
.

REF:

Idea and template obtained for this demo

http://csapps.blogspot.nl/2008/07/battery-status-monitor.html

tutorial of how to use GIT to push this demo code to googlecode

http://yatinglo.wordpress.com/2012/03/15/git-google-code%E5%AE%89%E8%A3%9D%E8%A8%AD%E5%AE%9A/

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s