В данном примере от автомобиля получаются и отображаются параметры: скорость, пройденный с начала поездки путь, мгновенный расход топлива и наличие неисправности двигателя. В примере используется форма с шестью объектами Label для отображения данных, одним таймером (событие OnTick) и двумя кнопками. Запускается съем данных по событию Click в OnClick_Start, останавливается в OnClick_Stop.
Для работы данного примера требуется, чтобы была установлена демо-версия программы Check-Engine. Пример расчитан на работу под Windows XP/Vista. Для КПК при вызове Agent.Open должен быть указан соответсвенно путь установки демо-версии программы Check-Engine на КПК.
using System;
using System.Windows.Forms;
using CarApplet;
using CEAgent;
namespace CEAgentTester
{
public partial class TesterForm : Form
{
private CarGateway TheCar = null;
private Sensor snsSpeed;
private Sensor snsDistance;
private Sensor snsFuelPerHour;
private Sensor snsFuelPerDistance;
private Sensor snsErrorDetected;
public TesterForm()
{
InitializeComponent();
}
private void OnClosed(object sender, EventArgs e)
{
if (Agent.IsOpen)
Agent.Close();
}
private void OnClick_Start(object sender, EventArgs e)
{
if (Agent.IsOpen)
{
label6.Text = "Already open";
return;
}
label6.Text = "Trying to open...";
Agent.Open("C:\\Program Files\\ACELab\\Check-Engine Demo");
}
private void OnClick_Stop(object sender, EventArgs e)
{
if (!Agent.IsOpen)
{
label6.Text = "Already closed";
return;
}
label6.Text = "Trying to close...";
Agent.Close();
TheCar = null;
label6.Text = "Closed";
}
private void OnTick(object sender, EventArgs e)
{
// Если интерфейс не открыт - делать нечего
if (!Agent.IsOpen)
return;
// Сиотрим, доступен ли автомобиль
// Если недоступен - пробуем пробиться
if (TheCar == null)
{
// Что то надо сказать...
label6.Text = "Waiting connection...";
// Пробуем пробиться к автомобилю
TheCar = Agent.GetCar();
// Проверяем, получилось или нет
if (TheCar == null)
return;
// Получилось, вытаскиваем нужные датчики
snsSpeed = TheCar.AllSensors["CheckEngine.FuelCons.Speed"];
snsDistance = TheCar.AllSensors["CheckEngine.TheTrip.DistanceWent"];
snsFuelPerHour = TheCar.AllSensors["CheckEngine.TheTrip.FuelPerHour"];
snsFuelPerDistance = TheCar.AllSensors["CheckEngine.TheTrip.FuelPerDist"];
snsErrorDetected = TheCar.AllSensors["CheckEngine.Errors.ErrorDetected"];
// Запускаем съем данных нужных датчиков
snsSpeed.Essential = true;
snsDistance.Essential = true;
snsFuelPerHour.Essential = true;
snsFuelPerDistance.Essential = true;
snsErrorDetected.Essential = true;
// Все получилось...
label6.Text = "Connected!";
}
// Обновляем контролы формы...
label1.Text = snsSpeed.Title + ": " + snsSpeed.Textual + " " + snsSpeed.MeasureUnit;
label2.Text = snsDistance.Title + ": " + snsDistance.Textual + " " + snsDistance.MeasureUnit;
label3.Text = snsFuelPerHour.Title + ": " + snsFuelPerHour.Textual + " " + snsFuelPerHour.MeasureUnit;
label4.Text = snsFuelPerDistance.Title + ": " + snsFuelPerDistance.Textual + " " + snsFuelPerDistance.MeasureUnit;
label5.Text = snsErrorDetected.Title + ": " + snsErrorDetected.Textual;
}
}
}