Browse Source

DDEAbgleich.ccpage hinzugefügt

FloKra 4 years ago
parent
commit
9dc71e9436
3 changed files with 381 additions and 1 deletions
  1. 349 0
      E46 M57N/DDEAbgleich.ccpage
  2. 30 0
      E46 M57N/DDEAbgleich.txt
  3. 2 1
      E46 M57N/Pages.ccpages

+ 349 - 0
E46 M57N/DDEAbgleich.ccpage

@@ -0,0 +1,349 @@
+<?xml version="1.0" encoding="utf-8"?>
+<fragment xmlns="http://www.holeschak.de/BmwDeepObd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.holeschak.de/BmwDeepObd BmwDeepObd.xsd">
+  <page name="!PAGE_NAME" display-mode="list" fontsize="medium" gauges-portrait="2" gauges-landscape="4" logfile="DDEAbgleich.log">
+    <strings>
+      <string name="!PAGE_NAME">DDE 5 Abgleich</string>
+      <string name="!JOB#AGR_ABGLEICH_LESEN_WERT"> AGR (Frischluftrate)</string>
+      <string name="!JOB#LLA_ABGLEICH_LESEN_WERT"> Anhebung Leerlaufdrehzahl [u/min]</string>
+    </strings>
+    <display name="!JOB#AGR_ABGLEICH_LESEN_WERT" result="AGR_ABGLEICH_LESEN_WERT" format="L" display-order="0" grid-type="text" min-value="0" max-value="100" log_tag="AGR" />
+    <display name="!JOB#LLA_ABGLEICH_LESEN_WERT" result="LLA_ABGLEICH_LESEN_WERT" format="L" display-order="0" grid-type="text" min-value="0" max-value="100" log_tag="LLA" />
+    <jobs sgbd="D50M57E1" />
+    <code show_warnings="true">
+    <![CDATA[
+    class PageClass
+    {
+        // Button deklarieren
+        private Button buttonAGRserie;
+        private Button buttonAGRred;
+        private Button buttonLLA0;
+        private Button buttonLLA50;
+        private Button buttonLLA70;
+        private Button buttonLLA100;
+        
+        // Ablaufvariable deklarieren und initialisieren
+        // diese boolsche Variable wird vom Button auf true gesetzt und in der ExecuteJob Methode ausgewertet
+        // wo dann ggf. der eigentliche Befehl ans Steuergerät ausgeführt wird
+        private bool set_AGR_serie = false;
+        private bool set_AGR_red = false;
+        private bool set_LLA_0 = false;
+        private bool set_LLA_50 = false;
+        private bool set_LLA_70 = false;
+        private bool set_LLA_100 = false;
+        
+        // Seitenaufbau: 
+        // <display... tags müssen direkt unter <page... stehen und result="RESULT_NAME" (ohne job name) enthalten
+        // diese werden unterhalb von der Funktion ExecuteJob befüllt
+        // <job... tags wie normalerweise gibt es nicht
+        // Es darf nur ein <jobs> tag in dieser form vorhanden sein: <jobs sgbg="sgbdname" />
+        // Jedenfalls wurde bei meinen Tests die ExecuteJobs Funktion niemals aufgerufen wenn in der ccpage 
+        // jobs im normalen Format enthalten waren. Ob das wirklich so ist oder ich einen anderen Fehler hatte 
+        // muss ich erst noch rausfinden. 
+        
+        public void CreateLayout(ActivityMain activity, JobReader.PageInfo pageInfo, LinearLayout pageLayout)
+        {
+            LinearLayout buttonLayout = new LinearLayout(activity);
+            buttonLayout.Orientation = Orientation.Horizontal;
+		
+            LinearLayout.LayoutParams buttonLayoutParams = new LinearLayout.LayoutParams(
+                ViewGroup.LayoutParams.MatchParent,
+                ViewGroup.LayoutParams.WrapContent);
+            buttonLayoutParams.Weight = 1;
+			
+			
+			// Button AGR Serie
+            buttonAGRserie = new Button(activity);
+            buttonAGRserie.Text = "AGR Serie";
+            buttonAGRserie.Click += delegate
+            {
+                // button setzt klassenweite variable auf true, diese wird beim durchlauf von ExecuteJob ausgewertet
+                set_AGR_serie = true;
+                
+                //// Benachrichtung anzeigen wenn man will
+                //ActivityMain.ShowNotification(activity, 0, 2,
+                //    "DDE Abgleich",
+                //    "AGR 0");
+            };
+            buttonLayout.AddView(buttonAGRserie, buttonLayoutParams);
+			
+			
+			// Button AGR Reduziert
+            buttonAGRred = new Button(activity);
+            buttonAGRred.Text = "AGR min.";
+            buttonAGRred.Click += delegate
+            {
+                // button setzt klassenweite variable auf true, diese wird beim durchlauf von ExecuteJob ausgewertet
+                set_AGR_red = true;
+                
+                //// Benachrichtung anzeigen wenn man will
+                //ActivityMain.ShowNotification(activity, 0, 2,
+                //    "DDE Abgleich",
+                //    "AGR 87");
+            };
+            buttonLayout.AddView(buttonAGRred, buttonLayoutParams);
+			
+			
+			// Button Leerlauf Serie
+            buttonLLA0 = new Button(activity);
+            buttonLLA0.Text = "LL +0";
+            buttonLLA0.Click += delegate
+            {
+                // button setzt klassenweite variable auf true, diese wird beim durchlauf von ExecuteJob ausgewertet
+                set_LLA_0 = true;
+                
+                //// Benachrichtung anzeigen wenn man will
+				//ActivityMain.ShowNotification(activity, 0, 2,
+				//    "DDE Abgleich",
+                //    "Leerlaufdrehzahl +0");
+            };
+            buttonLayout.AddView(buttonLLA0, buttonLayoutParams);
+			
+			
+			// Button Leerlauf +50
+            buttonLLA50 = new Button(activity);
+            buttonLLA50.Text = "LL +50";
+            buttonLLA50.Click += delegate
+            {
+                // button setzt klassenweite variable auf true, diese wird beim durchlauf von ExecuteJob ausgewertet
+                set_LLA_50 = true;
+                
+                //// Benachrichtung anzeigen wenn man will
+                //ActivityMain.ShowNotification(activity, 0, 2,
+                //    "DDE Abgleich",
+                //    "Leerlaufdrehzahl +50");
+            };
+            buttonLayout.AddView(buttonLLA50, buttonLayoutParams);
+			
+			
+			// Button Leerlauf +70
+            buttonLLA70 = new Button(activity);
+            buttonLLA70.Text = "LL +70";
+            buttonLLA70.Click += delegate
+            {
+                // button setzt klassenweite variable auf true, diese wird beim durchlauf von ExecuteJob ausgewertet
+                set_LLA_70 = true;
+                
+                //// Benachrichtung anzeigen wenn man will
+                //ActivityMain.ShowNotification(activity, 0, 2,
+                //    "DDE Abgleich",
+                //    "Leerlaufdrehzahl +70");
+            };
+            buttonLayout.AddView(buttonLLA70, buttonLayoutParams);
+			
+			
+			// Button Leerlauf +100
+            buttonLLA100 = new Button(activity);
+            buttonLLA100.Text = "LL +100";
+            buttonLLA100.Click += delegate
+            {
+                // button setzt klassenweite variable auf true, diese wird beim durchlauf von ExecuteJob ausgewertet
+                set_LLA_100 = true;
+                
+                //// Benachrichtung anzeigen wenn man will
+                //ActivityMain.ShowNotification(activity, 0, 2,
+                //    "DDE Abgleich",
+                //    "Leerlaufdrehzahl +100");
+            };
+            buttonLayout.AddView(buttonLLA100, buttonLayoutParams);
+			
+			
+		
+            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
+                ViewGroup.LayoutParams.MatchParent,
+                ViewGroup.LayoutParams.WrapContent);
+            pageLayout.AddView(buttonLayout, layoutParams);
+        }
+		
+        public void DestroyLayout(JobReader.PageInfo pageInfo)
+        {
+            buttonAGRserie = null;
+            buttonAGRred = null;
+            buttonLLA0 = null;
+            buttonLLA50 = null;
+            buttonLLA70 = null;
+            buttonLLA100 = null;
+        }
+
+        public void ExecuteJob(EdiabasNet ediabas, ref MultiMap<string, EdiabasNet.ResultData> resultDict, bool firstCall)
+        {
+            List<Dictionary<string, EdiabasNet.ResultData>> resultSets;  // hier werden die job results zwischengespeichert
+            
+            // unterhalb der/die JOB(s) zur Datenanzeige
+			
+			
+            ediabas.ArgString = "agr";
+            ediabas.ArgBinaryStd = null;
+            ediabas.ResultsRequests = string.Empty;
+            ediabas.ExecuteJob("ABGLEICH_LESEN");
+            
+            resultSets = ediabas.ResultSets;
+            if (resultSets != null && resultSets.Count >= 2)
+            {
+                // results der aktuellen Abfrage mit unveränderten result namen übernehmen
+                EdiabasThread.MergeResultDictionarys(ref resultDict, resultSets[1], "AGR_");
+            }
+			
+			
+			ediabas.ArgString = "lla";
+            ediabas.ArgBinaryStd = null;
+            ediabas.ResultsRequests = string.Empty;
+            ediabas.ExecuteJob("ABGLEICH_LESEN");
+            
+            resultSets = ediabas.ResultSets;
+            if (resultSets != null && resultSets.Count >= 2)
+            {
+                // results der aktuellen Abfrage mit unveränderten result namen übernehmen
+                EdiabasThread.MergeResultDictionarys(ref resultDict, resultSets[1], "LLA_");
+            }
+						
+            
+            // ENDE JOBs
+			
+			
+            
+            // Button JOBs
+			
+			if (set_AGR_serie) {
+                ediabas.ArgString = "agr;0";
+                ediabas.ArgBinaryStd = null;
+                ediabas.ResultsRequests = "JOB_STATUS";
+                ediabas.ExecuteJob("ABGLEICH_VERSTELLEN");
+				
+				ediabas.ArgString = "agr;0";
+                ediabas.ArgBinaryStd = null;
+                ediabas.ResultsRequests = "JOB_STATUS";
+                ediabas.ExecuteJob("ABGLEICH_PROG");
+                
+                // JOB RESULT ermitteln (wird derzeit nicht weiter verwendet weil man es anhand der geänderten Daten 
+                // und den blinkenden LEDs im KOMBI eh sofort sieht)
+                //resultSets = ediabas.ResultSets;
+                //if (resultSets != null && resultSets.Count >= 2)
+                //{
+                //  EdiabasThread.MergeResultDictionarys(ref resultDict, resultSets[1]);
+                //}
+                
+                // Ablaufvariable wieder zurücksetzen, sonst würde dieser Befehl nun bei jedem weiteren Durchlauf ausgeführt werden...
+                set_AGR_serie = false;
+            }
+			
+			if (set_AGR_red) {
+                ediabas.ArgString = "agr;87";
+                ediabas.ArgBinaryStd = null;
+                ediabas.ResultsRequests = "JOB_STATUS";
+                ediabas.ExecuteJob("ABGLEICH_VERSTELLEN");
+				
+				ediabas.ArgString = "agr;87";
+                ediabas.ArgBinaryStd = null;
+                ediabas.ResultsRequests = "JOB_STATUS";
+                ediabas.ExecuteJob("ABGLEICH_PROG");
+                
+                // JOB RESULT ermitteln (wird derzeit nicht weiter verwendet weil man es anhand der geänderten Daten 
+                // und den blinkenden LEDs im KOMBI eh sofort sieht)
+                //resultSets = ediabas.ResultSets;
+                //if (resultSets != null && resultSets.Count >= 2)
+                //{
+                //  EdiabasThread.MergeResultDictionarys(ref resultDict, resultSets[1]);
+                //}
+                
+                // Ablaufvariable wieder zurücksetzen, sonst würde dieser Befehl nun bei jedem weiteren Durchlauf ausgeführt werden...
+                set_AGR_red = false;
+            }
+			
+            if (set_LLA_0) {
+                ediabas.ArgString = "lla;0";
+                ediabas.ArgBinaryStd = null;
+                ediabas.ResultsRequests = "JOB_STATUS";
+                ediabas.ExecuteJob("ABGLEICH_VERSTELLEN");
+				
+				ediabas.ArgString = "lla;0";
+                ediabas.ArgBinaryStd = null;
+                ediabas.ResultsRequests = "JOB_STATUS";
+                ediabas.ExecuteJob("ABGLEICH_PROG");
+                
+                // JOB RESULT ermitteln (wird derzeit nicht weiter verwendet weil man es anhand der geänderten Daten 
+                // und den blinkenden LEDs im KOMBI eh sofort sieht)
+                //resultSets = ediabas.ResultSets;
+                //if (resultSets != null && resultSets.Count >= 2)
+                //{
+                //  EdiabasThread.MergeResultDictionarys(ref resultDict, resultSets[1]);
+                //}
+                
+                // Ablaufvariable wieder zurücksetzen, sonst würde dieser Befehl nun bei jedem weiteren Durchlauf ausgeführt werden...
+                set_LLA_0 = false;
+            }
+			
+			if (set_LLA_50) {
+                ediabas.ArgString = "lla;50";
+                ediabas.ArgBinaryStd = null;
+                ediabas.ResultsRequests = "JOB_STATUS";
+                ediabas.ExecuteJob("ABGLEICH_VERSTELLEN");
+				
+				ediabas.ArgString = "lla;50";
+                ediabas.ArgBinaryStd = null;
+                ediabas.ResultsRequests = "JOB_STATUS";
+                ediabas.ExecuteJob("ABGLEICH_PROG");
+                
+                // JOB RESULT ermitteln (wird derzeit nicht weiter verwendet weil man es anhand der geänderten Daten 
+                // und den blinkenden LEDs im KOMBI eh sofort sieht)
+                //resultSets = ediabas.ResultSets;
+                //if (resultSets != null && resultSets.Count >= 2)
+                //{
+                //  EdiabasThread.MergeResultDictionarys(ref resultDict, resultSets[1]);
+                //}
+                
+                // Ablaufvariable wieder zurücksetzen, sonst würde dieser Befehl nun bei jedem weiteren Durchlauf ausgeführt werden...
+                set_LLA_50 = false;
+            }
+			
+			if (set_LLA_70) {
+                ediabas.ArgString = "lla;70";
+                ediabas.ArgBinaryStd = null;
+                ediabas.ResultsRequests = "JOB_STATUS";
+                ediabas.ExecuteJob("ABGLEICH_VERSTELLEN");
+				
+				ediabas.ArgString = "lla;70";
+                ediabas.ArgBinaryStd = null;
+                ediabas.ResultsRequests = "JOB_STATUS";
+                ediabas.ExecuteJob("ABGLEICH_PROG");
+                
+                // JOB RESULT ermitteln (wird derzeit nicht weiter verwendet weil man es anhand der geänderten Daten 
+                // und den blinkenden LEDs im KOMBI eh sofort sieht)
+                //resultSets = ediabas.ResultSets;
+                //if (resultSets != null && resultSets.Count >= 2)
+                //{
+                //  EdiabasThread.MergeResultDictionarys(ref resultDict, resultSets[1]);
+                //}
+                
+                // Ablaufvariable wieder zurücksetzen, sonst würde dieser Befehl nun bei jedem weiteren Durchlauf ausgeführt werden...
+                set_LLA_70 = false;
+            }
+			
+			if (set_LLA_100) {
+                ediabas.ArgString = "lla;100";
+                ediabas.ArgBinaryStd = null;
+                ediabas.ResultsRequests = "JOB_STATUS";
+                ediabas.ExecuteJob("ABGLEICH_VERSTELLEN");
+				
+				ediabas.ArgString = "lla;100";
+                ediabas.ArgBinaryStd = null;
+                ediabas.ResultsRequests = "JOB_STATUS";
+                ediabas.ExecuteJob("ABGLEICH_PROG");
+                
+                // JOB RESULT ermitteln (wird derzeit nicht weiter verwendet weil man es anhand der geänderten Daten 
+                // und den blinkenden LEDs im KOMBI eh sofort sieht)
+                //resultSets = ediabas.ResultSets;
+                //if (resultSets != null && resultSets.Count >= 2)
+                //{
+                //  EdiabasThread.MergeResultDictionarys(ref resultDict, resultSets[1]);
+                //}
+                
+                // Ablaufvariable wieder zurücksetzen, sonst würde dieser Befehl nun bei jedem weiteren Durchlauf ausgeführt werden...
+                set_LLA_100 = false;
+            }
+			
+        }
+    }
+    ]]>
+    </code>
+  </page>
+</fragment>

+ 30 - 0
E46 M57N/DDEAbgleich.txt

@@ -0,0 +1,30 @@
+
+
+AGR Frischluftrate:
+Job: ABGLEICH_LESEN
+Arg: agr
+--> ABGLEICH_LESEN_WERT: R: 87
+
+
+Leerlaufdrehzahl-Anhebung
+Job: ABGLEICH_LESEN
+Arg: lla
+--> ABGLEICH_LESEN_WERT: R: 50
+
+
+Programmieren:
+zuerst: 
+Job: ABGLEICH_VERSTELLEN
+Arg: agr;87
+
+danach: 
+Job: ABGLEICH_PROG
+Arg: agr;87
+
+zuerst: 
+Job: ABGLEICH_VERSTELLEN
+Arg: lla;50
+
+danach: 
+Job: ABGLEICH_PROG
+Arg: lla;50

+ 2 - 1
E46 M57N/Pages.ccpages

@@ -6,12 +6,13 @@
     <include filename="Laufunruhe.ccpage" />
     <include filename="RPA_DSC_MK60.ccpage" />
     <include filename="DSC_MK60.ccpage" />
-	<include filename="LWS5_1B.ccpage" />
+	  <include filename="LWS5_1B.ccpage" />
     <include filename="KOMBI46R.ccpage" />
     <include filename="KOMBI_SIA.ccpage" />
     <include filename="LSZ_2.ccpage" />
     <include filename="PDCACT.ccpage" />
     <include filename="IHKA46_3.ccpage" />
+    <include filename="DDEAbgleich.ccpage" />
     <include filename="Errors.ccpage" />
   </pages>
 </fragment>