Script ile Grafik Çizme
WinTr Scada grafikleri realtime ve historical olarak çalışır. Grafikler tüm dataları lokal veya uzak database’lerden olduğu gibi getirir. Özel grafik çizimleri için xy grafikler kullanılabilir fakat bunlar sadece realtime olarak kullanılır. Bu konuda script ile database’den veri çekip bu veriyi grafik üzerinde göstermeyi anlatacağım. Böylece database’deki verilerden özel hesaplamalar ile üreteceğiniz tüm datalar grafiklerde gösterilebilir.
Bu işlemin yapılabilmesi için aşağıdaki script’i hazırladım. Bu scripti grafiğin bulunduğu sayfada refresh fonksiyonunda seçtim. Böylece sayfa refresh zamanında(default 1000 ms.) bu script çalışarak grafik yeniden çiziliyor.
Imports System
Imports System.IO
Imports System.Windows.Forms
Imports Microsoft.VisualBasic
Imports System.Data.SqlClient
Imports System.Globalization
Namespace WinTr
Public Class MainClass
Public ObjectNameOfActiveScreen As System.Collections.ArrayList
Public ObjectOfActiveScreen As System.Collections.ArrayList
Public QT250_eff_hour_dt As DateTime
Public Sub Load()
Try
QT250_eff_hour_dt = now.AddHours(-1)
Dim Index As Integer
Index = ObjectNameOfActiveScreen.IndexOf(“Chart_0”)
If Index = -1 Then
MsgBox(“Chart_0 cannot found!”)
Exit Sub
End If
Dim MyChart As Object = ObjectOfActiveScreen(Index) ‘Acces WinTr Chart object
MyChart.ChartAreas(0).AxisX.Minimum = QT250_eff_hour_dt.AddHours(-1).ToOADate
MyChart.ChartAreas(0).AxisX.Maximum = QT250_eff_hour_dt.ToOADate
Dim FirstTime As String = QT250_eff_hour_dt.AddHours(-1).ToString(“G”, CultureInfo.CreateSpecificCulture(“en-US”))
Dim LastTime As String = QT250_eff_hour_dt.ToString(“G”, CultureInfo.CreateSpecificCulture(“en-US”))
Dim Query As String = “SELECT [QT250_eff_hour_dt],[QT250_eff_hour] FROM Table1 WHERE [QT250_eff_hour_dt] between ‘” & FirstTime & “‘ and ‘” & LastTime & “‘”
Dim SQL_cn As New SqlConnection()
SQL_cn.ConnectionString = “Server=(local)\WinTr;uid=sa;pwd=WinTr@2013;database=Stef”
Dim command As SqlCommand = New SqlCommand(Query, SQL_cn)
MyChart.DataSource = command
MyChart.Series(0).ValueMemberX = “QT250_eff_hour_dt”
MyChart.Series(0).ValueMembersY = “QT250_eff_hour”
MyChart.DataBind()
MyChart.Tag = now & “” & now & “bitti” ‘Blocking WinTr refresh.
command.Connection.Close()
SQL_cn.Close()
Catch ex As Exception
MessageBox.Show(Ex.ToString, ” Chart Script” & Ex.Message)
End Try
End Sub
End Class
End Namespace
Örnek projeyi buradan indirebilirsiniz.
Community Answers
Trackbacks/Pingbacks