|
|
 |
 |
 |
 |
|
App: Per GETVALUE mehrere Werte auf einmal abfragen
|
| Verfasser |
Nachricht |
Gueven
Super Moderator
     
Beiträge: 4.361
Registriert seit: Dec 2008
|
RE: App: Per GETVALUE mehrere Werte auf einmal abfragen
Hatte ich schonmal beschrieben: erzeuge ein Timer-Objekt und löse dieses mit einer Verzögerung von 50ms aus, sobald das Event ausgelöst wird. Innerhalb des Events legst Du die empfangenen Werte in eine globale Variable und lagerst die gesamte Bearbeitung in den Timer aus. Den Timer deaktivierst Du gleich beim ersten Aufrufen wieder, sodass es nur einmal durchläuft. Das ist die simpelste Form, eine Entkopplung durchzuführen.
Mein CarPC: CES 4 - Chameleon, Jetaway 1500 Mhz,
1024 MB RAM, 160 GB Festplatte, GPS-Receiver, OBD-
Diag4000, VDO Lenkradfernbedienung, iBus-Anbindung, 7"
transreflektiv Touchdisplay
|
|
| 10-04-2011 10:48 AM |
|
Gueven
Super Moderator
     
Beiträge: 4.361
Registriert seit: Dec 2008
|
RE: App: Per GETVALUE mehrere Werte auf einmal abfragen
Jetzt reden wir wohl aneinander vorbei..?
Also nochmal zusammengefasst: eine Rückkopplung und dadurch "Stockern" von CES kann nur dann stattfinden, wenn zum Zeitpunkt der Kommunikation eine Verzögerung auf der anderen Seite eintritt. Wenn also zum Zeitpunkt des Auslösens des DataArrival-Events Deine App ausgelastet ist, kann sich das auf CES auswirken. Dein Event wird aber nur dann ausgelöst, wenn Du unmittelbar davor eine Anfrage an CES gesendet hast - hier kannst Du also selber reagieren und sicherstellen, dass Du parallel zu dieser Anfrage nicht andere, prozesslastige Aufgaben durchführst.
Und nun zurĂĽck zu Deiner letzten Aussage: bedeutet dass, dass CES stockert, ohne dass Du ĂĽber die IPC mit CES sprichst?
Mein CarPC: CES 4 - Chameleon, Jetaway 1500 Mhz,
1024 MB RAM, 160 GB Festplatte, GPS-Receiver, OBD-
Diag4000, VDO Lenkradfernbedienung, iBus-Anbindung, 7"
transreflektiv Touchdisplay
|
|
| 10-04-2011 01:10 PM |
|
Gueven
Super Moderator
     
Beiträge: 4.361
Registriert seit: Dec 2008
|
RE: App: Per GETVALUE mehrere Werte auf einmal abfragen
Zitat:Die restliche App lahmzulegen bis die Antwort von CES eintrifft finde ich nicht wirklich gut
Also man kann die Sache auch gravierend auslegen, obwohl es so nicht ist  CES antwortet unmittelbar nach absenden der Anfrage - wir reden hier von Millisekunden. Wie Du deine App-Codestruktur aufbaust, kann ich nicht feststellen, aber ein Programm wird so oder so von oben nach unten abgearbeitet. Wenn Du zur Zeit sowieso nicht mit Threads arbeitest, hast Du nur einen Prozess, welcher abgearbeitet wird. Der Fehler hier wäre, wenn Du nun eine Funktion oder einen Prozess von oben nach unten mit prozesslastigen Aktivitäten so gestaltest, dass irgendwo mittendrinnen die IPC-Schnittstelle abgefragt wird. Das würde bedeuten, dass nach Erhalt der CES-Werte erstmal zig Dinge in Deinem Prozess abgearbeitet werden müssen, bevor CES vom Thread wieder gelöst wird - und genau das verursacht einen Hänger. Das ist der Nachteil an einer synchronen Kommunkationsbasis, wenn sie nicht sauber genutzt wird. Eine Asynchrone Kommunikation kommt hier gezielt nicht zum Einsatz. Wie Du nun die synchrone Verarbeitung "entkoppelst" (also die liefernde Applikation gleich wieder "lös lässt", sobald die Werte übertragen wurden) habe ich Dir ja bereits mit dem Timer sehr simpel als Beispiel genannt.
Hin oder her: die IPC-Schnittstelle von CES4 hat eine jahrelange Entwicklungsreife hinter sich und aktuell werden ein dutzend werkseitiger Apps und ein weiteres Dutzend Business-Apps über diese Schnittstelle fehlerfrei betrieben. Ich schließe nie aus, dass irgendwo ein Fehler schlummert, aber bei der IPC-Schnittstelle bin ich mir zu 99,99% sicher, dass diese einwandfrei läuft.
Aber da ich das entwickeln individueller Anwender-Apps unterstützen möchte, versuche ich Dir hier zu helfen und die Ursache zu finden. Ich würde vorschlagen, Du zeigst mir den betroffenen, endgültigen Sourcecode.
PS: Threads werden in keiner CES-App genutzt. Das ist immer ein einzelner Thread. Was auch im Normalfall völlig reicht. Wenn man es aber genau nimmt, ist das auslösen eines Timer-Objektes auch schon ein eigenständiger Thread
Mein CarPC: CES 4 - Chameleon, Jetaway 1500 Mhz,
1024 MB RAM, 160 GB Festplatte, GPS-Receiver, OBD-
Diag4000, VDO Lenkradfernbedienung, iBus-Anbindung, 7"
transreflektiv Touchdisplay
(Dieser Beitrag wurde zuletzt bearbeitet: 10-05-2011 12:17 PM von Gueven.)
|
|
| 10-05-2011 12:15 PM |
|
Gueven
Super Moderator
     
Beiträge: 4.361
Registriert seit: Dec 2008
|
RE: App: Per GETVALUE mehrere Werte auf einmal abfragen
Na das lässt sich ja einfach nachvollziehen: entferne Deine App aus dem App-Verzeichnis und tuckere ein paar Tage ohne die App herum - wenn die Hänger eintreten, ist der Fehler woanders zu suchen :-) wenn nicht, dann ist es erstmal auf Deine App bzw. die IPC-Schnittstelle in Kombination mit Deiner App zurückzuführen. Dann wissen wir zumindest mal, dass wir an der richtigen Stelle suchen!
Bei Letzterem wĂĽrde ich dann auch noch differenzieren zwischen einer App, die nur auf dem CarPC werkelt und einer, die auch Richtiung Fremdplattform kommuniziert (z.B. Android).
Mein CarPC: CES 4 - Chameleon, Jetaway 1500 Mhz,
1024 MB RAM, 160 GB Festplatte, GPS-Receiver, OBD-
Diag4000, VDO Lenkradfernbedienung, iBus-Anbindung, 7"
transreflektiv Touchdisplay
|
|
| 10-05-2011 02:17 PM |
|
|
|
 |
 |
Seite generiert in 0.052004 Sekunden |
 |
|
 |
|