DDEAbgleich.ccpage 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <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">
  3. <page name="!PAGE_NAME" display-mode="list" fontsize="medium" gauges-portrait="2" gauges-landscape="4" logfile="DDEAbgleich.log">
  4. <strings>
  5. <string name="!PAGE_NAME">DDE 5 Abgleich</string>
  6. <string name="!JOB#AGR_ABGLEICH_LESEN_WERT"> AGR (Frischluftrate)</string>
  7. <string name="!JOB#LLA_ABGLEICH_LESEN_WERT"> Anhebung Leerlaufdrehzahl [u/min]</string>
  8. </strings>
  9. <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" />
  10. <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" />
  11. <jobs sgbd="D50M57E1" />
  12. <code show_warnings="true">
  13. <![CDATA[
  14. class PageClass
  15. {
  16. // Button deklarieren
  17. private Button buttonAGRserie;
  18. private Button buttonAGRred;
  19. private Button buttonLLA0;
  20. private Button buttonLLA50;
  21. private Button buttonLLA70;
  22. private Button buttonLLA100;
  23. // Ablaufvariable deklarieren und initialisieren
  24. // diese boolsche Variable wird vom Button auf true gesetzt und in der ExecuteJob Methode ausgewertet
  25. // wo dann ggf. der eigentliche Befehl ans Steuergerät ausgeführt wird
  26. private bool set_AGR_serie = false;
  27. private bool set_AGR_red = false;
  28. private bool set_LLA_0 = false;
  29. private bool set_LLA_50 = false;
  30. private bool set_LLA_70 = false;
  31. private bool set_LLA_100 = false;
  32. // Seitenaufbau:
  33. // <display... tags müssen direkt unter <page... stehen und result="RESULT_NAME" (ohne job name) enthalten
  34. // diese werden unterhalb von der Funktion ExecuteJob befüllt
  35. // <job... tags wie normalerweise gibt es nicht
  36. // Es darf nur ein <jobs> tag in dieser form vorhanden sein: <jobs sgbg="sgbdname" />
  37. // Jedenfalls wurde bei meinen Tests die ExecuteJobs Funktion niemals aufgerufen wenn in der ccpage
  38. // jobs im normalen Format enthalten waren. Ob das wirklich so ist oder ich einen anderen Fehler hatte
  39. // muss ich erst noch rausfinden.
  40. public void CreateLayout(ActivityMain activity, JobReader.PageInfo pageInfo, LinearLayout pageLayout)
  41. {
  42. LinearLayout buttonLayout = new LinearLayout(activity);
  43. buttonLayout.Orientation = Orientation.Horizontal;
  44. LinearLayout.LayoutParams buttonLayoutParams = new LinearLayout.LayoutParams(
  45. ViewGroup.LayoutParams.MatchParent,
  46. ViewGroup.LayoutParams.WrapContent);
  47. buttonLayoutParams.Weight = 1;
  48. // Button AGR Serie
  49. buttonAGRserie = new Button(activity);
  50. buttonAGRserie.Text = "AGR Serie";
  51. buttonAGRserie.Click += delegate
  52. {
  53. // button setzt klassenweite variable auf true, diese wird beim durchlauf von ExecuteJob ausgewertet
  54. set_AGR_serie = true;
  55. //// Benachrichtung anzeigen wenn man will
  56. //ActivityMain.ShowNotification(activity, 0, 2,
  57. // "DDE Abgleich",
  58. // "AGR 0");
  59. };
  60. buttonLayout.AddView(buttonAGRserie, buttonLayoutParams);
  61. // Button AGR Reduziert
  62. buttonAGRred = new Button(activity);
  63. buttonAGRred.Text = "AGR min.";
  64. buttonAGRred.Click += delegate
  65. {
  66. // button setzt klassenweite variable auf true, diese wird beim durchlauf von ExecuteJob ausgewertet
  67. set_AGR_red = true;
  68. //// Benachrichtung anzeigen wenn man will
  69. //ActivityMain.ShowNotification(activity, 0, 2,
  70. // "DDE Abgleich",
  71. // "AGR 87");
  72. };
  73. buttonLayout.AddView(buttonAGRred, buttonLayoutParams);
  74. // Button Leerlauf Serie
  75. buttonLLA0 = new Button(activity);
  76. buttonLLA0.Text = "LL +0";
  77. buttonLLA0.Click += delegate
  78. {
  79. // button setzt klassenweite variable auf true, diese wird beim durchlauf von ExecuteJob ausgewertet
  80. set_LLA_0 = true;
  81. //// Benachrichtung anzeigen wenn man will
  82. //ActivityMain.ShowNotification(activity, 0, 2,
  83. // "DDE Abgleich",
  84. // "Leerlaufdrehzahl +0");
  85. };
  86. buttonLayout.AddView(buttonLLA0, buttonLayoutParams);
  87. // Button Leerlauf +50
  88. buttonLLA50 = new Button(activity);
  89. buttonLLA50.Text = "LL +50";
  90. buttonLLA50.Click += delegate
  91. {
  92. // button setzt klassenweite variable auf true, diese wird beim durchlauf von ExecuteJob ausgewertet
  93. set_LLA_50 = true;
  94. //// Benachrichtung anzeigen wenn man will
  95. //ActivityMain.ShowNotification(activity, 0, 2,
  96. // "DDE Abgleich",
  97. // "Leerlaufdrehzahl +50");
  98. };
  99. buttonLayout.AddView(buttonLLA50, buttonLayoutParams);
  100. // Button Leerlauf +70
  101. buttonLLA70 = new Button(activity);
  102. buttonLLA70.Text = "LL +70";
  103. buttonLLA70.Click += delegate
  104. {
  105. // button setzt klassenweite variable auf true, diese wird beim durchlauf von ExecuteJob ausgewertet
  106. set_LLA_70 = true;
  107. //// Benachrichtung anzeigen wenn man will
  108. //ActivityMain.ShowNotification(activity, 0, 2,
  109. // "DDE Abgleich",
  110. // "Leerlaufdrehzahl +70");
  111. };
  112. buttonLayout.AddView(buttonLLA70, buttonLayoutParams);
  113. // Button Leerlauf +100
  114. buttonLLA100 = new Button(activity);
  115. buttonLLA100.Text = "LL +100";
  116. buttonLLA100.Click += delegate
  117. {
  118. // button setzt klassenweite variable auf true, diese wird beim durchlauf von ExecuteJob ausgewertet
  119. set_LLA_100 = true;
  120. //// Benachrichtung anzeigen wenn man will
  121. //ActivityMain.ShowNotification(activity, 0, 2,
  122. // "DDE Abgleich",
  123. // "Leerlaufdrehzahl +100");
  124. };
  125. buttonLayout.AddView(buttonLLA100, buttonLayoutParams);
  126. LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
  127. ViewGroup.LayoutParams.MatchParent,
  128. ViewGroup.LayoutParams.WrapContent);
  129. pageLayout.AddView(buttonLayout, layoutParams);
  130. }
  131. public void DestroyLayout(JobReader.PageInfo pageInfo)
  132. {
  133. buttonAGRserie = null;
  134. buttonAGRred = null;
  135. buttonLLA0 = null;
  136. buttonLLA50 = null;
  137. buttonLLA70 = null;
  138. buttonLLA100 = null;
  139. }
  140. public void ExecuteJob(EdiabasNet ediabas, ref MultiMap<string, EdiabasNet.ResultData> resultDict, bool firstCall)
  141. {
  142. List<Dictionary<string, EdiabasNet.ResultData>> resultSets; // hier werden die job results zwischengespeichert
  143. // unterhalb der/die JOB(s) zur Datenanzeige
  144. ediabas.ArgString = "agr";
  145. ediabas.ArgBinaryStd = null;
  146. ediabas.ResultsRequests = string.Empty;
  147. ediabas.ExecuteJob("ABGLEICH_LESEN");
  148. resultSets = ediabas.ResultSets;
  149. if (resultSets != null && resultSets.Count >= 2)
  150. {
  151. // results der aktuellen Abfrage mit unveränderten result namen übernehmen
  152. EdiabasThread.MergeResultDictionarys(ref resultDict, resultSets[1], "AGR_");
  153. }
  154. ediabas.ArgString = "lla";
  155. ediabas.ArgBinaryStd = null;
  156. ediabas.ResultsRequests = string.Empty;
  157. ediabas.ExecuteJob("ABGLEICH_LESEN");
  158. resultSets = ediabas.ResultSets;
  159. if (resultSets != null && resultSets.Count >= 2)
  160. {
  161. // results der aktuellen Abfrage mit unveränderten result namen übernehmen
  162. EdiabasThread.MergeResultDictionarys(ref resultDict, resultSets[1], "LLA_");
  163. }
  164. // ENDE JOBs
  165. // Button JOBs
  166. if (set_AGR_serie) {
  167. ediabas.ArgString = "agr;0";
  168. ediabas.ArgBinaryStd = null;
  169. ediabas.ResultsRequests = "JOB_STATUS";
  170. ediabas.ExecuteJob("ABGLEICH_VERSTELLEN");
  171. ediabas.ArgString = "agr;0";
  172. ediabas.ArgBinaryStd = null;
  173. ediabas.ResultsRequests = "JOB_STATUS";
  174. ediabas.ExecuteJob("ABGLEICH_PROG");
  175. // JOB RESULT ermitteln (wird derzeit nicht weiter verwendet weil man es anhand der geänderten Daten
  176. // und den blinkenden LEDs im KOMBI eh sofort sieht)
  177. //resultSets = ediabas.ResultSets;
  178. //if (resultSets != null && resultSets.Count >= 2)
  179. //{
  180. // EdiabasThread.MergeResultDictionarys(ref resultDict, resultSets[1]);
  181. //}
  182. // Ablaufvariable wieder zurücksetzen, sonst würde dieser Befehl nun bei jedem weiteren Durchlauf ausgeführt werden...
  183. set_AGR_serie = false;
  184. }
  185. if (set_AGR_red) {
  186. ediabas.ArgString = "agr;87";
  187. ediabas.ArgBinaryStd = null;
  188. ediabas.ResultsRequests = "JOB_STATUS";
  189. ediabas.ExecuteJob("ABGLEICH_VERSTELLEN");
  190. ediabas.ArgString = "agr;87";
  191. ediabas.ArgBinaryStd = null;
  192. ediabas.ResultsRequests = "JOB_STATUS";
  193. ediabas.ExecuteJob("ABGLEICH_PROG");
  194. // JOB RESULT ermitteln (wird derzeit nicht weiter verwendet weil man es anhand der geänderten Daten
  195. // und den blinkenden LEDs im KOMBI eh sofort sieht)
  196. //resultSets = ediabas.ResultSets;
  197. //if (resultSets != null && resultSets.Count >= 2)
  198. //{
  199. // EdiabasThread.MergeResultDictionarys(ref resultDict, resultSets[1]);
  200. //}
  201. // Ablaufvariable wieder zurücksetzen, sonst würde dieser Befehl nun bei jedem weiteren Durchlauf ausgeführt werden...
  202. set_AGR_red = false;
  203. }
  204. if (set_LLA_0) {
  205. ediabas.ArgString = "lla;0";
  206. ediabas.ArgBinaryStd = null;
  207. ediabas.ResultsRequests = "JOB_STATUS";
  208. ediabas.ExecuteJob("ABGLEICH_VERSTELLEN");
  209. ediabas.ArgString = "lla;0";
  210. ediabas.ArgBinaryStd = null;
  211. ediabas.ResultsRequests = "JOB_STATUS";
  212. ediabas.ExecuteJob("ABGLEICH_PROG");
  213. // JOB RESULT ermitteln (wird derzeit nicht weiter verwendet weil man es anhand der geänderten Daten
  214. // und den blinkenden LEDs im KOMBI eh sofort sieht)
  215. //resultSets = ediabas.ResultSets;
  216. //if (resultSets != null && resultSets.Count >= 2)
  217. //{
  218. // EdiabasThread.MergeResultDictionarys(ref resultDict, resultSets[1]);
  219. //}
  220. // Ablaufvariable wieder zurücksetzen, sonst würde dieser Befehl nun bei jedem weiteren Durchlauf ausgeführt werden...
  221. set_LLA_0 = false;
  222. }
  223. if (set_LLA_50) {
  224. ediabas.ArgString = "lla;50";
  225. ediabas.ArgBinaryStd = null;
  226. ediabas.ResultsRequests = "JOB_STATUS";
  227. ediabas.ExecuteJob("ABGLEICH_VERSTELLEN");
  228. ediabas.ArgString = "lla;50";
  229. ediabas.ArgBinaryStd = null;
  230. ediabas.ResultsRequests = "JOB_STATUS";
  231. ediabas.ExecuteJob("ABGLEICH_PROG");
  232. // JOB RESULT ermitteln (wird derzeit nicht weiter verwendet weil man es anhand der geänderten Daten
  233. // und den blinkenden LEDs im KOMBI eh sofort sieht)
  234. //resultSets = ediabas.ResultSets;
  235. //if (resultSets != null && resultSets.Count >= 2)
  236. //{
  237. // EdiabasThread.MergeResultDictionarys(ref resultDict, resultSets[1]);
  238. //}
  239. // Ablaufvariable wieder zurücksetzen, sonst würde dieser Befehl nun bei jedem weiteren Durchlauf ausgeführt werden...
  240. set_LLA_50 = false;
  241. }
  242. if (set_LLA_70) {
  243. ediabas.ArgString = "lla;70";
  244. ediabas.ArgBinaryStd = null;
  245. ediabas.ResultsRequests = "JOB_STATUS";
  246. ediabas.ExecuteJob("ABGLEICH_VERSTELLEN");
  247. ediabas.ArgString = "lla;70";
  248. ediabas.ArgBinaryStd = null;
  249. ediabas.ResultsRequests = "JOB_STATUS";
  250. ediabas.ExecuteJob("ABGLEICH_PROG");
  251. // JOB RESULT ermitteln (wird derzeit nicht weiter verwendet weil man es anhand der geänderten Daten
  252. // und den blinkenden LEDs im KOMBI eh sofort sieht)
  253. //resultSets = ediabas.ResultSets;
  254. //if (resultSets != null && resultSets.Count >= 2)
  255. //{
  256. // EdiabasThread.MergeResultDictionarys(ref resultDict, resultSets[1]);
  257. //}
  258. // Ablaufvariable wieder zurücksetzen, sonst würde dieser Befehl nun bei jedem weiteren Durchlauf ausgeführt werden...
  259. set_LLA_70 = false;
  260. }
  261. if (set_LLA_100) {
  262. ediabas.ArgString = "lla;100";
  263. ediabas.ArgBinaryStd = null;
  264. ediabas.ResultsRequests = "JOB_STATUS";
  265. ediabas.ExecuteJob("ABGLEICH_VERSTELLEN");
  266. ediabas.ArgString = "lla;100";
  267. ediabas.ArgBinaryStd = null;
  268. ediabas.ResultsRequests = "JOB_STATUS";
  269. ediabas.ExecuteJob("ABGLEICH_PROG");
  270. // JOB RESULT ermitteln (wird derzeit nicht weiter verwendet weil man es anhand der geänderten Daten
  271. // und den blinkenden LEDs im KOMBI eh sofort sieht)
  272. //resultSets = ediabas.ResultSets;
  273. //if (resultSets != null && resultSets.Count >= 2)
  274. //{
  275. // EdiabasThread.MergeResultDictionarys(ref resultDict, resultSets[1]);
  276. //}
  277. // Ablaufvariable wieder zurücksetzen, sonst würde dieser Befehl nun bei jedem weiteren Durchlauf ausgeführt werden...
  278. set_LLA_100 = false;
  279. }
  280. }
  281. }
  282. ]]>
  283. </code>
  284. </page>
  285. </fragment>