Abfrage der Navitasten mit C-control II

Schroeder

Top-Mitglied
Ort
Münsterland
Mein Auto
T6 Caravelle
Erstzulassung
04.2018
Motor
TDI® 110 KW EU6 / 6d-temp CXHA
DPF
ab Werk
Getriebe
DSG® 7-Gang
Antrieb
Front
Ausstattungslinie
Comfortline
Radio / Navi
Navigation Discover MEDIA
Extras
Luftstandheizung, zweite Schiebetür, AHK, Climatronic, Komfortsitze
Umbauten / Tuning
2 x MRV-F545, MRV-F345, exact M18W, Hertz Mille Legend
Weitere T5 (Firmenfuhrpark, Taxen oder Spassmobile) in der Zeilenauflistung Aufbauart, Motor, Getriebe und EZ angeben
T5 Caravelle MJ 2005
Hallo,

nach erfolgter Aktivierung der TV-Tuner Emulation, lassen sich üner ID 0x461 die Tasten vom Navi auswerten. Dies geschieht aber nur bei aktiviertem VSWITCH oder im TV-Modus:

Code:
/*
Tasten Empfang von Navigation RN-S2 CD/DVD
ueber TV-Tuner Emulation oder aktivierten VSWITCH
Version 1.23
Stand 12.4.2007
Copyright Peter Zumbrink

Der Drehknopf wird in die HEX-Werte 00-0F umgerechnet.
Da die Tasten 2-mal wiederholt werden, wird der evtl.
eingehende 2 Tastenstatus unterdrückt. Erst eine empfangene
0x00 reaktiviert den Tastendruck.

Threads die die Tasten auswerten, setzten handler.key auf 0
nach erfolgter Auswertung. Der Empfang aller Tasten wird
unterdrückt, solange nicht ein aktiver Thread die Taste angenommen
hat.
*/

// Tastendruck
int key;
// Drehknopf
int wheel;
// Tastendruck beimletzten auswerten
int prevkey;
// Drehknopf beim letzten auswerten
int prevwheel;
// Ausgabestring, nur für Debug
string msg;
// Buffer für CAN Variablen
byte canbuf[8];
// CAN Error variable
int canerror;
byte pos;

// Tastenempfang scharf schalten
function init(){
  can.expect(6,0x461);
  prevwheel=0;
  prevkey=0;
  pos=0;
}

// Wohnzimmer-Thread
// fals man mal im Haus testen will, ohne CAN Bus
// Einfach nach navikey umbnennen
thread navikey1 {
  wait(hwcom.rxd());
  key=hwcom.get();
  if(key>='A'){key=key-'A'-1;}
  if((handler.key != key) & key !=0 ){
    handler.key=key;
  }
  if(key!=0){handler.dummy=handler.dummy-1;}
}

thread navikey {
  wait(can.rxd(6));
  canerror=can.error();
  if(canerror==0){
    can.get(6,canbuf);
    // Byte 5 [4] ist 0x02 wann Bildformattaste gedrückt wurde
    // Byte 3 enthält dann NICHT einen Tastendruck und wird
    // daher nicht ausgewertet.
    // Ansonsten Tasten auswerten
    key=canbuf[3];
    if(prevkey != key & canbuf[4]!=0x02){
      prevkey=key;
      if(key!=0){
        handler.key=key;
      }
    }
    // Drehknopf auswerten und auf Wertebereich 00-0F umformen
    // Die 200 als Different tauch nur beim Wechsel von
    // 255 nach 0 oder 0 nach 255 auf. Die 255 als Differenz war
    // mir zu wage da man auch mal einen Click verpassen kann
    wheel=canbuf[5];
    if(wheel!=prevwheel){
      if((prevwheel-wheel)>200 & handler.wheel < 0x0F){
        handler.wheel=handler.wheel+1;
      }
      else if((wheel-prevwheel)>200 & handler.wheel >0x00 ){
        handler.wheel=handler.wheel-1;
      }
      else if(wheel<prevwheel & handler.wheel > 0x00){
        handler.wheel=handler.wheel-1;
      }
      else if(wheel>prevwheel& handler.wheel < 0x0F){
        handler.wheel=handler.wheel+1;
      }
      prevwheel=wheel;
    }
    if(key!=0){handler.dummy=handler.dummy-1;}
  }
}

Dieser Code ist mein Eigentum und darf nicht ohne vorhergehende Absprache mit mir oder dem Forenbetreiber in irgendeiner Art gewerblich genutzt werden. Auch das veröffentlichen auf anderen Webseiten ist nicht ohne Zustimmung erlaubt.

Gruss
Peter
 
Zuletzt bearbeitet:
Zurück
Oben