AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein WinCE Batteriestatus in Delphi VCL Anwendung (über RDP)

WinCE Batteriestatus in Delphi VCL Anwendung (über RDP)

Ein Thema von Towmuz · begonnen am 21. Sep 2016 · letzter Beitrag vom 26. Sep 2016
Antwort Antwort
Seite 2 von 2     12
Towmuz

Registriert seit: 21. Sep 2016
Ort: Minden
127 Beiträge
 
Delphi 10.1 Berlin Professional
 
#11

AW: WinCE Batteriestatus in Delphi VCL Anwendung (über RDP)

  Alt 26. Sep 2016, 10:53
So hab ichs nun verbaut, vieleicht brauchts mal wer...

Für die Mini-Anwendung auf dem Handscanner mit Windows CE, wurden SharpDevelop(sone Art freies VisualStudio) und das CompactFramework verwendet. SharpDevelop V3.2 für .Net 3.5 und CompactFramework 3.5.
SharpDevelop 3.2 ist wohl die letzte Version, die das CompactFramework mit NET 3.5 unterstützt.

Generelle Funktionsweise CE Anwendung C#, schreibt jede Minute den Batteriestatus in eine Ini.
Code:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;
using System.Threading;

namespace JZPW1310_Battery
{
   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;
   }
   
   public partial class MainForm : Form
   {      
      [DllImport("coredll")]
      private static extern uint GetSystemPowerStatusEx(SYSTEM_POWER_STATUS_EX lpSystemPowerStatus, bool fUpdate);
      
      public static void Main(string[] args)
      {
         System.Threading.Timer t = new System.Threading.Timer(TimerCb, null, 0, 60000);
         Console.ReadLine();
      }   
      
      private static void TimerCb(Object o)
      {
         try {
            SYSTEM_POWER_STATUS_EX status = new SYSTEM_POWER_STATUS_EX();         
            string dir = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
            if (GetSystemPowerStatusEx(status, false) == 1)
            {                        
//               Console.WriteLine("BatteryLifePercent=" + status.BatteryLifePercent.ToString());
               StreamWriter sw = new StreamWriter(dir + @"\battery.status");            
               sw.WriteLine("[BatteryStatus]");
               sw.WriteLine("BatteryLifePercent=" + status.BatteryLifePercent.ToString());
               sw.Close();
               GC.Collect();
            }   
         } catch (Exception ex) {
//            Console.WriteLine(ex.Message + ' : ' + ex.StackTrace);
         }         
      }
   }
}
In WinCE RDP-Verbindungseigenschaften noch die Ordnerfreigabe definieren und auf dem RD-System (WinServ2003 in dem Fall oder sonst irgendnem Win) in der DelphiAnwendung über einen Timer die Ini auslesen.
Delphi-Quellcode:
uses IniFiles;

procedure Tfrm_bla_Programm.tmr1Timer(Sender: TObject);
var
  ini: TIniFile;
  percent: Integer;
  caption: string;
begin
  try
    begin
      ini := TIniFile.Create('\\tsclient\Files\Temp\battery.status');
      caption := ini.ReadString('BatteryStatus', 'BatteryLifePercent', '') + ' %';
      percent := StrToInt(ini.ReadString('BatteryStatus', 'BatteryLifePercent', ''));
      pb1.Position := percent;
      lbl1.Caption := caption;
      ini.Free;
    end;
  except on e: exception do
    begin
      pb1.Position := 100;
      lbl1.Caption := 'ERROR';
    end;
  end;
end;
Fals das hier zu Detail- oder Erleuterungsarm erscheint, schreib ichs gern ausführlicher bzw. aufgeräumter, habe noch nicht viel Programmierforenerfahrung .
Thomas
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz