Использование датчиков в VCL в Delphi XE6
Одна из новых возможностей для VCL в XE6 это наличие компонентов для работы с датчиками.
Сейчас, открыв Tool Palette в VCL проекте Вы увидите три новых компонента на вкладке Sensors. Возможно Вы уже использовали их в Ваших FM приложениях, тогда Вы можете начать их использовать и в VCL. Никаких изменений, только одно ограничение – VCL приложения только для windows. Если у Вас есть Windows планшет с датчиками Вы можете попытаться сделать Ваши приложения более дружественными и удобными.
Пара советов
- Установите на планшет PAServer для windows. Это значительно упростит отладку.
- Настройте удаленный доступ к планшету. На большинство планшетов предустановлена Windows без RDP но существует remote assistant, что существенно облегчает разработку и отладку,
Если Вы никогда не использовали датчики в FM следует знать: каждый компонент предоставляет доступ к одному датчику из списка (категории). Т.е. TMotionSensor позволяет подключиться к следующим датчикам: акселерометр, детектор движения, гироскоп, спидометр. Это зависит от конкретной модели планшета.
Начнем!
У меня есть планшет на котором есть компас. Что мне следует сделать для его использования?
Поместить TOrientationSensor на VCL форму. Выбрать вкладку Events в Object Inspector и создать событие OnSensorChoosing. Это событие позволяет определить какой датчик мы собираемся использовать. Для компаса код может быть следующим:
procedure TForm5.osCompassSensorChoosing(Sender: TObject; const Sensors: TSensorArray; var ChoseSensorIndex: Integer);
var
I : integer;
begin
for I := 0 to Length(Sensors) - 1 do
if (Sensors[I] as TCustomOrientationSensor).SensorType = TOrientationSensorType.Compass3D then
begin
ChoseSensorIndex := I;
Break;
end;
end;
Видно, что я назвал компонент osCompass.
Ничего сложного. Просто пробегаем по массиву и возвращаем индекс первого датчика, который является компасом.
Мы хотим получить азимут? Активируем датчик и считаем значение:
osCompass.Active := True;
LAzimuth := osCompass.Sensor.CompMagHeading;
Или другое свойство, поддерживаемое данным датчиком. Набор поддерживаемых свойств хранится в AvailableProperties
osCompass.Sensor.AvailableProperties
Дальше можно добавить TTimer и опрашивать датчик периодически или опрашивать его по необходимости.
Ничего сложного.


Comments
-
Please login first in order for you to submit comments