Справка по DEMO_PAINT


Эта справка описывает ДЕМО конфигурацию DEMO_PAINT, служащую иллюстрацией "умных сенсоров", отображение которых осуществляется с использованием пользовательского сценария Painter(v) на языке DaqScript. В данном случае наибольший интерес представляет мнемосхема, содержащая "умные сенсоры". Эта мнемосхема активно использует такие возможности сенсоров, как:

  1. TagEval(v) - задает формулу для расчета тега изображения (идентификатора картинки) по значению v подключенной кривой/тега базы данных DAQ-системы.
  2. LedEval(v) - задает формулу для расчета циферблата (цифровой надписи) по значению v подключенной кривой/тега базы данных DAQ-системы.
  3. Painter(v) - задает пользовательский сценарий рисования сенсора по значению v подключенной кривой/тега базы данных DAQ-системы.

См. также справку по интерпретатору Painter(v).
См. также справку по функциям Painter(v).
См. также советы по сценариям Painter(v).
См. также памятку по функциям Painter(v).


Например:

    [Circuit]
    Name = DemoPaint                         ; Set window name
    GeneralMap = .\DemoPaint.bmp             ; Set background picture
    StartupScript = [Circuit.StartupScript]  ; Set startup script section
    []

    [ConfigFileList] ; Include standard definitions
    ConfigFile = ~~\Resource\DaqSite\Default\Painter.crc
    []

    [Circuit.StartupScript] ; Run on startup
    alarm1=30               ; Set alarm1 level
    alarm2=60               ; Set alarm2 level
    []

    [SensorList]
    Sensor = Led1
    [Led1]                                                     ; Display with variable background
    Pos = 10, 10                                               ; Set sensor position
    LED = 7, 0, 3, %7.3f, [LedFont]                            ; Set display format
    TagEval(v) = gt(v,alarm1)+gt(v,alarm2)                     ; Background depends on v
    Tag#1 = 0, ~~\Resource\DaqSite\StdLib\Bitmaps\_LED07C.BMP  ; Background if v <= alarm1
    Tag#2 = 1, ~~\Resource\DaqSite\StdLib\Bitmaps\_LED07Y.BMP  ; Background if alarm1 < v <= alarm2
    Tag#3 = 2, ~~\Resource\DaqSite\StdLib\Bitmaps\_LED07R.BMP  ; Background if v > alarm2
    []

    [SensorList]
    Sensor = Bar1
    [Bar1]                                                                            ; Sensor with script painting
    Pos = 10 40                                                                       ; Set sensor position
    Tag#1 = 0, BAR.BMP                                                                ; Set background picture
    Painter(v) = [Bar1.Painter(v)]                                                    ; Set script to paint sensor
    []
    [Bar1.Painter(v)]                                                                 ; Draw a line script
    sw=sensorWidth()                                                                  ; Get sensor width
    sh=sensorHeight()                                                                 ; Get sensor height
    x1=2                                                                              ; Calculate coordinates of line
    y1=sh-2-v*(sh-4)/100                                                              ;
    x2=sw-2                                                                           ;
    y2=y1                                                                             ;
    color=clAqua*le(v,alarm1)+clYellow*gt(v,alarm1)*le(v,alarm2)+clRed*gt(v,alarm2)   ; Calculate color to draw
    setPen(color,psSolid,pmCopy,4)+drawLine(x1,y1,x2,y2)                              ; Set pen style and draw a line
    setBrush(clWhite,bsClear)                                                         ; Set brush style for text
    fh=-round(1.33*16)                                                                ; Find height of font 16 pt
    @font charset 204                                                                 ; Set font Charset Russian
    @font style 1                                                                     ; Set font Style Bold
    @font color %clBlue                                                               ; Set font Color
    @font height %fh                                                                  ; Set font Height
    @font name Courier New                                                            ; Set font Name
    tw=@textwidth %7.3f%v                                                             ; Get text width
    th=@textheight %7.3f%v                                                            ; Get text height
    setCursor(sw/2-tw/2,max(5,min(y2+2-(th+4)*gt(y2,sh/2),sh-th-5)))                  ; Set text cursor
    @print %7.3f%v                                                                    ; Print v value with format %7.3f
    []
  


Памятка по функциям Painter(v)


Имеется памятка для использования функций Painter(v):


Успешного использования Painter(v)!