Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Unterstützung bei der Telegrammfindung
#1
Hallo Freunde,

ich habe die spezifischen Telegramme jetzt soweit ausgelagert.
Hat jemand Lust zu den anderen Autos die Datein zu bauen?

Aktuell unterscheide ich nur zwischen e46 und e39/e38/e53.
Sollten sich die Telegramme von e39/e38 und e53 unterscheiden, kann eine neue Klasse angelegt werden.

Code:
           if (Enum.TryParse(aTempstring, true, out aCarModel))
           {
               switch (aCarModel)
               {
                   case eCarModel.e38:
                   case eCarModel.e39:
                   case eCarModel.e53:
                       mCarModel = new BMWe39();
                       break;
                   case eCarModel.e46:
                       mCarModel = new BMWe46();
                       break;
               }
               mLogList.Add(new LogEventArgs(@"Created Instance of " + mCarModel, eLogLvl.eINFO2, aSenderInfo));
           }

So schaut das Interface aus:

Code:
using System.Collections.Generic;
using HelgeInterface_DataModel.Job;

namespace HelgeInterface_DataModel.Interface
{
   public interface iCarModel
   {
       List<iJob> LightShow(int tEnableTimeFactor);
       List<iJob> CollapseMirrors();
       List<iJob> ExpandMirrors();
       List<iJob> CloseCar();
       List<iJob> OpenCar();
   }
}
Und so die Datei Klasse e39:
Code:
using System;
using System.Collections.Generic;
using HelgeInterface_DataModel.Interface;
using HelgeInterface_DataModel.Job;

namespace HelgeInterface_DataModel.CarModel
{
   public class BMWe39 : iCarModel
   {
       public List<iJob> LightShow(int tEnableTimeFactor)
       {
           List<iJob> aJobList = new List<iJob>();
           List<Byte> aData = new List<byte>();
           //SL L R BLK LR NSW L R
           aData.Add(0x0C);
           aData.Add(0x00);
           aData.Add(0x00);
           aData.Add(0x04);
           aData.Add(0x00);
           aData.Add(0x00);
           aData.Add(0x45);
           aData.Add(0x60);
           aData.Add(0x40);
           aData.Add(0x00);
           aData.Add(0xE5);
           aData.Add(0xFF);
           aData.Add(0x00);

           for (int i = 1; i <= tEnableTimeFactor; i++)
           {
               if (i > 1)
                   aJobList.Add(new JobWait("Wait for Light on TimeOut", 19000)); //Wenn länger als 20s an sein soll, muss die nach Faktor+20s neu gesendet werden
               aJobList.Add(new JobSendMessage(new IBusMessage(eIbus.DIS, eIbus.LCM, aData, "Light On: SL L+R, BLK L+R NSW L+R")));
           }
           return aJobList;
       }


       public List<iJob> CollapseMirrors()
       {
           List<iJob> aJobList = new List<iJob>();

           aJobList.Add(new JobWait("CollapseMirrors", 200));
           List<Byte> aData = new List<byte>();
           aData.Add(0x0C);
           aData.Add(0x01); //Mirror left
           aData.Add(0x31);
           aData.Add(0x01);
           aJobList.Add(new JobSendMessage(new IBusMessage(eIbus.DIS, eIbus.GEN, aData, "Collapse mirror left")));
           
           aJobList.Add(new JobWait("Wait for Left Mirror to Collapse", 800));

           aData = new List<byte>();
           aData.Add(0x0C);
           aData.Add(0x02); //Mirror right
           aData.Add(0x31);
           aData.Add(0x01);
           aJobList.Add(new JobSendMessage(new IBusMessage(eIbus.DIS, eIbus.GEN, aData, "Collapse mirror right")));

           return aJobList;
       }

       public List<iJob> ExpandMirrors()
       {
           List<iJob> aJobList = new List<iJob>();

           aJobList.Add(new JobWait("ExpandMirrors", 200));
           List<Byte> aData = new List<byte>();
           aData.Add(0x0C);
           aData.Add(0x01); //Mirror left
           aData.Add(0x30);
           aData.Add(0x01);
           aJobList.Add(new JobSendMessage(new IBusMessage(eIbus.DIS, eIbus.GEN, aData, "Expand mirror left")));

           aJobList.Add(new JobWait("Wait for Left Mirror to Expand", 800));

           aData = new List<byte>();
           aData.Add(0x0C);
           aData.Add(0x02); //Mirror right
           aData.Add(0x30);
           aData.Add(0x01);
           aJobList.Add(new JobSendMessage(new IBusMessage(eIbus.DIS, eIbus.GEN, aData, "Expand mirror right")));

           return aJobList;
       }


       public List<iJob> CloseCar()
       {
           throw new NotImplementedException();
       }

       public List<iJob> OpenCar()
       {
           throw new NotImplementedException();
       }
   }
}
Jetzt brauch ich quasi die Pendants von den anderen Autos.

Vielleicht kann ja jemand unterstützen?

Gruß
Zitieren
#2
Hi Helge,

ich habe jetzt mal die Zeit gefunden ein paar Telegramme für den E46 zu suchen. Ich hoffe ich habe das Telegramm für die Lightshow richtig in die Klasse eingefügt. 
Bei diesem Telegramm gehen Ablendlicht + Nebelscheinwerfer + Rücklicht + Standlicht an.
Das Telegramm für die Spiegel habe ich ums verrecken nicht gefunden. Scheinbar funktioniert das beim E46 nur wenn man die Memorysitze/ Spiegel verbaut hat. Ich habe diese Funktionen in der Klasse jetzt einfach mal ausgelassen. Falls jemand die Telegramme findet, kann er sie ja einfügen.

Code:
using System;
using System.Collections.Generic;
using HelgeInterface_DataModel.Interface;
using HelgeInterface_DataModel.Job;

namespace HelgeInterface_DataModel.CarModel
{
  public class BMWe46 : iCarModel
  {
      public List<iJob> LightShow(int tEnableTimeFactor)
      {
          List<iJob> aJobList = new List<iJob>();
          List<Byte> aData = new List<byte>();
          //SL L R BLK LR NSW L R
          aData.Add(0x3f);
          aData.Add(0x0b);
          aData.Add(0xbf);
          aData.Add(0x0c);
          aData.Add(0x10);
          aData.Add(0x00);
          aData.Add(0x00);
          aData.Add(0x00);
          aData.Add(0x00);
          aData.Add(0x00);
          aData.Add(0x01);
          aData.Add(0x06);
          aData.Add(0xCK);

          for (int i = 1; i <= tEnableTimeFactor; i++)
          {
              if (i > 1)
                  aJobList.Add(new JobWait("Wait for Light on TimeOut", 19000)); //Wenn länger als 20s an sein soll, muss die nach Faktor+20s neu gesendet werden
              aJobList.Add(new JobSendMessage(new IBusMessage(eIbus.DIS, eIbus.LCM, aData, "Light On: SL L+R, BLK L+R NSW L+R")));
          }
          return aJobList;
      }


      public List<iJob> CollapseMirrors()
      {
          throw new NotImplementedException();
      }

      public List<iJob> ExpandMirrors()
      {
          throw new NotImplementedException();
      }


      public List<iJob> CloseCar()
      {
          throw new NotImplementedException();
      }

      public List<iJob> OpenCar()
      {
          throw new NotImplementedException();
      }
  }
}
Zitieren
#3
sowas macht sich gut auf github, hat mir mal der user tgd gesteckt.

hast du elektr. anklappbare Spiegel? oder wie willst das testen/herausfinden?
IBusCommunicator:
Image  <>  Kodi Addon

[Bild: usersignaturpic-14941mspx.jpg]
Zitieren
#4
(27.08.2015, 13:59)harryberlin schrieb: sowas macht sich gut auf github, hat mir mal der user tgd gesteckt.

hast du elektr. anklappbare Spiegel? oder wie willst das testen/herausfinden?

Habe zwar elektrisch anklappbare Spiegel, aber wenn ich den Knopf zum anklappen drücke, tut sich am Bus genau gar nichts.
Github wäre in der Tat perfekt um die Klassen zu erstellen  Smile
Zitieren
#5
es tut sich auch nix auf dem Bus, wenn du auf den knopf drückst.

Du muss mit I*pa die Spiegel ansteuerung und dann aufm Bus mitloggen.

Gruß
Zitieren
#6
Ich hatte das mal bei mir einprogramiert das die Spiegel anklappen beim komfortschliessen. Dazu musste ich die beiden memory Module in den Türen programmieren und das gm5. Aber ich weiß auch das man dafür die memory sitze braucht.
Aber das Signal müsste er doch dann beim komfortschliessen auf den Bus senden oder?
Könnte das nächste Woche ausprobieren.

Gesendet von meinem GT-I9505 mit Tapatalk
Zitieren
#7
entweder so wie du schreibst oder halt mit der diagnose software ansteuern.
durch knopf drücken geht da nix.
IBusCommunicator:
Image  <>  Kodi Addon

[Bild: usersignaturpic-14941mspx.jpg]
Zitieren
#8
werde ich dann nächste Woche in Angriff nehmen. Hoffe nicht das das Verdeckmodul dazwischen funkt. Das sendet ja dann auch den schließen befehl vom Dach.
Brauchen wir dann noch mehr vom E46?
Wäre das dann auch möglich das Verdeck zu öffnen oder schließen? Man muß ja immer den Knopf gedrückt halten bis das Dach offen oder zu ist. So könnte man ja vielleicht ein langes Signal senden.
Gucke auf jeden fall mal ob er da auch nen Signal über Ibus sendet.

PS: Navcoder einfach starten +12V an das Interface und Ibus anschließen, richtig? Gibt ja noch eine 4 Leitung am Resler
Zitieren
#9
(27.08.2015, 17:39)falli83 schrieb: werde ich dann nächste Woche in Angriff nehmen. Hoffe nicht das das Verdeckmodul dazwischen funkt. Das sendet ja dann auch den schließen befehl vom Dach.
Brauchen wir dann noch mehr vom E46?
Wäre das dann auch möglich das Verdeck zu öffnen oder schließen? Man muß ja immer den Knopf gedrückt halten bis das Dach offen oder zu ist. So könnte man ja vielleicht ein langes Signal senden.
Gucke auf jeden fall mal ob er da auch nen Signal über Ibus sendet.

PS: Navcoder einfach starten +12V an das Interface und Ibus anschließen, richtig? Gibt ja noch eine 4 Leitung am Resler

Vielen Dank.
Das mit dem Verdeck öffnen/ bzw. schließen auf Knopfdruck wäre der Hammer. Könnten wir vl. als neuen Request erstellen
Zitieren
#10
Habe das Telegramm für das Licht jetzt noch einmal überarbeitet. Jetzt geht es nicht mehr per Broadcast raus, sondern direkt ans LSZ. Zusätzlich leuchten jetzt auch noch die Blinker vorne mit. 
Spiegel anklappen via INPA kann ich leider nicht, da ich keinen ODB Stecker, bzw. Diagnose Software habe. Hier hat aber eh Falli angeboten die Telegramme zu besorgen.

Gruß

Code:
using System;
using System.Collections.Generic;
using HelgeInterface_DataModel.Interface;
using HelgeInterface_DataModel.Job;

namespace HelgeInterface_DataModel.CarModel
{
  public class BMWe46 : iCarModel
  {
      public List<iJob> LightShow(int tEnableTimeFactor)
      {
          List<iJob> aJobList = new List<iJob>();
          List<Byte> aData = new List<byte>();
          //SL L R BLK LR NSW L R
          aData.Add(0x3f);
          aData.Add(0x0b);
          aData.Add(0xd0);
          aData.Add(0x0c);
          aData.Add(0x00);
          aData.Add(0x00);
          aData.Add(0x00);
          aData.Add(0x00);
          aData.Add(0x60);
          aData.Add(0x06);
          aData.Add(0x01);
          aData.Add(0x06);
          aData.Add(0xCK);

          for (int i = 1; i <= tEnableTimeFactor; i++)
          {
              if (i > 1)
                  aJobList.Add(new JobWait("Wait for Light on TimeOut", 19000)); //Wenn länger als 20s an sein soll, muss die nach Faktor+20s neu gesendet werden
              aJobList.Add(new JobSendMessage(new IBusMessage(eIbus.DIS, eIbus.LCM, aData, "Light On: SL L+R, BLK L+R NSW L+R")));
          }
          return aJobList;
      }


      public List<iJob> CollapseMirrors()
      {
          throw new NotImplementedException();
      }

      public List<iJob> ExpandMirrors()
      {
          throw new NotImplementedException();
      }


      public List<iJob> CloseCar()
      {
          throw new NotImplementedException();
      }

      public List<iJob> OpenCar()
      {
          throw new NotImplementedException();
      }
  }
}
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste