SCADA 및 HMI 화면
공장 HMI는 수위 게이지가 있는 탱크 두 개, 펌프 LED, 빨간 구간이 있는 압력 다이얼, 경보용 경보 패널을 보여 줍니다. 히스테리시스가 있는 임계값은 각 경보를 한 번만 발생시키고, 경보 패널은 운영자가 확인할 때까지 깜박이며, 야간 교대에는 다크 테마로 전환됩니다.
- 범위와 임계값
- 경보 패널
- LED
- 다크 테마
방사형 다이얼부터 경보 패널까지 대시보드와 HMI 패널을 위한 열 가지 게이지 유형입니다. 녹색, 주황색, 빨간색 구간을 그리고, 값이 한계를 넘으면 경보를 발생시키며, 새 측정값마다 바늘이 부드럽게 움직이게 하고, 같은 게이지를 서버에서 PNG 또는 SVG로 렌더링하세요.
네 개 그룹의 열한 가지 기능이며, 실제 클래스와 속성 이름, 각 도움말 항목 링크를 담았습니다. Registered로 표시된 기능은 무료 .NET Community 빌드에 포함되지 않습니다.
하나의 모델에 열 가지 유형, 범위, 스타일, 여러 포인터.
계기와 스케일
대시보드, HMI 패널, 테스트 벤치에는 서로 다른 계기가 필요합니다. 속도는 다이얼, 수위는 막대, 주파수는 디지털 판독, 펌프는 램프, 경보는 타일 패널이 어울립니다. sgcGauges는 같은 스케일, 포인터, 범위, 임계값, 테마를 공유하는 하나의 모델을 사용하는 열 가지 유형을 제공합니다. API 하나만 익히면 모든 계기가 같은 방식으로 동작합니다.
TsgcVCLRadialGauge, TsgcVCLLinearGauge, TsgcVCLDigitalGauge, TsgcVCLLEDGauge, TsgcVCLLEDBarGauge, TsgcVCLProgressRingGaugeTsgcVCLVUMeterGauge, TsgcVCLClockGauge, TsgcVCLCompassGauge, TsgcVCLAnnunciatorGaugeTsgcRadialGaugeCommunity에는 방사형, 선형, 7세그먼트 디지털, LED, LED 막대, 진행률 링 게이지가 있습니다. VU 미터, 시계, 나침반, 경보 패널은 Registered 에디션 기능입니다.
도움말 항목 읽기
계기와 스케일
운영자는 녹색, 주황색, 빨간색이 값이 어디에 있어야 하는지 알려 줄 때만 게이지를 한눈에 읽을 수 있습니다. 스케일에 원하는 최솟값과 최댓값을 주고, 주 간격과 보조 눈금을 설정한 다음 중요한 구간에 색상 범위를 추가하세요. 범위에는 고유한 두께와 캡션이 있고, 스케일은 반대로 진행하거나 눈금을 안쪽이나 바깥쪽에 둘 수 있습니다. 범위는 스케일 자체에 그려지므로 추가 작업 없이 PNG 및 SVG 출력과 두 테마 모두에 나타납니다.
StartValue, EndValue, Color, Thickness, Caption을 갖춘 Scales[0].Ranges.AddTsgcGaugeScale: Minimum, Maximum, MajorInterval, MinorCount, ReversedLabelFormat과 ShowLabelsStartAngle과 SweepAngle이 방사형 게이지의 호 모양을 정합니다
계기와 스케일
수위, 온도, 목표 대비 진행률은 본질적으로 선형입니다. 선형 게이지 하나가 일반 막대, 구근이 있는 온도계, 값을 목표 마커와 비교하는 불릿 그래프의 세 가지 스타일을 그립니다. 탱크, 사이드바, 표의 행에 맞춰 가로 또는 세로로 돌릴 수 있습니다. 불릿 목표는 추가 포인터가 아닌 속성이므로 불릿 그래프는 무료 Community 에디션에서도 동작합니다. 작은 게이지는 그리드 셀이나 대시보드 타일에 들어갑니다.
LinearStyle: glsBar, glsThermometer, glsBulletTarget은 모든 에디션에서 불릿 목표 마커를 그립니다Orientation과 BulbSize
계기와 스케일 Registered 에디션 전용
어떤 측정값은 나란히 놓아야 의미가 있습니다. 실제값과 목표, 입구와 출구, 시와 분이 그렇습니다. 게이지는 둘 이상의 스케일과 포인터를 가질 수 있으며 각 포인터가 자신의 스케일과 스타일(바늘, 마커, 막대)을 선택합니다. 임계값은 어느 포인터든 감시할 수 있습니다. 이중 포인터 다이얼은 복잡한 패널에서 공간을 절약하고 목표와 실제값의 차이를 한눈에 보여 줍니다.
Kind, NeedleStyle, MarkerShape, ScaleIndex를 가진 TsgcGaugePointer의 Pointers 컬렉션Radius와 Offset을 가진 Scales 컬렉션PointerIndexCommunity는 게이지당 스케일 하나와 포인터 하나를 그리며, Registered 에디션은 모두 그립니다.
도움말 항목 읽기반응하는 게이지: 임계값, 애니메이션, 산업용 디스플레이, 실시간 피드.
경보, 움직임, 실시간 데이터
한계 부근에서 오르내리는 압력이 분당 백 번의 경보를 발생시켜서는 안 됩니다. 임계값에는 값, 방향, 히스테리시스 구간이 있어서 값이 넘어설 때 한 번 발생하고, 값이 그 구간만큼 되돌아간 뒤에야 다시 준비됩니다. OnThreshold는 어느 스레드가 값을 썼든 항상 메인 스레드에서 실행되므로 LED를 켜거나 메시지를 바로 표시할 수 있습니다. 각 임계값이 서로 다른 포인터를 감시할 수 있어서 게이지 하나에서 실제값에 대한 상한 경보와 두 번째 측정값에 대한 하한 경보를 발생시킬 수 있습니다.
Value, Hysteresis, Direction을 가진 TsgcGaugeThreshold의 ThresholdsgtdRising, gtdFalling, gtdBothValueColor는 임계값이 활성인 동안 값 텍스트의 색을 바꿉니다경보, 움직임, 실시간 데이터
튀듯이 움직이는 바늘은 고장 난 것처럼 보이고, 미끄러지듯 움직이는 바늘은 계기처럼 보입니다. 새 값은 선택한 지속 시간 동안 이전 값에서 다섯 가지 이징 곡선 중 하나로 움직이므로 갑작스러운 변화도 따라가기 쉽고 실시간 피드가 깜박이지 않습니다. 원시 값을 즉시 보여야 하는 테스트 벤치에서는 애니메이션을 끄세요. OnChange는 화면의 애니메이션과 관계없이 값이 바뀐 시점을 알려 줍니다.
Enabled와 Duration(기본값 300 ms)을 가진 Animation(TsgcGaugeAnimation)Easing: geLinear, geQuadOut, geCubicOut, geCubicInOut, geBackOutIsAnimating은 포인터가 아직 움직이는 중인지 알려 줍니다
경보, 움직임, 실시간 데이터
제어 패널에는 고유한 시각 언어가 있습니다. 디지털 게이지는 7세그먼트, 14세그먼트, 도트 매트릭스 숫자를 선택 사항인 고스트 세그먼트와 기울기와 함께 그립니다. LED는 깜박이고, LED 막대는 최고값을 유지하며, 경보 패널은 운영자가 확인할 때까지 깜박이는 경보 타일 패널을 보여 줍니다. 이 모든 디스플레이는 다른 게이지와 같은 스케일, 임계값, 테마를 사용하므로 경보가 어디서나 같은 방식으로 동작합니다.
TsgcVCLDigitalGauge: DisplayType, Digits, ShowGhost, SkewBlink와 BlinkInterval을 가진 TsgcVCLLEDGauge, PeakHold를 가진 TsgcVCLLEDBarGaugeTsgcVCLAnnunciatorGauge: Tiles, FlashInterval, Acknowledge, AcknowledgeAllCommunity에는 7세그먼트 숫자, LED, LED 막대가 있습니다. 14세그먼트와 도트 매트릭스 디스플레이, 경보 패널은 Registered 에디션 기능입니다.
도움말 항목 읽기경보, 움직임, 실시간 데이터 Registered 에디션 전용
IoT 콘솔에서는 구독, 파싱, 게이지 찾기, 값 설정 같은 연결 작업이 코드의 대부분입니다. sgcGaugesWS 브리지가 이를 없애 줍니다. 피드 소스를 sgcWebSockets 클라이언트에 연결하고, 각 바인딩이 토픽과 JSON 경로를 게이지 포인터에 매핑합니다. + 및 # 를 사용하는 MQTT 토픽 필터를 지원하며, 필터 경로로 공유 스트림에서 장치 하나를 골라냅니다. 여러 바인딩이 하나의 소스를 공유할 수 있으므로 브로커 연결 하나로 패널 전체를 구동합니다.
TsgcGaugeFeedSource_MQTT, TsgcGaugeFeedSource_WebSocket, TsgcGaugeFeedSource_SSETsgcGaugeFeedBinding의 Bindings: Gauge, PointerIndex, Topic, ValuePathFilterPath와 FilterValue가 메시지를 선택합니다OnValue와 OnError 이벤트브리지에는 sgcWebSockets가 필요합니다. Community에서는 직접 작성한 코드에서 Value를 설정하세요. 백그라운드 스레드에서도 안전합니다.
도움말 항목 읽기서버에서도, 어떤 테마에서도 같은 게이지.
출력과 외관
게이지는 화면 밖에서도 필요합니다. 교대 근무 보고서, 상태 이메일, 백엔드가 제공하는 웹 페이지가 그렇습니다. 모든 게이지 모델과 컨트롤은 폼 없이 스스로 PNG 또는 SVG로 저장하므로 콘솔 프로그램, Windows 서비스, Linux64 서버도 운영자가 보는 것과 같은 계기를 렌더링할 수 있습니다. 너비, 높이, 배율이 매개변수이므로 호출 한 번으로 목록용 썸네일을, 다른 호출로 보고서용 선명한 2배 이미지를 만듭니다.
SaveToPNG와 SaveToSVGTsgcRadialGauge, TsgcLinearGauge 같은 프레임워크 중립 모델
출력과 외관
관제실은 밤에 화면을 어둡게 하고 사무실은 밝은 룩을 선호합니다. 속성 하나로 게이지를 라이트와 다크 테마 사이에서 전환하면 면, 스케일, 레이블, 값의 색상이 따라옵니다. 게이지는 모든 sgcUI 제품과 같은 테마 유형을 사용하므로 대시보드, 차트, 그리드와 함께 전환됩니다. 범위는 두 테마에서 자신의 색을 유지하므로 밤에도 녹색은 여전히 정상을 뜻합니다. FormatSettings 속성은 사용자 로케일과 관계없이 판독값의 소수점 구분 기호를 고정합니다.
Theme := utDark 또는 utLightFaceColor, BackgroundColor, 글꼴은 게이지마다 설정할 수 있습니다Title, Units, ValueFormatOnFormatValue미리 보기에는 프린터와 PDF가 받는 내용이 그대로 표시됩니다.
인쇄, 미리 보기, PDF
게이지는 눈금, 범위, 임계값, 포인터, 텍스트를 포함해 화면과 같은 상태로 한 페이지에 인쇄됩니다. 최종 값으로 인쇄되므로 실행 중인 애니메이션이 용지에 중간 상태로 나오는 일은 없으며, 화면에서는 계속 실행됩니다.
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 에디션을 포함한 모든 에디션에서 기본으로 켜져 있으며, Delphi 7부터 Delphi 13까지 모든 Delphi 및 C++Builder 버전의 VCL, Windows의 FireMonkey, 그리고 WinForms, WPF, Avalonia에서 지원됩니다. Delphi와 C++Builder에서는 AccessibleName과 AccessibleDescription이 UI Automation에 노출되는 이름과 설명을 설정하고, .NET에서는 각 프레임워크의 표준 접근성 이름과 도움말 텍스트가 같은 역할을 합니다. 접근성 적합성 보고서를 참조하세요.
sgcUI 제품군 데모 속의 sgcGauges: 내장 시뮬레이션 데이터로 오프라인에서 실행되는 완전한 애플리케이션입니다.
펌프 하나의 모든 측정값을 보여 주는 원형, 선형, LED 게이지.
Altamira Plant →
트럭의 속도, 나침반, 냉동 온도 게이지.
Altamira Fleet →
VaR 원형 게이지, 익스포저 막대, 진행률 링, 깜박이는 알람 타일.
Altamira Markets →
분기 목표 원형 게이지와 지역별 선형 게이지.
Altamira ERP →
공장 HMI는 수위 게이지가 있는 탱크 두 개, 펌프 LED, 빨간 구간이 있는 압력 다이얼, 경보용 경보 패널을 보여 줍니다. 히스테리시스가 있는 임계값은 각 경보를 한 번만 발생시키고, 경보 패널은 운영자가 확인할 때까지 깜박이며, 야간 교대에는 다크 테마로 전환됩니다.
텔레메트리 콘솔은 브로커를 구독하여 현장 장치의 실시간 측정값 여섯 개를 보여 줍니다. 바인딩이 각 토픽과 JSON 필드를 포인터에 매핑하고, 바늘이 새 값마다 부드럽게 움직이며, 메시지 처리 코드를 직접 작성할 필요가 없습니다. 같은 게이지가 일일 상태 메일용 PNG로도 렌더링됩니다.
경영 대시보드는 게이지를 KPI 카드와 차트 옆의 타일에 배치합니다. 가동률은 진행률 링, 배송 시간은 목표와 비교하는 불릿 그래프, 서비스 수준은 색상 구간이 있는 다이얼로 표시합니다. 모든 것이 하나의 테마 속성을 따르며 게이지는 타일에 맞춰 크기가 조정됩니다.
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 내보내기가 있는 열 개의 게이지.
펌프, 수위, 압력, 경보 패널 경보가 있는 두 개의 탱크로, 일반적인 공정 화면의 레이아웃입니다.
sgcDashboard 타일 안에서 대시보드 테마를 따르는 여섯 개의 게이지. Community 에디션으로 빌드됩니다.
Win32, Win64, Linux64에서 PNG와 SVG를 쓰는 콘솔 프로그램.
Windows와 Android용 FireMonkey 갤러리.
sgcGaugesWS 브리지를 통해 MQTT로 공급되는 여섯 개의 게이지. sgcWebSockets와 브로커가 필요합니다.
sgcGauges는 sgcUI Professional과 Enterprise 에디션에 포함되며 단독으로도 판매됩니다. 또한 All-Access 번들에도 포함되어 있습니다.
무료 Community 에디션(NuGet의 esegece.sgcGauges.Community)에는 범위, 임계값, 애니메이션, 테마, 헤드리스 출력을 갖춘 방사형, 선형, 7세그먼트 디지털, LED, LED 막대, 진행률 링 게이지가 있습니다. VU 미터, 시계, 나침반, 경보 패널, 추가 스케일과 포인터, sgcGaugesWS 브리지는 없습니다.
| 기능 | Community (무료) | Registered 에디션 |
|---|---|---|
| 방사형, 선형, 7세그먼트 디지털, LED, LED 막대, 진행률 링 | ✓ | ✓ |
| 범위, 임계값, 애니메이션, 테마 | ✓ | ✓ |
| 헤드리스 PNG 및 SVG 출력 | ✓ | ✓ |
| VU 미터, 시계, 나침반, 경보 패널 | − | ✓ |
| 게이지당 여러 스케일과 포인터 | − | ✓ |
| 14세그먼트 및 도트 매트릭스 디스플레이 | − | ✓ |
| sgcGaugesWS 브리지(MQTT, WebSocket, SSE) | − | ✓ |
모든 게이지에는 헤드리스 렌더링용 프레임워크 중립 모델, VCL 컨트롤(C++ Builder에서도 사용), FireMonkey 컨트롤, WinForms, WPF, Avalonia 컨트롤이 있습니다.
| 게이지 | VCL 및 C++ Builder | FireMonkey | .NET |
|---|---|---|---|
| 방사형 | 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 |
| 시계 | TsgcVCLClockGauge | TsgcFMXClockGauge | TsgcWinFormsClockGauge |
| 나침반 | TsgcVCLCompassGauge | TsgcFMXCompassGauge | TsgcWpfCompassGauge |
| 경보 패널 | TsgcVCLAnnunciatorGauge | TsgcFMXAnnunciatorGauge | TsgcAvaloniaAnnunciatorGauge |
.NET 열에는 게이지마다 예시를 하나씩 표시했으며, 모든 게이지는 TsgcWinForms, TsgcWpf, TsgcAvalonia로 제공됩니다. 모든 게이지는 Scales, Pointers, Thresholds, Ranges 컬렉션을 가진 기본 클래스 TsgcCustomGauge를 공유합니다. 프레임워크 중립 모델(TsgcRadialGauge, TsgcLinearGauge 등)은 창 없이 렌더링합니다.
| 대상 | 컴포넌트 | 플랫폼 |
|---|---|---|
| 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세그먼트 및 도트 매트릭스 숫자, 브리지는 Registered 에디션 기능입니다. 에디션을 참조하세요.
예, Registered 에디션과 sgcWebSockets가 있으면 가능합니다. TsgcGaugeFeedSource_MQTT를 올려 놓고 MQTT 클라이언트를 연결한 다음 게이지마다 Topic과 JSON ValuePath를 가진 바인딩을 추가하세요. + 및 # 토픽 필터가 동작하며 FilterPath로 공유 토픽에서 장치 하나를 고릅니다.
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를 직접 지정하세요.