光センサーから照度(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をクリックすると、センサーが停止します。
プロジェクトを作成して画面設計を行う
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をクリックすると、センサーが停止します。
