SCADA と HMI の画面
プラントの HMI には、レベルゲージ付きの 2 つのタンク、ポンプの LED、赤い帯付きの圧力ダイヤル、アラーム用のアナンシエーターパネルを表示します。ヒステリシス付きのしきい値が各アラームを 1 回だけ発生させ、アナンシエーターはオペレーターが確認応答するまで点滅し、夜勤ではダークテーマに切り替わります。
- 範囲としきい値
- アナンシエーター
- LED
- ダークテーマ
ラジアルダイヤルからアナンシエーターまで、ダッシュボードと HMI パネル向けの 10 種類のゲージです。緑、黄、赤の帯を描画し、値が限界を超えたらアラームを発し、針を新しい値へ滑らかに動かし、同じゲージをサーバーで PNG や SVG にレンダリングできます。
4 つのグループに分けた 11 の機能です。実際のクラス名とプロパティ名を示し、各ヘルプトピックにリンクしています。登録版と表示された機能は、無料の .NET Community ビルドには含まれません。
1 つのモデルで 10 種類を扱い、範囲、スタイル、複数のポインターに対応します。
計器とスケール
ダッシュボード、HMI パネル、テストベンチには、それぞれ異なる計器が必要です。速度にはダイヤル、レベルにはバー、周波数にはデジタル表示、ポンプにはランプ、アラームにはタイルパネルです。sgcGauges には、同じスケール、ポインター、範囲、しきい値、テーマを共有する 1 つのモデルに基づく 10 種類が付属します。API を 1 つ覚えれば、どの計器も同じように動作します。
TsgcVCLRadialGauge、TsgcVCLLinearGauge、TsgcVCLDigitalGauge、TsgcVCLLEDGauge、TsgcVCLLEDBarGauge、TsgcVCLProgressRingGaugeTsgcVCLVUMeterGauge、TsgcVCLClockGauge、TsgcVCLCompassGauge、TsgcVCLAnnunciatorGaugeTsgcRadialGaugeCommunity 版には、ラジアル、リニア、7 セグメントのデジタル、LED、LED バー、プログレスリングのゲージが含まれます。VU メーター、時計、コンパス、アナンシエーターは登録版です。
ヘルプのトピックを読む
計器とスケール
オペレーターがゲージを一目で読み取れるのは、緑、黄、赤が値のあるべき位置を示しているときです。スケールには任意の最小値と最大値を設定し、主目盛の間隔と補助目盛を指定して、重要な帯に色付きの範囲を追加します。範囲には独自の太さとキャプションを付けられ、スケールは逆向きにすることも、目盛を内側や外側に配置することもできます。範囲はスケール自体に描画されるため、追加の作業なしで、PNG と SVG の出力にも、両方のテーマにも反映されます。
Scales[0].Ranges.Add。StartValue、EndValue、Color、Thickness、Caption を指定しますTsgcGaugeScale: Minimum、Maximum、MajorInterval、MinorCount、ReversedLabelFormat と ShowLabelsStartAngle と SweepAngle で、ラジアルゲージの円弧の形を決めます
計器とスケール
レベル、温度、目標に対する進捗は、本来リニアなものです。1 つのリニアゲージで、単純なバー、球部付きの温度計、値を目標マーカーと比較するブレットグラフの 3 つのスタイルを描画できます。タンク、サイドバー、テーブルの行に合わせて、水平にも垂直にもできます。ブレットグラフの目標は追加のポインターではなくプロパティなので、無料の Community 版でも使えます。小さなゲージは、グリッドのセルやダッシュボードのタイルに収まります。
LinearStyle: glsBar、glsThermometer、glsBulletTarget はブレットグラフの目標マーカーを描画します。全エディションで使えますOrientation と BulbSize
計器とスケール 登録版のみ
実測値と目標値、入口と出口、時間と分のように、並べてこそ意味を持つ読み取り値があります。1 つのゲージに複数のスケールと複数のポインターを持たせることができ、各ポインターはスケールとスタイル(針、マーカー、バー)を選びます。しきい値はどのポインターも監視できます。2 つのポインターを持つダイヤルは、混み合ったパネルで場所を節約でき、目標と実測の差が一目でわかります。
TsgcGaugePointer の Pointers コレクションと Kind、NeedleStyle、MarkerShape、ScaleIndexScales コレクションと、スケールごとの Radius と OffsetPointerIndexCommunity 版は、ゲージごとに 1 つのスケールと 1 つのポインターを描画します。登録版はすべてを描画します。
ヘルプのトピックを読む反応するゲージ。しきい値、アニメーション、産業用ディスプレイ、ライブフィードに対応します。
アラーム、動き、ライブデータ
限界値の付近で上下する圧力が、1 分間に 100 回もアラームを発してはいけません。しきい値は、値、方向、ヒステリシスの帯を持ちます。値が交差したときに 1 回だけ発生し、値が帯の幅だけ戻った後に再び有効になります。OnThreshold は、どのスレッドが値を書き込んでも常にメインスレッドで実行されるので、LED を点灯したり、メッセージを直接表示したりできます。しきい値ごとに監視するポインターを変えられるため、1 つのゲージで、実測値に対する上限アラームと、2 つ目の読み取り値に対する下限アラームを発生させられます。
TsgcGaugeThreshold の Thresholds と Value、Hysteresis、DirectiongtdRising、gtdFalling、gtdBothValueColor は、しきい値が有効な間、値のテキストの色を変えますアラーム、動き、ライブデータ
飛び跳ねる針は壊れているように見え、滑らかに動く針は計器らしく見えます。新しい値は、指定した時間をかけて、5 種類のイージング曲線のいずれかで元の値からアニメーションします。急な変化も追いやすく、ライブフィードでもちらつきません。生の値をすぐ必要とするテストベンチでは、アニメーションをオフにできます。OnChange は、画面上のアニメーションとは無関係に、値が変わったことを通知します。
Animation(TsgcGaugeAnimation)の Enabled と Duration。既定は 300 ms ですEasing: geLinear、geQuadOut、geCubicOut、geCubicInOut、geBackOutIsAnimating で、ポインターがまだ動いているかを確認できます
アラーム、動き、ライブデータ
制御パネルには、独自の視覚言語があります。デジタルゲージは、7 セグメント、14 セグメント、ドットマトリクスの数字を、任意のゴーストセグメントと傾きとともに描画します。LED は点滅し、LED バーはピークを保持し、アナンシエーターはオペレーターが確認応答するまで点滅するアラームタイルのパネルを表示します。これらのディスプレイはすべて、ほかのゲージと同じスケール、しきい値、テーマを備えているため、アラームはどこでも同じように動作します。
TsgcVCLDigitalGauge: DisplayType、Digits、ShowGhost、SkewTsgcVCLLEDGauge の Blink と BlinkInterval。TsgcVCLLEDBarGauge の PeakHoldTsgcVCLAnnunciatorGauge: Tiles、FlashInterval、Acknowledge、AcknowledgeAllCommunity 版には、7 セグメントの数字、LED、LED バーが含まれます。14 セグメントとドットマトリクスのディスプレイ、アナンシエーターは登録版です。
ヘルプのトピックを読むアラーム、動き、ライブデータ 登録版のみ
IoT コンソールのコードの大半は、購読、解析、ゲージの検索、値の設定といった配管処理です。sgcGaugesWS ブリッジは、それをなくします。フィードソースを sgcWebSockets クライアントに接続し、各バインドでトピックと JSON パスをゲージのポインターにマップします。+ と # を使った MQTT のトピックフィルターに対応し、フィルターパスで共有ストリームから 1 台のデバイスを選べます。複数のバインドが 1 つのソースを共有できるので、1 つのブローカー接続でパネル全体を動かせます。
TsgcGaugeFeedSource_MQTT、TsgcGaugeFeedSource_WebSocket、TsgcGaugeFeedSource_SSETsgcGaugeFeedBinding の Bindings: Gauge、PointerIndex、Topic、ValuePathFilterPath と FilterValue でメッセージを選択しますOnValue と OnError イベントブリッジには sgcWebSockets が必要です。Community では、自分のコードから Value を設定してください。バックグラウンドスレッドからでも安全です。
ヘルプのトピックを読むサーバーでも、どのテーマでも、同じゲージです。
出力と見た目
ゲージは、シフトレポート、状態通知メール、バックエンドが配信する Web ページなど、画面の外でも必要になります。すべてのゲージモデルとすべてのコントロールは、フォームなしで PNG または SVG として自分自身を保存できるため、コンソールプログラム、Windows サービス、Linux64 サーバーで、オペレーターが見ているのと同じ計器をレンダリングできます。幅、高さ、スケールはパラメーターなので、1 回の呼び出しでリスト用のサムネイルを、別の呼び出しでレポート用の鮮明な 2 倍の画像を作成できます。
SaveToPNG と SaveToSVGTsgcRadialGauge や TsgcLinearGauge などの、フレームワークに依存しないモデル
出力と見た目
制御室は夜間に画面を暗くし、オフィスは明るい見た目を好みます。1 つのプロパティで、ゲージをライトとダークのテーマの間で切り替えられ、文字盤、スケール、ラベル、値の色が追従します。ゲージは sgcUI のすべての製品と同じテーマの型を使うため、ダッシュボード、チャート、グリッドと一緒に切り替わります。範囲は両方のテーマで独自の色を保つので、夜間でも緑は正常を意味します。FormatSettings プロパティで、ユーザーのロケールに関係なく、表示の小数点記号を固定できます。
Theme := utDark または utLightFaceColor、BackgroundColor、フォントも、ゲージごとに設定できますTitle、Units、ValueFormatOnFormatValueプレビューには、プリンターと PDF に出力される内容がそのまま表示されます。
印刷、プレビュー、PDF
ゲージは、スケール、レンジ、しきい値、ポインター、テキストを含め、画面と同じ状態で 1 ページに印刷されます。最終値で印刷されるため、実行中のアニメーションが用紙に途中の状態で現れることはなく、画面ではそのまま動き続けます。
Print は印刷ダイアログを表示するか既定のプリンターへ直接印刷し、ShowPrintPreview はページ移動、ズーム、ページ設定、印刷、PDF エクスポートを備えたプレビューを開きますPrintSettings は用紙、向き、余白、拡大縮小、ヘッダーとフッターのテキストを保持し、プリンター、プレビュー、PDF のすべてがこれを使いますExportToPDF は、ゲージを実際のテキストを持つベクターグラフィックスとして書き出し、既定ではタグ付きの PDF/UA で、キャプション、単位付きの値、レンジを読み上げる代替テキストを付けますTsgcUIPDFOptions の PDFALevel で、アーカイブ用に PDF/A-2a または PDF/A-3a を、単独でも PDF/UA との併用でも追加できます印刷とプレビューは、無料の Community 版を含むすべてのエディションで、VCL、FireMonkey、WinForms、WPF、Avalonia で使えます。FireMonkey では、印刷は Windows と macOS で、プレビューと PDF エクスポートはすべてのプラットフォームで動作します。PDF エクスポートには sgcUIPDF ブリッジとライセンスされた sgcPDF (.NET では NuGet パッケージ esegece.sgcUICore.sgcPDF) が必要なため、Community 版には含まれません。
スクリーンリーダーとハイコントラスト向けの UI Automation を、設定なしで使えます。
アクセシビリティ
すべての種類のゲージが、キャプション、値、範囲を Microsoft UI Automation に公開し、しきい値は通知として発行されます。ゲージは、アクセシブルな PDF に書き出すものと同じ代替テキストで自身を説明します。
TabStop を True に設定しますアクセシビリティは、無料の Community 版を含むすべてのエディションで既定で有効です。VCL では Delphi 7 から Delphi 13 までのすべての Delphi と C++Builder のバージョンで、FireMonkey では Windows で、そして WinForms、WPF、Avalonia で使えます。 Delphi と C++Builder では、AccessibleName と AccessibleDescription が UI Automation に公開される名前と説明を設定し、.NET では各フレームワーク標準のアクセシブルな名前とヘルプテキストが同じ役割を果たします。アクセシビリティ適合レポートを参照してください。
sgcUI スイートのデモに含まれる sgcGauges:組み込みのシミュレーションデータでオフラインで動作する完全なアプリケーションです。
1 台のポンプのすべての計測値を表示するラジアル、リニア、LED ゲージ。
Altamira Plant →
トラックの速度、コンパス、冷凍温度のゲージ。
Altamira Fleet →
VaR のラジアルゲージ、エクスポージャーバー、進捗リング、点滅するアラームタイル。
Altamira Markets →
四半期目標のラジアルゲージと、地域別のリニアゲージ。
Altamira ERP →
プラントの HMI には、レベルゲージ付きの 2 つのタンク、ポンプの LED、赤い帯付きの圧力ダイヤル、アラーム用のアナンシエーターパネルを表示します。ヒステリシス付きのしきい値が各アラームを 1 回だけ発生させ、アナンシエーターはオペレーターが確認応答するまで点滅し、夜勤ではダークテーマに切り替わります。
テレメトリコンソールがブローカーを購読し、現場のデバイスからの 6 つのライブ読み取り値を表示します。バインドが各トピックと JSON フィールドをポインターにマップし、針が新しい値へ滑らかに動き、メッセージ処理のコードは手書きしません。同じゲージは、毎日の状態通知メール向けに PNG としてもレンダリングされます。
経営ダッシュボードでは、KPI カードやチャートの隣のタイルにゲージを置きます。稼働率はプログレスリング、納期は目標に対するブレットグラフ、サービスレベルは色付きの帯を持つダイヤルです。すべてが 1 つのテーマプロパティに従い、ゲージはタイルに合わせてサイズが決まります。
The same API in Delphi, C++ Builder and C#: a radial pressure gauge with a red band and an alarm threshold, a bullet level gauge and a blinking alarm LED.
A radial pressure gauge with a red band and an alarm threshold, a bullet level gauge and a blinking alarm LED on a VCL form.
uses
SysUtils, Classes, Controls, Forms, sgcUICore_Theme,
sgcGauges_Types, sgcGauges_Model, sgcGauges_VCL;
type
TTankPanel = class(TComponent)
public
Pressure: TsgcVCLRadialGauge;
Level: TsgcVCLLinearGauge;
Alarm: TsgcVCLLEDGauge;
procedure PressureThreshold(Sender: TObject; aThreshold: TsgcGaugeThreshold;
aValue: Double; aRising: Boolean);
end;
procedure TTankPanel.PressureThreshold(Sender: TObject;
aThreshold: TsgcGaugeThreshold; aValue: Double; aRising: Boolean);
begin
// runs in the main thread, whatever thread wrote the value
Alarm.Active := aRising;
end;
function CreateTankPanel(aForm: TForm): TTankPanel;
begin
Result := TTankPanel.Create(aForm);
Result.Pressure := TsgcVCLRadialGauge.Create(aForm);
Result.Pressure.Parent := aForm;
Result.Pressure.SetBounds(16, 16, 240, 240);
Result.Pressure.Title := 'Pressure';
Result.Pressure.Units := 'bar';
Result.Pressure.Theme := utDark;
Result.Pressure.Scales[0].Maximum := 10;
Result.Pressure.Scales[0].MajorInterval := 2;
with Result.Pressure.Scales[0].Ranges.Add do
begin
StartValue := 8;
EndValue := 10;
Color := $FFE34948;
end;
with Result.Pressure.Thresholds.Add do
begin
Value := 8;
Hysteresis := 0.5;
Direction := gtdBoth;
end;
Result.Pressure.Animation.Easing := geCubicOut;
Result.Pressure.OnThreshold := Result.PressureThreshold;
Result.Level := TsgcVCLLinearGauge.Create(aForm);
Result.Level.Parent := aForm;
Result.Level.SetBounds(272, 16, 320, 110);
Result.Level.Title := 'Tank level';
Result.Level.Units := '%';
Result.Level.LinearStyle := glsBullet;
Result.Level.Target := 80;
Result.Alarm := TsgcVCLLEDGauge.Create(aForm);
Result.Alarm.Parent := aForm;
Result.Alarm.SetBounds(272, 140, 64, 64);
Result.Alarm.OnColor := $FFE34948;
Result.Alarm.Blink := True;
Result.Level.Value := 62;
Result.Pressure.Value := 6.5;
// the same drawing code exports the gauge to PNG at twice its size
Result.Pressure.SaveToPNG(ExtractFilePath(ParamStr(0)) + 'pressure.png', 2);
end;The same panel in C++ Builder with the generated headers.
#include <vcl.h>
#include "sgcUICore_Theme.hpp"
#include "sgcGauges_Types.hpp"
#include "sgcGauges_Model.hpp"
#include "sgcGauges_VCL.hpp"
class TTankPanel : public TObject
{
public:
TsgcVCLRadialGauge *Pressure;
TsgcVCLLinearGauge *Level;
TsgcVCLLEDGauge *Alarm;
void __fastcall PressureThreshold(TObject *Sender,
TsgcGaugeThreshold *aThreshold, double aValue, bool aRising);
};
void __fastcall TTankPanel::PressureThreshold(TObject *Sender,
TsgcGaugeThreshold *aThreshold, double aValue, bool aRising)
{
// runs in the main thread, whatever thread wrote the value
Alarm->Active = aRising;
}
TTankPanel * __fastcall CreateTankPanel(TForm *Form)
{
TTankPanel *P = new TTankPanel();
P->Pressure = new TsgcVCLRadialGauge(Form);
P->Pressure->Parent = Form;
P->Pressure->SetBounds(16, 16, 240, 240);
P->Pressure->Title = "Pressure";
P->Pressure->Units = "bar";
P->Pressure->Theme = utDark;
P->Pressure->Scales->Items[0]->Maximum = 10;
P->Pressure->Scales->Items[0]->MajorInterval = 2;
TsgcGaugeRange *R = P->Pressure->Scales->Items[0]->Ranges->Add();
R->StartValue = 8;
R->EndValue = 10;
R->Color = 0xFFE34948;
TsgcGaugeThreshold *T = P->Pressure->Thresholds->Add();
T->Value = 8;
T->Hysteresis = 0.5;
T->Direction = gtdBoth;
P->Pressure->Animation->Easing = geCubicOut;
P->Pressure->OnThreshold = P->PressureThreshold;
P->Level = new TsgcVCLLinearGauge(Form);
P->Level->Parent = Form;
P->Level->SetBounds(272, 16, 320, 110);
P->Level->Title = "Tank level";
P->Level->Units = "%";
P->Level->LinearStyle = glsBullet;
P->Level->Target = 80;
P->Alarm = new TsgcVCLLEDGauge(Form);
P->Alarm->Parent = Form;
P->Alarm->SetBounds(272, 140, 64, 64);
P->Alarm->OnColor = 0xFFE34948;
P->Alarm->Blink = true;
P->Level->Value = 62;
P->Pressure->Value = 6.5;
// the same drawing code exports the gauge to PNG at twice its size
P->Pressure->SaveToPNG(ExtractFilePath(ParamStr(0)) + "pressure.png", 2);
return P;
}The WinForms version in C#, with the same class names as Delphi.
using System;
using System.Drawing;
using System.Windows.Forms;
using esegece.sgcGauges;
using esegece.sgcUICore;
public class TankForm : Form
{
private readonly TsgcWinFormsRadialGauge pressure;
private readonly TsgcWinFormsLinearGauge level;
private readonly TsgcWinFormsLEDGauge alarm;
public TankForm()
{
ClientSize = new Size(610, 270);
pressure = new TsgcWinFormsRadialGauge { Bounds = new Rectangle(10, 10, 240, 240) };
pressure.Title = "Pressure";
pressure.Units = "bar";
pressure.Theme = TsgcUITheme.utDark;
pressure.Scales[0].Maximum = 10;
pressure.Scales[0].MajorInterval = 2;
TsgcGaugeRange red = pressure.Scales[0].Ranges.Add();
red.StartValue = 8;
red.EndValue = 10;
red.Color = 0xFFE34948;
TsgcGaugeThreshold limit = pressure.Thresholds.Add();
limit.Value = 8;
limit.Hysteresis = 0.5;
limit.Direction = TsgcGaugeThresholdDirection.gtdBoth;
pressure.Animation.Easing = TsgcGaugeEasing.geCubicOut;
level = new TsgcWinFormsLinearGauge { Bounds = new Rectangle(260, 10, 340, 110) };
level.Title = "Tank level";
level.Units = "%";
level.LinearStyle = TsgcGaugeLinearStyle.glsBullet;
level.Target = 80;
alarm = new TsgcWinFormsLEDGauge { Bounds = new Rectangle(260, 130, 64, 64) };
alarm.OnColor = 0xFFE34948;
alarm.Blink = true;
// OnThreshold runs in the UI thread, whatever thread wrote the value
pressure.OnThreshold = (sender, threshold, value, rising) => alarm.Active = rising;
Controls.AddRange(new Control[] { pressure, level, alarm });
level.Value = 62;
pressure.Value = 6.5;
}
}dotnet add package esegece.sgcGauges.WinFormsDelphi と C++ Builder 向けに、Gallery、GalleryFMX、Headless、HMIPanel、DashboardGauges、MQTTLive があります。.NET のデモは、Gallery(WinForms)、GalleryWpf、GalleryAvalonia、ConsoleRender、HMIPanel、MQTTLive です。
テーマの切り替え、アニメーション、シミュレートモード、200 km/h のしきい値とアラーム LED、アナンシエーターの確認応答、2 倍の PNG 出力を備えた 10 種類のゲージです。
ポンプ、レベル、圧力、アナンシエーターのアラームを備えた 2 つのタンクです。典型的なプロセス画面のレイアウトです。
sgcDashboard のタイルに配置した 6 つのゲージで、ダッシュボードのテーマに従います。Community 版でビルドできます。
Win32、Win64、Linux64 で PNG と SVG を書き出すコンソールプログラムです。
Windows と Android 向けの、FireMonkey 版のギャラリーです。
sgcGaugesWS ブリッジ経由で MQTT から値を受け取る 6 つのゲージです。sgcWebSockets とブローカーが必要です。
sgcGauges は sgcUI Professional と Enterprise に含まれ、単体でも販売しています。All-Access バンドルにも含まれます。
無料の Community 版(NuGet の esegece.sgcGauges.Community)には、範囲、しきい値、アニメーション、テーマ、ヘッドレス出力を備えた、ラジアル、リニア、7 セグメントのデジタル、LED、LED バー、プログレスリングのゲージが含まれます。VU メーター、時計、コンパス、アナンシエーター、追加のスケールやポインター、sgcGaugesWS ブリッジは含まれません。
| 機能 | Community(無料) | 登録版 |
|---|---|---|
| ラジアル、リニア、7 セグメントのデジタル、LED、LED バー、プログレスリング | ✓ | ✓ |
| 範囲、しきい値、アニメーション、テーマ | ✓ | ✓ |
| ヘッドレスの PNG と SVG の出力 | ✓ | ✓ |
| VU メーター、時計、コンパス、アナンシエーター | − | ✓ |
| ゲージごとに複数のスケールとポインター | − | ✓ |
| 14 セグメントとドットマトリクスのディスプレイ | − | ✓ |
| sgcGaugesWS ブリッジ(MQTT、WebSocket、SSE) | − | ✓ |
すべてのゲージに、ヘッドレスレンダリング用のフレームワークに依存しないモデル、VCL コントロール(C++ Builder からも使用)、FireMonkey コントロール、WinForms、WPF、Avalonia のコントロールがあります。
| Gauge | VCL と C++ Builder | FireMonkey | .NET |
|---|---|---|---|
| Radial | TsgcVCLRadialGauge | TsgcFMXRadialGauge | TsgcWinFormsRadialGauge |
| リニア(バー、温度計、ブレット) | TsgcVCLLinearGauge | TsgcFMXLinearGauge | TsgcWpfLinearGauge |
| デジタル(7 セグメント、14 セグメント、ドットマトリクス) | TsgcVCLDigitalGauge | TsgcFMXDigitalGauge | TsgcWinFormsDigitalGauge |
| LED | TsgcVCLLEDGauge | TsgcFMXLEDGauge | TsgcWinFormsLEDGauge |
| LED バー | TsgcVCLLEDBarGauge | TsgcFMXLEDBarGauge | TsgcWinFormsLEDBarGauge |
| プログレスリング | TsgcVCLProgressRingGauge | TsgcFMXProgressRingGauge | TsgcWinFormsProgressRingGauge |
| VU メーター | TsgcVCLVUMeterGauge | TsgcFMXVUMeterGauge | TsgcWinFormsVUMeterGauge |
| Clock | TsgcVCLClockGauge | TsgcFMXClockGauge | TsgcWinFormsClockGauge |
| Compass | TsgcVCLCompassGauge | TsgcFMXCompassGauge | TsgcWpfCompassGauge |
| アナンシエーター | TsgcVCLAnnunciatorGauge | TsgcFMXAnnunciatorGauge | TsgcAvaloniaAnnunciatorGauge |
.NET の列にはゲージごとに 1 つの例を示していますが、すべてのゲージに TsgcWinForms、TsgcWpf、TsgcAvalonia 版があります。すべてのゲージは、Scales、Pointers、Thresholds、Ranges の各コレクションを持つ基底クラス TsgcCustomGauge を共有します。フレームワークに依存しないモデル(TsgcRadialGauge、TsgcLinearGauge など)は、ウィンドウなしでレンダリングできます。
| Target | Component | 対応プラットフォーム |
|---|---|---|
| Delphi 7 から 13、VCL | TsgcVCL ゲージ | Win32、XE2 以降は Win64 |
| Delphi XE6 から 13、FireMonkey | TsgcFMX ゲージ | Windows、macOS、iOS、Android |
| C++ Builder 2007 から 13 | TsgcVCL ゲージ | 生成された .hpp ヘッダーと静的ライブラリ |
| Delphi 10.2 から 13、フレームワークに依存しません | ゲージモデルとヘッドレスの PNG と SVG の出力 | Linux64(Linux 用コントロールはありません) |
| .NET Framework 4.7.2、.NET 8、9、10 | WinForms、WPF、Avalonia のゲージ | Windows デスクトップ、Avalonia のターゲット、ヘッドレスレンダリング |
はい。データを受け取るスレッドから Value を設定してください。しきい値は自動的に評価され、OnThreshold は常にメインスレッドで発生するため、ハンドラーは追加の同期なしでコントロールを更新できます。sgcGaugesWS ブリッジも、MQTT、WebSocket、SSE からポインターに値を渡すときに同じ動作をします。
ラジアル、リニア、7 セグメントのデジタル、LED、LED バー、プログレスリングのゲージが、範囲、しきい値、アニメーション、テーマ、ヘッドレス出力とともに含まれます。VU メーター、時計、コンパス、アナンシエーター、追加のスケールとポインター、14 セグメントとドットマトリクスの数字、ブリッジは登録版です。エディションをご覧ください。
はい、登録版と sgcWebSockets で可能です。TsgcGaugeFeedSource_MQTT を配置し、MQTT クライアントを関連付けて、ゲージごとに Topic と JSON の ValuePath を持つバインドを追加します。+ と # を使ったトピックフィルターに対応し、FilterPath で共有トピックから 1 台のデバイスを選べます。
FireMonkey のコントロールは Delphi XE6 から動作し、GalleryFMX デモは Windows と Android で動きます。Linux64 では sgcGauges はヘッドレスのみで、Delphi 10.2 以降でモデルをコンパイルして PNG と SVG をレンダリングできますが、Linux 用のコントロールはありません。
はい。どのスケールにも、独自の Minimum、Maximum、MajorInterval、補助目盛があり、開始、終了、色、太さ、キャプションを持つ色付きの範囲を、いくつでも追加できます。ラジアルゲージでは、円弧の開始角度と掃引角度も選べます。
はい。SaveToPNG と SaveToSVG は、すべてのコントロールとすべてのモデルで、ウィンドウなしで動作するため、サービスや Linux64 サーバーが、現在の読み取り値を PDF やメールに載せられます。Gallery デモも、2 倍の PNG を出力します。
デジタルゲージは、スケールから自分のサイズを決めます。Digits が 0 のとき、スケールの最大値に必要な桁数を確保し、既定のスケールは 0 から 100 です。Scales[0].Maximum に想定する最大値を設定するか、Digits を明示的に設定してください。
はじめに, ゲージの種類, VCL クイックスタート, しきい値, アニメーション, 範囲, ラジアルゲージ, sgcGaugesWS ブリッジ, ヘッドレスレンダリング, エディション.
Delphi、C++ Builder、.NET。いずれも sgcUI の全製品を網羅しています。