トップへ(mam-mam.net/)

光センサーから照度(Lux)を読む(VLC) ~Delphiソースコード集

検索:

光センサーから照度(Lux)を読む(VLC) ~Delphiソースコード集

プロジェクトを作成して画面設計を行う

Delphiを起動し、メニューから「ファイル」⇒「新規作成」⇒「Windows VCLアプリケーション -Delphi(W)」 をクリックする。
フォームにTButtonを2個、TEditを1個ドラッグ&ドロップします。

ソースコードの入力

Button1のOnClick、Button2のOnClick、Form1のOnDestroyなどに以下のソースコードを記述します。

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,
  System.Sensors, System.TypInfo;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private 宣言 }
    LightSensor:TCustomLightSensor;
    procedure LightDataChanged(Sender:TObject);
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var SensorManager:TSensorManager;
    i:Integer;
begin
  //センサーマネージャーの取得
  SensorManager:=TSensorManager.Current;

  //センサーマネージャーをサポートしている場合
  if SensorManager.CanActivate then
  begin
    //センサーマネージャーをアクティブにする
    SensorManager.Activate;
    //センサーの数だけループする
    for i := 0 to SensorManager.Count-1 do
    begin
      //ライトセンサーが見つかった場合
      if SensorManager.Sensors[i].Category = TSensorCategory.Light then
      begin
        LightSensor := TCustomLightSensor(SensorManager.Sensors[i]);
        LightSensor.OnDataChanged := LightDataChanged;
        //センサーを有効にする
        LightSensor.Start;
        Edit1.Text := Format( '%5.0 fLux', [ LightSensor.Lux ] );
      end;
    end;
    SensorManager.Deactivate;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if assigned(LightSensor) then
  begin
    LightSensor.Stop;
    LightSensor := nil;
    Edit1.Text := '停止';
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  if assigned(LightSensor) then
  begin
    LightSensor.Stop;
  end;
end;

procedure TForm1.LightDataChanged(Sender: TObject);
begin
  Edit1.Text := Format('%5.0f Lux',[LightSensor.Lux]);
end;

end.

実行する

[実行]⇒[実行]、もしくはデバッグ実行ボタンをクリックすると、コンパイルされて実行します。 Button1をクリックすると、光センサー付きパソコンであれば、センサーが有効になり照度がルクスで表示されます。
Button2をクリックすると、センサーが停止します。