PDA용 어플리케이션을 작성할때 배터리량을 체크하는 표시하는 것은 매우 중요하다.PDA자체 전원으로 RF리더기나 바코드리더기등을 구동할 경우, 배터리가 10%이하이면 오작동할 소지가 있기 때문이다.그러나 C#.NET이나 VB.NET은 WinCe나 PocketPC용 배터리상세 API를 지원하지 않기 때문에 C++용 함수를 불러와서 써야 한다.

C#에서 PDA배터리를 체크할려면 아래와 같이 하면된다.

//GetSystemPowerStatusEx을 불러옵니다. (자매품 GetSystemPowerStatusEx2도 있어요)
[DllImport("coredll")]
public static extern uint GetSystemPowerStatusEx(SYSTEM_POWER_STATUS_EX lpSystemPowerStatus, bool fUpdate);

//인자로 쓰일 구조체(클래스) 선언. 아래와 같이 반드시 C++의 구조체와 동일한 형식으로 선언
public class SYSTEM_POWER_STATUS_EX
{
    public byte ACLineStatus;
    public byte BatteryFlag;
    public byte BatteryLifePercent;
    public byte Reserved1;
    public uint BatteryLifeTime;
    public uint BatteryFullLifeTime;
    public byte Reserved2;
    public byte BackupBatteryFlag;
    public byte BackupBatteryLifePercent;
    public byte Reserved3;
    public uint BackupBatteryLifeTime;
    public uint BackupBatteryFullLifeTime;
}

SYSTEM_POWER_STATUS_EX powerStatus = new SYSTEM_POWER_STATUS_EX();

//배터리 잔여 백분율을 얻기
if (GetSystemPowerStatusEx(powerStatus, false) == 1)
{
    MessageBox.Show("배터리 잔여량 : " + powerStatus.BatteryLifePercent + "%");
}

아, PDA에서도 간단히 배터리상태를 체크할 수 있는 기능은 제공된다고 한다.
SystemState(네인스페이스 Microsoft.WindowsMobile.Status)가 그것인데, PowerBattery라는 이름으로 시작하는 4가지 속성이 있다하니, 아래의 MSDN링크를 통해 확인해보길~

(나는 안해봤다능~)
http://msdn2.microsoft.com/en-us/library/microsoft.windowsmobile.status.systemstate_properties.aspx

Google AdSense

'끄적끄적 > Programming' 카테고리의 다른 글

[XNA] XNA 흐름  (0) 2010.05.17
[Oracle] 순위함수 Rank()  (2) 2009.12.21
[.NET] LC.EXE 오류와 해결책  (11) 2009.06.08
[XNA] Game개발과 XNA - XNA란??  (2) 2008.03.03
[.NET] .NET으로 PDA개발시 필수사항들~!!  (5) 2007.10.23

+ Recent posts