Car-PC.info

cPOS.NET - cPOSdotNet Version 0.72

DickerXXL - Mo 04 Apr, 2011 18:40
Titel: cPOSdotNet Version 0.72
Hallo zusammen,

anbei die Version 0.72 von cPOSdotNet.

Die wesentlichen Neuerungen:
Version 0.72
- Skin: Bei Funktionen können nun mehrere Aktionen gleichzeitig ausgeführt werden
- Skin: Neue Funktion ShowPageByTime, die die Page nach der übergebene Zeit automatisch ausblendet
- Anzeige der Dateiextensions in den GridViews entfernt
- Neue Properties zu MP3 Dateien (über Coverart im System) Songtitel, Artist, Album. Dafür braucht man ein PluginBinding, Beispiel siehe MP3Player im DefaultSkin.
- Plugin Cellphone_BTMicrosoftStack: Dail Up Network (DUN) Profil kann aktiviert werden
- Plugin Sensor_OBD: Abzufragenden Werte müssen im Dock eingestellt werden
- ToggleButton: Korrektur: Mit Version 0.71 wurden nicht alle ToggleButtons über das IsActive Event aktualisiert)
- ImageWrapper: Korrektur der Reihenfolge der Bilder

Version 0.71
- OBD Plugin korrigiert
- Gauge: Neues Property um die Skalenwerte zu dividieren (bzw. statt 7000 wird 70 angezeigt)
- Slider: Sendet erst die neue Position, wenn die Mouse losgelassen wird.
- Button/Togglebutton: Neues Property um die Anzeige aktiv/deaktiv durch ein Event umzuschalten (z.B. wenn mehrere Mute-Buttons im Skin sind: Wird einer angeklickt, können die anderen damit aktualisiert werden)
- Runden einige Werte auf 1 oder 0 Nachkommastellen
- Plugin USB_Radio: Logmessages aus der USBRadio.dll
- Plugin InternetRadio: Titel und Artist werden separiert, sofern der Sender diese überträgt.
- Icons für die EXE-Programme

Version 0.7
- Neues Gauge Element (Thanks to T.Evelyn)
- OBEX Item für Image- und Videolist
- Asynchrones Laden der Bilder und Videos im GridView
- Beschreibung und Voraussetzung der Plugins im Konfigurationscenter
- OBD Plugin (zum testen)
- Schliessen von cPOSdotNet über ALT+F4 oder Kontextmenü
- Coverart für Audiodateien (stellt eine Slideshow der Bilder im ID3 Tag bereit. Wenn kein Bild im ID3 Tag gefunden wurde, werden die Bilder aus dem Verzeichnis der Audiodatei genommen)

Testen des OBD Plugin:
Erstmal muss es im Konfigurationscenter aktiviert werden.
Es läuft über einen COM-Port, dessen Daten werden auch im Konfigurationscenter festgelegt. Auch die abzufragenden Werte werden dort definiert.
Im Defaultskin ist eine OBD Page eingebaut (über Tools), mit sehr einfachen Anzeigeelementen.
Die Datei cPOSdotlog.log bräuchte ich dann zur Auswertung, falls irgendetwas nicht funktioniert.

Viel Spaß beim testen.

Gruß
Jörg
6i6i - Di 05 Apr, 2011 08:16
Titel:
Hallo!

Ist eigentlich die CanBus unterstützung wie im Cpos VB geplant?
MR Action - Di 05 Apr, 2011 14:49
Titel:
Also wenn mein CarPC wieder fit ist und mir keiner zuvor gekommen is, werd ich mich da mal dran setzen... Wink
DickerXXL - Di 05 Apr, 2011 16:07
Titel:
@6i6i: Im Prinzip schon, ist letztlich ja auch nur ein COM-Port.
Es gibt aber höherwertige API's diverser CAN-BUS Adapterhersteller (Analytica, CANdo,...). Auc hier gilt: Hat mein Auto nicht, könnte ich nicht testen.
Was sind denn so die beliebtesten CAN-BUS Adapter da draußen?

Gruß
Jörg
MR Action - Di 05 Apr, 2011 16:26
Titel:
Also das alte cPOS unterstützt alle mit dem LAWICEL Protokoll...
Subaru_tom - Mi 06 Apr, 2011 18:37
Titel:
Hallo

Ich habe noch einen kleinen Fehler gefunden.
Wenn man im Skineditor eine andere Schriftart in der Liste auswählt, steht die Schriftgröße hinterher 2mal da.

Gruß
6i6i - Do 07 Apr, 2011 06:15
Titel:
MR Action hat folgendes geschrieben:
Also das alte cPOS unterstützt alle mit dem LAWICEL Protokoll...


Genau ich denke das dürften die gängisten sein.
Black81 - Do 07 Apr, 2011 17:20
Titel:
Wäre das OBD-Plugin dann auch OBD1-fähig? Oder nur OBD2?
DickerXXL - Do 07 Apr, 2011 20:20
Titel:
Ich denke OBD-II, konnte aber noch keinen großen Unterschied finden.

Gruß
Jörg
vossi0478 - Mi 13 Apr, 2011 16:24
Titel:
Hallo Jörg,
da bin ich wieder... und direkt wieder was, was ich nicht hinbekomme.

Als erstes hab ich mal das OBD ausprobiert allerdings hab ich da probleme mit meinem Netbook. Mit MoDiag bekomme ich alle Werte nur mit Cpos und CposNet z.Zt. gar nichts. Hatte ich am Anfang schon mal, ich weiß nur nicht mehr was es war. Da ich Bereitschaft habe steht mein Auto auf der Firma und ich kann nicht spielen...

Dann die Gauges ich habe mal drei Tachos probiert. Zum Anfang: mein zukünftiger Drehzahlmesser 0-7000 U/min mit optimalem Bereich 0-6000 funktioniert, zumindest optisch, einwandfrei! (Bild Gauge04)

Bei den Einstellungen (Bild Gauge01) Min=0 Max=260 Teilung=13 (immer diese Primzahlen...) OptimalStart=20 OptimalEnd=150 fehlt mir die letzte Scala also die 260

Bei den Einstellungen (Bild Gauge02) Min=20 Max=260 Teilung=12 OptimalStart=20 OptimalEnd=150 stimmt der optimale Bereich nicht.

Bei den Einstellungen (Bild Gauge03) Min=20 Max=260 Teilung=12 OptimalStart=20 OptimalEnd=260 stimmt der optimale Bereich überhaupt nicht. Sad

Gauge02 und 03 kann ich mir ja Erklären, wenn der fall das eine Skala nicht bei 0 beginnt dieser Optimale Bereich falsch interpretiert wird. entweder nicht vorgesehen oder fehlt halt noch... Aber gerade z.B. für die Kühlwassertemperatur 90-110°C wäre es sinnvoll.

Warum bei der Scala 0-260 bei 13 Teilern allerdings die 260 nicht angezeigt wird ist mir ein Rätsel, da es ja bei der Drehzahl mit 0-7000 und 7 Teilern problemlos funktioniert?!

Richtig kniffelig scheint es zu werden wenn ich einen "originalen" Drehzahlmesser nachahmen will (Bild Gauge05). Also eine Scala mit dem Wertebereich 0-7500 mit Teiler 7,5 und es werden nur die ganzen 1000er Teilstriche beschriftet... Ok ich bin vielleicht wieder mal ein Vielwill... :D

Dann habe ich das mal mit den Slidern bzw. Progressbars getestet. Also die Progressbar gegen einen Slider getauscht und dann mal nen Film angemacht... ca.90min Spieldauer und klicke mal in die Mitte vom Film... irgendwie scheint dann der Film "gespult" zu werden also so wie schneller Vorlauf ohne Bild und Ton... es braucht dann ewig bis dann der Film an der Stelle dann weiterabgespielt wird. Das ist nicht so wirklich fluffig.

Und dann als letztes... ein Frage... Smile Wenn ich den Mediaplayer öffne wird automatisch der Audio-Ordner geöffnet. wie bekomme ich es hin das dann der letzte angespielte Titel wieder automatisch abgespielt wird und ein z.B. laufendes Video oder das Radio aus gehen? Genauso dann wenn ich in den Video Ordner gehe der da wiederum das letzte Video abspielt und alles andere unterbricht, aber wenn ich z.B. in das Toolsmenü, Racemode oder wo auch immer das "grade laufende" nicht unterbrochen wird?

Das wars mal wieder aus Siegen...
Gruß Christian
Subaru_tom - Do 14 Apr, 2011 16:23
Titel:
Hallo

Ich habe es nun auch endlich mal geschafft, das Programm im Auto zu installieren. So wie es aussieht werde ich es dort aber kaum benutzen können. Denn die Prozessorlast liegt schon beim mp3 abspielen fast die ganze Zeit bei 100%. Jeder Tastendruck oder Seitenwechsel dauert mehrere Sekunden (Animationen sind schon deaktiviert). Der Via C7 mit 1,5GHz und 512Mb Arbeitspeicher ist also leicht überfordert.
Funktionieren tut alles soweit, nur OBD nicht. Weder mit dem ELM327 (altes cPOS, ELMScan) noch dem KKL Interface (SSM Monitor).
Den Tacho habe ich so gelöst:
Ach ja, kann man die angezeigte Prozessorlast (Zahl über dem Kompass) irgendwie runden, denn 14 oder 15 Nachkommastellen sind nicht wirklich sinnvoll.
Subaru_tom - Do 14 Apr, 2011 21:53
Titel:
Hallo

ich bins schon wieder mit einen anderen Problem.
ich habe auf jeder Seite vom Skin einen Togglebutton für mute angelegt. Das Problem ist jetzt, das dieser Button nur auf der Seite betätigt erscheint wo ich draufklicke. Wechsel ich auf eine andere Seite ist er nicht betätigt und die Funktion kehrt sich um. Das heist dort ist jetzt betätigen nicht stumm und nicht betätigen stumm.
Wie kann ich also alle mute Button als betätigt anzeigen lassen auch wenn ich nur einen anklicke?

Gruß
Subaru_tom - Sa 16 Apr, 2011 10:25
Titel:
Hallo

Eine weitere Frage. Ist es möglich beim öffnen und schließen mehrere Aktionen auszuführen? Z.B beim schließen des Videoplayers: Audio. Play und Video.Stop.

Gruß
DickerXXL - So 17 Apr, 2011 15:03
Titel:
Hallo zusammen,

ihr seid ja schwer am schaffen...
Wo fange ich an?
OBD: Da bräuchte ich dann mal die Log-Files nachdem ihr OBD probiert habt (die Log-Files werden bei jedem Neustart überschrieben).

Gauge: Ja, der ist etwas tricki, aber es geht auch mit Wertebereichen die nicht bei 0 beginnen. MajorDivisionsCount meint die Anzahl der Skalenbeschriftungen. Mit einer 10 passt es meistens. Es muss aber auch zum ScaleSweepAngle passen.

Slider: Mmh, stimmt. Der sendet seine neue Position bereits während der Bewegung und somit bekommt der Videoplayer eine ganze Liste von neuen Startpunkten Sad Da muss ich noch mal ran.

Resume: Ist geplant aber noch nicht umgesetzt.
Mehrere Befehle pro Aktion: Das geht derweil nicht, aber ist eine sinnvolle Erweiterung. Da gehe ich noch mal dran.

Nachkommastellen: Das muss ich dann im Plugin anpassen.

Tooglebutton: Mmh, hatte ich noch nie dran gedacht, mehrere Buttons für die gleiche Funktion im Skin zu haben, aber kann im Design schon mal passieren. Dann müsste ich noch ein Event bereitstellen, welches den Zustand einer Ein/Aus Funktion sendet. Das muss dann jeder Togglebutton einbinden.

Performance: Da würde mich interessieren, ob es eines der Plugins oder cPOSdotNet selbst ist? Kannst Du mal alle Plugins deaktivieren und erneut starten? Wenn es dann performant ist, nach und nach die Plugins wieder aktivieren und zwischendurch immer mal probieren.

Gruß
Jörg
Subaru_tom - So 17 Apr, 2011 22:05
Titel:
Hallo

Wegen der Performance kann ich im Moment erstmal soviel sagen. An den den Plugins liegt es eher nicht. Also das Aktivieren oder Deaktivieren ändert an der Prozessorlast eher wenig. Es liegt also denke ich eher am Programm selbst. Zusätlich scheint es aber auch noch ein Problem bei den visuellen Effekten zu geben. Und zwar ist es so, das bei der Einstellung "ALL" die Prozessorlast bei jeden Rechner wo ich es probiert habe (unter anderem Dual Core mit 2,8 Ghz), laut Anzeige im Taskmanager, immer bei 100% liegt. Was allerdings nicht sein kann, da die Rechner sich nicht so verhalten. Es gibt also keinerlei Verzögerungen oder ruckelnde Videos u.s.w..

Gruß
Subaru_tom - So 17 Apr, 2011 22:17
Titel:
Hallo

OK, Ich habe es gerade nochmal probiert. Die 100% Last bei "ALL" liegt an der Videovorschau. Verlasse ich nach dem Programmstart das Verzeichnis mit den Videos im Videoplayer geht die Last sofort runter.
Bei dem Gauge ist es wohl so. Wenn "MajorDivisionsCount" eine gerade Zahl ist, muß "Scale SweepAngle" Werte wie 270, 280, 290, 300 u.s.w. haben. Ist die Zahl dagegen ungerade muß es 275, 285, 295, 305 u.s.w. sein.

Gruß
Subaru_tom - Mo 18 Apr, 2011 19:12
Titel:
Hallo

Ich habe mir heute mal die Logdateien angeschaut. Soweit ich das sehe steht nur drin, daß das OBD Plugin geladen wurde.
Für welches Interface ist das Plugin denn eigentlich gedacht? Ist es für inteligente Interface mit ELM oder AVG, oder für einfache KKL oder CAN Pegelwandler Interface. Die einfachen Interface haben ja den Vorteil, das man meistens mehr auslesen kann, aber auch den riesen Nachteil des höheren Programmieraufwandes und der geringeren Flexibilität.
Ich bin für ein ELM327 Plugin. Damit ist man unabhängig von Autohersteller und verwendeter Schnittstelle und Nutzer der OBD Funktion des alten Cpos können ihr Interface weiter verwenden.

Gruß
DickerXXL - Di 19 Apr, 2011 10:35
Titel:
Moin,

das OBD Plugin soll mit allen Interfaces zurecht kommen, die über einen COM Port angesprochen werden können.
Und ja (ich Esel), es tut gar nichts Sad Kurz vor der Auslieferung noch eine kleine "unbedeutende" Änderung gemacht ...

Zu Performance: Mit der Einstellung "Visuelle Effekte" = Many wird die Videovorschau abgeschaltet. Ist es dann benutzbar oder hängt es dann noch immer?

Gruß
Jörg
Subaru_tom - Di 19 Apr, 2011 19:12
Titel:
Hallo

Also ich weiß jetzt nicht woran es lag, da ich den Rechner im Auto ja praktisch nur runter und wieder hoch gefahren habe, aber heute war die Prozessorlast wieder relativ normal. Das heist es gab deutlich weniger Verzögerung beim Klick auf einen Button und auch beim Video abspielen hört man jetzt zumindest den Ton. Wenn wieder mal alles so träge reagiert werde ich wohl mal im Taskmanager gucken ob es vielleicht irgendein anderes Programm ist. Auffällig ist noch, das die Last nach aktivieren aller Plugin stark schwankt.

Visuelle Effekte deaktiviert
ohne Plugin 2%
mit VideoWMP, PlayerWMP und XPVolume 3%
mit VideoWMP, PlayerWMP, XPVolume und laufende MP3 25%
mit VideoWMP, PlayerWMP, XPVolume und laufendes MPG2 Video 100%
alle Plugin aktiviert 10-20%
alle Plugin und MP3 30-60%
alle Plugin und MPG2 Video 100% mit etwa 3sec Verzögerung bei Buttonklicks

Zum Vergleich noch der Mediaplayer und das alte cPOS

mp3 mit WMP 20%
Video mit WMP 60%
mp3 mit cPOS1 12%
Video mit cPOS1 50%

Bei den visuellen Effekten haben die Einstellungen none, some und many keinen sichtbaren Einfluß auf die CPU Last und all auch nur dann, wenn sich im aktuellen Verzeichnis Videos befinden, also die Vorschau läuft. Die Höhe der Last ist dabei natürlich von der Anzahl der Videos abhängig. Bei meinem Dual Core Rechner am Schreibtisch sind die 100% bei 5 Videos erreicht, im Auto schon bei einem.

Na dann werde ich OBD bei der nächsten Version mal testen.

Bei dem Cover ist mir noch aufgefallen, daß es nicht wieder ausgeblendet wird, wenn nach Verzeichniswechsel keins mehr vorhanden ist.

Gruß
DickerXXL - Mi 20 Apr, 2011 18:58
Titel:
Moin zusammen,

oben dran hängt ein neues Setup der Version 0.71.
Einige Dinge habe ich bereits angepasst, OBD sollte nun auch was tun.

Gruß
Jörg
vossi0478 - Mi 20 Apr, 2011 19:44
Titel:
Hallo zusammen,

Also irgendwie bin ich zu blöd mir die CoverArts anzeigen zu lassen.
Ich hab jetzt alles so in meinem Skin integriet wie es in dem Default Skin ist aber ich bekomme kein Bild angezeigt. In dem Default Skin funktioniert es.
Was ich auch nicht verstehe, warum wird in dem DefaultSkin das selbe Plugin also Player_WMP zweimal aufgerufen? Einmal für MP3_1 und MP3_2?!

Dann besteht bei den CoverArts ein ganz anderes Problem, zumindest empfinde ich es so, es wird jedesmal das Bild extrahiert und in dem Ordner \\AppData\Roaming\cPOSdotNet abgespeichert. Gut die Bilder sind nicht groß, aber ich denke mal irgendwan sollten die Dateien wieder gelöscht werden... 6 Dateien ca. 500kb bzw einzeln zwischen 30kb und 110kb auf die Dauer wird sich da ne Menge ansammeln...

Wofür ist das pluginbinding
Input - MP3_1.URL
Output - System.CoverArtFile

Weiteres bei den Slidern... ein Progressbar hab ich mal mit ner Pixelhöhe von 8 eingefügt. Das geht, aber ein Slider den ich mit 8px Höhe einfüge der wird immer ca 15-20px hoch?! Ist bzw muss da eine Grenze nach unten sein?

Gruß Christian
Subaru_tom - Mi 20 Apr, 2011 21:44
Titel:
Hallo

Bei mir klappt es mit dem Cover.
Ich würde sagen dieses PluginBinding dient dem zwischenspeichern des Covers. Das Cover aus dem aktuellen Audioverzeichnis wird ans system übergeben und zwischengespeichert. Der ImageWrapper holt sich das Bild dann vom system.
Ob die zwischengespeicherten Cover irgendwann mal gelöscht werden habe ich mich auch schon gefragt.
Bei mir funktioniert der Slider auch bei 8 oder weniger. Hast du, falls dort angelegt, die Größe im Theme entsprechend angepasst?
Die zwei Aufrufe sind wegen den zwei unterschiedlichen Listen. Einmal Audio allgemein und einmal nur mp3.

Gruß
DickerXXL - Do 21 Apr, 2011 05:51
Titel:
Moin Christian,

für den CoverArt brauchst Du noch ein PluginBinding.
Es ist so:
cPOSdotNet hat nur Anzeigeelemente (UI-Elemente) und Plugins. UI-Elemente können aktiv Aktionen auslösen und/oder Informationen konsumieren.
Daneben gibt es nur Plugins, die nie direkt eine Aktion auslösen, sondern nur Informationen bereit stellen können (z.B. aktueller Titel, abgespielte Zeit, ein Bild, ...).
UI-Elemente können Aktionen an andere UI-Elemente senden (z.B. SwitchPage...) oder Informationen von Ihnen beziehen (z.B. IsPageVisible...).
UI-Elemente können Aktionen an Plugins senden (z.B. AudioPlayer.Play) oder Informationen von Ihnen beziehen (z.B. AudioPlayer.Titel).
Plugins können aber keine Informationen anderer Plugins beziehen, dafür brauchst Du dann ein PluginBinding. Es tut aktiv also nichts, ist nur der "Kleber" zwischen zwei Plugins.

Speziell beim Coverart hast Du ein UI-Element (ImageWrapper) um ein Bild anzuzeigen. Es konsumierte also ein Bild. Dann gibt es ein Plugin AudioPlayer, welches aber kein Bild bereit stellt, wohl aber die Information über den aktuell gespielten Titel. Ein Bild zu einem Titel kann Dir das "Plugin" CoverArt liefern (CoverArt ist zwar im Core implementiert, verhält sich aber wie ein Plugin).
Ergo: ImageWrapper konsumiert das anzuzeigende Bild vom Plugin CoverArt und das Plugin CoverArt stellt ein Bild zum aktuellen Titel aus dem Audioplayer bereit.
ImageWrapper.ImagePath = CoverArt.CoverArtURL
PluginBinding.Output=CoverArt.CoverArtFile
PluginBinding.Input = AudioPlayer.URL

MP3_1 und MP3_2 im Defaultskin sind zwei getrennte, unabhängig voneinander laufende Audioplayer. MP3_1 ist für alle, die Ihre Musiksammlung in Playlisten und/oder Ordnern sortiert haben. MP3_2 ist für alle, die den MP3 Indexer benutzen wollen. Das es im Defaultskin beide gibt, dient nur der Werbung Smile

Die zwischengespeicherten Bilder kann ich beim Neustart von cPOSdotNet löschen.

Gruß
Jörg
Subaru_tom - Do 21 Apr, 2011 07:56
Titel:
Hallo

Das ging ja schnell mit der neuen Version.
Mit dem OBD plugin stimmt aber irgendetwas noch nicht. cPOS startet nicht, wenn im OBD Plugin die Schnittstelle eingerichtet und das Interface angeschlossen ist. So wie es aussieht wird beim starten noch versucht die Geschwindigkeit abzufragen, das Ganze dann aber gestoppt.

Gruß

Zitat:
22.04.2011|07:01:09|Debug |PluginManager.cpPluginFabrik | public bool LoadPlugin > C:\Programme\cPOSdotNet\Plugins\Sensor_OBD.dll , OBDSensor>
22.04.2011|07:01:09|Debug |PluginManager.cpPluginInfo | PluginManager: Load Assemply: C:\Programme\cPOSdotNet\Plugins\Sensor_OBD.dll
22.04.2011|07:01:09|Debug |PluginManager.cpPluginInfo | PluginManager: Exame Plugin: C:\Programme\cPOSdotNet\Plugins\Sensor_OBD.dll|OBDSensor|0.7.1.685
22.04.2011|07:01:09|Debug |PluginManager.cpPluginInfo | PluginManager: Create Plugin: SensorOBD.Sensor_OBD
22.04.2011|07:01:09|Debug |PluginManager.cpPluginInfo | PluginManager: Configure Plugin: SensorOBD.Sensor_OBD
22.04.2011|07:01:09|Debug |cPOSdotNet.Core.cpCore | Configure Plugin: cPOS: OBD Sensor Plugin
22.04.2011|07:01:09|Debug |cPOSdotNet.Core.cpCore | Initialize Plugin: cPOS: OBD Sensor Plugin
22.04.2011|07:01:09|Debug |SensorOBD.Sensor_OBD | Sensor_OBD InitializePlugin..
22.04.2011|07:01:09|Debug |SensorOBD.Sensor_OBD | Sensor_OBD: Connected to ComPort: COM1 Baudrate: 9600
22.04.2011|07:01:09|Debug |cPOSdotNet.Core.cpCore | Register InformationBroker handles from plugin: cPOS: OBD Sensor Plugin

22.04.2011|07:01:09|Debug |cPOSdotNet.RenderEngineXaml.cpEngineXaml | cpEngineXaml: Start XAML render page OBD
22.04.2011|07:01:09|Debug |cPOSdotNet.RenderEngineXaml.cpEngineXaml | cpEngineXaml: End XAML render page OBD

22.04.2011|07:01:11|Debug |cPOSdotNet.RenderEngineXaml.cpScreenHelper | cpScreenHelper: exame cpcButton Apps@main_screen btnOBD_Apps Skin.ShowPage=main_screen,OBD

22.04.2011|07:01:12|Debug |cPOSdotNet.RenderEngineXaml.cpScreenHelper | cpScreenHelper: Created new page OBD@main_screen
22.04.2011|07:01:12|Debug |cPOSdotNet.RenderEngineXaml.cpScreenHelper | cpScreenHelper: exame cpcButton OBD@main_screen btnClose_OBD Skin.HidePage=main_screen,OBD
22.04.2011|07:01:12|Debug |cPOSdotNet.RenderEngineXaml.cpScreenHelper | cpScreenHelper: exame progressbar OBD@main_screen prgTrottlePosition_OBD OBDSensor.TrottlePosition 0.0 100.0
22.04.2011|07:01:12|Debug |cPOSdotNet.RenderEngineXaml.cpScreenHelper | cpScreenHelper: exame progressbar OBD@main_screen prgOBDEngineLoad_OBD OBDSensor.CalculatedEngineLoad 0.0 100.0
22.04.2011|07:01:12|Debug |cPOSdotNet.RenderEngineXaml.cpScreenHelper | cpScreenHelper: exame label OBD@main_screen lblTrottle_OBD:
22.04.2011|07:01:12|Debug |cPOSdotNet.RenderEngineXaml.cpScreenHelper | cpScreenHelper: exame label OBD@main_screen lblEngineLoad_OBD:
22.04.2011|07:01:12|Debug |cPOSdotNet.RenderEngineXaml.cpScreenHelper | cpScreenHelper: exame label OBD@main_screen lblSpeed_OBD:OBDSensor.Speed
22.04.2011|07:01:12|Debug |cPOSdotNet.RenderEngineXaml.cpScreenHelper | cpScreenHelper: exame label OBD@main_screen lblEngineTemp_OBD:OBDSensor.EngineTemperature
22.04.2011|07:01:12|Debug |cPOSdotNet.RenderEngineXaml.cpScreenHelper | cpScreenHelper: exame label OBD@main_screen lblEngineRPM_OBD:OBDSensor.EngineRPM
22.04.2011|07:01:12|Debug |cPOSdotNet.RenderEngineXaml.cpScreenHelper | cpScreenHelper: exame label OBD@main_screen lblFuel_OBD:OBDSensor.FuelPressure
22.04.2011|07:01:12|Debug |cPOSdotNet.RenderEngineXaml.cpScreenHelper | cpScreenHelper: exame label OBD@main_screen cpLabel7_OBD:
22.04.2011|07:01:12|Debug |cPOSdotNet.RenderEngineXaml.cpScreenHelper | cpScreenHelper: exame label OBD@main_screen cpLabel8_OBD:
22.04.2011|07:01:12|Debug |cPOSdotNet.RenderEngineXaml.cpScreenHelper | cpScreenHelper: exame label OBD@main_screen cpLabel9_OBD:
22.04.2011|07:01:12|Debug |cPOSdotNet.RenderEngineXaml.cpScreenHelper | cpScreenHelper: exame label OBD@main_screen cpLabel10_OBD:
22.04.2011|07:01:12|Debug |cPOSdotNet.RenderEngineXaml.cpScreenHelper | cpScreenHelper: Created new page PluginBindings@main_screen
22.04.2011|07:01:12|Debug |SensorOBD.Sensor_OBD | Sensor_OBD message: 010D

22.04.2011|07:01:13|Debug |SensorOBD.Sensor_OBD | Sensor_OBD message: 010D
22.04.2011|07:01:13|Debug |SensorOBD.Sensor_OBD | Sensor_OBD received OBDData: 0 1 0 D
STOPPED

>
22.04.2011|07:01:13|Debug |SensorOBD.Function.OBD | Sensor_OBD ReadyStateElapsed: Evaluate answer 0 1 0 D
STOPPED

> for state pidSpeed

DickerXXL - Do 21 Apr, 2011 12:44
Titel:
Mmh, zumindest sendet er schon mal Daten zurück
Code:

22.04.2011|07:01:13|Debug |SensorOBD.Sensor_OBD | Sensor_OBD received OBDData: 0 1 0 D
STOPPED

Das STOPPED muss bereits vom Interface kommen.

Anbei mal ein aktualisiertes Plugin, muss in den %cPOSInstallationsordner%\plugins ausgepackt werden. Die bestehende Sensor_OBD.dll vielleicht vorher sichern Smile
Damit sollte er zumindest nicht mehr abstürzen.

Was für ein OBD Interface verwendest Du jetzt? Evtl. erwartet das eine Art Initialisierung?

Danke und Gruß
Jörg
Subaru_tom - Do 21 Apr, 2011 13:45
Titel:
Hallo

Ich habe es erstmal nur mit dem EM327 Interface getestet.
Bei der OBD LCD Anzeige die ich meistens daran angeschlossen habe werden zur Inizialisierung 4 Kommandos gesendet.

AT Z -> reset
AT E0 -> echo off
AT L0 -> linefeeds off
01 00 -> dummy Abfrage der unterstützten PID

Ich kann ja auch das KKL Interface ausprobieren.

Gruß
DickerXXL - Do 21 Apr, 2011 14:19
Titel:
Ah OK.
Dann versuch mal bitte die Sensor_OBD.dll hier im Anhang.

Gruß
Jörg
Subaru_tom - Do 21 Apr, 2011 22:53
Titel:
Hallo

Also so richtig funktioniert es nicht. Nur ab und zu kommt mal ein Wert zurück. Wenn ich die Einträge in der log Datei richtig verstehe, sendet das Plugin viel zu schnell. Das senden der ersten PID Abfrage (010D) erfolgt schon bevor das Echo von ATZ und dessen Rückgabewert (ELM327 v1.3a) ankommen. So das das Plugin das ATZ Echo als Antwort auf die PID Abfrage auswertet.
Ich hänge mal die etwas gekürzte Log Datei und die Initialisierungsroutine der LCD Anzeige dran.
Mein Auto unterstützt zwar OBD seitig nur ISO 9141-2 (5 baud init, 10.4 kbaud), ich kann es aber auch mal PC seitig mit 38,4kb testen.

Gruß

Code:

22.04.2011|22:59:24|Debug     |PluginManager.cpPluginFabrik                      | public bool LoadPlugin > C:\Programme\cPOSdotNet\Plugins\Sensor_OBD.dll , OBDSensor>
22.04.2011|22:59:24|Debug     |PluginManager.cpPluginInfo                        | PluginManager: Load Assemply: C:\Programme\cPOSdotNet\Plugins\Sensor_OBD.dll
22.04.2011|22:59:24|Debug     |PluginManager.cpPluginInfo                        | PluginManager: Exame Plugin: C:\Programme\cPOSdotNet\Plugins\Sensor_OBD.dll|OBDSensor|0.7.1.687
22.04.2011|22:59:24|Debug     |PluginManager.cpPluginInfo                        | PluginManager: Create Plugin: SensorOBD.Sensor_OBD
22.04.2011|22:59:24|Debug     |PluginManager.cpPluginInfo                        | PluginManager: Configure Plugin: SensorOBD.Sensor_OBD
22.04.2011|22:59:24|Debug     |cPOSdotNet.Core.cpCore                            | Configure Plugin: cPOS: OBD Sensor Plugin
22.04.2011|22:59:24|Debug     |cPOSdotNet.Core.cpCore                            | Initialize Plugin: cPOS: OBD Sensor Plugin
22.04.2011|22:59:24|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD InitializePlugin..
22.04.2011|22:59:24|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD: Connected to ComPort: COM1 Baudrate: 9600
22.04.2011|22:59:24|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD WriteToOBD: AT Z
22.04.2011|22:59:24|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD WriteToOBD: AT E0
22.04.2011|22:59:24|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD WriteToOBD: AT L0
22.04.2011|22:59:24|Debug     |cPOSdotNet.Core.cpCore                            | Register InformationBroker handles from plugin: cPOS: OBD Sensor Plugin

22.04.2011|22:59:27|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010D
22.04.2011|22:59:27|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: A   T       Z   


ELM327 v1.3a

>0   1   0   D   

22.04.2011|22:59:27|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer A   T       Z   


ELM327 v1.3a

>0   1   0   D   
 for state pidSpeed
22.04.2011|22:59:27|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Die Eingabezeichenfolge hat das falsche Format.

22.04.2011|22:59:28|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0105

22.04.2011|22:59:28|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: STOPPED

>
22.04.2011|22:59:28|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer STOPPED

> for state pidEngineTemperature
22.04.2011|22:59:28|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD engine temp: 0

22.04.2011|22:59:28|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: Created new page OBD@main_screen
22.04.2011|22:59:28|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame cpcButton OBD@main_screen btnClose_OBD Skin.HidePage=main_screen,OBD 
22.04.2011|22:59:28|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame progressbar OBD@main_screen prgTrottlePosition_OBD OBDSensor.TrottlePosition 0.0 100.0
22.04.2011|22:59:28|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame progressbar OBD@main_screen prgOBDEngineLoad_OBD OBDSensor.CalculatedEngineLoad 0.0 100.0
22.04.2011|22:59:28|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame label OBD@main_screen lblTrottle_OBD:
22.04.2011|22:59:28|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame label OBD@main_screen lblEngineLoad_OBD:
22.04.2011|22:59:28|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame label OBD@main_screen lblSpeed_OBD:OBDSensor.Speed
22.04.2011|22:59:28|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame label OBD@main_screen lblEngineTemp_OBD:OBDSensor.EngineTemperature
22.04.2011|22:59:28|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame label OBD@main_screen lblEngineRPM_OBD:OBDSensor.EngineRPM
22.04.2011|22:59:28|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame label OBD@main_screen lblFuel_OBD:OBDSensor.FuelPressure
22.04.2011|22:59:28|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame label OBD@main_screen cpLabel7_OBD:
22.04.2011|22:59:28|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame label OBD@main_screen cpLabel8_OBD:
22.04.2011|22:59:28|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame label OBD@main_screen cpLabel9_OBD:
22.04.2011|22:59:28|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame label OBD@main_screen cpLabel10_OBD:

22.04.2011|22:59:29|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010C

22.04.2011|22:59:30|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010C
22.04.2011|22:59:30|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: TOPPED

>
22.04.2011|22:59:30|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer TOPPED

> for state pidEngineRPM
22.04.2011|22:59:30|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
22.04.2011|22:59:31|Log       |  unknown | FileIndexer: scan start...
22.04.2011|22:59:31|Log       |  unknown | FileIndexer: scan drive: C:\
22.04.2011|22:59:31|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0111
22.04.2011|22:59:32|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0111
22.04.2011|22:59:32|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData:

>
22.04.2011|22:59:32|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer
> for state pidTrottlePosition
22.04.2011|22:59:32|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.

22.04.2011|22:59:33|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0104
22.04.2011|22:59:34|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0104
22.04.2011|22:59:34|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData:
>
22.04.2011|22:59:34|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer
> for state pidCalculatedEngineLoad
22.04.2011|22:59:34|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD speed: 0
22.04.2011|22:59:34|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.

22.04.2011|22:59:35|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010A
22.04.2011|22:59:35|Debug     |cPOSdotNet.Core.cpCore                            | Core: Sender:cPOSdotNet.File.Views.cPOSImagelistView IScreen_OnGridviewPlaylistChanged(IMPLAYER_1.PutPlaylist,C:\Dokumente und Einstellungen\Thomas.CAR_PC\Anwendungsdaten\cPOSdotNet\lstFolder_ImagePlayer.txt)

Code:
/*
   @brief   Initialisiert den ELM. Wartet, bis dieser fertig ist. Einmal am Anfang aufrufen
   @param    none
   @return   Anzahl Zeichen im String nach Datenaustausch. Dies ist uninteressant. Wichtig ist: -1 wenn Fehler auftrat
*/
int8_t elm_ini (void)      
{
//   uint8_t i;
   char response[40];
   
   uart_putc ('\r');
   delay_ms (1000);          // 1 Sekunde warten. Beenden unvollständiger Eingaben und No Data Error
                        // abwarten, sollte ELM hängen
   uart_puts ("AT Z\r");
   delay_ms (1000);          // dauert am längsten

   uart_puts ("AT E0\r");
   delay_ms (100);    

   uart_puts ("AT L0\r");
   delay_ms (100);    

   while (ser_getc() != '>');      // warten, bis alle Antworten eingetrudelt sind und ELM mit ">" bereit meldet

   delay_ms (500);    
   uart_clear();               // bisherige Rückmeldungen ignorieren

   uart_puts ("01 00\r");      // Antwort: "BUS INIT: ..." beim ersten Aufruf, dann folgen Daten, wird nur aufgerufen, um Bus-Init erledigt zu haben

   return elm_getdata(response);
}

DickerXXL - Fr 22 Apr, 2011 09:04
Titel:
Dann kommen wir der Sache ja schon näher.

Anbei eine neue Sensor_OBD.dll.
Die initialisiert das Interface nun langsamer. Erst nach der Initialisierung beginnt es die Werte abzufragen.

Solche Feinheiten braucht mein Simulator natürlich nicht, daher noch mal Danke, dass Du Dir die Zeit zum testen nimmst.

Gruß
Jörg
Subaru_tom - Fr 22 Apr, 2011 10:04
Titel:
Hallo

Ok das sieht schon besser aus.
Allerdings sind jetzt noch die Antworten um eins verschoben.
Die Antwort auf 0100 wird als Antwort auf 010D ausgewertet u.s.w..
Du müsstest die Antwort auf 0100 ignorieren, oder da das die Anzahl der unterstützten PIDs (in meinen Fall BE 3F A8 11 für den ersten Bereich) ist, irgendwie auswerten und anzeigen.

Gruß

Code:

23.04.2011|10:48:43|Debug     |PluginManager.cpPluginFabrik                      | public bool LoadPlugin > C:\Programme\cPOSdotNet\Plugins\Sensor_OBD.dll , OBDSensor>
23.04.2011|10:48:43|Debug     |PluginManager.cpPluginInfo                        | PluginManager: Load Assemply: C:\Programme\cPOSdotNet\Plugins\Sensor_OBD.dll
23.04.2011|10:48:43|Debug     |PluginManager.cpPluginInfo                        | PluginManager: Exame Plugin: C:\Programme\cPOSdotNet\Plugins\Sensor_OBD.dll|OBDSensor|0.7.1.688
23.04.2011|10:48:43|Debug     |PluginManager.cpPluginInfo                        | PluginManager: Create Plugin: SensorOBD.Sensor_OBD
23.04.2011|10:48:43|Debug     |PluginManager.cpPluginInfo                        | PluginManager: Configure Plugin: SensorOBD.Sensor_OBD
23.04.2011|10:48:43|Debug     |cPOSdotNet.Core.cpCore                            | Configure Plugin: cPOS: OBD Sensor Plugin
23.04.2011|10:48:43|Debug     |cPOSdotNet.Core.cpCore                            | Initialize Plugin: cPOS: OBD Sensor Plugin
23.04.2011|10:48:43|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD InitializePlugin..
23.04.2011|10:48:43|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD: Connected to ComPort: COM1 Baudrate: 9600
23.04.2011|10:48:43|Debug     |cPOSdotNet.Core.cpCore                            | Register InformationBroker handles from plugin: cPOS: OBD Sensor Plugin

23.04.2011|10:48:46|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: Created new page OBD@main_screen
23.04.2011|10:48:46|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame cpcButton OBD@main_screen btnClose_OBD Skin.HidePage=main_screen,OBD 
23.04.2011|10:48:46|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame progressbar OBD@main_screen prgTrottlePosition_OBD OBDSensor.TrottlePosition 0.0 100.0
23.04.2011|10:48:46|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame progressbar OBD@main_screen prgOBDEngineLoad_OBD OBDSensor.CalculatedEngineLoad 0.0 100.0
23.04.2011|10:48:46|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame label OBD@main_screen lblTrottle_OBD:
23.04.2011|10:48:46|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame label OBD@main_screen lblEngineLoad_OBD:
23.04.2011|10:48:46|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame label OBD@main_screen lblSpeed_OBD:OBDSensor.Speed
23.04.2011|10:48:46|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame label OBD@main_screen lblEngineTemp_OBD:OBDSensor.EngineTemperature
23.04.2011|10:48:46|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame label OBD@main_screen lblEngineRPM_OBD:OBDSensor.EngineRPM
23.04.2011|10:48:46|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame label OBD@main_screen lblFuel_OBD:OBDSensor.FuelPressure
23.04.2011|10:48:46|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame label OBD@main_screen cpLabel7_OBD:
23.04.2011|10:48:46|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame label OBD@main_screen cpLabel8_OBD:
23.04.2011|10:48:46|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame label OBD@main_screen cpLabel9_OBD:
23.04.2011|10:48:46|Debug     |cPOSdotNet.RenderEngineXaml.cpScreenHelper        | cpScreenHelper: exame label OBD@main_screen cpLabel10_OBD:

23.04.2011|10:48:47|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD InitializeOBDInterface...
23.04.2011|10:48:47|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD WriteToOBD: AT Z
23.04.2011|10:48:48|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD WriteToOBD: AT E0
23.04.2011|10:48:48|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD WriteToOBD: AT L0
23.04.2011|10:48:48|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD WriteToOBD: 01 00

23.04.2011|10:48:51|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010D
23.04.2011|10:48:51|Debug     |cPOSdotNet.MainScreen                             | MainScreen_Loaded...
23.04.2011|10:48:52|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 00 BE 3F A8 11

>
23.04.2011|10:48:52|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 4100BE3FA811

> for state pidSpeed
23.04.2011|10:48:52|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:48:53|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0105
23.04.2011|10:48:53|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 0D 00

>
23.04.2011|10:48:53|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410D00

> for state pidEngineTemperature
23.04.2011|10:48:53|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:48:54|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010C
23.04.2011|10:48:54|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 05 37

>
23.04.2011|10:48:54|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410537

> for state pidEngineRPM
23.04.2011|10:48:54|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:48:55|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0111
23.04.2011|10:48:55|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 0C 00 64

>
23.04.2011|10:48:55|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410C0064

> for state pidTrottlePosition
23.04.2011|10:48:55|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:48:56|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0104
23.04.2011|10:48:56|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 11 02

>
23.04.2011|10:48:56|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 411102

> for state pidCalculatedEngineLoad
23.04.2011|10:48:56|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD speed: 0
23.04.2011|10:48:56|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:48:57|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010A
23.04.2011|10:48:57|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 04 00

>
23.04.2011|10:48:57|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410400

> for state pidFuelPressure
23.04.2011|10:48:57|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:48:57|Debug     |cPOSdotNet.Core.cpCore                            | Core: Sender:cPOSdotNet.ControlsXAML.cpcToggleButton Content: IsChecked:True IScreen_OnButtonClick(Skin.SwitchPage=main_screen,Apps)
23.04.2011|10:48:58|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010D
23.04.2011|10:48:58|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: NO DATA

>
23.04.2011|10:48:58|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer NODATA

> for state pidSpeed
23.04.2011|10:48:58|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:48:59|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0105
23.04.2011|10:48:59|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 0D 00

>
23.04.2011|10:48:59|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410D00

> for state pidEngineTemperature
23.04.2011|10:48:59|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:00|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010C
23.04.2011|10:49:00|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 05 37

>
23.04.2011|10:49:00|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410537

> for state pidEngineRPM
23.04.2011|10:49:00|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:01|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0111
23.04.2011|10:49:01|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 0C 00 64

>
23.04.2011|10:49:01|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410C0064

> for state pidTrottlePosition
23.04.2011|10:49:01|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:02|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0104
23.04.2011|10:49:02|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 11 02

>
23.04.2011|10:49:02|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 411102

> for state pidCalculatedEngineLoad
23.04.2011|10:49:02|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD speed: 0
23.04.2011|10:49:02|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:03|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010A
23.04.2011|10:49:03|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 04 00

>
23.04.2011|10:49:03|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410400

> for state pidFuelPressure
23.04.2011|10:49:03|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:04|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010D
23.04.2011|10:49:04|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: NO DATA

>
23.04.2011|10:49:04|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer NODATA

> for state pidSpeed
23.04.2011|10:49:04|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:05|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0105
23.04.2011|10:49:05|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 0D 00

>
23.04.2011|10:49:05|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410D00

> for state pidEngineTemperature
23.04.2011|10:49:05|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:06|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010C
23.04.2011|10:49:07|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 05 37

>
23.04.2011|10:49:07|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410537

> for state pidEngineRPM
23.04.2011|10:49:07|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:07|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0111
23.04.2011|10:49:08|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 0C 00 64

>
23.04.2011|10:49:08|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410C0064

> for state pidTrottlePosition
23.04.2011|10:49:08|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:10|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0104
23.04.2011|10:49:10|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 11 02

>
23.04.2011|10:49:10|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 411102

> for state pidCalculatedEngineLoad
23.04.2011|10:49:10|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD speed: 0
23.04.2011|10:49:10|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:10|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010A
23.04.2011|10:49:10|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData:
>
23.04.2011|10:49:10|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer
> for state pidFuelPressure
23.04.2011|10:49:10|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:10|Debug     |cPOSdotNet.Core.cpCore                            | Core: Sender:cPOSdotNet.ControlsXAML.cpcButton IScreen_OnButtonClick(Skin.ShowPage=main_screen,OBD)
23.04.2011|10:49:11|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010D
23.04.2011|10:49:11|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: NO DATA

>
23.04.2011|10:49:11|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer NODATA

> for state pidSpeed
23.04.2011|10:49:11|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:12|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0105
23.04.2011|10:49:12|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 0D 00

>
23.04.2011|10:49:12|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410D00

> for state pidEngineTemperature
23.04.2011|10:49:12|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:13|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010C
23.04.2011|10:49:13|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 05 37

>
23.04.2011|10:49:13|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410537

> for state pidEngineRPM
23.04.2011|10:49:13|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:15|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0111
23.04.2011|10:49:15|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 0C 00 64

>
23.04.2011|10:49:15|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410C0064

> for state pidTrottlePosition
23.04.2011|10:49:15|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:15|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0104
23.04.2011|10:49:16|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData:
>
23.04.2011|10:49:16|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer
> for state pidCalculatedEngineLoad
23.04.2011|10:49:16|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD speed: 0
23.04.2011|10:49:16|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:17|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010A
23.04.2011|10:49:17|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: NO DATA

>
23.04.2011|10:49:17|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer NODATA

> for state pidFuelPressure
23.04.2011|10:49:17|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:20|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010D
23.04.2011|10:49:20|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: NO DATA

>
23.04.2011|10:49:20|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer NODATA

> for state pidSpeed
23.04.2011|10:49:20|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:20|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0105
23.04.2011|10:49:20|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData:
>
23.04.2011|10:49:20|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer
> for state pidEngineTemperature
23.04.2011|10:49:20|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:22|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010C
23.04.2011|10:49:22|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: NO DATA

>
23.04.2011|10:49:22|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer NODATA

> for state pidEngineRPM
23.04.2011|10:49:22|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:23|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0111
23.04.2011|10:49:23|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 0C 00 64

>
23.04.2011|10:49:23|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410C0064

> for state pidTrottlePosition
23.04.2011|10:49:23|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:24|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0104
23.04.2011|10:49:24|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 11 02

>
23.04.2011|10:49:24|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 411102

> for state pidCalculatedEngineLoad
23.04.2011|10:49:24|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD speed: 0
23.04.2011|10:49:24|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:25|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010A
23.04.2011|10:49:25|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 04 00

>
23.04.2011|10:49:25|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410400

> for state pidFuelPressure
23.04.2011|10:49:25|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:26|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010D
23.04.2011|10:49:26|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: NO DATA

>
23.04.2011|10:49:26|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer NODATA

> for state pidSpeed
23.04.2011|10:49:26|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:27|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0105
23.04.2011|10:49:27|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 0D 00

>
23.04.2011|10:49:27|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410D00

> for state pidEngineTemperature
23.04.2011|10:49:27|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:28|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010C
23.04.2011|10:49:28|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 05 37

>
23.04.2011|10:49:28|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410537

> for state pidEngineRPM
23.04.2011|10:49:28|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:29|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0111
23.04.2011|10:49:29|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 0C 00 64

>
23.04.2011|10:49:29|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410C0064

> for state pidTrottlePosition
23.04.2011|10:49:29|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:31|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0104
23.04.2011|10:49:31|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 11 9C

>
23.04.2011|10:49:31|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 41119C

> for state pidCalculatedEngineLoad
23.04.2011|10:49:31|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD speed: 0
23.04.2011|10:49:31|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:31|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010A
23.04.2011|10:49:31|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData:
>
23.04.2011|10:49:31|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer
> for state pidFuelPressure
23.04.2011|10:49:31|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:32|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010D
23.04.2011|10:49:32|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: NO DATA

>
23.04.2011|10:49:32|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer NODATA

> for state pidSpeed
23.04.2011|10:49:32|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:33|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0105
23.04.2011|10:49:33|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 0D 00

>
23.04.2011|10:49:33|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410D00

> for state pidEngineTemperature
23.04.2011|10:49:33|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:34|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010C
23.04.2011|10:49:34|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 05 37

>
23.04.2011|10:49:34|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410537

> for state pidEngineRPM
23.04.2011|10:49:34|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:35|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0111
23.04.2011|10:49:35|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 0C 00 64

>
23.04.2011|10:49:35|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410C0064

> for state pidTrottlePosition
23.04.2011|10:49:35|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:36|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0104
23.04.2011|10:49:36|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 11 9B

>
23.04.2011|10:49:36|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 41119B

> for state pidCalculatedEngineLoad
23.04.2011|10:49:36|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD speed: 0
23.04.2011|10:49:36|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:37|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010A
23.04.2011|10:49:37|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 04 00

>
23.04.2011|10:49:37|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410400

> for state pidFuelPressure
23.04.2011|10:49:37|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:38|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010D
23.04.2011|10:49:38|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: NO DATA

>
23.04.2011|10:49:38|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer NODATA

> for state pidSpeed
23.04.2011|10:49:38|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:39|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0105
23.04.2011|10:49:39|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 0D 00

>
23.04.2011|10:49:39|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410D00

> for state pidEngineTemperature
23.04.2011|10:49:39|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:40|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010C
23.04.2011|10:49:40|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 05 37

>
23.04.2011|10:49:40|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410537

> for state pidEngineRPM
23.04.2011|10:49:40|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:41|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0111
23.04.2011|10:49:41|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 0C 00 64

>41
23.04.2011|10:49:41|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410C0064

>41 for state pidTrottlePosition
23.04.2011|10:49:41|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:42|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0104
23.04.2011|10:49:42|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 11 FE

>
23.04.2011|10:49:42|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 11FE

> for state pidCalculatedEngineLoad
23.04.2011|10:49:42|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD speed: 0
23.04.2011|10:49:42|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:43|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010A
23.04.2011|10:49:43|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 04 00

>
23.04.2011|10:49:43|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410400

> for state pidFuelPressure
23.04.2011|10:49:43|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:46|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 010D
23.04.2011|10:49:46|Debug     |cPOSdotNet.Core.cpCore                            | Core: Sender:cPOSdotNet.ControlsXAML.cpcButton IScreen_OnButtonClick(System.OFF)
23.04.2011|10:49:46|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: NO DATA

>
23.04.2011|10:49:46|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer NODATA

> for state pidSpeed
23.04.2011|10:49:46|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:46|Debug     |cPOSdotNet.MainScreen                             | MainScreen_Closing...
23.04.2011|10:49:46|Debug     |cPOSdotNet.Core.cpCore                            | Core: Sender:cPOSdotNet.MainScreen IScreen_OnMainScreenClosing
23.04.2011|10:49:47|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD message: 0105
23.04.2011|10:49:47|Debug     |cPOSdotNet.Core.cpCore                            | Skin unloaded.
23.04.2011|10:49:47|Debug     |cPOSdotNet.Core.cpCore                            | Informationbroker unloaded.
23.04.2011|10:49:47|Debug     |PluginManager.cpPluginFabrik                      | Unload plugin: Volume_WinMixer
23.04.2011|10:49:47|Debug     |PluginManager.cpPluginFabrik                      | Unload plugin: Player_WMP
23.04.2011|10:49:47|Debug     |PluginManager.cpPluginFabrik                      | Unload plugin: Player_WMP
23.04.2011|10:49:47|Debug     |PluginManager.cpPluginFabrik                      | Unload plugin: Player_Image
23.04.2011|10:49:47|Debug     |PluginManager.cpPluginFabrik                      | Unload plugin: Video_WMP
23.04.2011|10:49:47|Debug     |PluginManager.cpPluginFabrik                      | Unload plugin: GPS_Nmea
23.04.2011|10:49:47|Debug     |PluginManager.cpPluginFabrik                      | Unload plugin: DVD_WMP
23.04.2011|10:49:47|Debug     |PluginManager.cpPluginFabrik                      | Unload plugin: Brightness_DeviceGammaRamp
23.04.2011|10:49:47|Debug     |PluginManager.cpPluginFabrik                      | Unload plugin: External_Application
23.04.2011|10:49:47|Debug     |PluginManager.cpPluginFabrik                      | Unload plugin: Diagnostic_WMI
23.04.2011|10:49:47|Debug     |PluginManager.cpPluginFabrik                      | Unload plugin: Camera_DirectShow
23.04.2011|10:49:47|Debug     |PluginManager.cpPluginFabrik                      | Unload plugin: Radio_USB
23.04.2011|10:49:47|Debug     |PluginManager.cpPluginFabrik                      | Unload plugin: Radio_InternetRadio
23.04.2011|10:49:47|Debug     |PluginManager.cpPluginFabrik                      | Unload plugin: Sensor_OBD
23.04.2011|10:49:47|Debug     |cPOSdotNet.Core.cpCore                            | Plugins unloaded.
23.04.2011|10:49:47|Debug     |SensorOBD.Sensor_OBD                              | Sensor_OBD received OBDData: 41 0D 00

>
23.04.2011|10:49:47|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: Evaluate answer 410D00

> for state pidEngineTemperature
23.04.2011|10:49:47|Debug     |SensorOBD.Function.OBD                            | Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Der Index war außerhalb des Arraybereichs.
23.04.2011|10:49:47|Debug     |CameraDirectShow.Camera_DirectShow                | Camera_DirectShow UnInitializePlugin Dispose...
23.04.2011|10:49:47|Debug     |CameraDirectShow.CameraGraphBuilder               | CameraGraphBuilder CloseInterfaces: stop mediaControl

DickerXXL - Fr 22 Apr, 2011 11:53
Titel:
Dann kommt hier der nächste Versuch.

Der Initialisierung gebe ich mehr Zeit und ignoriere die dabei zurück kommenden Daten...

Gruß
Jörg
Subaru_tom - Fr 22 Apr, 2011 13:28
Titel:
Hallo

Ich schätze, ignorieren reicht nicht, denn an der Reihenfolge der Antworten hat sich nichts geändert.

Gruß

Code:

Sensor_OBD InitializeOBDInterface...
Sensor_OBD WriteToOBD: AT Z
Sensor_OBD WriteToOBD: AT E0
Sensor_OBD WriteToOBD: AT L0
Sensor_OBD WriteToOBD: 01 00
Sensor_OBD message: 010D
Sensor_OBD received OBDData: 41 00 BE 3F A8 11

>
Sensor_OBD ReadyStateElapsed: Evaluate answer 41 00 BE 3F A8 11

> for state pidSpeed
Sensor_OBD ReadyStateElapsed: ERROR on evaluating answer Die Eingabezeichenfolge hat das falsche Format.
Sensor_OBD message: 0105
Sensor_OBD received OBDData: 41 0D 00

>
Sensor_OBD ReadyStateElapsed: Evaluate answer 41 0D 00

> for state pidEngineTemperature
Sensor_OBD engine temp: -40

DickerXXL - Fr 22 Apr, 2011 13:58
Titel:
Mmh, eigentlich verwerfe ich den Buffer nach jedem Initialisierungsschritt. Da sollte nichts mehr drin sein.
Aber gut, offensichtlich ist da noch was.

Dann versuch mal bitte diesen Anhang.
Nach der Initialisierung sendet ich jetzt so lange ein 0100 bis eine Antwort kommt.

Danke und Gruß
Jörg
Subaru_tom - Fr 22 Apr, 2011 17:13
Titel:
Hallo

Wir sind einen Schritt weiter, PID Abfrage und Antwort passt jetzt zusammen.
Da beim Test der Motor nicht lief ist die Geschwindigkeit null und die Drehzahl 25, also korrekt.
Füllstand wird nicht unterstützt, deshalb no Data, auch korrekt.
Die Temperatur stimmt nicht. Da ich kurz zuvor gefahren bin liegt diese bei 77 Grad nicht 35. Ich denke da fehlt die Umrechnung von hex auf dec. 75hex ist 117dec minus 40 ist 77.
Mir unklar ist warum der Wert für die betätigte Drosselkappe nicht stimmen soll, denn das tut er. Ich hatte das Gaspedal am Anfang gar nicht, dann voll und dann teilweise getreten. Entspricht also genau den Werten 0, FE und 7F.

Gruß
DickerXXL - Fr 22 Apr, 2011 18:53
Titel:
Trottle geht aus dem gleichen Grunde nicht.
Die HEX Umrechnung fehlte auch dort und FE in double = Error.

Anbei dann die nächste Sensor_OBD inkl. HEX Umrechnungen.

Gruß
Jörg
Subaru_tom - Sa 23 Apr, 2011 07:58
Titel:
Hallo

Die Werte stimmen jetzt (log1) und auch bei 38,4bps (log3) funktioniert es, allerdings erst beim zweiten Programmstart nach der Baudratenumstellung und den vorherigen Test mit ELMScan. Da die Baudrate bei PIN6 = High über die Software eingestellt werden kann, sind da eventuell noch Einstellungen notwendig, die ELMScan durchgeführt hat. Ich teste auf jeden Fall nochmal die Umstellung ohne ELMScan.
Die Möglichkeit die Baudrate über die Software einzustellen ist eventuell für neuere Fahrzeuge mit CAN Bus ganz nützlich. Bis 500kbs sind da möglich, aber wohl nur mit USB Anschluß sinnvoll.
Kannst dir ja mal das Datenblatt anschauen.

Gruß
Subaru_tom - Mo 25 Apr, 2011 10:20
Titel:
Hallo

Ich habe mal wieder ein paar Wünsche.

1- mp3 Informationen wie Interpret, Album u.s.w. über Label anzeigen
2- Dateiendungen in Listen und beim Titellabel ausblenden
3- eine Seite nach dem öffnen automatisch wieder schließen
4- in einem Label den Namen des Button anzeigen über dem sich gerade der Mauszeiger befindet

Und zum Schluß ist mir bei der IsActive Funktion der Togglebutton noch aufgefallen, das nach einem Seitenwechsel und anschließenden deaktivieren der Funktion, der Button auf der Seite wo es aktiviert wurde, aktiv bleibt. Also habe ich z.B. im Musikplayer stumm geschaltet und dann im Videoplayer die Stummschaltung aufgehoben, bleibt der Button im Musikplayer aktiv. Auf allen anderen Seiten klappt die Umschaltung.

Gruß
DickerXXL - Mo 25 Apr, 2011 18:43
Titel:
Moin zusammen,

da ist mir doch der USB Stick abgeraucht, auf dem ich immer entwickel Sad
Das meiste war in SVN, aber leider nicht alles.
Jetzt bin ich aber wieder soweit.

Ich habe mir überlegt, das OBD Interface nicht mit Messages zu nerven, die ohnehin nicht unterstützt werden. Über "01 00" gibt er mit ja die ersten 32 Funktionen bitkodiert raus, die er unterstützt. Aber wie ich die BIT's auch drehe und wende, welche Funktionen werden mit dieser Antwort (41 00 BE 3F A8 11) unterstützt?
Ich richte mich immer nach OBD II

Und was wären denn noch sinnvolle Werte, die ein CarPC vom OBD abfragen sollte?

Gruß
Jörg
Subaru_tom - Di 26 Apr, 2011 08:11
Titel:
Hallo

--B-- --E-- --3- ---F- ---A-- --8- --1-- --1
1011 1110 0011 1111 1010 1000 0001 0001

Von links nach rechts PID1 bis 32
1 = unterstützt
0 = nicht unterstützt

PID11 und 15 könnten für Turbos interessant sein.
Wegen der recht niedrigen Aktuallisierungsrate ist es eventuell sinnvoll das Plugin so zu gestalten, das jeder selbst entscheiden kann welche von den unterstützten Werten abgefragt werden.

Gruß
DickerXXL - Fr 29 Apr, 2011 12:15
Titel:
Hallo zusammen,

dann mal der Versuch nur die unterstüzten PID's abzufragen.
Die Aktualiserungsrate ist auch höher (Vorsicht! Log wird groß!)
Die Logdatei würde mich wieder interessieren.

@Subaru_tom
Kannst Du mir Deine Wünsche 3 und 4 näher erklären? Wofür kann man das benutzen?

Danke und Gruß
Jörg
Subaru_tom - Fr 29 Apr, 2011 13:53
Titel:
Hallo

drittens könnte man nutzen, um zusätzliche Informationen, die man eher selten benötigt kurz einzublenden. Z.B. cPos Version, Skinversion oder mp3 Infos wie Genre, Album u.s.w.
Mit viertens würde ich den Text eines Button anzeigen lassen, so das man z.B. sieht, dieser Button öffnet den MP3 Player oder führt die Funktion Play aus. So wie man es im Grunde auch von Windows her kennt. Gehe ich da mit der Maus auf ein Symbol bekomme ich eine kurze Info angezeigt. Das Label zum anzeigen könnte man dann an den unteren Bildschirmrand legen.

Gruß
Subaru_tom - Fr 29 Apr, 2011 18:22
Titel:
Hallo

Ich habe das neue Plugin mal ausprobiert. Viel helfen wird die log Datei vermutlich nicht, da mein Auto nur die ersten 32 PID unterstützt.

Gruß
DickerXXL - Di 03 Mai, 2011 16:20
Titel:
Hallo,

immerhin funktioniert es wie gewollt. Zuerst die unterstützen PID's ermitteln und dann nur noch diese regelmäßig abfragen.
Vielleicht findet sich ja noch ein Tester mit mehr PID's.

Für die nächste Version habe ich jetzt fertig:
- Skin: Bei Funktionen können nun mehrere Aktionen gleichzeitig ausgeführt werden.
- "Alte" Coverart Bilder beim Start löschen
- Anzeige der Dateiextensions in den GridViews entfernt
- Neue Properties zu MP3 Dateien Songtitel, Artist, Album (Das ist im System über Coverart gemacht, da das WMP-Plugin das nicht kann. MP3's ist ja nur ein mögliches Audioformat)

Es fehlen noch:
- Wiederaufsetzen nach Neustart (Resume)
- Pages nach kurzer Zeit automatisch ausblenden
- Tooltipp (ggf. ein extra Label) für den Text eines UI-Element.
- Noch was vergessen?

Gruß
Jörg
Subaru_tom - Mi 04 Mai, 2011 10:41
Titel:
Hallo

Es wäre schön, wenn es ein Plugin für das Tea3000 USB Radio geben würde. klick klick. Von -ICE- ist die Firmware und von Bauerrrrr die Integration in cPos1.

Gruß
vossi0478 - Mi 04 Mai, 2011 16:57
Titel:
Hallo Jörg,
ich hab euch mit dem OBD erstmal basteln lasse bevor ich nochmal dusselig frage... Ich hab immer noch Probleme mit den Coverarts. Wenn ich ein Lied mit Cover abspiele, wird kein Cover angezeigt. Spiele ich ein 2. ab wird das Cover vom ersten angezeigt. beim 3. das vom 2. usw. und wenn das nächste Lied kein Cover hat wird das Letzte angezeigte beibehalten... entweder dürfte da dann gar keins angezeigt werden oder ein "Dummy", also Beispielsweise ein Bild mit "no Cover" oder sowas.
Aber was mach ich denn falsch bei den Coverarts? bei dem Default Skin funktioniert es tadelos, also liegts nicht an den MP3s und nicht am System, nur an meinem Skin???

Gruß Christian
DickerXXL - Mi 04 Mai, 2011 19:57
Titel:
Hallo zusammen,

@Christian: Sieht ganz so aus, als ob es am Skin liegt. Kannst Du mir Deinen Skin + Theme mal zukommen lassen?
@Tom: Wo kriege ich denn so ein Teil zum testen her?

Gruß
Jörg
vossi0478 - Mi 04 Mai, 2011 20:28
Titel:
Hallo Jörg,
ich war grad mal am Auto.
Das neuste cPOSdotnet auf dem Netbook (Win7 HP) installiert und die letzte OBD.dll reinkopiert. Jedesmal wenn ich nun Cpos starte und das OBD-Kabel eingesteckt habe so das es initialisiert wird, kommt immer die Meldung das cPOSdotNet nicht mehr funktioniert. Man kann das zwar Fenster bei Seite schieben, ignorieren und trotzdem arbeiten, aber ich bekomms nicht ohne Absturz hin. Ohne OBD Kabel stürzt nichts ab.

Nun gut, trotz allem hab ich das OBD an meinem Golf IV ausprobiert und bei meinem Vater am Passat 3C. Die Logs anbei...

Ich packe mal meinen Skin soweit wie ich bin und schick ihn dir mal per Mail...
Ist allerdings noch ziemlich chaotisch...

Gruß Christian
Subaru_tom - Mi 04 Mai, 2011 21:32
Titel:
Hallo

@vossi0478

Ich habe festgestellt, das es ohne diese Animationseinträge im Theme, deutlich länger dauert bis ein Cover angezeigt wird. Also ohne diese Einträge im Theme:

<!-- Storyboard fuer die ImageWrapper -->

<Storyboard x:Key="WrapImagesIn">
<DoubleAnimation Storyboard.TargetProperty="(UIElement.Effect).(BlurEffect.Radius)"
BeginTime="00:00:00"
Duration="0:0:0.800"
From="50" To="0"/>
<DoubleAnimation
Storyboard.TargetProperty="(UIElement.Opacity)"
BeginTime="00:00:00"
From ="0" To="1" Duration="0:0:0.450" >
</DoubleAnimation>
</Storyboard>
<Storyboard x:Key="WrapImagesOut">
<DoubleAnimation Storyboard.TargetProperty="(UIElement.Effect).(BlurEffect.Radius)"
Duration="0:0:0.800"
BeginTime="00:00:00.000"
From="0" To="50"/>
<DoubleAnimation
Storyboard.TargetProperty="(UIElement.Opacity)"
BeginTime="00:00:01"
To="0" Duration="0:0:0.450" >
</DoubleAnimation>
</Storyboard>

Bei OBD scheint das Aktuallisieren auf die letzte Pluginversion nicht geklappt zu haben, denn laut log wird die Version 0.7.1.685 geladen. Es müsste aber 0.7.1.691 bzw 0.7.1.692 sein.


@DickerXXL

Ich könnte dir ja mein Vorführgerät ausleihen.

Gruß
DickerXXL - Fr 06 Mai, 2011 05:14
Titel:
Hallo zusammen,

@Christian: Beim Coverart ohne WrapImagesIn WrapImagesOut Animation hatte ich einen kleinen Drehen drin, deswegen kommt bei Dir das Bild immer uns einen Titel versetzt, korrigiere ich mit der nächsten Version.
Beim OBD hat der Tom recht, die letzte Sensor_OBD.dll ist bei Dir irgendwie nicht nach bin\Plugins kopiert worden, er lädt noch die alte Version:
PluginManager: Exame Plugin: C:\Program Files\cPOSdotNet\Plugins\Sensor_OBD.dll|OBDSensor|0.7.1.685

Gruß
Jörg
vossi0478 - So 08 Mai, 2011 12:09
Titel:
Sooo....

jetzt mit richtiger dll. Leider bekomme ich mit dieser dll gar nichts mehr angezeigt, aber es stürzt auch nichts mehr ab. Diesmal auch wieder vom Passat und Golf. Den Passat übrigens deshalb weil der ein TDI ist und der sollte ja eigentlich auch die Turbogeschichten ausgeben oder?

Gruß Christian
DickerXXL - So 08 Mai, 2011 18:39
Titel:
Mmh,

der Golf scheint die Anfrage 0100 nicht zu verstehen, bzw. ist noch in der Initialisierung verloren, er sendet ein ?>. Mit 0120 sendet er dann 41 00 ... zurück, was aber die Antwort auf 0100 ist.
Beim Passat ist es ähnlich.

Was ist das denn für ein OBD Interface?

Gruß
Jörg
vossi0478 - So 08 Mai, 2011 19:45
Titel:
Das Interface nennt sich OBD-DIAG AGV4000.

http://www.blafusel.de/obd/obd2_agv.html

http://cgi.ebay.de/AGV4000-OBD2-Diagnose-BMW-MB-VW-SEAT-AUDI-SKODA-FORD-/170637980651?pt=Autopflege_Wartung&hash=item27bad0f3eb

Seltsam find ich das ich mit der "alten" dll eine Verbindung zustande gebracht habe und auch z.B. Drehzahl und Temperatur angezeigt bekommen habe. In den älteren logs müsste das ja zu sehen sein, oder?

Gruß Christian
Subaru_tom - Mo 09 Mai, 2011 10:48
Titel:
Hallo

Ich tippe auch auf ein Zeitproblem. Es kann ja bis zu 2,5s dauern (Datenblatt Seite 14) , bis die Antwort auf die erste PID Abfrage (0100) kommt.

Gruß
DickerXXL - Di 10 Mai, 2011 06:00
Titel:
Ja, das könnte es sein.
Das mit der ersten Sensor_OBD.dll etwas kam ist auch klar, die hat ja gar nicht nachgefragt, was das Auto alles unterstützt sondern einfach drauf los gefragt.
@Christian: Anbei mal eine Sensor_OBD (Version 0.7.2.689) mit längerer Wartezeit bei der Abfrage der unterstützten PID's, Wenn Du die noch mal testen könntest?

Danke und Gruß
Jörg
vossi0478 - Mi 11 Mai, 2011 18:59
Titel:
Hallo zusammen,

Ich nehme mal mein Netbook morgen mit auf die Arbeit. Da steht mein Auto rum. Ich hab im moment nur die Bereitschaftskarre... Wenn ich da zum testen komme probier ichs aus... Wenn mir einer sagt wo ich auf die schnelle da den OBD Stecker, bei nem Astra ich glaube Bj 2007, finde kann ich es auch noch an einem Astra testen... Hier muss jedes Auto mal herhalten Wink

Gruß Christian
dbmaxpayne - Do 12 Mai, 2011 08:20
Titel:
Hi,

da mein normales cPOS immer mehr rumspackt, wollte ich mal nachhören:
Ist cPOSdotNet multithreaded? Also laufen z.B. die OBD-Sachen in einem eigenen Thread oder bleibt, wenn da was hakt immernoch das ganze Programm hängen? Das geht mir bei cPOS nämlich am meisten auf den Keks^^

Eventuell würde ich mich auch bereiterklären, die CAN-, sowie OBD über CAN-Unterstützung zu programmieren.

Gruß Mark
DickerXXL - Fr 13 Mai, 2011 05:32
Titel:
Hallo Mark,

in cPOSdotNet ist alles multithreaded. Die Oberfläche ist komplett losgelöst von Rest des Programms. Wird eine Taste gedrückt, geht der Befehl an das Plugin/an den Core und die UI macht weiter (fire and forget).

Entwickler werden immer gesucht. Leider ist die Beschreibung des Progamms bei einem Plattencrash verloren gegangen. Es gibt nur den Quellcode. Man braucht .NET Kenntnisse (C#) und Visual Studio 2008/2010.

Gruß
Jörg
dbmaxpayne - Fr 13 Mai, 2011 06:59
Titel:
Hallo Jörg,

was meinst du mit Beschreibung?
Ich hab mir gestern mal spasseshalber den Code aus dem SVN gezogen. Da waren einige Beschreibungen bei. Also z.B. wie man ein Plugin erstellt und so.

Mit C# hab ich schon ein paar mal gearbeitet. Aber eher kleinere Sachen.
Bin auch eigentlich nicht so der Programmieren.
Aber ich schau mir das mal die Tage an, wenn ich Zeit habe. Falls ich da durchblicke, schaue ich mal, was ich machen kann^^

Gruß Mark
vossi0478 - Fr 13 Mai, 2011 15:19
Titel:
So zwei neue logs,
von meinem Golf IV wieder, leider keine Antworten. Und eine log von meinem Bereitschafts Auto (Astra Bj. 2007). Bei dieser Möhre bekomme ich natürlich, wie sollte es auch anders sein, alles ganz flux angezeigt. Evil or Very Mad Evtl. schaffe ich es nachher noch bei meinen Eltern am Passat, die sind ab morgen ne Woche im Urlaub und das Auto ist dann nüsch da...

Dann habe ich mal, bei dem Astra, das Programm MoDiag benutzt, weil bei dem das Protokoll angezeigt wird, wie der verbunden ist. Bei dem steht da - CAN11/500k -. Jetzt schlagt mich nicht, bei meinem Auto weiß ich es gerade nicht genau, aber ich meine mich zu erinnern bei mir ständ da - ISO 9141-2 -.
Bei dem Passat gehe ich auch mal von CAN aus, aber wie gesagt evtl schaffe ich es heute noch zu testen... Gibts da dann unterschiede bei dem "Anwählen"??

Gruß Christian
Subaru_tom - Fr 13 Mai, 2011 23:32
Titel:
Hallo

Beim Golf wird das bei der ersten PID Abfrage (also da wo auch das OBD Protokoll ermittelt wird) in der Antwort enthaltene "searching..." als Antwort auf 0100 ausgewertet. Deshalb klappt es beim Golf (ISO 9141-2) nicht, im Gegensatz zum Astra (ISO 15765-4, CAN(11/500)).

bei Protokollen wie ISO9141 oder KWP2000 (also die mit der langsamen Inizialisierung) sieht der Ablauf ja zB so aus:

>0100
searching...
41 00 E8 19 30 12
>
>0100
41 00 E8 19 30 12
>

bei KWP2000(FastInit), VPWM, PWM oder CAN dagegen so:

>0100
41 00 E8 19 30 12
>
>0100
41 00 E8 19 30 12
>

Gruß
DickerXXL - Sa 14 Mai, 2011 06:34
Titel:
Moin zusammen,

@Mark: Wir hatten hier mal ein Wiki, wo beschrieben war, was es mit Plugins, Core, Informationbroker, Renderengine, Unittesting und co. so auf sich hat. Das ist aber verloren.
Im Quellcode stehen auch einige Kommentare. Laden und compilieren solltest Du dann das Projekt cPOSunittest\cPOSunittest.sln (In der Solution sind alle Projekte drin).
Als Startprojekt dann aber die jeweiligen EXE Programme angeben (cposDock, cPOSdotNet oder cPOSdotNetSkinEditor).

@Christian: Anbei mal eine Sensor_OBD.dll, die beim Empfang von SEARCHING die Anfrage nochmal stellt. Evtl. klappt es damit auch am Golf.

Gruß
Jörg
Subaru_tom - Sa 14 Mai, 2011 09:30
Titel:
Hallo

Ich weis jetzt nicht warum ich das nicht schon eher gesehen habe, aber die Auswertung der unterstützten PID bei meinem Auto stimmt nicht. Die log sieht ja so aus:

Sensor_OBD received OBDData: 0 1 0 0 41 00 BE 3F A8 11 >
Sensor_OBD GetDataBytes: ERROR on evaluating answer Die Eingabezeichenfolge hat das falsche Format.
Sensor_OBD EvaluateSupportedPIDs: Supports pidFuelSystemStatus
Sensor_OBD EvaluateSupportedPIDs: Supports pidCalculatedEngineLoad
Sensor_OBD EvaluateSupportedPIDs: Supports pidEngineTemperature
Sensor_OBD EvaluateSupportedPIDs: NO support for pidFuelPressure
Sensor_OBD EvaluateSupportedPIDs: Supports pidFuelIntakeManifoldPressure
Sensor_OBD EvaluateSupportedPIDs: NO support for pidEngineRPM ?
Sensor_OBD EvaluateSupportedPIDs: Supports pidSpeed
Sensor_OBD EvaluateSupportedPIDs: NO support for pidTimingAdvance ?
Sensor_OBD EvaluateSupportedPIDs: NO support for pidIntakeAirTemperature ?
Sensor_OBD EvaluateSupportedPIDs: NO support for pidMAFAirFlowRate ?
Sensor_OBD EvaluateSupportedPIDs: NO support for pidTrottlePosition ?
Sensor_OBD EvaluateSupportedPIDs: NO support for pidRunTimeSinceEngineStart

Bei den PIDs mit Fragezeichen müsste eigentlich "Supports" stehen - Abgeleitet aus dem Rückgabewert "3F". So wie es jetzt ausgewertet wird wäre das "20".

Gruß
DickerXXL - Sa 14 Mai, 2011 09:58
Titel:
Hi Tom,

sorgen macht mir die 2. Zeile im Log:
Sensor_OBD GetDataBytes: ERROR on evaluating answer Die Eingabezeichenfolge hat das falsche Format.

Scheinbar habe ich das > nicht korrekt entfernt.
Anbei eine weitere Sensor_OBD.dll.

Gruß
Jörg
DickerXXL - Sa 14 Mai, 2011 14:14
Titel:
Ich noch mal:
Wie ist eigentlich das Interesse über OBD die Fehlercodes auszulesen?
Ich denke, die Dekodierung der Werte in Klartext ist Hersteller/Fahrzeugtyp abhängig, aber man könnte ja Listen hinterlegen.

Gruß
Jörg
DickerXXL - Sa 14 Mai, 2011 14:24
Titel:
Und noch eine Frage:
Ich habe seit ein paar Wochen hier so ein iPhone liegen.

Wie ist das Interesse iTunes anzubinden?
Ist schon irgendwie cool das Teil, man hat seine gesamte Musiksammlung auf iPhone/iPod und auf dem CarPC ist lokal nichts. Kabel dran (via Bluetooth geht iTunes nicht?) und schon ist der CarPC als Screamingclient eingerichtet.
Es gibt auch ein API zu iTunes, mit dem man sich in Playlist bewegen, Titel abspielen/stoppen, nächsten Titel anwählen kann usw.

Gruß
Jörg
Subaru_tom - So 15 Mai, 2011 10:24
Titel:
Hallo

Ich habe die neue dll mal ausprobiert. Die Auswertung der unterstützten PID stimmt. Bei der dann folgenden Abfrage der einzelnen Werte gibt es aber Probleme.
Eine Abfrage der gespeicherten Fehlercodes ist sicher nicht schlecht. Die vielen herstellerabhängigen Codes erhöhen aber auf jeden Fall den Aufwand für eine Klartextanzeige.

Gruß
DickerXXL - So 15 Mai, 2011 16:21
Titel:
Huch! Was fehlt dem denn?

Auf
0105 (Engine Temperatur) antwortet er mal mit
0 1 0 5 41 05 36 > = OK (14 °C)
oder mit 1 C 0 4 0 1 0 5 403> = ???
oder auch nur mit 0> = ???

Da erkenne ich gar keine Regel.
Auf einige antwortet er gar nicht, z. B. 010B (IntakeManifoldPressure)
Sind evtl. 100ms für eine Antwort zu knapp bemessen?

Anbei mal eine Sensor_OBD.dll mit 200ms Wartezeit für die Antwort.

Gruß
Jörg
Subaru_tom - So 15 Mai, 2011 22:33
Titel:
Hallo

Es ist zwar etwas besser geworden, aber es reicht noch nicht. Es kommt auf jeden Fall zu Überschneidungen und bei jeder weiteren Abfrage wird es schlimmer. ZB gehört die 4 vom Anfang der Antwort auf 0105 noch zum Ende der vorhergehenden Antwort.

Sensor_OBD message: 010C
Sensor_OBD received OBDData: 0 1 0 C 41 0C 00 6>
Sensor_OBD message: 0105
Sensor_OBD received OBDData: 4 0 1 0 5 41 05 35 >

Komisch mit der Version 691, also der vor der Auswertung der unterstützten PID, funktionierte es ja eigentlich schon.

Gruß
DickerXXL - Mo 16 Mai, 2011 07:21
Titel:
Ok, dann gehen wir wieder auf die alte state machine zurück.
Alle x ms wird genau ein Wert abgefragt.

Anbei die neue Sensor_OBD.dll, die alle 200ms eine supported PID abfragt.
Das sollte langsam genug sein, ansonsten muss ich die Wartezeit vielleicht einstellbar machen.

Gruß
Jörg
dbmaxpayne - Mo 16 Mai, 2011 07:38
Titel:
Einstellbar ist doch denke ich am Besten oder?
dbmaxpayne - Mo 16 Mai, 2011 07:54
Titel:
Gibt es eigentlich bereits einen EventHandler?
Der wäre für CAN ja notwendig.
Subaru_tom - Mo 16 Mai, 2011 11:12
Titel:
Hallo

Mit der 693 sieht es bei den OBD Werten leider auch nicht besser aus.
DickerXXL - Mo 16 Mai, 2011 20:39
Titel:
Mmh stimmt, das sieht nicht besser aus.

Würde bedeuten, das 200ms Wartezeit zu kurz sind?
Kann ich mir nicht so ganz vorstellen, dann könnten wir ja kaum Daten abfragen, die sich schnell ändern, z.B. Speed oder Engine RPM.
Will man nur 10 Werte abfragen, so wäre ein Roundtrip ja schon 2s lang und da würde man z.B. beim Speed schon eine deutliche Verzögerung spüren/sehen.

Alternativ könnte ich auch immer einfach auf eine Antwort vom OBD Interface warten, das würde dann immer funktionieren, aber die abgefragten Werte wären dann je nach OBD Interface brauchbar (also schnell genug) oder eben deutlich verzögert.

Ich denk mir mal was aus...

Gruß
Jörg
Subaru_tom - Mo 16 Mai, 2011 21:55
Titel:
Hallo

Mit der ziemlich niedrigen Aktualisierungsrate liegt du richtig. Bei den 8 Werten auf der LCD Anzeige dauert es etwa 2 - 3 Sekunden bis sie jeweils aktualisiert werden. Laut Scantool beträgt die Wiederholungsrate etwa 3 - 4 Hz. Deshalb ja auch mein Vorschlag, das man die Möglichkeit hat selbst zu entscheiden welche Werte abgefragt werden sollen.

Gruß
weichei99 - Di 17 Mai, 2011 10:40
Titel:
Hallo zusammen!

Gestern habe ich cPOSdotNet Version 0.71 auf meinem Car-PC installiert und es hat auch gleich geknallt Smile Nachdem ich die letzte Sensor_OBD drüber kopiert hatte, konnte ich die Werte abfragen Ich habe einen USB Adapter mit einem ELM327 Chip.
Die Aktualisierungsrate ist allerdings wirklich bescheiden.

Ich habe mir vor kurzem einen "RaceLogger" programmiert, der GPS und OBDII in eine Datenbank schreibt. Später nutze ich ich die Daten, um sie im Video einzublenden: http://www.youtube.com/watch?v=M-FEcbjC-Js.

Ich hatte mich auf cpos-online schon mal zum Mitprogrammieren angeboten. Mein Programm ist in C# geschrieben - sollte also recyclebar sein Very Happy.

Also: ... wenn ihr mich gebrauchen könnt.... Quellcode oder besser SVN Zugang wäre nicht schlecht Very Happy

Gruß

Claus
DickerXXL - Fr 20 Mai, 2011 16:37
Titel:
Moin Claus,

Entwickler sind immer willkommen.
Der SVN Pfad ist http://www.dridders.de/svn/cpos/branches/cposNET
Abrufen darf jeder. Wenn Du Änderungen einchecken willst, brauchst Du einen Account. Den kann Dir dridders (ist hier User) geben.
Wie oben schon erwähnt, haben wir die Beschreibung im Wiki verloren, aber der Quellcode enthält auch ein paar Erläuterungen.

Gruß
Jörg
DickerXXL - Fr 20 Mai, 2011 17:57
Titel:
Moin zusammen,

ich habe nun die Werte, die die Sensor_OBD abfragen soll im Dock einstellbar gemacht.
Es wird also nicht mehr nach supported PIDs gefragt, nur noch die im Dock angeklickten PIDs werden abgefragt.
Damit das bei euch klappt, müsst ihr:
1.: Neue DLL ins \Plugins Verzeichnis kopieren
2.: Das Dock aufrufen und das Plugin Sensor_OBD deaktivieren (das grüne Kästchen entfernen.
3.: Übernehmen klicken
4.: Das Plugin Sensor_OBD wieder aktivieren und die gewünschten Einstellungen vornehmen.
5.: Erneut Übernehmen klicken

Dann bin ich mal gespannt...

Gruß
Jörg
MR Action - Fr 20 Mai, 2011 18:03
Titel:
Kannste nicht so einen "Auto fragen" knopf machen wo man dann abfragen kann, was daw Auto kann und das dann angeklickt wird, wenn es denn geht?

Wenn ich es richtig verfolgt habe geht es ja teilweise aber net immer, oder? Wink
Subaru_tom - Sa 21 Mai, 2011 11:55
Titel:
Hallo

Bei mir keine Veränderung. Warum kommt eigentlich öfters zweimal message? Eigentlich müssten sich doch "Sensor_OBD message:" und "Sensor_OBD received:" immer abwechseln.

Gruß
DickerXXL - Sa 21 Mai, 2011 16:25
Titel:
Hi Tom,

ja, das ist immer noch zu schnell.
Ich habe jetzt mal die Abtastrate über das Dock einstellbar gemacht.
Das ganze funktioniert so:
Die Werte werden per Timer nacheinander abgefragt. Dabei hat jede Abfrage (Abtastrate/Anzahl Werte)[ms] Zeit.
Beispiel: Bei einer Abtastrate von 1000ms und 5 Werte, hat jeder Wert 200ms Zeit für die Abfrage. Die Abtastrate ist also ein kompletter Durchlauf in dem alle gewünschten Werte abgefragt werden.
Wenn das eigene OBD Interface dabei aus dem Tritt kommt, kann man entweder die Abtastrate erhöhen oder die Anzahl Werte verringern.

@Mr Action: Ja, aber dann habe ich noch immer das Timingproblem. Ich glaube Tom's Vorschlag mit einstellbaren Werte ist schon gut. Es soll auch zum eingesetzten Skin passen. Es nutzt ja nichts, Werte abzufragen, die im Skin gar nicht angezeigt werden.
OK, es nutzt auch nichts, Werte abzufragen, die das OBD Interface (oder das Auto) gar nicht unterstützten Sad. Ein Henne Ei Problem?

Gruß
Jörg
Subaru_tom - Sa 21 Mai, 2011 21:52
Titel:
Hallo

Also, ich habe es ausprobiert. Es hat auch funktioniert. Allerdings liegt der Mindestwert für die Abtastrate nicht bei 200ms sondern bei 2000ms. Genauer gesagt reichen für einen 1 Byte Wert wie Drosselklappenstellung 2000. Für einen 2 Byte Wert wie Drehzahl dagegen müssen es 3000 sein. Oder hast du dich da eventuell um eine Kommastelle vertan.

Gruß
DickerXXL - So 22 Mai, 2011 07:26
Titel:
Hi Tom,

das passt schon, aber 3s wären schon arg lang oder?
Anbei mal ein Versuch, der die Antwort vom OBD Interface etwas anders vom COM Port liest. Evtl. ist das schneller?

Gruß
Jörg

P.S.: Alternativ habe ich gesehen, das in der Antwort immer auch der dafür angefragte Wert codiert ist, auf 010C kommt 410C... oder auf 0111 kommt 4111... . Das war bei Christians Interface auch so. Will sagen, man könnte Anfrage und Antwort auch unabhängig voneinander verarbeiten.
Subaru_tom - So 22 Mai, 2011 15:58
Titel:
Hallo

Ja ist schneller. Genauer gesagt ist die Zeit für die Drehzahlabfrage jetzt genauso lang wie die für die Drosselklappenstellung.
Wie man an den log sieht sind mindestens 2100ms notwendig.
Ich weis nicht, ob eine unabhängige Verarbeitung etwas bringen würde. Vielleicht könnte man aber kritischere Werte wie Drehzahl häufiger Abfragen als zB Temperaturen.
Ich bin auf jeden Fall auf die Zeiten bei anderen Autos gespannt.

Gruß
weichei99 - Mo 23 Mai, 2011 10:48
Titel:
Hallo Jörg,

DickerXXL hat folgendes geschrieben:

Entwickler sind immer willkommen.


... das habe ich mir schon gedacht Laughing

Zu der ODB Abfrage Problematik: Ich hatte bei meinen ersten Tests mit meinem ELM327 auch das Problem, dass Werte verschluckt wurden oder die Kommunikation sich komplett weggehängt hat. Des Rätsel Lösung war dann im Nachhinein betrachtet eigentlich vollkommen logisch:

Ich frage einen Wert an und warte dann - egal was kommt - auf ein "CR" gefolgt vom Prompt ">". Erst dann frage ich den nächsten Wert an. Wenn diese Zeichenfolge innerhalb eines (einstellbaren?) Timeouts nicht kommt ist das ein Fehlerfall und wird gesondert behandelt (nicht gerade trivial!).

Damit gibt es zwar keinen festen Abfrageintervall, aber die Werte kommen zumindest so schnell wie möglich. Damit komme ich bei meinem "RaceLogger" so auf bis zu 4 komplette Datensätze pro Sekunde. (Focus ST von 2010). Mein ELM327 kann leider nur 38400 Baud, sonst könnte es noch schneller gehen.

Die serielle Kommunikation und das Parsing läuft in einem eigenen Task, arbeitet eine Liste mit PIDs ab und stört so nicht weiter. Die Daten werden dann in einer Struktur abgelegt und stehen anderen Tasks (Anzeige und Datenbank) zur Verfügung. Wenn man einige Werte wie Drehzahl öfter braucht kann man die PID ja mehrfach in die Liste eintragen.

Ich habe mit zwar das SVN ausgecheckt (danke für die URL), aber noch nicht angesehen. Sollte die Abfrage schon so realisiert sein betrachtet mein Geschwätz als nichtig Embarassed

Am Wochenende komme ich vielleicht dazu mir den Quellcode an zu sehen. Vielleicht hüpft mir ja was ins Auge Smile

Gruß

Claus
da_user - Mo 23 Mai, 2011 15:26
Titel:
Ich hätte nen Vorschlag in Sachen Skinning zu machen.

Ich würde gerne einen Skin ungefähr so gestalten (das ist einer für eine andere Software):

http://img600.imageshack.us/i/img07641resize.jpg/

Nun hätte ich zwei Skins angelegt, einen mit weißen Symbolen, Schrift und Umrisse für den Tag, einen mit roten Symbolen, Schrift und Umrisse für die Nacht. Also so wie z.B. beleuchtete Tasten im Auto verbaut sein würden.
Dabei ist mir eine Idee gekommen: Warum sollte ich das machen, wenn cPOS das doch eigentlich auch könnte? Vor allem könnte dann jeder die Farben so anpassen, dass sie ihm gefallen (Amaturenbeleuchtung).
Darum meine Idee:
Über die Buttongrafik wird eine weitere durchsichtige Grafik gelegt. In dieser sind in Graustufen die Symbole, Schriften, Umrisse,.. was halt dann "leuchten" soll eingebettet. cPOS tauscht nun die Graustufen durch die entsprechende Graustufe der gewählten Farbe. Also: 50% in der darübergelegen Buttongrafik & 50% rot eingestellt => Schrift wird in rot mit einer Helligkeit von 25% dargestellt.
Der Helligkeitswert in der Grafikdatei (über die Graustufen) dürfte für 3D-Effekte ganz interessant sein. Bei der eingestellten Grafik um gedrückte Buttons "aufleuchten" zu lassen.

Hierbei sollte man idealerweise vier Farben wählen können, z.B.:

Day_normal, Day_active (für gedrückten Button), Night_normal und Night_active

Die Farben könnte man z.B. mit vier Konstanten im Anfang der Skindatei definieren, also der Skin.ini wenn diese denn noch so heißt. Ich kram mal meine mikrigen XML-Kentnisse raus und stell mir das ungefähr so vor:

Code:

<xml>
<Define>
 <Day_normal>
   <Type>"color"</Type>
   <Color>"FFF"</Color>
   <brightness>"70%"</brightness>
   <Name>"Tagfarbe normal"</Name>
   <Description>"Die Beleuchtungsfarbe für den Tag"</Description>
</Day_normal>
[....]
 <Logo>
   <Type>"Grafik"</Type>
   <Path>"/Logo.jpg"</Path>
   <Name>"Pfad zum Logo"</Name>
   <Size>80x80</Size>
 </Logo>
</Define>
[...]


Wie man sieht habe ich das ganze doch glatt nochmal erweitert. Ich könnte mir nämlich als Nichtmitentwickler vorstellen, dass man dem cPosDotNetDock so beibringen könnte, eine Skin-spezifische Einstellungsseite darzustellen in der man nicht nur die Beleuchtungsfarben einstellen kann, sondern z.B. auch das Logo eingestellt werden können. Mit dem Argument "Type" könnte man dem Dock sagen, welche Einstellungsmöglichkeiten dargestellt werden sollen (z.B. Farbpallete für Color, Pfadeingabefeld für Path,...). Mit ein paar anderen Argumenten die Grenzwerte definieren. Z.B. dass die Logografik 80x80 Pixel groß sein muss.

Wie gesagt, ich stecke leider nicht in der Entwicklung von cPOS, aber evtl. ist es möglich sowas einzuprogrammieren. Insbesondere mit Skinspezifischen Einstellungsmöglichkeiten dürfte einiges möglich sein.

VG
da_user
DickerXXL - Mo 23 Mai, 2011 19:47
Titel:
Moin zusammen,

ich habe am Anfang dieses Thread eine neue Version 0.72 angehängt. Die Änderungen interessieren vermutlich meist die Skinner unter uns.
Das Sensor_OBD Plugin ist das auch jüngst hier gepostete.

Zum OBD: Ich würde das mit dem asynchronen lesen und schreiben gerne noch probieren. Ich denke mir, das A) die Steuergeräte im Auto eine Verzögerung haben, B) das OBD Interface und C) auch der COM-Port im PC hat einen Buffer. Vielleicht bringt es ja noch was...

@Claus: Liegt es denn an der Übertragungsrate? Ich dachte, bei 9600 bit/s ließen sich rund 1000 Bytes übertagen. Die Anfrage ist immer 2 Byte lang, die Antwort max 4 Byte + Overhead (2 Byte) + evtl. das Echo (2 Byte). Da müssten doch weit mehr als 4 Informationen pro Sekunde über die Leitung gehen?

@da_user: Ich bin nicht ganz sicher, ob ich Dich ganz verstanden habe. Du brauchst also einen Skin, der "auf Knopfdruck" die Farben/Graustufen der Anzeigeelemente ändern soll? Die Anzeigeelemente bleiben aber immer an der gleichen Stelle und tun auch immer das gleiche, sehen nur anders aus?
Dann reicht für cPOSdotNet eine Skindatei und entsprechend viele Themes. In den Themes setzt Du dann nur die Farben/Graustufen der Anzeigeelemente. Das müsste schon jetzt funktionieren.

Gruß
Jörg
weichei99 - Di 24 Mai, 2011 10:48
Titel:
Moin!

DickerXXL hat folgendes geschrieben:

@Claus: Liegt es denn an der Übertragungsrate? Ich dachte, bei 9600 bit/s ließen sich rund 1000 Bytes übertagen. Die Anfrage ist immer 2 Byte lang, die Antwort max 4 Byte + Overhead (2 Byte) + evtl. das Echo (2 Byte). Da müssten doch weit mehr als 4 Informationen pro Sekunde über die Leitung gehen?


Da hast Du natürlich Recht! Die höhere Baudrate bringt nur in so fern was, dass die Anfrage schneller gesendet wird und die Antwort schneller übertragen wird. Die Hauptzeit verplempert allerdings der ELM327, weil er auf dem CAN-Bus anfragt und scannt. Bei meinem Focus komme ich bei - ich glaube 6 Werten eben auf die 4 Datensätze pro Sekunde. Das hängt aber haupsächlich vom Auto und dem ODB2 Scanner ab.
Mit cPos.net bekomme ich aber nur alle 2 Sekunden eine Aktualisierung auf dem Display. Irgendwas muss also anders sein Smile

Zuhause hab' ich nur Visual Studio 2008 Express. Das kommt mit dem Ordner Plugins im sln-Flie nicht zurecht. Ist die Pro Version notwendig, oder sollte das auch mit der Express Version gehen?


Ich hab's zwar irgendwie durchgedeht bekommen, aber wenn ich's starte knallts. Der Build war zwar ohne Fehler, aber es gab einen Haufen Warnungen ("... benutze das Schlüsselwort new, wenn das gewollt ist...oder so"). Ist das bei Dir auch so, oder liegt das an der Express Version?

Zu Not habe ich auf der Arbeit ja noch die Pro Version Smile

Claus
da_user - Di 24 Mai, 2011 11:50
Titel:
@DickerXXL:

Nein, ich möchte die Farbe der Beschriftung.Symbole und Umrisse der Anzeigenelemente ändern. Bzw. der jeweilige Anweder des Skins soll sie individuell ändern können. Wenn man das auf den Skin in meinem Thread bezieht (siehe Link) also wie wenn RGB-LEDs als Hintergrundbeleuchtung im Fahrzeug eingesetzt sind, die sich jeder Fahrzeugbesitzer selbstsändig auf seine Lieblingsfarbe einstellen kann.

Nix Graustufen ändern, sondern diese durch Farben ERSETZEN. (So wäre jetzt meine Umsetzungsidee)
Ich möchte da auch nicht zigtausend Themes anlegen, sondern das soll, wie gesagt, jeder für sich selbst indivudell bequem ändern können.
DickerXXL - Mi 25 Mai, 2011 05:00
Titel:
Moin zusammen,

@Claus: Ich zimmere die Tage mal eine Sensor_OBD Variante mit asynchroner Verarbeitung.
Eigentlich sollte 2008 Express reichen. Der Plugin-Ordner dient nur zum optischen Aufräumen, der darf auch entfallen wenn die Express Version das nicht kann. Ich habe auch Warnungen, steht bei mir immer auch ignorieren Smile
Geht denn der Debugger? Startprojekt cPOSdotNet. Erster Breakpoint im Projekt cPOSdotNet.Core, cpCore.cs Funktion private void StartUp().

@da_user: Ah, dann kann man die main-page mit einer Hintergrundfarbe versehen. Die Hintergrundfarbe steht im Theme an exponierter Stelle (ganz oben) und der Anwender kann sie ändern. Die Anzeigeelemente müssten dann an den "durchscheinenden" Stellen transparent sein. Wenn es Bilder sein sollen, müsste man ein entsprechende Graphikformat nehmen (ich glaube png kann sowas?). Oder die Anzeigeelemente werden per svg-Graphik "gemalt". Die main-page hat selbst keine Anzeigeelemente und beim Aufrufen der einzelnen Pages muss die aktuelle Page immer schön geschlossen werden.

Gruß
Jörg
da_user - Mi 25 Mai, 2011 11:54
Titel:
Sorum kann man es auch machen.

Ich hätte halt über die Buttongrafik eine zweite durchsichtige Grafik gelegt, in der mit Graustufen gekennzeichnet ist, welche Stellen wie stark leuchten müssen. Dann müsste cPOS "nur noch" die entsprechenden Stellen ausfärben. Ich mach mal ne kleine Grafik Wink
weichei99 - Mi 25 Mai, 2011 12:21
Titel:
Hi!

DickerXXL hat folgendes geschrieben:
Geht denn der Debugger? Startprojekt cPOSdotNet. Erster Breakpoint im Projekt cPOSdotNet.Core, cpCore.cs Funktion private void StartUp().


... ja geht. Das Programm stirbt bei
Code:

            if (!m_PluginFabrik.Init(m_strModulePath))
            {
                Logger.Add("Der PluginPfad >" + m_strModulePath + "< konnte nicht initalisiert werden!", Logger.eLogType.Error, this);
                m_Main.AppShutdown(-1);
            }


Der Pfad stimmt nicht. Also nur ein Konfigurationsproblem Smile

Ich hab' noch mal in meinem Programm nachgeschaut, warum ich "nur" 4 Datensätze bekomme. Ich habe mit Thread.Sleep ein Päuschen eingebaut, damit die GUI eine Chance hat mal was zu zeichnen und weil ich die Messwerte sowieso nur alle 0,5 Sekunden speichere. Rolling Eyes

Gruß

Claus
da_user - Mi 25 Mai, 2011 12:59
Titel:
Hier mal ne schnell zusammengepfuschte Grafik:

Image
weichei99 - Do 26 Mai, 2011 14:35
Titel:
Hi!

weichei99 hat folgendes geschrieben:
Der Pfad stimmt nicht. Also nur ein Konfigurationsproblem Smile

..nur das ich das richtig verstanden habe:

Im Moment wird sConfigPath so gebildet:
Code:

string sConfigPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\cPOSdotNet\\CposSet\\";


besser wäre:
Code:

string sConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),"cPOSdotNet\\CposSet");

(Ohne die \\ am Ende!). Das ergibt unter XP:

"C:\\Dokumente und Einstellungen\\username\\Anwendungsdaten\\cPOSdotNet\\CposSet"

Wenn der Pfad nicht existiert und/oder die Datei "Configuration.xml" nicht da ist, dann wird auf Wechseldatenträgern gesucht. Ist auf dem Wechseldatenträger ein Verzeichnis "x:\CposSet" vorhanden, wird sConfigPath dort hin gesetzt.

Beim Starten aus der IDE mit "Debug" (cPOSdotNet oder cPOSDock) sollte es z.B. dieser Pfad sein:
"C:\dev\CSharp\cposNET\vbHerodes\Build\unittest\CposSet" und nicht
"C:\dev\CSharp\cposNET\vbHerodes\..\..\Build\unittest\CposSet" oder?


Alle anderen Pfade holt er sich dann aus der Konfiguration.
Bei mir findet der nämlich nichts Confused

Hab's gefixt:

In Directory.cs die Zeile
Code:

public static string m_strConfigPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\cPOSdotNet";


ersetzt durch:

Code:

        public static string m_strConfigPath =Path.GetFullPath(
            Path.Combine(Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]),
            "..\\..\\" + m_strCpos2DevelopPath)   );


Jetzt steht in cpXaml.cs in PreloadSkins der richtige Skinfile drin ("C:\\dev\\CSharp\\cposNET\\vbHerodes\\Build\\unittest\\CposSet\\Skin\\cPOSDefaultSkin.xml") nach dem laden steht aber in Engine.XamlPages[0] die falsche *xaml Datei drin:
"C:\\Dokumente und Einstellungen\\zielke\\Anwendungsdaten\\cPOSdotNet\\main_screen.xaml".

Sollte er sich den Pfad nicht aus der Config holen?


Gruß

Claus
blue5555 - Do 26 Mai, 2011 15:53
Titel:
Hallo,

gibt es aktuell eine Übersicht mit verfügbaren Skins für cpos .Net ?

Grüße
Fabian
DickerXXL - Do 26 Mai, 2011 21:48
Titel: Sensor_OBD
Moin zusammen,

anbei eine neue Sensor_OBD.dll, die die Anfragen weiterhin innerhalb der Abtastrate absetzt, aber die Antworten asynchron abarbeitet.

Gruß
Jörg
Subaru_tom - Do 26 Mai, 2011 21:54
Titel:
Hallo blue5555

Übersicht ist gut. Bis jetzt gibt es genau einen offiziellen Skin.
DickerXXL - Do 26 Mai, 2011 22:13
Titel:
@Claus:
Da geht es um das Finden der Configuration.xml. Die Datei, die von cPOSDock.exe erzeugt wird.
Auf einem Entwicklungssystem ist beim Starten aus der IDE als "Release", das Environment.CurrentDirectory = ???\\build\bin.
Von dort gehen wir zwei Ordner rauf und erwarten dort einen Ordner "unittest" (bei mir "G:\\cPOS.NET\\vbHerodes\\Build\\bin\\..\\..\\Build\\unittest")

Das gleiche passiert bei der Einstellung "Debug". Bei mir "G:\\cPOS.NET\\vbHerodes\\Debug\\bin\\..\\..\\Build\\unittest"

Im Log sollte dann eine Eintrag "SearchCpos2Path [Install on system]: ..." vorkommen.
Dort wird die Datei namens Configuration.xml erwartet.
Darin steht der Pfad auf die Skindatei, z.B. cPOSDefaultSkin.xml.

Daraus wird dann die für WPF benötigte main_screen.XAML Datei erzeugt, das passiert im "Anwendungsordner" des angemeldeten Benutzers.
Diese XAML Datei wird dann mit PreloadSkin geladen. Die XAML Datei wird also immer neu generiert, sie kommt nicht aus der Konfiguration.

Gruß
Jörg
weichei99 - Fr 27 Mai, 2011 11:46
Titel:
Hi!

DickerXXL hat folgendes geschrieben:
Auf einem Entwicklungssystem ist beim Starten aus der IDE als "Release", das Environment.CurrentDirectory = ???\\build\bin.
Von dort gehen wir zwei Ordner rauf und erwarten dort einen Ordner "unittest" (bei mir "G:\\cPOS.NET\\vbHerodes\\Build\\bin\\..\\..\\Build\\unittest")


Bei mir ist Environment.CurrentDirectory das vbHerodes Verzeichnis. Warum auch immet Rolling Eyes . Wenn Du den Pfad der Exe ermittels ist es auf jeden Fall immer richtig (siehe vorheriger Fix von mir) Very Happy . Im Moment habe ich eine VM mit XP und VS2008 Pro (Nicht mehr Express!) aufgesetzt und frisch ausgecheckt. Da ist natürlich nichts drauf. Vielleicht fehlen mir ja auch noch ein paar DLLs. Ich installiere jetzt erst mal die 0.72 und schau mal ob's überhaupt funktioniert.

Trotz abschalten alle Plugins geht die installierte 072 nicht. Habe ich was vergessen? Anbei die Logs.


Gruß

Claus
weichei99 - Fr 27 Mai, 2011 18:01
Titel:
@DickerXXL
... mal was anderes.... Mit welchem Programm simulierst Du denn den ODB2 Scanner in Deiner Entwicklungsmaschine? Ich nehme von http://icculus.org/obdgpslogger/ das Programm odbsimwindows (http://icculus.org/obdgpslogger/downloads/obdsimwindows-latest.zip). Das verhält sich was das Zeilenende betrifft zwar ein bisschen anders (CR statt CRLF wie bei meinem ELM327), aber das funktioniert mit meinem Racelogger perfekt.

Dazu brauchst Du dann allerdings noch com0com (http://com0com.sourceforge.net/).

Gruß

Claus
DickerXXL - Fr 27 Mai, 2011 20:45
Titel:
@Claus:
Ich habe mal nach HRESULT: 0x88980406 gegoogled. Sieht nicht so gut aus. Scheint ein Bug in diversen .NET Frameworks zu sein?
Welches .NET Framework hast Du installiert?

Wir hatten mal einen User hier, der hatte ein ähnliches Verhalten. Nach De-/Installation des .NET Framework ging es dann.
Ansonsten sind Deine Pfade ja nun OK. Er findet alles, scheint aber die main_screen.xaml nicht verarbeiten zu können.

Hast Du Deinen Fix eingecheckt?

Zudem müssen wohl die Dateien AxInterop.WMPlib.dll und Interop.WMPLib.dll auch direkt im Plugin Verzeichnis liegen, das betrifft aber Dein aktuelles Problem nicht, sondern nur das DVD- und Internetradio-Plugin.

Als OBD Simulator hatte ich OBDSim + com0com genommen. Hilft aber nicht allzu weit, da die ganzen Timingprobleme einer realen Umgebung nicht simuliert werden.

Gruß
Jörg
Subaru_tom - Fr 27 Mai, 2011 23:25
Titel:
Hallo

Ich hatte auch gerade das Problem das cPosnet auf einen Rechner wo cPos und NetFramework3.5 vorher noch nie installiert waren nicht starten wollte. Bei mir hat die zusätzliche Installation des aktuellen Netframeworkupdates geholfen.
Die obddll habe ich ausprobiert. Ich würde sagen es dauert jetzt noch länger bis Werte angezeigt und aktualisiert werden.
In log1 habe ich alle Einstellungen beibehalten, bei log2 die Zeit auf 1000ms veringert und bei log3 zusätzlich das GPS Plugin deaktiviert.

Gruß
weichei99 - Fr 27 Mai, 2011 23:47
Titel:
Hi!

DickerXXL hat folgendes geschrieben:

@Claus:
Ich habe mal nach HRESULT: 0x88980406 gegoogled. Sieht nicht so gut aus. Scheint ein Bug in diversen .NET Frameworks zu sein?
Welches .NET Framework hast Du installiert?

... wie gesagt... nur XP mit allen Updates installiert und dann VS2008 Pro...


Zitat:
Hast Du Deinen Fix eingecheckt?


Ich hab' noch keinen Zugang. Ich will auch erst mal eine funktionierende Version erstellen bevor ich das SVN kaputtspiele Smile


Zitat:
Zudem müssen wohl die Dateien AxInterop.WMPlib.dll und Interop.WMPLib.dll auch direkt im Plugin Verzeichnis liegen, das betrifft aber Dein aktuelles Problem nicht, sondern nur das DVD- und Internetradio-Plugin.

... eins nach dem anderen Smile

Zitat:

Als OBD Simulator hatte ich OBDSim + com0com genommen. Hilft aber nicht allzu weit, da die ganzen Timingprobleme einer realen Umgebung nicht simuliert werden.


Also das gleiche Smile Also mir hat's geholfen. Zumindestens war die Programmierzeit im Auto mit dem Netbook deutlich kürzer Cool

Ich muß glaube ich meine VM noch mal neu aufsetzen weil ich nur 16GB spendiert habe und VirtualBox keine Möglichkeit bietet die Festplatte zu vergrößen. Am Wochenende muss ich allerdings erst mal auf einen Geburtstag und ein bisschen Feiern Wink

Bis dann

Claus
DickerXXL - Mo 30 Mai, 2011 05:40
Titel:
@Tom: Sieht aus, als ob der Buffer die Antworten aufspart um sie dann mit einem Rutsch zu senden. Wie ist es denn, wenn Du mal 3-4 Werte pro Sekunde abfragen lässt?
Log3 ist gruselig! Was hat denn das GPS Plugin damit zu tun?

Gruß
Jörg
Subaru_tom - Mo 30 Mai, 2011 07:48
Titel:
Hallo

Ich werde heute nachmittag mal noch ein paar Versuche mache.
Bei log3 wollte ich durch deaktivieren des GPS Plugin die CPU Last senken. Die Ursache für die immer wieder recht hohe Auslastung habe ich leider noch nicht herausgefunden, außer das es, laut Prozess im Taskmanager, an cPos liegt.
Am Wochenende habe ich das ganze mal mit einen etwas älteren tragbaren Rechner (AthlonXP 2Ghz) ausprobiert. Dort ist die Auslastung erstmal viel weniger und auch so wie man das erwartet. Also je nach Aktivität mal hoch mal niedrig. Kann es sein, das der Via Prozessor irgendeine Funktion die cPos nutzt nicht richtig unterstützt, oder ist er wirklich einfach nur zu schlapp.
Übrigens sind auf dem anderen Rechner mindestens 2200ms notwendig um verlässliche Werte mit der vorletzten OBDDLL zu bekommen. Mit der letzten dll habe ich weder mit 1000, 2000 noch 3000ms anzeigbare Werte erhalten. Das allerdings Antworten kommen sehe ich an der Anzeige auf dem Amaturenbrett. Die Anzeige zeigt zwar nur wirre Zahlen an, springt aber bei jeden eingehenden ">" Zeichen eine Stelle weiter und sendet die nächste Abfrage (ins leere sozusagen).
Falls du dich wegen der Anzeige wunders, ich habe TXD vom ELM direkt mit der Anzeige und den PC verbunden und RXD läuft über einen Umschalter. So ist es mit dem alten cPOS möglich anzeigbare Werte auf dem PC zu bekommen, obwohl die Abfrage vom Atmega in der Anzeige gesendet wird.
Für meine Tests stelle ich den Schalter aber natürlich auf PC um.

Gruß
Subaru_tom - Mo 30 Mai, 2011 19:00
Titel:
Hallo

So neue Erkenntnisse. Die letzte dll liefert überhaupt keine Werte, egal welche Zeit man einstellt. Die Werte die im log auftauchen stammen von der vorher verwendeten vorletzten dll Version. Also lege ich an den ELM Spannung an und starte cPos mit der letzten DLL kommen gar keine Werte. Verwende ich nach dem Spannung anlegen erst die vorletzte dll und wechsel dann auf die letzte kommen einige Zeit noch Werte und dann ist Schluß. Da wird wie es aussieht nur der Buffer geleert.

Gruß
weichei99 - Di 31 Mai, 2011 09:27
Titel:
Hi!

Zitat:
Ich muß glaube ich meine VM noch mal neu aufsetzen


So! trotz Geburtstagsfeier meiner Schwägerin hab' ich ein bisschen was gemacht:
* VM mit VirtualBox neu aufgesetzt
* alle Updates von Microsoft installieren (lassen)
* cPOSdotNET 0.71 drauf
* cPOSDock gestartet und alle Plugins aktiviert
* cPOSdotNET gestartet
*

Genau der gleiche Crash mit HResult ....

Daraufhin hatte ich definitiv Virtual Box im Verdacht! Ich habe dann mal die 3D Unterstützung abgeschaltet. Daraufhin gab es zwar keinen Crash mehr, aber cPOSdotNET blieb mit Splashscreen stehen und verursachte 26Minuten lang 99% CPU-Last (Ich dachte hal er kommt vielleicht doch noch Very Happy ).

Ich denke WPF benutzt irgendwelche Schweinereien die in VirtualBox nicht laufen. Exclamation

Die Frage ist, ob man das ganze lokalisieren kann und vielleicht "umschiffen". Es geht ja nicht darum dass das ganze in der virtuellen Umgebung läuft (passiert in der Realität sowieso nicht!), sondern diese kritischen Bereiche - die vielleicht vom Grafiktreiber abhängig sind oder bestimmte Virtualisierungsfunktionen vom Prozessor benutzt - des .NET zu vermeiden.

In meinem Auto werkelt ja auch ein Atom 330 OHNE ION
Chipsatz Das Intel sich nur bedingt Mühe gibt bei deren Grafikoptionen ist glaube ich nichts Neues!

Auf jeden Fall kann ich so nicht arbeiten Exclamation Ich muss mir was Neues ausdenken Very Happy

Gruß

Claus
DickerXXL - Mi 01 Jun, 2011 05:39
Titel:
Moin zusammen,

WPF wird eine graphische CPU nutzen, sofern vorhanden. Sonst muss es natürlich die CPU leisten. Ich wüsste aber nicht, wie man das "umschiffen" kann? Ich hatte auch mal eine virtuelle Maschine (VM Player?). Das lief zwar, aber die ganzen USB Geräte wurden nicht erkannt, daher habe ich es schnell wieder gelassen.
Hat denn sonst noch jemand Erfahrungen mit der jüngsten Sensor_OBD machen können? Das mit dem asynchronen lesen/schreiben war dann wohl nichts Sad

Gruß
Jörg
Subaru_tom - Fr 03 Jun, 2011 22:21
Titel:
Hallo

Irgendwie funktioniert es nicht über "ClickOnEvent" ein Video zu stoppen. Auch zwei Einträge bei "OnPageClose" klappen nicht.

Gruß
Subaru_tom - Sa 04 Jun, 2011 11:02
Titel:
Hallo

Im Momment ist ja vorgesehen, das externe Programm zu beenden wenn die Seite geschlossen wird. Günstiger, vor allen für Programme die die selbe Auflösung wie der Skin haben, wäre es aber die Reihenfolge umzukehren. Also die Seite zu schließen wenn das externe Programm beendet wird.
Dann ist mir noch aufgefallen, das "duration" keine Stunden anzeigt. Bei einen Film mit 1:14:14 sieht man nur 14:14. Bevor ich das Video starte wird allerdings 0:00:00 angezeigt, also ist das Label an sich groß genug.
Gruß
DickerXXL - Di 07 Jun, 2011 06:32
Titel:
Hallo Tom,

"ClickOnEvent ist andersherum gedacht. Ein Event von außen (bool Wert der auf true auslöst) löst den Click auf den Button aus.
Bei OnPageClose und OnPageOpen ist noch ein Fehler drin. Den korrigiere ich mit der nächsten Version. Ebenso die "Duration" Anzeige beim Video.

Für das Schließen einer Seite beim Beenden eines externen Programms mache ich dann ein "isExited" Event beim Plugin External_Application rein. Damit kann man für einen PageClose-Button im "ClickOnEvent" ein EXT_APP.isExited eintragen. Dann wird der Click auf den Button ausgelöst, wenn das externe Programm beendet wird.

Gruß
Jörg
Subaru_tom - Di 07 Jun, 2011 13:34
Titel:
Hallo

ja gut. Ich hatte vermutet das es eventuell auch so fuktionieren könnte: wenn beim stop Button als clickonevent pageclose steht wird beim schließen der Seite das Video gestoppt. Wenns mit video.stop und audio.play bei onpageclose funktioniert ist das natürlich vollkommen ausreichend.

Gruß
weichei99 - Mi 08 Jun, 2011 15:56
Titel:
Hi!

Zitat:
Auf jeden Fall kann ich so nicht arbeiten Exclamation Ich muss mir was Neues ausdenken Very Happy


... ich hab' mir was ausgedacht Very Happy . Die IDE läuft jetzt auf meinem Rechner - ohne VM !

Sensor_ODB lief bei mir nicht mit ODBSim. DTR muß auf hi, RTS muss auf hi (als Handshake ist zwar none eingestellt, aber auch dann sollte der PC melden das er bereit ist Smile Außerdem hab' ich das Encoding noch auf ASCII gesetzt, weil das ja auch das ist, was der ELM327 liefert.

Diff im Anhang. (Ich brauche glaube ich doch einen SVN Zugang...)

Im Auto probiere ich's dann auch noch mal aus. In der Sim komme ich auf 58 Anfragen /sekunde. Mal sehen wie's im realen Einsatz ist.

Gruß

Claus
DickerXXL - Mi 08 Jun, 2011 19:19
Titel:
Moin Claus,

ja, 58 Werte pro Sekunde wäre schon mal sehr schön Smile
DTR und RTS könnten auch im echten Leben Auswirkungen haben, ich bin gespannt auf Deine Messungen im Auto.

Danke und Gruß
Jörg
Subaru_tom - Fr 10 Jun, 2011 18:43
Titel:
Hallo

Ich würde gern diese Geometry Symbole auch für Togglebutton verwenden. Geht das?

Gruß
DickerXXL - Sa 11 Jun, 2011 07:11
Titel:
Moin Tom,

das funktioniert genauso wie beim cpcButton.
Das Glyph Property benutzen und nicht die einzelnen xxxImageFile Porperties.

Zitat:

<Style x:Key="cPOSTheme:btnAudioPlayer" TargetType="{x:Type local:cpcToggleButton}">
<Setter Property="Glyph" Value="{StaticResource imgAdd}"/>
<Setter Property="Color" Value="DarkBlue" />
</Style>


Er macht daraus aber immer "eckige" ToggleButtons.

Gruß
Jörg
Subaru_tom - Sa 11 Jun, 2011 13:06
Titel:
Hallo

DickerXXL hat folgendes geschrieben:

Er macht daraus aber immer "eckige" ToggleButtons.


Mmh, dann bleibe ich bei den normalen Bildern.

Gruß
da_user - Mo 13 Jun, 2011 19:23
Titel:
So,
hab mich jetzt mal eingehender mit dem Skinning beschäftigt. Ich denke, das was ich vorhabe kann man hiermit schon realisieren, evtl. dass ich mir noch ein PlugIn dazuprogrammiere.

Das ganze mit dem XAML-Zeug ist allerdings ziemlich neu für mich, das Skin-Tutorial geht darauf logischerweise auch nicht weiter ein. Wo finde ich dazu weitergehende Lektüre, liebend gerne online, bevorzugt in Deutsch. Aber Englisch und/oder Papierform sind natürlich auch aktzeptabel.
Besonders die "Path-Elemente" sind deutliches Neuland für mich.

Viele Grüße
da_user
weichei99 - Di 14 Jun, 2011 08:23
Titel:
Hi!
weichei99 hat folgendes geschrieben:

Im Auto probiere ich's dann auch noch mal aus. In der Sim komme ich auf 58 Anfragen /sekunde. Mal sehen wie's im realen Einsatz ist.


Am Wochenende hab' ich's dann mal ausprobiert. 2 Werte waren aktiv (Speed und RPM) und 800ms Abfragerate. Siehe da, mit RTS und DTR auf Hi hats Funktioniert Very Happy

Ich wollte dann im Dock die Anzahl der abgefragten Werte erhöht und den Intervall kleiner machen, aber Dock ist direkt beim Starten abgestürzt. Ich hab' dann alle deinstalliert und die 0.72 neu installiert. Seit dem geht cPosNET und Dock nicht mehr. Crying or Very sad

Ich hab' keine Ahnung!!! Muss mich noch mal auf die Suche machen.

Gruß

Claus Very Happy
Subaru_tom - Di 14 Jun, 2011 08:51
Titel:
Hallo

Bei fehlerhaften Einstellungen reicht es sicher die configuration.xml im Benutzerverzeichnis zu löschen ( eine Ebene über dem Skin). Neuinstallation bringt nichts, da diese Datei dabei vermutlich nicht gelöscht wird.

Gruß
weichei99 - Di 14 Jun, 2011 14:51
Titel:
Subaru_tom hat folgendes geschrieben:
Hallo

Bei fehlerhaften Einstellungen reicht es sicher die configuration.xml im Benutzerverzeichnis zu löschen ( eine Ebene über dem Skin). Neuinstallation bringt nichts, da diese Datei dabei vermutlich nicht gelöscht wird.

Gruß


... stimmt.... da war was.... ich probier das mal aus.

Danke!

Gruß

Claus
DickerXXL - Di 14 Jun, 2011 19:08
Titel:
Hallo zusammen,

dann lege ich mal eine Sensor_OBD bei, deren DTS und RTS Signal standarmäßig auf HI stehen, die aber im Dock noch angepasst werden können.
Anfrage und Antwort laufen wieder asynchron.
Evtl. lassen sich ja damit sinnvolle Messwerte erzielen.

@da_user: XAML wird weitgehend von Microsoft vorangetrieben. Lekture gibt es daher meist nur dort in der MSDN. Leider gehen die sehr schnell auf den Programmcode ein und man soll gerade mal VisualStudio starten Sad. Expression Blend ist das Werkzeug für den Designer, leider meines Wissens nicht als kostenfreie Version erhältlich.

@Tom: Ich kann das Standard Aussehen der ToggleButtons mit der nächsten Version den normalen Buttons anpassen. Das würde man ja auch erstmal erwarten.

Gruß
Jörg
da_user - Di 14 Jun, 2011 20:06
Titel:
Ich hab jetzt bei Amazon ein günstiges XAML-Buch mitbestellt. Mal gucken, obw was taugt.

Jetzt habe ich allerdings mit dem Tutorial mal ein bisschen gespielt. Erstmal den DefaultSkin inkl. Themes in nen bequemeren Ordner gepackt und entsprechend im Dock geändert. DefaultSkin läuft problemlos. Nen Skin mit ein paar Buttons erstellt, startet mit dem Default-Theme ohne Probleme. Leeres Theme erstellt (Also ResourceDicotonary) - kein Problem. Einen der Buttons definiert "gestylt", also Image-Source angelegt und den Style definiert - Absturz.

In den LogFiles sind die letzten Zeilen die ich lese, egal was ich für ein Logging Mode einstelle (hier Debug):

Code:
14.06.2011|21:03:17|Debug     |  unknown | FileIndexer: Found logical device C:
14.06.2011|21:03:17|Debug     |  unknown | FileIndexer: Found logical device D:
14.06.2011|21:03:17|Debug     |  unknown | FileIndexer: Found logical device E:
14.06.2011|21:03:17|Debug     |  unknown | FileIndexer: Found logical device F:
14.06.2011|21:03:17|Debug     |  unknown | FileIndexer: Found logical device G:
14.06.2011|21:03:17|Debug     |  unknown | FileIndexer: Found logical device Z:
14.06.2011|21:03:18|Log       |  unknown | FileIndexer: scan start...
14.06.2011|21:03:18|Log       |  unknown | FileIndexer: scan drive: C:\


Ganz klar, dass mit meinem Theme was nicht stimmt, aber wie bekomme ich jetzt raus, was?

Noch ne Anregung für den Skineditor: könnte man hier als Hintergrund für den Skin auch ne Grafik einstellen statt nur eine Hintergrundfarbe? Natürlich hat das auf die Optik des Skins keine Auswirkung, man könnte sich aber ne Grafik mit Hilfslinien basteln.
weichei99 - Di 14 Jun, 2011 21:22
Titel:
Hi!
Zitat:
dann lege ich mal eine Sensor_OBD


... na dann teste ich mal Very Happy

Mein ELM hat geblinkt wie wild, aber Werte habe ich nicht angezeigt bekommen. die Log-Datei im Anhang.

Ich habe verschiedene Intervalle ausprobiert und auch zwischen 6 und 13 Werte ausprobiert - keine Werte.

Laut Log ging die Initialisierung in die Hose.

ich teste morgen noch mal meine Sensor_ODB.dll. Die müsste noch syncron sein.

Gruß

Claus.
Subaru_tom - Di 14 Jun, 2011 22:56
Titel:
Hallo

Bei mir kamen auch keine Werte.

Gruß
Subaru_tom - Di 14 Jun, 2011 23:09
Titel:
Hallo

Ich stimme da_user zu. Wenn in der xaml irgendwas nicht stimmt, zB Groß- Kleinschreibung nicht beachtet, dann wird der Programmstart nur kommentarlos abgebrochen. Eine Info wäre da nicht schlecht.

Gruß
da_user - Di 14 Jun, 2011 23:14
Titel:
Wird der bei dir dann auch beim FileIndexer abgebrochen?
Subaru_tom - Di 14 Jun, 2011 23:28
Titel:
Hallo

Im Prinzip, ja. Ich denke aber das der Fileindexer unabhängig arbeitet. Da ich den Fileindexer nicht verwende ist die letzte Zeile bei mir: "App: merge dictionaries...". Man sieht also im Grunde nur das mit der xaml Datei irgendwas nicht stimmt.

App: ApplyTheme C:\Users\Thomas\AppData\Roaming\cPOSdotNet\CposSet\Themes\CPS2 Tag .xaml
App: create URI...
App: merge dictionaries...
Initialize fileindexer...
FileIndexer: Found logical device C:
FileIndexer: Found logical device D:
FileIndexer: Found logical device E:
FileIndexer: Found logical device F:
FileIndexer: scan start...
FileIndexer: scan drive: C:\

Gruß
DickerXXL - Mi 15 Jun, 2011 05:39
Titel:
Moin zusammen,

bei der Sensor_OBD habe ich noch mal nachgelegt (siehe Anhang).

Neben der cPOSdotNetLog.log gibt es noch eine cPOSdotNetError.log im gleichen Verzeichnis. Bei einem Abbruch müsste sich darin was finden lassen.

Gruß
Jörg
da_user - Mi 15 Jun, 2011 12:30
Titel:
die error log ist leider komplett leer...
weichei99 - Mi 15 Jun, 2011 13:21
Titel:
Moin!

Zitat:
bei der Sensor_OBD habe ich noch mal nachgelegt (siehe Anhang).


Leider immer noch keine Werte Sad

Logs im Anhang

Gruß

Claus
DickerXXL - Mi 15 Jun, 2011 15:24
Titel:
Tag zusammen,

mmh, ich erwarte ein > als Satzendezeichen. Evtl. kommt das nicht?
Ich habe die Sensor_OBD noch etwas gesprächiger machen (Siehe Anhang). Vielleicht sieht man dann was im Log.

@Claus: Du hast den Com-Port auf 38400 baud eingestellt. Das ELM verkraftet das?

@da_user: Kannst Du mir mal Deinen Skin+Theme schicken?

Gruß
Jörg
weichei99 - Mi 15 Jun, 2011 16:18
Titel:
Hi!

Zitat:
Du hast den Com-Port auf 38400 baud eingestellt. Das ELM verkraftet das?


... ja, der kann das. Hab' ich bei meinem Programm auch benutzt. Wenn's ein original ELM327 (V1.4a und nicht 1.3a) wäre, könnte der auch 115200.

Hab's gerade probiert, aber - wie zu erwarten - keine Werte.

Im Log sieht man, dass was zurückkommt, aber der Parser kommt damit wohl nicht zurecht.

Log im Anhang

Kommt denn mit dem Simulator was zurück?

Gruß

Claus
da_user - Mi 15 Jun, 2011 16:21
Titel:
Bitte: http://www.da-user.de/Test.zip

wie gesagt, ein erstes basteln mit dem ersten Button und es ist definitiv irgendwo ein Kleinigkeitsfehler im sehr kleinem Theme.
DickerXXL - Mi 15 Jun, 2011 17:44
Titel:
Moin zusammen,

@Claus: Kannst Du mal etwas weniger Werte abfragen? Er scheint mit der Antwort noch zu gange, während schon die nächste Anfrage kommt. Mir ist zwar noch nicht klar, warum er dann den Empfangsbuffer löscht...

@da_user: Die Fehlermeldung habe ich unterdrückt, ändere ich mit der kommenden Version: Sie lautet App:
Could not apply the theme from uri > G:/Skins/Test/Test.xaml< Message: Ungültiges Zeichen in der angegebenen Codierung. Zeile 6, Position 15.
Das gemeine an XAML ist, das man keine Umlaute verwenden darf, auch nicht im Kommentar!
Wenn alle Umlaute raus sind, muss es noch Property nicht Proberty heißen und schon läufts.

Gruß
Jörg
Subaru_tom - Mi 15 Jun, 2011 18:25
Titel:
Hallo

Und ein paar logs von mir, immer mit 1 Abfragewert (Drehzahl). Wie man sieht klappts nur mit 2200ms vernünftig, wenns weniger wird gibts jede Menge "stopped".

log1 = 9600bps , 2200ms
log2 = 9600bps , 1000ms
log3 = 38400bps , 2200ms
log4 = 38400bps , 1000ms
log5 = 38400bps , 500ms

Gruß
Subaru_tom - Mi 15 Jun, 2011 18:39
Titel:
Hallo

Ich nehme mal an, das es so aussehen muß wie bei der ersten Antwort. Warum ist es bei der zweiten dann so verschoben.

Sensor_OBD: OnDataReceived: 010C41 0C 0A BB
ParseOBDData : 010C41 0C 0A BB
Sensor_OBD: OnDataReceived: 0
Sensor_OBD: OnDataReceived: 01
Sensor_OBD: OnDataReceived: 010
Sensor_OBD: OnDataReceived: 010C
Sensor_OBD: OnDataReceived: 010C4
Sensor_OBD: OnDataReceived: 010C41
Sensor_OBD: OnDataReceived: 010C41
Sensor_OBD: OnDataReceived: 010C41 0
Sensor_OBD: OnDataReceived: 010C41 0C
Sensor_OBD: OnDataReceived: 010C41 0C
Sensor_OBD: OnDataReceived: 010C41 0C 0
Sensor_OBD: OnDataReceived: 010C41 0C 0A
Sensor_OBD: OnDataReceived: 010C41 0C 0A
Sensor_OBD: OnDataReceived: 010C41 0C 0A B
Sensor_OBD: OnDataReceived: 010C41 0C 0A BE
Sensor_OBD: OnDataReceived: 010C41 0C 0A BE
ParseOBDData : 010C41 0C 0A BE
Sensor_OBD WriteToOBD: 010C
Sensor_OBD: OnDataReceived: 0
Sensor_OBD: OnDataReceived: 01
Sensor_OBD: OnDataReceived: 010
Sensor_OBD: OnDataReceived: 010C
Sensor_OBD: OnDataReceived: 4
Sensor_OBD: OnDataReceived: 41
Sensor_OBD: OnDataReceived: 41
Sensor_OBD: OnDataReceived: 41 0
Sensor_OBD: OnDataReceived: 41 0C
Sensor_OBD: OnDataReceived: 41 0C
Sensor_OBD: OnDataReceived: 0
Sensor_OBD: OnDataReceived: 0C
Sensor_OBD: OnDataReceived: 0C
Sensor_OBD: OnDataReceived: 0C B
Sensor_OBD: OnDataReceived: 0C B2
Sensor_OBD: OnDataReceived: 0C B2
Sensor_OBD WriteToOBD: 010C

Gruß
weichei99 - Mi 15 Jun, 2011 19:09
Titel:
Hi!

Zitat:
Kannst Du mal etwas weniger Werte abfragen?


...jau, kann ich Very Happy

Geht aber trotzdem nicht.

Mir sind da ein paar Sachen aufgefallen:

1.) Du schickst schon die nächste Anfrage, bevor die Antwort von der vorherigen da ist. Das geht nicht. Da kommt der ELM327 durcheinander.

2.) Warum kommt der OnReceiveEvent bei jedem einzelnen Zeichen? sollte er nicht nach einem Timeout oder nach 150 Zeichen melden? (Kann aber auch sein dass das normal ist Very Happy )

3.) Es werden im Log keine CR+LF+'>' Zeichen ausgegeben. Die kommen aber auf jeden Fall! Filterst Du die vielleicht zu früh raus, sodas Du das Ende der Antwort nicht findest?

Du solltest das noch mal mit dem Simulator testen. Auch wenn ich eine Intervallzeit von 0 einstellen würde, muss die Abfrage hinterherkommen, weil die nächste Anfrage erst nach erfolgter Antwort gestellt werden darf. Allerdings ist die CPU dann mit nichts anderem mehr beschäftigt und die Anwendung hängt.

Der Log ist im Anhang

Gruß

Claus
DickerXXL - Mi 15 Jun, 2011 19:15
Titel:
Mmh, das sind immer genau 4 Byte, dann gibt es eine neue Zeile.
Deutet auf den Threshold (Anzahl Bytes die im Buffer stehen müssen, bis der COM Port ein DataReceived Event auslöst) hin, den habe ich auf 4 stehen.
Das es manchmal dennoch klappt, liegt vermutlich an der "Unverbindlichkeit" des Threshold, kann klappen, muss aber nicht Sad

Eine neue Zeile anzufangen, wenn DataReceived kommt ist aber auch Quatsch. Erst wenn ein > empfangen wurde, darf ich eine neue Zeile beginnen.

Anbei ein neuer Versuch:
- Threshold auf 20
- Neue Zeile nur, wenn > empfangen wurde
- Ausgabe der Zeile im Log erst wenn alle Zeichen aus dem Empfangsbuffer gelesen wurden.

Danke und Gruß
Jörg
DickerXXL - Mi 15 Jun, 2011 19:24
Titel:
CR + LF werden raus gefiltert.
> schickt die Zeile zum Auswerten und beginnt eine neue Zeile:
Code:


                int Bval = -1;
                try
                {
                    int iBuffersize = m_OBDPort.BytesToRead;
                    for (int i = 0; i < iBuffersize; i++)
                    {
                        //data is received read the message
                        Bval = m_OBDPort.ReadByte();

                        switch (Bval)
                        {
                            case 62: //">"
                                m_OBDFunktionen.ParseOBDData(m_sbLine.ToString());
                                m_sbLine = new StringBuilder();
                                break;
                            case 13: //carriage return - ignore
                                break;
                            case 10: //line feed - ignore
                                break;
                            default: //build string message
                                m_sbLine.Append(char.ConvertFromUtf32(Bval));
                                break;
                        }
                    }
                    LogEntry("Sensor_OBD: OnDataReceived: " + m_sbLine.ToString(), this, (int)ePluginLogType.Debug);
                }
                catch (Exception ex)
                {
                    LogEntry("Sensor_OBD: Error on reveiving OBD data: " + ex.Message + " val " + Bval, this, (int)ePluginLogType.Error);
                }


Gruß
Jörg
Subaru_tom - Mi 15 Jun, 2011 22:24
Titel:
Hallo

3 logs mit 500, 1000 und 2000ms

Gruß
da_user - Mi 15 Jun, 2011 22:39
Titel:
Danke, mit der Fehlermeldung kann ich was Anfangen.

Wie gemein, aber logisch.
weichei99 - Do 16 Jun, 2011 14:49
Titel:
Hi!
Zitat:
Anbei ein neuer Versuch:
- Threshold auf 20
- Neue Zeile nur, wenn > empfangen wurde
- Ausgabe der Zeile im Log erst wenn alle Zeichen aus dem Empfangsbuffer gelesen wurden.


Mit der DLL bekomme ich zwar immer noch keine Werte angezeigt, aber laut der Log-Datei funktioniert der Empfang anscheinend.

Schau's Dir mal an...

Mit Simulator funktioniert das ganze perfekt mit respektablem Speed. (Intervall 100ms geht auch noch...)

Gruß

Claus
Subaru_tom - Do 16 Jun, 2011 22:46
Titel:
Hallo

Mir ist noch eingefallen, das ich ja mindestens 2200ms eintragen muß. Deshalb eine weitere log. Diesmal bekomme ich Werte. Allerdings genau wie bei Weichei99 nur in der LogDatei.

Gruß
DickerXXL - Fr 17 Jun, 2011 05:41
Titel:
Moin zusammen,

es wird ja Smile

Ich habe in ParseOBDData die 41 schön mit Leerzeichen getrennt erwartet, ist aber nicht, deshalb werden keine Werte angezeigt.

Anbei die neue Sensor_OBD.

Danke und Gruß
Jörg
Subaru_tom - Fr 17 Jun, 2011 13:25
Titel:
Hallo

Diesmal siehts gut aus. Die Zeiger auf dem Bildschirm haben sich bewegt.

Gruß
weichei99 - Fr 17 Jun, 2011 19:33
Titel:
Hip, Hip ...... hurraaaaa! :D

Zitat:
Ich habe in ParseOBDData die 41 schön mit Leerzeichen getrennt erwartet, ist aber nicht, deshalb werden keine Werte angezeigt.


genau das war's!

Nu geit dat!

Anbei die Logs zum freuen!

Gruß

Claus
Subaru_tom - Di 21 Jun, 2011 23:55
Titel:
Hallo

ich habe den Skin den ich bis jetzt so zusammengebastelt habe mal hier klick reingestellt. Könnt ihr euch ja mal angucken.

Gruß
SirGroovy2004 - Mi 22 Jun, 2011 10:39
Titel:
Servus Subaru_Tom,

schön dass Du dich hier auch noch rumtreibst!

Servus Gemeinde,

ich arbeite auch gerade an einer "The Green" Konvertierung für cPos.net. Mal sehen, wie schnell ich bin. Da ich diesmal mit Inkscape statt mit Corel Draw arbeite, muss ich fast komplett von vorne anfangen. Corels *.cdr Dateien sind zieeeemlich inkompatibel zu Inkscapes *.svg Dateien. Aber auch so geht es schneller als gedacht! Das Hauptmenü steht schon fast. Der Background macht mir noch Sorgen. Aber des kriegen wir alles hin.

Weiß jemand, wer momentan für www.cpos-online.de zuständig ist? Ich würde mein Skin dort gerne wieder zum Download anbieten.

Ausserdem Biete ich gerne wieder an, mich für die Lizenzierungsfragen zur Verfügung zu stellen. Da die GPL ziemlich tod zu sein scheint, werde ich mein Skin diesmal unter die CC ( http://de.creativecommons.org/was-ist-cc/ ) setzen.

Recht herzlichen Dank für die Aufmerksamkeit.

SirGroovy
Subaru_tom - Mi 22 Jun, 2011 18:32
Titel:
Hallo SirGroovy2004

Ja es lässt einen halt irgendwie nicht los.

Gruß
Alle Zeiten sind GMT + 1 Stunde
Powered by phpBB2 Plus and Kostenloses Forum based on phpBB