27.08.2015, 09:52
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.
So schaut das Interface aus:
Und so die Datei Klasse e39:
Jetzt brauch ich quasi die Pendants von den anderen Autos.
Vielleicht kann ja jemand unterstützen?
Gruß
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();
}
}
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();
}
}
}
Vielleicht kann ja jemand unterstützen?
Gruß