UltimaSerial UltimaMeter: A Free Instrumentation Analog Meter (Angular Gauge) ActiveX Control

UltimaMeter is an instrumentation analog meter (angular gauge) display ActiveX control specifically designed for data acquisition applications.

Free Angular Gauge (Analog Meter) ActiveX Control


It is installed along with WinDaq Add-ons, and used by Instrumentation Gauge WinDaq add-on (See video demo below)



A VB6 project Ultimameter can be found in the Windaq add-on directory. If you wish to use other languages, please check this out.



Starting 2017, you can use this utility to remove the adline yourself

32 or 64-bit?

All UltimaSerial ActiveXs are 32-bit components, you must select 32-bit code option when using 64-bit compilers. Both 32-bit and 64-bit Windows runs 32-bit applications properly. 


  • short StartDegree: Start point in degree, which must be smaller than StopDegree (default: 225)

  • short StopDegree: Stop point in degree, which must be larger than StartDegree (default: 315)

    Example Settings
    Free Angular Gauge ActiveX Control Start =225


    Free Analog Meter ActiveX Control Start=270




  • double MaxValue: The maximum value of the meter

  • double MinValue: The minimum value of the meter

  • short MainTick: Number of main ticks

  • short SubTick: Number of sub ticks between two main ticks

  • double Value: Needle position. If any setting is changed, the meter will be redrew first.

  • BSTR Unit: Specifies the unit to be displayed

  • long Adjustment (short index): Adjustment

    0 Horizontal offset for the meter center 
    1 Vertical offset for the meter center 
    2 Number of digits after decimal point to be displayed for Value
    3 Number of digits after decimal point to be displayed for the tick annotations
    6 Numerator of the meter ratio
    7 Denominator of the meter ration
    8 Reset min/max retainers
    9 Enable (1) or disable (0) min/max retainers, see below

    10 Length of the retainer needles in percentage of the gauge diameter 
    Others  Reserved


  • BSTR Key

    1. Enter command Keys

      • Control the font size for the numbers

        • Command key format is "@, <size-divisor>"

        • The default divisor is 6, a positive number should be used here

        • Example:

          UltimaMeter.Key ="@,10" --- make the font smaller

    2. Enter the registration key. 

    Until UltimaMeter is paid-registered, it will display the watermark of "www.ultimaserial.com" in the upper left corner (see below)

  • Boolean ShowColorBand: Enable or disable the color limit band

  • OLE_COLOR Palette (short index): 

    0..3599 Specifying the color for each matching limit. 

    ymax = 360
    ylo = 100
    yhi = 300

    For i = 0 To ymax 
         If i < ylo Then
             BLUE = C255 - Int((c256 * i) /  ylo)
             GREEN = Int((c256 * i) /  ylo)
             RED = 0
            If (i >= yhi) Then
                BLUE = 0
                GREEN = C255 - Int(((i - yhi) * C255) / ((ymax - yhi)))
                RED = Int(((i - yhi) * C255) / ((ymax - yhi)))
            End If
        End If
        UltimaMeter1.Palette(i) = BLUE * C65536 + GREEN * c256 + RED 
    10000 Color for the gauge needle
    10001 Color for the meter ring edge
    10002 Color for the meter ring center
    10003 Color for the number and text
    10004 Color for the meter face
    10008 Color for the min retainer
    10009 Color for the max retainer
    Others Reserved


  • double LimitBand  (short index): Specifying the limit for each matching color band. Up to 3600 limits can be specified.

    For i = 0 To ymax - 1
         UltimaMeter1.LimitBand(i) = ((UltimaMeter1.MaxValue - UltimaMeter1.MinValue) / ymax) * i + UltimaMeter1.MinValue

    UltimaMeter1.LimitBand(ymax) = UltimaMeter1.MaxValue 'This is a must to indicate the end of limit bands!


  • ReDraw: Redraw the meter face


  • Click ()

  • DblClick ()

  • MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single)

  • MouseUp ((Button As Integer, Shift As Integer, X As Single, Y As Single)

  • MouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single)

  • MouseWheel (nFlags as long, zDelt as short, X as long, Y as long)

.NET users:

How to remove the warning of " A reference was created to embedded interop assembly 'stdole' because of an indirect reference to that assembly from assembly 'Interop.ULTIMAMETERLib'. Consider changing the 'Embed Interop Types' property on either assembly"?

Last update: 02/28/22