Sie sind hier: Startseite » Forum » Software » CarPC-Software » cPOS » cPOS » CAN-Bus und Event handler
Nächstes Thema anzeigen
Vorheriges Thema anzeigen

Vorheriges Thema anzeigenDieses Thema verschickenZeige Benutzer, die dieses Thema gesehen habenDieses Thema als Datei sichernPrintable versionEinloggen, um private Nachrichten zu lesenNächstes Thema anzeigen
Du musst dich anmelden um Beiträge zu schreiben!Du musst dich anmelden um Beiträge zu schreiben!
Autor Nachricht
audia4b6us
Manchmalposter
Manchmalposter



Anmeldung: 30.01.2006
Beiträge: 51
Wohnort: Chicago, IL


BeitragVerfasst: So 07 Mai, 2006 05:49  Titel:  CAN-Bus und Event handler
Nach untenNach oben

Ok, ich gebe ja zu ich habe die ganze CAN-Bus und Eventhandler / Sensor Config Geschichte noch nicht ganz verstanden. Aber vielleicht kann mir ja jemand hier einen Tipp geben.

Ich habe eine 6 Byte CAN Message auf ID 461 die wie folgt aussieht: 37 30 01 02 00 00. Dieser Message moechte ich die Funktion PREV zuweisen. Also habe ich unter Sensor Config den folgenden Sensor angelegt:

Sensor: 0
Caption: PrevTrack
Function:
Source: can_461:373001020000

Im Eventhandler habe ich einen Event der wie folgt aussieht:

Logic: 0
Funktion: prev
Event(s): key_37
Signal:

Gebe ich nun im Eventhandler PrevTrack oder Sensor0 als Event(s) (hinter key_37?) oder als Signal an? Irgendwie passiert nichts selbst wenn ich die CAN Message sehen kann (habe zwei CAN Adapter, einen fuer CPOS und einen fuer den CAN Monitor).

Danke und Gruss,
Dirk



    
C1500

CPI Profi
CPI Profi


Alter: 51
Anmeldung: 24.05.2004
Beiträge: 3552
Wohnort: Dortmund

2002 Fiat Stilo
BeitragVerfasst: So 07 Mai, 2006 09:30  Titel:  (Kein Titel)
Nach untenNach oben

Hi Dirk

Probiere doch mal bitte folgendes:
in der Sensor.ini:
Zitat:

Sensor3Function=prevtrack
Sensor3Source=can_461:37300102000
Sensor3Factor=1
Sensor3Offset=0
Sensor3Min=0
Sensor3Max=0
Sensor3Caption=prevtrack
Sensor3Unit=


und in der cPOS.ini folgenden Event:
Zitat:

Logic6Function=prev
Logic6Event=sensor_prevtrack = 373001020000
Logic6Options=0


Bist du die eigendlich sicher, das die ganzen 6 Byte von der LFB kommen?
Ich denke mal das du die LFB oder die Tasten des Radios abgreifen willst.
Bei mir ist es jedesmal nur ein Bit das sich beim drücken auf die LFB ändert.

Und wie kommst du auf Key_37
Willst du Key_37 an cPOS senden?

Willst du Daten vom CAN in cPOS verwenden, oder willst du mit cPOS auf den CAN 461:373001020000 senden?

Gruß
Peer

Hardware: Jetway NC62K, AMD 5600+, 2Gb DDR800, DVB-T, CAN, uvm.

Software: cPOS V1.2 Rules ! - Stilo Skin V1.02.568 - iGo8 mit StiloSkin

    
audia4b6us
Manchmalposter
Manchmalposter



Anmeldung: 30.01.2006
Beiträge: 51
Wohnort: Chicago, IL


BeitragVerfasst: So 07 Mai, 2006 16:01  Titel:  (Kein Titel)
Nach untenNach oben

Hallo Peer,

zur Zeit versuche ich nur die Tasten vom Audi Navigation Plus RNS-E im TV Modus auszuwerten und an cPOS weiter zu geben. Schreiben auf den CAN kommt erst viel, viel spaeter. Das RNS-E sendet im TV Modus CAN Messages fuer bestimmte Tasten, u.A. fuer die Prev und Next Taste. Die Werte koennen die folgenden sein:
461 6 37 30 01 01 00 00 button pressed: prev track
461 6 37 30 01 02 00 00 button pressed: next track

Es gibt da noch eine Reihe weitere Buttons die im TV Modus funktionieren, dies sind die ersten beiden die ich zum Laufen bekommen moechte.

Die Sensoren noch mal neu konfiguriert. Dies ist jetzt in der Sensor.ini:
[SensorConfig]
Sensor0Function=prevtrack
Sensor0Source=can_461:373001010000
Sensor0Factor=1
Sensor0Offset=0
Sensor0Min=1
Sensor0Max=100
Sensor0Caption=prevtrack
Sensor0Unit=
Sensor1Function=nexttrack
Sensor1Source=can_461:373001020000
Sensor1Factor=1
Sensor1Offset=0
Sensor1Min=1
Sensor1Max=100
Sensor1Caption=nexttrack
Sensor1Unit=
Sensor2Function=0

Und in cPOS.ini habe ich u.A. folgendes:
Logic11Function=prev
Logic11Event=sensor_prevtrack = 373001010000
Logic11Options=0
Logic12Function=next
Logic12Event=sensor_nexttrack = 373001020000
Logic12Options=0

cPOS macht aber immer noch nichts, wenn ich die Knoepfe druecke. Wenn ich mir in cPOS die beiden Sensoren ansehe and werden neben den Config Feldern auch Raw Data und Output angezeigt. Wenn ich jetzt die Prev Taste druecke wird im CAN Monitor der Wert 37 30 01 01 00 00 angezeigt, in cPOS unter Raw Data aber 925892865, fuer die Next Taste ist es 37 30 01 02 00 00 und 925892864. Was sagt dieser Wert Raw Data denn aus? Ist es vielleicht dieser Wert, den ich abfragen und im Eventhandler eintragen muss?

Gruss,
Dirk



    
fuchs
Developer
Developer


Alter: 52
Anmeldung: 04.04.2004
Beiträge: 1319
Wohnort: Friesland


BeitragVerfasst: So 07 Mai, 2006 16:12  Titel:  (Kein Titel)
Nach untenNach oben

hi,
bin leider in zeitnot, deshalb nur eine kurze erklärung:
im feld "rawdata" wird der wert immer als dezimal angezeigt, während die can nachtricht im hexadazimalen format eingegeben wird.
im eventhandler muß bei einem vergleich ebenfalls dezimal abgefragtr werden.

also am bestn im event handler das eintragen, was in rawdata bei tastendruck angezeigt wird.

in der can nachricht sollten man die bits, die nicht benutzt werden auf 0 lassen, damit man nicht so hohe werte bekommt.

gruß,
fuchs



    
audia4b6us
Manchmalposter
Manchmalposter



Anmeldung: 30.01.2006
Beiträge: 51
Wohnort: Chicago, IL


BeitragVerfasst: So 07 Mai, 2006 19:23  Titel:  (Kein Titel)
Nach untenNach oben

Hallo Fuchs,

danke fuer den Tipp, jetzt komme ich der Sache schon naeher.

Ich habe in der Sensor Config jetzt nur einen Sensor "RNSE" als can_461:000001FFFF01 definiert und die Werte die beim Betaetigen als Raw Data angezeigt wurden im Eventhandler wie folgt eingetzt:

Function: prev
Event: sensor_RNSE = 65792

Function: next
Event: sensor_RNSE = 66048

Damit bin ich jetzt in der Lage mit den prev/next track buttons am RNS-E den vorherigen/naechsten Song auszuwaehlen.

Beim spielen mit den anderen Knoepfen am RNS-E bin ich dann auch ein neues Problem gestossen (alles folgende habe ich mit 63pre24 auf einem 1.13GHz PIII Mobile unter XP SP2 ausprobiert):

Der Dreh-Drueck-Knopf (MMI Knopf) erzeugt beim drehen eine sehr kurze CAN Message (ca. 30ms). Im CAN Monitor kann ich diese Message sehen aber in cPOS wird sie in den meisten Faellen nicht erkannt. Die Abfolge ist ungefaehr so:

09.962 461 6 37 30 01 00 20 01 <- MMI um eine Raste nach rechts gedreht
09.995 461 6 37 30 04 00 20 00 <- MMI wird nicht gedreht
10.100 461 6 37 30 04 00 20 00
10.208 461 6 37 30 04 00 20 00
10.316 461 6 37 30 04 00 20 00
10.424 461 6 37 30 04 00 20 00
10.768 461 6 37 30 01 00 40 01 <- MMI um eine Raste nach links gedreht
10.798 461 6 37 30 04 00 40 00 <- MMI wird nicht gedreht
10.906 461 6 37 30 04 00 40 00
11.014 461 6 37 30 04 00 40 00
11.122 461 6 37 30 04 00 40 00
11.230 461 6 37 30 04 00 40 00
11.525 461 6 37 30 01 00 20 01 <- MMI um eine raste nach rechts gedreht


Wie oben zu erkennen sendet das RNS-E genau einmal die Message 37 30 01 00 20 01 wenn der MMI Knopf um eine Raste gedreht wird. Danach wird die Messsage 37 30 04 00 20 00 gesendet bis der Knopf wieder gedreht wird. Die Frage ist nun was die min. dauer einer Message sein muss, damit cPOS sie erkennt. Kann die Filter Funktion evtl. helfen die Messages zu erkennen wenn sie sehr kurz sind? Oder hilft hier evtl. ein schneller Rechner?

Gruss,
Dirk



    
C1500

CPI Profi
CPI Profi


Alter: 51
Anmeldung: 24.05.2004
Beiträge: 3552
Wohnort: Dortmund

2002 Fiat Stilo
BeitragVerfasst: So 07 Mai, 2006 19:34  Titel:  (Kein Titel)
Nach untenNach oben

Das wäre doch gelacht, wenn wir das nicht hinbekommen Laughing

Trag mal für den Sensor "can_461:000000FFFFFF" ein

PREV ist dann "1048576"
NEXT ist dann "2097152"
Rad recht ist "8391"
Rad links ist "16385"

Am besten versuchst du mal VOL+ und VOL- mit dem Rad zu verknüpfen:

Function: vol+
Event: sensor_RNSE = 8391
Function: vol-
Event: sensor_RNSE = 16385

Das sollte funktionieren.

Wie schauts denn mit den anderen Tasten aus?

Gruß
Peer

Hardware: Jetway NC62K, AMD 5600+, 2Gb DDR800, DVB-T, CAN, uvm.

Software: cPOS V1.2 Rules ! - Stilo Skin V1.02.568 - iGo8 mit StiloSkin

    
audia4b6us
Manchmalposter
Manchmalposter



Anmeldung: 30.01.2006
Beiträge: 51
Wohnort: Chicago, IL


BeitragVerfasst: So 07 Mai, 2006 19:44  Titel:  (Kein Titel)
Nach untenNach oben

Werde ich gleich mal ausprobieren. Der Volume Regler sendet kein CAN Signal weil das RNS-E die Lautstaerke selber regelt. Die anderen Tasten die ich nohc habe sind die folgenden>


461 6 37 30 04 01 00 00 last button prev track
461 6 37 30 01 01 00 01 button pressed prev track
461 6 37 30 04 02 00 00 last button next track
461 6 37 30 01 02 00 01 button pressed next track
461 6 37 30 04 40 00 00 last button MMI upper left
461 6 37 30 01 40 00 01 button pressed MMI upper left
461 6 37 30 04 80 00 00 last button MMI lower left
461 6 37 30 01 80 00 01 button pressed MMI lower left
461 6 37 30 04 00 10 00 last button MMI knob
461 6 37 30 01 00 10 01 button pressed MMI knob
461 6 37 30 04 00 20 00 last button MMI turn right
461 6 37 30 01 00 20 01 MMI turn right
461 6 37 30 04 00 40 00 last button MMI turn left
461 6 37 30 01 00 40 01 MMI turn left
461 6 37 30 04 00 02 00 last button RETURN
461 6 37 30 01 00 02 01 RETURN
461 6 37 30 04 00 01 00 last button SETUP
461 6 37 30 01 00 01 01 SETUP


Bis spaeter...



    
C1500

CPI Profi
CPI Profi


Alter: 51
Anmeldung: 24.05.2004
Beiträge: 3552
Wohnort: Dortmund

2002 Fiat Stilo
BeitragVerfasst: So 07 Mai, 2006 19:53  Titel:  (Kein Titel)
Nach untenNach oben

Die "last Button" dürften recht uninterresant sein.
Eigendlich sollten die Nachrichten "button pressed" ausreichen, um cPOS komplett zu steuern.
Das ist doch mal ne gute Nachricht. Smile

Du musst halt nur die letzten 3 Byte von HEX in DEZ umrechen (ich nehme immer den Windows Taschenrechner Wink)
Das dann als Event einfach als event einsetzten.

Gruß und viel Erfolg
Peer

Hardware: Jetway NC62K, AMD 5600+, 2Gb DDR800, DVB-T, CAN, uvm.

Software: cPOS V1.2 Rules ! - Stilo Skin V1.02.568 - iGo8 mit StiloSkin

    
fuchs
Developer
Developer


Alter: 52
Anmeldung: 04.04.2004
Beiträge: 1319
Wohnort: Friesland


BeitragVerfasst: So 07 Mai, 2006 22:36  Titel:  (Kein Titel)
Nach untenNach oben

@audia4bus:
das problem ist, dass cPOS für die can abfrage eine durchlaufzeit von ca. 100ms hat und immer die letzte in dieser zeit empfangene nachricht auswertet. d.h. eine nachricht von nur 30ms dauer wird innerhalb von 100ms meistens überschrieben.
eine zwischenspeicherung+abarbeitung im eventhandler wäre in cpos wahrscheinlich zu aufwändig.
gruß,
fuchs



    
audia4b6us
Manchmalposter
Manchmalposter



Anmeldung: 30.01.2006
Beiträge: 51
Wohnort: Chicago, IL


BeitragVerfasst: So 07 Mai, 2006 23:02  Titel:  (Kein Titel)
Nach untenNach oben

Ok, also bei drehen erzeugt der MMI verschiedene CAN Messages, je nach Geschwindigkeit. Die letzte 01 zeigt die Geschindigkeit an, bis 06 habe ich sehen koennen. Ich habe dann alle 6 Werte als Event definiert um keinen zu uebersehen aber cPOS verschluckt immer noch die meistens. Habe mal ein kleines Video gemacht, vielleicht wird daraus ersichtlich was ich meine.

Image

Ansonsten geht prev/next, select (MMI druecken) und gofolder_parent(RETURN) schon recht gut. Aber ohne das drehen ist das ganze nur halb so cool Wink



    
audia4b6us
Manchmalposter
Manchmalposter



Anmeldung: 30.01.2006
Beiträge: 51
Wohnort: Chicago, IL


BeitragVerfasst: So 07 Mai, 2006 23:17  Titel:  (Kein Titel)
Nach untenNach oben

@fuchs:

Macht Sinn ist aber enttaeuschend. Das hiesse ja, dass Lenkradfernbedienungen die aehnlich funktionieren (meistens die mit roll-drueck-Knopf) auch nicht richtig abgefragt werden koennen. Oder CAN Messwerte die nur kurzzeitig auftreten uebersehen werden. Heisst das, dass ein externes Programm geschrieben werden muesste/koennte welches den CAN haeufiger abfragt und die gewuenschten Daten dann an cPOS uebergibt?

Hier noch mal ein Photo von meinem kleinen RNS-E Media Player (das Video wurde beim upload ziemlich komprimiert). Es gibt nur ein Menue bis jetzt aber immerhin...

Image



    
audia4b6us
Manchmalposter
Manchmalposter



Anmeldung: 30.01.2006
Beiträge: 51
Wohnort: Chicago, IL


BeitragVerfasst: So 07 Mai, 2006 23:27  Titel:  (Kein Titel)
Nach untenNach oben

Eine andere Idee: Koennte man die Geschwindigkeit mit der der CAN abgefragt wird in der cpos.ini variable machen? Oder ist es technisch nicht moeglich den CAN z.B. alle 50ms abzufragen?



    
audia4b6us
Manchmalposter
Manchmalposter



Anmeldung: 30.01.2006
Beiträge: 51
Wohnort: Chicago, IL


BeitragVerfasst: Mo 08 Mai, 2006 03:54  Titel:  (Kein Titel)
Nach untenNach oben

Auch auf die Gefahr, dass ich nerve, hier noch ein paar Details ueber mein 30ms Problem.

Wenn der MMI Knopf genau um eine Raste gedreht wird passiert das folgende:

461 6 37 30 01 00 40 01 - 30ms
461 6 37 30 04 00 40 00 - 110ms
461 6 37 30 04 00 40 00 - 110ms
461 6 37 30 04 00 40 00 - 110ms
461 6 37 30 04 00 40 00 - 110ms
461 6 37 30 04 00 40 00 - 110ms

Danach kommt keine Meldung auf 461 mehr bis wieder eine Taste betaetigt wird. Ich habe mir jetzt so geholfen, dass ich nur auf 00 00 00 FF FF 00 achte. So hat cPOS 550ms Zeit die Message aufzufangen und ohne Repeat wird auch nur einen Eintrag weiter gesprungen. Ist zwar noch nicht ideal aber besser als auf die 30ms Message zu warten.

Ich habe kein Multifunktions-Lenrad mit Roll-/Drueck-Taste (so wie in den neueren Audis), waere aber mal interessant die Meldungen heraus zu finden die vom Rad kommen. Dort koennte es aehnlich kurze Messages geben die dann auch schwierig auszuwerten sind.

Gruss,
Dirk



    
audia4b6us
Manchmalposter
Manchmalposter



Anmeldung: 30.01.2006
Beiträge: 51
Wohnort: Chicago, IL


BeitragVerfasst: Fr 12 Mai, 2006 18:07  Titel:  (Kein Titel)
Nach untenNach oben

Ich weiss ich nerve aber ich wuerde wirklich gerne cPOS als Frontend einsetzen und im Moment scheitert es noch and der CAN Abfrage der Navi Knoepfe.

Ich habe zwar keine Ahnung von Visual Basic, habe mir aber dennoch mal der Source Code angesehen. Laut Fuchs wird der CAN ja alle 100ms abgefragt, was ich braeuchte ist wahrscheinlich eine Abfrage alle 30ms, auch auf die Gefahr, dass dies andere Funktionen stoert.

Im Source habe ich die private sub tiCAN_Timer () gefunden mit dem Kommentar "Alle 100ms". Aber ich habe nicht gefunden wo diese 100ms festgelegt werden. Um zu sehen ob es ueberhaupt geht wuerde ich gerne cPOS.exe einmal mit einem kleineren Wert kompilieren (VB 6 habe ich).

Die Frage ist nun: Wo werden diese 100ms definiert?

Danke im voraus und Gruss,
Dirk



    
fuchs
Developer
Developer


Alter: 52
Anmeldung: 04.04.2004
Beiträge: 1319
Wohnort: Friesland


BeitragVerfasst: Fr 12 Mai, 2006 20:31  Titel:  (Kein Titel)
Nach untenNach oben

Hi, die 100ms gelten für die gesamte hardware.
außerdem muß der eventhandler schneller gemacht werden.
versuch es mal so:
- erstelle dir einen neuen timer
- nenne ihn "tiCAN"
- setze enabled auf true
- trage als interval 30 ein
- und trag als quelltext in den code vom frMain folgendes ein:

Private Sub tiCAN_Timer()

'CAN Daten empfangen und auswerten
Call taskCAN
'Highspeed Logic Funktionen aufrufen
ExecuteLogic (True)

End Sub

das macht die can auswertung schneller, aber eigentlich müßte man anders vorgehen: man sollte immer den gesamten puffer nach den entsprechenden can nachrichten durchsuchen und wirklich JEDE nachricht im eventhandler auswerten.
gruß,
fuchs



    
audia4b6us
Manchmalposter
Manchmalposter



Anmeldung: 30.01.2006
Beiträge: 51
Wohnort: Chicago, IL


BeitragVerfasst: Fr 12 Mai, 2006 20:58  Titel:  (Kein Titel)
Nach untenNach oben

Hi fuchs, danke fuer die Antwort. Leider habe ich noch mehr dumme Fragen Sad

Ich habe in frMain in der private sub Form_load() die Zeile frMain.tiCAN.Enabled = True hinzugefuegt, direkt unter frMain.tiMain.Enabled und frMain.tiAux.Enabled. Ist es das, was Du mit "erstelle neuen timer" meinst? Leider konnte ich auch nicht heraus finden wie ich ein Interval von 30 eintragen koennte.

Weiter untern in frMain gab es schon eine private sub tiCAN_Timer() in der aber die Zeile ExecuteLogic (True) fehlt. Kann es sein, dass die private sub tiCAN_Timer() schon in der 0.99.63 forhanden ist und das ich nur die Zeile ExecuteLogic (True) hinzufuegen muss?

Sorry fuer die ganzen Fragen,
Dirk



    
fuchs
Developer
Developer


Alter: 52
Anmeldung: 04.04.2004
Beiträge: 1319
Wohnort: Friesland


BeitragVerfasst: Fr 12 Mai, 2006 21:53  Titel:  (Kein Titel)
Nach untenNach oben

Hi dirk,

kann sein, dass wal für can schon einen eigenen timer angelegt hat.
in diesem fall brauchst du nur die Zeile ExecuteLogic (True) einfügen und in der private sub Form_load() die Zeile frMain.tiCAN.Interval = 30 hinzufügen.

ExecuteLogic (True) kann dann im tiMain entfallen.

gruß,
fuchs



    
audia4b6us
Manchmalposter
Manchmalposter



Anmeldung: 30.01.2006
Beiträge: 51
Wohnort: Chicago, IL


BeitragVerfasst: Fr 12 Mai, 2006 22:46  Titel:  (Kein Titel)
Nach untenNach oben

Perfekt. Ich weiss zwar noch nicht ob etwas anderes dafuer schlechter wird aber zumindest erkennt cPOS jetzt jede Raste beim Drehen des MMI Knopfes.

Vielen Dank,
Dirk



    
Beiträge der letzten Zeit anzeigen:      
Du musst dich anmelden um Beiträge zu schreiben!Du musst dich anmelden um Beiträge zu schreiben!
Vorheriges Thema anzeigenDieses Thema verschickenZeige Benutzer, die dieses Thema gesehen habenDieses Thema als Datei sichernPrintable versionEinloggen, um private Nachrichten zu lesenNächstes Thema anzeigen

Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen
 

CarTFT
Forenspecials



Forensicherheit - Alle Zeiten sind GMT + 1 Stunde -
Powered by phpBB2 Plus, phpBB Styles, based on phpBB © 2001/6 phpBB Group :: FI Theme ::

[ Zeit: 0.7299s ][ Queries: 48 (0.2355s) ][ GZIP Ein - Debug Ein ]
carTFT.com