123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- <?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="RPA" display-mode="list" fontsize="medium" gauges-portrait="2" gauges-landscape="4" logfile="RPA_DSC_MK60.log">
- <strings>
- <string name="RPA">RPA</string>
- <string name="!JOB#STATUS_LESEN_RPA#WARNUNG_AKTUELL"> RPA current warning</string>
- <string name="!JOB#STATUS_LESEN_RPA#STATUS_KM_RESET"> kilometers last initialisation</string>
- <string name="!JOB#STATUS_LESEN_RPA#STATUS_KM_WARNUNG"> kilometers last warning</string>
- </strings>
- <strings lang="de">
- <string name="RPA">RPA</string>
- <string name="!JOB#STATUS_LESEN_RPA#WARNUNG_AKTUELL"> RPA Warnung aktuell</string>
- <string name="!JOB#STATUS_LESEN_RPA#STATUS_KM_RESET"> Kilometerstand letzte Initialisierung</string>
- <string name="!JOB#STATUS_LESEN_RPA#STATUS_KM_WARNUNG"> Kilometerstand letzte Warnung</string>
- </strings>
- <display name="!JOB#STATUS_LESEN_RPA#WARNUNG_AKTUELL" result="WARNUNG_AKTUELL" format="" display-order="0" grid-type="text" min-value="0" max-value="100" log_tag="WARNUNG_AKTUELL" />
- <display name="!JOB#STATUS_LESEN_RPA#STATUS_KM_RESET" result="STATUS_KM_RESET" format="" display-order="0" grid-type="text" min-value="0" max-value="100" log_tag="STATUS_KM_RESET" />
- <display name="!JOB#STATUS_LESEN_RPA#STATUS_KM_WARNUNG" result="STATUS_KM_WARNUNG" format="" display-order="0" grid-type="text" min-value="0" max-value="100" log_tag="STATUS_KM_WARNUNG" />
- <jobs sgbd="dsc_mk60" />
- <code show_warnings="true">
- <![CDATA[
- class PageClass
- {
- // Button deklarieren
- private Button buttonRPAReset;
-
- // 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 doRPAReset = 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;
- buttonRPAReset = new Button(activity);
- buttonRPAReset.Text = "RPA RESET";
- buttonRPAReset.Click += delegate
- {
- // button setzt klassenweite variable auf true, diese wird beim durchlauf von ExecuteJob ausgewertet
- doRPAReset = true;
-
- // Benachrichtung anzeigen wenn man will
- ActivityMain.ShowNotification(activity, 0, 2,
- "RPA RESET",
- "Reifen Pannen Anzeige am DSC MK60 wird zurückgesetzt...");
- };
- buttonLayout.AddView(buttonRPAReset, buttonLayoutParams);
- LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
- ViewGroup.LayoutParams.MatchParent,
- ViewGroup.LayoutParams.WrapContent);
- pageLayout.AddView(buttonLayout, layoutParams);
- }
- public void DestroyLayout(JobReader.PageInfo pageInfo)
- {
- buttonRPAReset = null;
- }
-
- public void UpdateLayout(JobReader.PageInfo pageInfo, bool pageValid, bool threadActive)
- {
- if ((buttonRPAReset == null))
- {
- return;
- }
- }
- 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 = string.Empty;
- ediabas.ArgBinaryStd = null;
- ediabas.ResultsRequests = string.Empty;
-
- ediabas.ExecuteJob("STATUS_LESEN_RPA");
-
- 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]);
- }
-
- // ENDE JOBs
-
- // Button JOB - wenn der RPA RESET button kürzlich betätigt wurde wird dieser code block ausgeführt
- if (doRPAReset) {
- ediabas.ArgString = string.Empty;
- ediabas.ArgBinaryStd = null;
- ediabas.ResultsRequests = "JOB_STATUS";
-
- ediabas.ExecuteJob("RPA_RESET");
-
- // 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...
- doRPAReset = false;
- }
- }
- }
- ]]>
- </code>
- </page>
- </fragment>
|