1212 lines
48 KiB
VB.net
1212 lines
48 KiB
VB.net
|
|
Imports FlexCell
|
|||
|
|
Imports Steema.TeeChart
|
|||
|
|
|
|||
|
|
Public Class Form1
|
|||
|
|
|
|||
|
|
|
|||
|
|
Public filepath As String
|
|||
|
|
|
|||
|
|
Public GdbConnString As String
|
|||
|
|
Public linglist As Dictionary(Of String, Steema.TeeChart.Styles.Line)
|
|||
|
|
|
|||
|
|
|
|||
|
|
Private _axis As List(Of Steema.TeeChart.Axis)
|
|||
|
|
Private _fastLine As Dictionary(Of String, Steema.TeeChart.Styles.FastLine)
|
|||
|
|
Private _curSor(1) As Steema.TeeChart.Tools.CursorTool
|
|||
|
|
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
|||
|
|
filepath = $"{Application.StartupPath }\config.flx"
|
|||
|
|
GdbConnString = "Server=blv-cloud-db.mysql.rds.aliyuncs.com;Port=3307;Database=psmysql;Uid=blv_rcu;Pwd=fnadiaJDIJ7546;charset=utf8;"
|
|||
|
|
' 假设你的TeeChart控件名为tcChart
|
|||
|
|
AddHandler ChartBar.MouseWheel, AddressOf tcChart_ChartMouseWheel
|
|||
|
|
ChartBar.Zoom.ZoomPercent(130)
|
|||
|
|
|
|||
|
|
_axis = New List(Of Axis)
|
|||
|
|
_fastLine = New Dictionary(Of String, Styles.FastLine)
|
|||
|
|
init_Grid_config()
|
|||
|
|
FileTo_Grid_config()
|
|||
|
|
linglist = New Dictionary(Of String, Steema.TeeChart.Styles.Line)
|
|||
|
|
'initChartBar(10, 1701747214, 1704822658)
|
|||
|
|
'Testfunction()
|
|||
|
|
'ksjfk()
|
|||
|
|
GetDevtype()
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
' 事件处理程序
|
|||
|
|
Private Sub tcChart_ChartMouseWheel(sender As Object, e As MouseEventArgs)
|
|||
|
|
' 在这里添加你的逻辑
|
|||
|
|
' 例如,根据e.Delta判断滚轮滚动方向
|
|||
|
|
Dim tx, ty As Integer
|
|||
|
|
If IsNothing(_fastLine) OrElse _fastLine.Count = 0 Then Return
|
|||
|
|
Dim fl = _fastLine.Values(0)
|
|||
|
|
If e.Delta > 0 Then
|
|||
|
|
'MessageBox.Show("鼠标向上滚动")
|
|||
|
|
'tx = ChartBar.Zoom.
|
|||
|
|
' ty =
|
|||
|
|
' ChartBar.Zoom.ZoomRect(New Rectangle(0, 50, ChartBar.Width, 100))
|
|||
|
|
|
|||
|
|
|
|||
|
|
' If ChartBar.Zoom.HistorySteps.Count > 0 Then
|
|||
|
|
'ChartBar.Zoom.Undo()
|
|||
|
|
|
|||
|
|
'Else
|
|||
|
|
ChartBar.Zoom.ZoomRect(New Rectangle(0, 0, ChartBar.Width, ChartBar.Height))
|
|||
|
|
' Console.WriteLine($"鼠标向上滚动{ChartBar.Width},{ChartBar.Height}")
|
|||
|
|
'' End If
|
|||
|
|
'Dim rectc = ChartBar.RectangleToClient(New Rectangle(0, 0, ChartBar.Width, ChartBar.Height))
|
|||
|
|
'Console.WriteLine(fl.Chart.ChartRect.X)
|
|||
|
|
Else
|
|||
|
|
'MessageBox.Show("鼠标向下滚动")
|
|||
|
|
ChartBar.Zoom.Undo()
|
|||
|
|
' fl = _fastLine.Item(node.Key)
|
|||
|
|
'If ChartBar.Zoom.HistorySteps.Count > 0 Then
|
|||
|
|
' ChartBar.Zoom.Undo()
|
|||
|
|
' Console.WriteLine($"鼠标向上滚动_Undo")
|
|||
|
|
'Else
|
|||
|
|
' ChartBar.Zoom.ZoomRect(New Rectangle((ChartBar.Width / 2) - 300, 0, (ChartBar.Width / 2) + 100, ChartBar.Height))
|
|||
|
|
' Console.WriteLine($"鼠标向上滚动{(ChartBar.Width / 2) - 100},{(ChartBar.Width / 2) + 200}")
|
|||
|
|
'End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
'ChartBar.Zoom.ZoomRect(New Rectangle(100, 100, 120, 120))
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
'Dim X As Integer = Points1.CalcXPos(2)
|
|||
|
|
'Dim Y As Integer = TChart1.Axes.Left.CalcYPosValue(TChart1.Axes.Left.MaxYValue)
|
|||
|
|
'Dim Height As Integer = TChart1.Axes.Left.CalcYPosValue(TChart1.Axes.Left.MinYValue) - TChart1.Axes.Left.CalcYPosValue(TChart1.Axes.Left.MaxYValue)
|
|||
|
|
'Dim Width As Integer = Points1.CalcXPos(5) - X
|
|||
|
|
'Dim R As New Rectangle(X, Y, Width, Height)
|
|||
|
|
'TChart1.Zoom.ZoomRect(R)
|
|||
|
|
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Public devnamedic As List(Of String)
|
|||
|
|
Public Sub GetDevtype()
|
|||
|
|
devnamedic = New List(Of String)
|
|||
|
|
Dim selectstr As String = "SELECT DEV_NAME
|
|||
|
|
FROM `psmysql`.`deviceparsingdatalog`
|
|||
|
|
GROUP BY DEV_NAME"
|
|||
|
|
Dim dt As DataTable
|
|||
|
|
Try
|
|||
|
|
Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mysql, GdbConnString)
|
|||
|
|
db.Open()
|
|||
|
|
dt = db.ExecuteDataTable(selectstr)
|
|||
|
|
If IsNothing(dt) OrElse dt.Rows.Count = 0 OrElse dt.Columns.Count = 0 Then
|
|||
|
|
MsgBox($"数据查询失败!!!{vbCrLf }原因:{vbCrLf }数据查询语句异常:{selectstr}")
|
|||
|
|
Else
|
|||
|
|
For i = 0 To dt.Rows.Count - 1
|
|||
|
|
devnamedic.Add(dt(i)(0))
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
End Using
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Catch ex As Exception
|
|||
|
|
MsgBox($"数据查询失败!!!{vbCrLf }原因:{vbCrLf }{ex.Message }")
|
|||
|
|
Return
|
|||
|
|
End Try
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub InitPieChart(kkdic As Dictionary(Of String, Dictionary(Of String, Double)), starttime As Date, stoptime As Date)
|
|||
|
|
InitTeeChart(kkdic, starttime, stoptime)
|
|||
|
|
|
|||
|
|
Dim fl As Steema.TeeChart.Styles.FastLine
|
|||
|
|
Dim tval As Dictionary(Of String, Double)
|
|||
|
|
Dim yt, yn As DateTime
|
|||
|
|
Dim sp = stoptime - starttime
|
|||
|
|
Dim dtOffset As New DateTimeOffset(starttime)
|
|||
|
|
Dim tstr As String
|
|||
|
|
Dim tstfsr As String
|
|||
|
|
|
|||
|
|
For Each node In kkdic
|
|||
|
|
'Console.WriteLine($"{node.Key}")
|
|||
|
|
For t = 0 To sp.TotalSeconds
|
|||
|
|
fl = _fastLine.Item(node.Key)
|
|||
|
|
tval = node.Value
|
|||
|
|
|
|||
|
|
yt = (dtOffset.AddSeconds(t)).LocalDateTime
|
|||
|
|
tstr = $"{yt.Year }/{yt.Month }/{yt.Day } {yt.Hour }:{yt.Minute }:{yt.Second }"
|
|||
|
|
If t <> 0 Then
|
|||
|
|
yn = (dtOffset.AddSeconds(t - 1)).LocalDateTime
|
|||
|
|
tstfsr = $"{yn.Year }/{yn.Month }/{yn.Day } {yn.Hour }:{yn.Minute }:{yn.Second }"
|
|||
|
|
End If
|
|||
|
|
If tval.ContainsKey(tstr) Then
|
|||
|
|
If t = 0 OrElse Not (tval.Item(tstr) <> tval.Item(tstfsr)) Then
|
|||
|
|
|
|||
|
|
Else
|
|||
|
|
fl.Add(yt.ToOADate, tval.Item(tstfsr))
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
fl.Add(yt.ToOADate, tval.Item(tstr))
|
|||
|
|
'Console.WriteLine($"{tstr}:{ tval.Values(t)}")
|
|||
|
|
Else
|
|||
|
|
If Date.Parse(tstr) < Date.Parse(tval.Keys(0)) Then
|
|||
|
|
If tval.Values(0) = 1 Then
|
|||
|
|
fl.Add(yt.ToOADate, 0)
|
|||
|
|
tval.Add(tstr, 0)
|
|||
|
|
' Console.WriteLine($"{tstr}:0")
|
|||
|
|
ElseIf tval.Values(0) = 0 Then
|
|||
|
|
fl.Add(yt.ToOADate, 1)
|
|||
|
|
tval.Add(tstr, 1)
|
|||
|
|
' Console.WriteLine($"{tstr}:1")
|
|||
|
|
Else
|
|||
|
|
fl.Add(yt.ToOADate, 0.5)
|
|||
|
|
tval.Add(tstr, 0.5)
|
|||
|
|
'Console.WriteLine($"{tstr}:0.5")
|
|||
|
|
End If
|
|||
|
|
Else
|
|||
|
|
If tval.Item(tstfsr) = 1 Then
|
|||
|
|
fl.Add(yt.ToOADate, 1)
|
|||
|
|
tval.Add(tstr, 1)
|
|||
|
|
' Console.WriteLine($"{tstr}:1")
|
|||
|
|
ElseIf tval.Item(tstfsr) = 0 Then
|
|||
|
|
fl.Add(yt.ToOADate, 0)
|
|||
|
|
tval.Add(tstr, 0)
|
|||
|
|
' Console.WriteLine($"{tstr}:0")
|
|||
|
|
Else
|
|||
|
|
fl.Add(yt.ToOADate, 0.5)
|
|||
|
|
tval.Add(tstr, 0.5)
|
|||
|
|
' Console.WriteLine($"{tstr}:0.5")
|
|||
|
|
End If
|
|||
|
|
End If
|
|||
|
|
End If
|
|||
|
|
Next
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Private Sub InitPieChart(kkdic As Dictionary(Of String, Dictionary(Of Long, Double)), starttime As Long, stoptime As Long)
|
|||
|
|
|
|||
|
|
|
|||
|
|
InitTeeChart(kkdic, starttime, stoptime)
|
|||
|
|
Dim fl As Steema.TeeChart.Styles.FastLine
|
|||
|
|
Dim tval As Dictionary(Of Long, Double)
|
|||
|
|
Dim dtOffset As New DateTimeOffset(New DateTime(1970, 1, 1, 0, 0, 0))
|
|||
|
|
' 获取本地日期和时间
|
|||
|
|
Dim yt As DateTime
|
|||
|
|
|
|||
|
|
For t = starttime To stoptime
|
|||
|
|
For Each node In kkdic
|
|||
|
|
fl = _fastLine.Item(node.Key)
|
|||
|
|
tval = node.Value
|
|||
|
|
yt = (dtOffset.AddSeconds(t)).LocalDateTime
|
|||
|
|
|
|||
|
|
If tval.ContainsKey(t) Then
|
|||
|
|
If t = starttime OrElse Not (tval.Item(t) = tval.Item(t - 1)) Then
|
|||
|
|
Else
|
|||
|
|
fl.Add(yt.ToOADate, tval.Item(t - 1))
|
|||
|
|
'Console.WriteLine($"{yt.ToOADate}:{ tval.Item(t - 1)}")
|
|||
|
|
End If
|
|||
|
|
fl.Add(yt.ToOADate, tval.Item(t))
|
|||
|
|
'Console.WriteLine($"{yt.ToOADate}:{ tval.Item(t)}")
|
|||
|
|
''Console.WriteLine(DateTime.FromOADate(yt.ToOADate).ToString("yyyy-MM-dd HH:mm:ss"))
|
|||
|
|
|
|||
|
|
'#1/16/2024 01:09:47 AM#
|
|||
|
|
Else
|
|||
|
|
If t < tval.Keys(0) Then
|
|||
|
|
If tval.Values(0) = 1 Then
|
|||
|
|
fl.Add(yt.ToOADate, 0)
|
|||
|
|
tval.Add(t, 0)
|
|||
|
|
'Console.WriteLine($"{yt.ToOADate}:0")
|
|||
|
|
ElseIf tval.Values(0) = 0 Then
|
|||
|
|
fl.Add(yt.ToOADate, 1)
|
|||
|
|
tval.Add(t, 1)
|
|||
|
|
'Console.WriteLine($"{yt.ToOADate}:1")
|
|||
|
|
Else
|
|||
|
|
fl.Add(yt.ToOADate, 0.5)
|
|||
|
|
tval.Add(t, 0.5)
|
|||
|
|
'Console.WriteLine($"{yt.ToOADate}:0.5")
|
|||
|
|
End If
|
|||
|
|
Else
|
|||
|
|
If tval.Item(t - 1) = 1 Then
|
|||
|
|
fl.Add(yt.ToOADate, 1)
|
|||
|
|
tval.Add(t, 1)
|
|||
|
|
'Console.WriteLine($"{yt.ToOADate}:1")
|
|||
|
|
ElseIf tval.Item(t - 1) = 0 Then
|
|||
|
|
fl.Add(yt.ToOADate, 0)
|
|||
|
|
tval.Add(t, 0)
|
|||
|
|
'Console.WriteLine($"{yt.ToOADate}:0")
|
|||
|
|
Else
|
|||
|
|
fl.Add(yt.ToOADate, 0.5)
|
|||
|
|
tval.Add(t, 0.5)
|
|||
|
|
'Console.WriteLine($"{yt.ToOADate}:0.5")
|
|||
|
|
End If
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
Next
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
Public Sub initChartBar(tCounta As Integer, starttime As Double, stoptime As Double)
|
|||
|
|
|
|||
|
|
'Dim devline = AddTeeChartStylesLine()
|
|||
|
|
|
|||
|
|
ChartBar.Header.Text = "" '标题
|
|||
|
|
ChartBar.Header.Visible = True
|
|||
|
|
ChartBar.Legend.Transparent = False '刻印说明
|
|||
|
|
' ChartBar.Legend.Alignment = Steema.TeeChart.LegendAlignments.Top
|
|||
|
|
ChartBar.Aspect.View3D = False
|
|||
|
|
ChartBar.Axes.Left.Automatic = True
|
|||
|
|
ChartBar.Axes.Left.AutomaticMaximum = True
|
|||
|
|
ChartBar.Axes.Left.AutomaticMinimum = True
|
|||
|
|
ChartBar.Axes.Left.Labels.ValueFormat = "0.0"
|
|||
|
|
ChartBar.Axes.Left.Increment = 0.5
|
|||
|
|
ChartBar.Axes.Left.Labels.LabelHeight(10)
|
|||
|
|
|
|||
|
|
'ChartBar.Axes.Left.Scroll(15, True)
|
|||
|
|
|
|||
|
|
'ChartBar.Axes.Left.Labels.Exponent = True
|
|||
|
|
'Line1.Clear()
|
|||
|
|
'ChartBar.Axes.
|
|||
|
|
ChartBar.Axes.Bottom.AutomaticMaximum = False
|
|||
|
|
ChartBar.Axes.Bottom.AutomaticMinimum = False
|
|||
|
|
ChartBar.Axes.Bottom.Automatic = False
|
|||
|
|
ChartBar.Axes.Bottom.Increment = 1
|
|||
|
|
ChartBar.Axes.Bottom.Maximum = stoptime
|
|||
|
|
'ChartBar.Axes.Bottom.Minimum = starttime
|
|||
|
|
'ChartBar.Axes.Bottom.Labels.Width = 20
|
|||
|
|
'ChartBar.Axes.Bottom.Labels.DateTimeFormat = "HH:mm:ss"
|
|||
|
|
'ChartBar.Series(0).XValues.DateTime = False
|
|||
|
|
'ChartBar.Axes.Bottom.MaxXValue = stoptime
|
|||
|
|
'ChartBar.Axes.Bottom.ma = stoptime
|
|||
|
|
'ChartBar.Axes.Bottom.Scroll(1705386785, False)
|
|||
|
|
|
|||
|
|
'ChartBar.Axes.Bottom.Scroll()
|
|||
|
|
'ChartBar.Zoom.ZoomRect(New Rectangle(0, 0, 1000, 1000))
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Dim ftemp = tCounta
|
|||
|
|
ChartBar.Axes.Left.Maximum = ftemp ' / 100
|
|||
|
|
ChartBar.Axes.Left.Minimum = 0 '/ 100
|
|||
|
|
|
|||
|
|
ChartBar.Axes.Bottom.Labels.Align = -45
|
|||
|
|
ChartBar.Axes.Bottom.Labels.MultiLine = True
|
|||
|
|
|
|||
|
|
|
|||
|
|
'Dim X As Integer = ChartBar
|
|||
|
|
|
|||
|
|
'Dim R As New Rectangle(X, Y, Width, Height)
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
' ChartBar.Refresh()
|
|||
|
|
End Sub
|
|||
|
|
Public Sub Testfunction()
|
|||
|
|
|
|||
|
|
ChartBar.Header.Text = "" '标题
|
|||
|
|
ChartBar.Header.Visible = True
|
|||
|
|
ChartBar.Aspect.View3D = False
|
|||
|
|
|
|||
|
|
|
|||
|
|
ChartBar.Axes.Left.Automatic = False
|
|||
|
|
ChartBar.Axes.Left.AutomaticMaximum = False
|
|||
|
|
ChartBar.Axes.Left.AutomaticMinimum = False
|
|||
|
|
ChartBar.Axes.Left.Labels.ValueFormat = "0.0"
|
|||
|
|
ChartBar.Axes.Left.Increment = 0.5
|
|||
|
|
ChartBar.Axes.Left.Maximum = 10 ' / 100
|
|||
|
|
ChartBar.Axes.Left.Minimum = 0 '/ 100
|
|||
|
|
|
|||
|
|
ChartBar.Axes.Bottom.AutomaticMaximum = False
|
|||
|
|
ChartBar.Axes.Bottom.AutomaticMinimum = False
|
|||
|
|
ChartBar.Axes.Bottom.Automatic = False
|
|||
|
|
ChartBar.Axes.Bottom.Labels.Align = -45
|
|||
|
|
ChartBar.Axes.Bottom.Labels.MultiLine = True
|
|||
|
|
ChartBar.Axes.Bottom.Labels.DateTimeFormat = "yyyy-MM-dd"
|
|||
|
|
ChartBar.Series(0).XValues.DateTime = True
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
' 创建 DateTimeOffset 对象并设置其值为指定的 UTC 秒数
|
|||
|
|
Dim dtOffset As New DateTimeOffset(New DateTime(1970, 1, 1), TimeSpan.Zero)
|
|||
|
|
' 获取本地日期和时间
|
|||
|
|
Dim yt As DateTime = (dtOffset + TimeSpan.FromSeconds(1704822366)).LocalDateTime
|
|||
|
|
Dim minValue As DateTime = New DateTime(yt.Year, yt.Month, yt.Day, yt.Hour, yt.Minute, yt.Second) '' 最小日期
|
|||
|
|
yt = (dtOffset + TimeSpan.FromSeconds(1704823530)).LocalDateTime
|
|||
|
|
Dim maxValue As DateTime = New DateTime(yt.Year, yt.Month, yt.Day, yt.Hour, yt.Minute, yt.Second) '' 最小日期
|
|||
|
|
|
|||
|
|
ChartBar.Axes.Bottom.Maximum = maxValue.ToOADate
|
|||
|
|
ChartBar.Axes.Bottom.Minimum = minValue.ToOADate
|
|||
|
|
'Dim dou As Double = 1 / (maxValue.ToOADate - minValue.ToOADate)
|
|||
|
|
'ChartBar.Axes.Bottom.Increment = TimeSpan.FromSeconds(1).TotalSeconds
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Public Sub ksjfk()
|
|||
|
|
' 创建TeeChart控件对象
|
|||
|
|
Dim chart = ChartBar.Chart
|
|||
|
|
|
|||
|
|
' 添加Series到图表上(这里使用Line Series作示例)
|
|||
|
|
Dim series As New Steema.TeeChart.Styles.Line()
|
|||
|
|
'chart.Add(series)
|
|||
|
|
ChartBar.Series.Add(series)
|
|||
|
|
' 定义要显示的数据点及其相应的X轴标签
|
|||
|
|
Dim xDataPoints() As Double = {10, 20, 30, 40} ' X轴数据点
|
|||
|
|
Dim yDataPoints() As Double = {50, 60, 70, 80} ' Y轴数据点
|
|||
|
|
Dim labels() As String = {"Label1", "Label2", "Label3", "Label4"} ' X轴标签
|
|||
|
|
|
|||
|
|
' 遍历数据并设置每个数据点的值和标签
|
|||
|
|
For i As Integer = 0 To xDataPoints.Length - 1
|
|||
|
|
|
|||
|
|
Dim point As New PointF(xDataPoints(i), yDataPoints(i))
|
|||
|
|
|
|||
|
|
' 设置X轴标签
|
|||
|
|
point.X = labels(i)
|
|||
|
|
|
|||
|
|
' 向系列中添加数据点
|
|||
|
|
series.Add(point)
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
' 显示图表
|
|||
|
|
'chart.ShowDialog()
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
Public Function AddTeeChartStylesLine() As Styles.Line
|
|||
|
|
Dim devline As Steema.TeeChart.Styles.Line = New Styles.Line
|
|||
|
|
ChartBar.Series.Add(devline)
|
|||
|
|
Dim minValue As DateTime = New DateTime(2024, 1, 10, 2, 35, 30) '' 最小日期
|
|||
|
|
|
|||
|
|
|
|||
|
|
Return devline
|
|||
|
|
' Dim chart As TChart = ChartBar
|
|||
|
|
End Function
|
|||
|
|
|
|||
|
|
Public Sub init_Grid_config()
|
|||
|
|
With Grid_config
|
|||
|
|
.NewFile()
|
|||
|
|
.Cols = 3
|
|||
|
|
.Rows = 7
|
|||
|
|
.DisplayRowNumber = False
|
|||
|
|
.Cell(0, 0).Text = "序号"
|
|||
|
|
.Cell(0, 1).Text = "属性"
|
|||
|
|
.Cell(0, 2).Text = "属性值"
|
|||
|
|
.Column(0).Width = 0
|
|||
|
|
.Column(1).Width = 150
|
|||
|
|
.Column(1).Locked = True
|
|||
|
|
.Column(2).Width = 200
|
|||
|
|
.Column(1).Alignment = AlignmentEnum.CenterCenter
|
|||
|
|
.Column(2).Alignment = AlignmentEnum.CenterCenter
|
|||
|
|
.Cell(1, 1).Text = "开始时间"
|
|||
|
|
.Cell(2, 1).Text = "结束时间"
|
|||
|
|
.Cell(3, 1).Text = "机型"
|
|||
|
|
.Cell(4, 1).Text = "界面宽度"
|
|||
|
|
.Cell(5, 1).Text = "界面高度"
|
|||
|
|
.Cell(6, 1).Text = "左右比例"
|
|||
|
|
.Cell(1, 2).CellType = CellTypeEnum.DateTime
|
|||
|
|
.Cell(2, 2).CellType = CellTypeEnum.DateTime
|
|||
|
|
.Cell(3, 2).CellType = CellTypeEnum.ComboBox
|
|||
|
|
.Row(4).Visible = False
|
|||
|
|
|
|||
|
|
.Row(5).Visible = False
|
|||
|
|
.Row(6).Visible = False
|
|||
|
|
End With
|
|||
|
|
End Sub
|
|||
|
|
Public Sub FileTo_Grid_config()
|
|||
|
|
If IO.File.Exists(filepath) Then
|
|||
|
|
Grid_config.OpenFile(filepath)
|
|||
|
|
Dim kk As Integer = 0
|
|||
|
|
Dim kr As Integer = 0
|
|||
|
|
If Integer.TryParse(Grid_config.Cell(4, 2).Text, kk) And Integer.TryParse(Grid_config.Cell(5, 2).Text, kr) Then
|
|||
|
|
If kk <> 0 And kr <> 0 Then
|
|||
|
|
Size = New Size(kk, kr)
|
|||
|
|
End If
|
|||
|
|
End If
|
|||
|
|
kk = 0
|
|||
|
|
If Integer.TryParse(Grid_config.Cell(6, 2).Text, kk) Then
|
|||
|
|
If kk <> 0 Then
|
|||
|
|
SplitContainer1.SplitterDistance = kk
|
|||
|
|
End If
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
End Sub
|
|||
|
|
Public Sub Grid_config_FileTo()
|
|||
|
|
|
|||
|
|
Grid_config.Cell(4, 2).Text = Size.Width
|
|||
|
|
Grid_config.Cell(5, 2).Text = Size.Height
|
|||
|
|
Grid_config.Cell(6, 2).Text = SplitContainer1.SplitterDistance
|
|||
|
|
Grid_config.SaveFile(filepath)
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
|
|||
|
|
Grid_config_FileTo()
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click
|
|||
|
|
Grid_config.AddItem("")
|
|||
|
|
Grid_config.Cell(Grid_config.Rows - 1, 1).Text = "机型"
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub ToolStripButton3_Click(sender As Object, e As EventArgs) Handles ToolStripButton3.Click
|
|||
|
|
Grid_configDeleteRow(Grid_config.ActiveCell.Row)
|
|||
|
|
End Sub
|
|||
|
|
Public Sub Grid_configDeleteRow(erow As Integer)
|
|||
|
|
Dim devname As String = Grid_config.Cell(erow, 1).Text
|
|||
|
|
If devname.Equals("机型") Then
|
|||
|
|
Grid_config.Row(erow).Delete()
|
|||
|
|
End If
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub ToolStripButton2_Click(sender As Object, e As EventArgs) Handles ToolStripButton2.Click
|
|||
|
|
init_Grid_config()
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Private Sub ToolStripButton4_Click(sender As Object, e As EventArgs) Handles ToolStripButton4.Click
|
|||
|
|
MysqlDataDispose()
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
Public Sub MysqlDataDispose()
|
|||
|
|
Dim selectstr As String = "SELECT * FROM `psmysql`.`deviceparsingdatalog` WHERE"
|
|||
|
|
Dim cstrpar As String = String.Empty
|
|||
|
|
Dim starttime, stoptime As DateTime
|
|||
|
|
Dim dtZone As DateTime = New DateTime(1970, 1, 1, 0, 0, 0)
|
|||
|
|
Try
|
|||
|
|
|
|||
|
|
starttime = DateTime.Parse(Grid_config.Cell(1, 2).Text.Trim)
|
|||
|
|
stoptime = DateTime.Parse(Grid_config.Cell(2, 2).Text.Trim)
|
|||
|
|
If IsNothing(starttime) OrElse IsNothing(stoptime) Then
|
|||
|
|
MsgBox($"数据查询失败!!!{vbCrLf }原因:{vbCrLf }日期输入错误")
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
Catch ex As Exception
|
|||
|
|
MsgBox($"数据查询失败!!!{vbCrLf }原因:{vbCrLf }日期输入错误")
|
|||
|
|
Return
|
|||
|
|
End Try
|
|||
|
|
|
|||
|
|
For i = 1 To Grid_config.Rows - 1
|
|||
|
|
If i = 1 Then
|
|||
|
|
selectstr = $"{selectstr}`DateTime`>='{starttime.Year }/{starttime.Month }/{starttime.Day } {starttime.Hour }:{starttime.Minute }:{starttime.Second }' And "
|
|||
|
|
ElseIf i = 2 Then
|
|||
|
|
selectstr = $"{selectstr}`DateTime`<='{stoptime.Year }/{stoptime.Month }/{stoptime.Day } {stoptime.Hour }:{stoptime.Minute }:{stoptime.Second }' And "
|
|||
|
|
ElseIf i = 3 Then
|
|||
|
|
cstrpar = $"{cstrpar}OR `DEV_NAME` = '{Grid_config.Cell(i, 2).Text.Trim}'{vbCrLf }"
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
Next
|
|||
|
|
If Not String.IsNullOrEmpty(cstrpar) Then
|
|||
|
|
cstrpar = cstrpar.Remove(0, 2)
|
|||
|
|
selectstr = $"{selectstr}({cstrpar.Trim }) ORDER BY (`DateTime`) ASC"
|
|||
|
|
End If
|
|||
|
|
' Dim rowdic As Dictionary(Of String, Dictionary(Of String, String)) = New Dictionary(Of String, Dictionary(Of String, String))
|
|||
|
|
Dim colounmdic As Dictionary(Of String, Dictionary(Of String, Double)) = New Dictionary(Of String, Dictionary(Of String, Double))
|
|||
|
|
Dim dt As DataTable
|
|||
|
|
Dim rval As Double = 0
|
|||
|
|
Try
|
|||
|
|
|
|||
|
|
Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mysql, GdbConnString)
|
|||
|
|
db.Open()
|
|||
|
|
dt = db.ExecuteDataTable(selectstr)
|
|||
|
|
If IsNothing(dt) OrElse dt.Rows.Count = 0 OrElse dt.Columns.Count = 0 Then
|
|||
|
|
MsgBox($"数据查询失败!!!{vbCrLf }原因:{vbCrLf }数据查询语句异常:{selectstr}")
|
|||
|
|
Return
|
|||
|
|
Else
|
|||
|
|
|
|||
|
|
|
|||
|
|
Dim sqldate As Date
|
|||
|
|
Dim timse As String
|
|||
|
|
|
|||
|
|
For i = 0 To dt.Rows.Count - 1
|
|||
|
|
sqldate = Date.Parse(dt.Rows(i)("DateTime"))
|
|||
|
|
timse = $"{sqldate.Year }/{sqldate.Month }/{sqldate.Day } {sqldate.Hour }:{sqldate.Minute }:{sqldate.Second }"
|
|||
|
|
If i = 0 Then
|
|||
|
|
starttime = sqldate
|
|||
|
|
ElseIf i = dt.Rows.Count - 1 Then
|
|||
|
|
stoptime = sqldate
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
' Try
|
|||
|
|
'If i = 558 Then
|
|||
|
|
' Console.WriteLine(i)
|
|||
|
|
' End If
|
|||
|
|
If Not colounmdic.ContainsKey("Room_isExist") Then
|
|||
|
|
colounmdic.Add("Room_isExist", New Dictionary(Of String, Double))
|
|||
|
|
End If
|
|||
|
|
If IsDBNull(dt.Rows(i)("Room_isExist")) Then
|
|||
|
|
rval = 0
|
|||
|
|
Else
|
|||
|
|
Double.TryParse(dt.Rows(i)("Room_isExist"), rval)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
If colounmdic.Item("Room_isExist").ContainsKey(timse) Then
|
|||
|
|
colounmdic.Item("Room_isExist").Item(timse) = rval
|
|||
|
|
Else
|
|||
|
|
colounmdic.Item("Room_isExist").Add(timse, rval)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
If Not colounmdic.ContainsKey("isExist_Gol") Then
|
|||
|
|
colounmdic.Add("isExist_Gol", New Dictionary(Of String, Double))
|
|||
|
|
End If
|
|||
|
|
If IsDBNull(dt.Rows(i)("isExist_Gol")) Then
|
|||
|
|
rval = 0
|
|||
|
|
Else
|
|||
|
|
Double.TryParse(dt.Rows(i)("isExist_Gol"), rval)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
If colounmdic.Item("isExist_Gol").ContainsKey(timse) Then
|
|||
|
|
colounmdic.Item("isExist_Gol").Item(timse) = rval
|
|||
|
|
Else
|
|||
|
|
colounmdic.Item("isExist_Gol").Add(timse, rval)
|
|||
|
|
End If
|
|||
|
|
'Catch ex As Exception
|
|||
|
|
' Console.WriteLine(i)
|
|||
|
|
'End Try
|
|||
|
|
|
|||
|
|
|
|||
|
|
' Try
|
|||
|
|
For j = 1 To 5
|
|||
|
|
selectstr = $"isExist_Area_{j}"
|
|||
|
|
cstrpar = $"isTrig_{j}"
|
|||
|
|
If Not colounmdic.ContainsKey(selectstr) Then
|
|||
|
|
colounmdic.Add(selectstr, New Dictionary(Of String, Double))
|
|||
|
|
End If
|
|||
|
|
'Double.TryParse(dt.Rows(i)(selectstr), rval)
|
|||
|
|
If IsDBNull(dt.Rows(i)(selectstr)) Then
|
|||
|
|
rval = 0
|
|||
|
|
Else
|
|||
|
|
Double.TryParse(dt.Rows(i)(selectstr), rval)
|
|||
|
|
End If
|
|||
|
|
If colounmdic.Item(selectstr).ContainsKey(timse) Then
|
|||
|
|
colounmdic.Item(selectstr).Item(timse) = rval
|
|||
|
|
Else
|
|||
|
|
colounmdic.Item(selectstr).Add(timse, rval)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
If Not colounmdic.ContainsKey(cstrpar) Then
|
|||
|
|
colounmdic.Add(cstrpar, New Dictionary(Of String, Double))
|
|||
|
|
End If
|
|||
|
|
If IsDBNull(dt.Rows(i)(cstrpar)) Then
|
|||
|
|
rval = 0
|
|||
|
|
Else
|
|||
|
|
Double.TryParse(dt.Rows(i)(cstrpar), rval)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
If colounmdic.Item(cstrpar).ContainsKey(timse) Then
|
|||
|
|
colounmdic.Item(cstrpar).Item(timse) = rval
|
|||
|
|
Else
|
|||
|
|
colounmdic.Item(cstrpar).Add(timse, rval)
|
|||
|
|
End If
|
|||
|
|
Next
|
|||
|
|
'Catch ex As Exception
|
|||
|
|
' Console.WriteLine(i)
|
|||
|
|
'End Try
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
End Using
|
|||
|
|
|
|||
|
|
InitPieChart(colounmdic, starttime, stoptime)
|
|||
|
|
|
|||
|
|
|
|||
|
|
Catch ex As Exception
|
|||
|
|
MsgBox($"数据查询失败!!!{vbCrLf }原因:{vbCrLf }{ex.Message }")
|
|||
|
|
Return
|
|||
|
|
End Try
|
|||
|
|
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Public Sub initGrid_Mysqldate(rowdic As Dictionary(Of String, Dictionary(Of String, String)))
|
|||
|
|
If IsNothing(rowdic) AndAlso rowdic.Count = 0 AndAlso (Not rowdic.ContainsKey("colounmdic")) Then
|
|||
|
|
MsgBox($"数据加载失败!!数据为空或未检测到列信息。")
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
Dim starttime As Long = 0
|
|||
|
|
Dim stoptime As Long = 0
|
|||
|
|
Dim kkdic As Dictionary(Of String, Dictionary(Of Long, Double)) = New Dictionary(Of String, Dictionary(Of Long, Double))
|
|||
|
|
Dim colounmdic As Dictionary(Of String, String) = rowdic.Item("colounmdic")
|
|||
|
|
With Grid_Mysqldate
|
|||
|
|
.NewFile()
|
|||
|
|
.AutoRedraw = False
|
|||
|
|
.Cols = colounmdic.Count + 3
|
|||
|
|
.Rows = 1
|
|||
|
|
.DisplayRowNumber = True
|
|||
|
|
.Cell(0, 0).Text = "序号"
|
|||
|
|
.Cell(0, 1).Text = "时间"
|
|||
|
|
.Cell(0, 2).Text = "时间戳"
|
|||
|
|
.Column(0).Width = 20
|
|||
|
|
.Column(1).Width = 150
|
|||
|
|
.Column(1).Alignment = AlignmentEnum.CenterCenter
|
|||
|
|
|
|||
|
|
For i = 0 To colounmdic.Count - 1
|
|||
|
|
.Cell(0, i + 3).Text = colounmdic.Keys(i)
|
|||
|
|
.Column(i + 3).Alignment = AlignmentEnum.CenterCenter
|
|||
|
|
Next
|
|||
|
|
Dim dtOffset As New DateTimeOffset(New DateTime(1970, 1, 1), TimeSpan.Zero)
|
|||
|
|
' 获取本地日期和时间
|
|||
|
|
|
|||
|
|
|
|||
|
|
For Each node In rowdic
|
|||
|
|
If node.Key.Equals("colounmdic") Then Continue For
|
|||
|
|
.AddItem("")
|
|||
|
|
|
|||
|
|
Dim t As Long = Long.Parse(node.Key)
|
|||
|
|
t = t / 1000
|
|||
|
|
Dim yt As DateTime = (dtOffset + TimeSpan.FromSeconds(t)).LocalDateTime
|
|||
|
|
If starttime = 0 OrElse t < starttime Then
|
|||
|
|
starttime = t
|
|||
|
|
End If
|
|||
|
|
If stoptime = 0 OrElse t > stoptime Then
|
|||
|
|
stoptime = t
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
.Cell(.Rows - 1, 1).Text = yt.ToString("yyyy-MM-dd HH:mm:ss")
|
|||
|
|
.Cell(.Rows - 1, 2).Text = t.ToString
|
|||
|
|
For Each index In node.Value
|
|||
|
|
For j = 0 To colounmdic.Count - 1
|
|||
|
|
' 'Console.WriteLine(.Cell(0, j + 2).Text)
|
|||
|
|
If .Cell(0, j + 3).Text.Equals(index.Key) Then
|
|||
|
|
.Cell(.Rows - 1, j + 3).Text = index.Value
|
|||
|
|
End If
|
|||
|
|
Next
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
Dim datadic As Dictionary(Of Long, Double)
|
|||
|
|
If kkdic.ContainsKey(node.Value.Keys(0)) Then
|
|||
|
|
datadic = kkdic.Item(node.Value.Keys(0))
|
|||
|
|
If datadic.ContainsKey(t) Then
|
|||
|
|
datadic.Item(t) = CInt(node.Value.Values(0))
|
|||
|
|
Else
|
|||
|
|
datadic.Add(t, node.Value.Values(0))
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
Else
|
|||
|
|
datadic = New Dictionary(Of Long, Double)
|
|||
|
|
datadic.Add(t, node.Value.Values(0))
|
|||
|
|
kkdic.Add(node.Value.Keys(0), datadic)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
End With
|
|||
|
|
Grid_Mysqldate.AutoRedraw = True
|
|||
|
|
Grid_Mysqldate.Refresh()
|
|||
|
|
|
|||
|
|
InitPieChart(kkdic, starttime, stoptime)
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 初始化Chart控件
|
|||
|
|
''' </summary>
|
|||
|
|
Private Sub InitTeeChart(kkdic As Dictionary(Of String, Dictionary(Of Long, Double)), starttime As Long, stoptime As Long)
|
|||
|
|
ChartBar.AutoRepaint = False
|
|||
|
|
ChartBar.Header.Lines = New String() {""} 'TeeChart标题
|
|||
|
|
ChartBar.Panning.InsideBounds = True
|
|||
|
|
ChartBar.Panning.Allow = ScrollModes.Horizontal
|
|||
|
|
InitCustomAxies(kkdic, starttime, stoptime)
|
|||
|
|
InitFastLine(kkdic)
|
|||
|
|
InitCursor()
|
|||
|
|
ChartBar.AutoRepaint = True
|
|||
|
|
ChartBar.Refresh()
|
|||
|
|
End Sub
|
|||
|
|
Private Sub InitTeeChart(kkdic As Dictionary(Of String, Dictionary(Of String, Double)), starttime As Date, stoptime As Date)
|
|||
|
|
ChartBar.AutoRepaint = False
|
|||
|
|
ChartBar.Header.Lines = New String() {""} 'TeeChart标题
|
|||
|
|
ChartBar.Panning.InsideBounds = True
|
|||
|
|
ChartBar.Panning.Allow = ScrollModes.Horizontal
|
|||
|
|
InitCustomAxies(kkdic, starttime, stoptime)
|
|||
|
|
InitFastLine(kkdic)
|
|||
|
|
InitCursor()
|
|||
|
|
ChartBar.AutoRepaint = True
|
|||
|
|
ChartBar.Refresh()
|
|||
|
|
End Sub
|
|||
|
|
''' <summary>
|
|||
|
|
''' 初始化轴
|
|||
|
|
''' </summary>
|
|||
|
|
Private Sub InitCustomAxies(kkdic As Dictionary(Of String, Dictionary(Of String, Double)), starttime As Date, stoptime As Date)
|
|||
|
|
|
|||
|
|
_axis.Clear()
|
|||
|
|
ChartBar.Axes.Custom.Clear()
|
|||
|
|
ChartBar.Walls.Visible = False '不显示立面(背景色将统一)
|
|||
|
|
|
|||
|
|
ChartBar.Axes.Bottom.Title.Caption = "时间轴"
|
|||
|
|
ChartBar.Axes.Bottom.Title.Visible = False
|
|||
|
|
ChartBar.Axes.Bottom.MaximumOffset = 4 '最大值偏移
|
|||
|
|
ChartBar.Axes.Bottom.MinimumOffset = 4 '最小值偏移
|
|||
|
|
ChartBar.Axes.Bottom.Grid.Style = System.Drawing.Drawing2D.DashStyle.Dash
|
|||
|
|
ChartBar.Axes.Bottom.Grid.Width = 2
|
|||
|
|
ChartBar.Axes.Bottom.Ticks.Color = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer))
|
|||
|
|
ChartBar.Axes.Bottom.Ticks.Length = 4 '标记长度
|
|||
|
|
ChartBar.Axes.Bottom.Ticks.Width = 4 '标记宽度
|
|||
|
|
ChartBar.Axes.Bottom.Grid.Transparency = 60
|
|||
|
|
' _axis.Add(ChartBar.Axes.Bottom)
|
|||
|
|
ChartBar.Axes.Bottom.Automatic = False
|
|||
|
|
|
|||
|
|
Dim dtOffset As New DateTimeOffset(New DateTime(1970, 1, 1, 0, 0, 0))
|
|||
|
|
' 获取本地日期和时间
|
|||
|
|
Dim yt As DateTime
|
|||
|
|
yt = stoptime ' (dtOffset.AddSeconds(stoptime)).LocalDateTime
|
|||
|
|
ChartBar.Axes.Bottom.Maximum = yt.ToOADate
|
|||
|
|
Dim bvtOffset As New DateTimeOffset(New DateTime(1970, 1, 1, 0, 0, 0))
|
|||
|
|
yt = starttime ' (dtOffset.AddSeconds(starttime)).LocalDateTime
|
|||
|
|
|
|||
|
|
ChartBar.Axes.Bottom.Minimum = yt.ToOADate
|
|||
|
|
' ChartBar.Axes.Bottom.Increment = 1
|
|||
|
|
ChartBar.Axes.Bottom.Logarithmic = False
|
|||
|
|
'ChartBar.Axes.Right.Title.Right = 20
|
|||
|
|
ChartBar.Axes.Bottom.Labels.DateTimeFormat = "yyyy-MM-dd HH"
|
|||
|
|
|
|||
|
|
ChartBar.Axes.Left.Title.Caption = "电流-电压轴"
|
|||
|
|
ChartBar.Axes.Left.Title.Visible = False
|
|||
|
|
ChartBar.Axes.Left.MaximumOffset = 4 '最大值偏移
|
|||
|
|
ChartBar.Axes.Left.MinimumOffset = 4 '最小值偏移
|
|||
|
|
ChartBar.Axes.Left.Grid.Style = System.Drawing.Drawing2D.DashStyle.Dash
|
|||
|
|
ChartBar.Axes.Left.Grid.Width = 2
|
|||
|
|
ChartBar.Axes.Left.Ticks.Color = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer))
|
|||
|
|
ChartBar.Axes.Left.Ticks.Length = 2 '标记长度
|
|||
|
|
ChartBar.Axes.Left.Ticks.Width = 2 '标记宽度
|
|||
|
|
ChartBar.Axes.Left.Grid.Transparency = 60
|
|||
|
|
ChartBar.Axes.Left.Automatic = False
|
|||
|
|
ChartBar.Axes.Left.Minimum = 0.001
|
|||
|
|
ChartBar.Axes.Left.Maximum = 1000
|
|||
|
|
ChartBar.Axes.Left.Logarithmic = True
|
|||
|
|
|
|||
|
|
|
|||
|
|
For i = 0 To kkdic.Count - 1
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
'_axis.Add(ChartBar.Axes.Left)
|
|||
|
|
'Case Else 'IO
|
|||
|
|
Dim idx As Integer = i
|
|||
|
|
_axis.Add(New Steema.TeeChart.Axis)
|
|||
|
|
_axis(i).Title.Caption = kkdic.Keys(i) '标题文本
|
|||
|
|
|
|||
|
|
_axis(i).Title.Font.Brush.Color = Color.GhostWhite
|
|||
|
|
|
|||
|
|
_axis(i).Title.Angle = 0 '标题角度
|
|||
|
|
_axis(i).AxisPen.Color = Color.FromArgb(255, idx * 12, 255 - idx * 10, idx * 6) '颜色
|
|||
|
|
_axis(i).OtherSide = True '右边显示
|
|||
|
|
|
|||
|
|
_axis(i).StartPosition = idx * 8.0R
|
|||
|
|
_axis(i).EndPosition = _axis(i).StartPosition + 4.0R
|
|||
|
|
_axis(i).Automatic = False
|
|||
|
|
_axis(i).Minimum = 0
|
|||
|
|
_axis(i).Maximum = 1
|
|||
|
|
_axis(i).Increment = 1.0R
|
|||
|
|
_axis(i).Grid.Visible = False
|
|||
|
|
_axis(i).Labels.Angle = 0 '角度
|
|||
|
|
|
|||
|
|
|
|||
|
|
ChartBar.Axes.Custom.Add(_axis(i))
|
|||
|
|
|
|||
|
|
'End Select
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
Private Sub InitCustomAxies(kkdic As Dictionary(Of String, Dictionary(Of Long, Double)), starttime As Long, stoptime As Long)
|
|||
|
|
|
|||
|
|
_axis.Clear()
|
|||
|
|
ChartBar.Axes.Custom.Clear()
|
|||
|
|
ChartBar.Walls.Visible = False '不显示立面(背景色将统一)
|
|||
|
|
|
|||
|
|
ChartBar.Axes.Bottom.Title.Caption = "时间轴"
|
|||
|
|
ChartBar.Axes.Bottom.Title.Visible = False
|
|||
|
|
ChartBar.Axes.Bottom.MaximumOffset = 4 '最大值偏移
|
|||
|
|
ChartBar.Axes.Bottom.MinimumOffset = 4 '最小值偏移
|
|||
|
|
ChartBar.Axes.Bottom.Grid.Style = System.Drawing.Drawing2D.DashStyle.Dash
|
|||
|
|
ChartBar.Axes.Bottom.Grid.Width = 2
|
|||
|
|
ChartBar.Axes.Bottom.Ticks.Color = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer))
|
|||
|
|
ChartBar.Axes.Bottom.Ticks.Length = 4 '标记长度
|
|||
|
|
ChartBar.Axes.Bottom.Ticks.Width = 4 '标记宽度
|
|||
|
|
ChartBar.Axes.Bottom.Grid.Transparency = 60
|
|||
|
|
' _axis.Add(ChartBar.Axes.Bottom)
|
|||
|
|
ChartBar.Axes.Bottom.Automatic = False
|
|||
|
|
|
|||
|
|
Dim dtOffset As New DateTimeOffset(New DateTime(1970, 1, 1, 0, 0, 0))
|
|||
|
|
' 获取本地日期和时间
|
|||
|
|
Dim yt As DateTime
|
|||
|
|
yt = (dtOffset.AddSeconds(stoptime)).LocalDateTime
|
|||
|
|
ChartBar.Axes.Bottom.Maximum = yt.ToOADate
|
|||
|
|
Dim bvtOffset As New DateTimeOffset(New DateTime(1970, 1, 1, 0, 0, 0))
|
|||
|
|
yt = (dtOffset.AddSeconds(starttime)).LocalDateTime
|
|||
|
|
|
|||
|
|
ChartBar.Axes.Bottom.Minimum = yt.ToOADate
|
|||
|
|
' ChartBar.Axes.Bottom.Increment = 1
|
|||
|
|
ChartBar.Axes.Bottom.Logarithmic = False
|
|||
|
|
'ChartBar.Axes.Right.Title.Right = 20
|
|||
|
|
ChartBar.Axes.Bottom.Labels.DateTimeFormat = "yyyy-MM-dd HH"
|
|||
|
|
|
|||
|
|
ChartBar.Axes.Left.Title.Caption = "电流-电压轴"
|
|||
|
|
ChartBar.Axes.Left.Title.Visible = False
|
|||
|
|
ChartBar.Axes.Left.MaximumOffset = 4 '最大值偏移
|
|||
|
|
ChartBar.Axes.Left.MinimumOffset = 4 '最小值偏移
|
|||
|
|
ChartBar.Axes.Left.Grid.Style = System.Drawing.Drawing2D.DashStyle.Dash
|
|||
|
|
ChartBar.Axes.Left.Grid.Width = 2
|
|||
|
|
ChartBar.Axes.Left.Ticks.Color = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer))
|
|||
|
|
ChartBar.Axes.Left.Ticks.Length = 2 '标记长度
|
|||
|
|
ChartBar.Axes.Left.Ticks.Width = 2 '标记宽度
|
|||
|
|
ChartBar.Axes.Left.Grid.Transparency = 60
|
|||
|
|
ChartBar.Axes.Left.Automatic = False
|
|||
|
|
ChartBar.Axes.Left.Minimum = 0.001
|
|||
|
|
ChartBar.Axes.Left.Maximum = 1000
|
|||
|
|
ChartBar.Axes.Left.Logarithmic = True
|
|||
|
|
|
|||
|
|
|
|||
|
|
For i = 0 To kkdic.Count - 1
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
'_axis.Add(ChartBar.Axes.Left)
|
|||
|
|
'Case Else 'IO
|
|||
|
|
Dim idx As Integer = i
|
|||
|
|
_axis.Add(New Steema.TeeChart.Axis)
|
|||
|
|
_axis(i).Title.Caption = kkdic.Keys(i) '标题文本
|
|||
|
|
|
|||
|
|
_axis(i).Title.Font.Brush.Color = Color.GhostWhite
|
|||
|
|
|
|||
|
|
_axis(i).Title.Angle = 0 '标题角度
|
|||
|
|
_axis(i).AxisPen.Color = Color.FromArgb(255, idx * 12, 255 - idx * 10, idx * 6) '颜色
|
|||
|
|
_axis(i).OtherSide = True '右边显示
|
|||
|
|
|
|||
|
|
_axis(i).StartPosition = idx * 8.0R
|
|||
|
|
_axis(i).EndPosition = _axis(i).StartPosition + 4.0R
|
|||
|
|
_axis(i).Automatic = False
|
|||
|
|
_axis(i).Minimum = 0
|
|||
|
|
_axis(i).Maximum = 1
|
|||
|
|
_axis(i).Increment = 1.0R
|
|||
|
|
_axis(i).Grid.Visible = False
|
|||
|
|
_axis(i).Labels.Angle = 0 '角度
|
|||
|
|
|
|||
|
|
|
|||
|
|
ChartBar.Axes.Custom.Add(_axis(i))
|
|||
|
|
|
|||
|
|
'End Select
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
''' <summary>
|
|||
|
|
''' 初始化线
|
|||
|
|
''' </summary>
|
|||
|
|
Private Sub InitFastLine(kkdic As Dictionary(Of String, Dictionary(Of Long, Double)))
|
|||
|
|
ChartBar.Series.Clear()
|
|||
|
|
_fastLine.Clear()
|
|||
|
|
For i = 0 To kkdic.Count - 1
|
|||
|
|
_fastLine.Add(kkdic.Keys(i), New Steema.TeeChart.Styles.FastLine)
|
|||
|
|
AddHandler _fastLine.Item(kkdic.Keys(i)).Click, AddressOf FastLine1_Click
|
|||
|
|
' _fastLine(i).Title = $"电流{i}" ' FastLineTitle(i) '标题
|
|||
|
|
_fastLine.Item(kkdic.Keys(i)).TreatNulls = Steema.TeeChart.Styles.TreatNullsStyle.DoNotPaint
|
|||
|
|
ChartBar.Series.Add(_fastLine.Item(kkdic.Keys(i)))
|
|||
|
|
_fastLine.Item(kkdic.Keys(i)).XValues.DateTime = True
|
|||
|
|
'Select Case i
|
|||
|
|
' Case 0
|
|||
|
|
' _fastLine(i).Title = $"电流"
|
|||
|
|
' ' FastLine(i).CustomVertAxis = ChartBar.Axes.Left '绑定电流轴
|
|||
|
|
' _fastLine(i).Transparency = 0 '线条透明度
|
|||
|
|
' _fastLine(i).LinePen.Color = Color.FromArgb(255, 255, 0, 0) '线条颜色
|
|||
|
|
'
|
|||
|
|
' Case 1 To 5
|
|||
|
|
' If i = 1 Then
|
|||
|
|
' _fastLine(i).Title = $"电压"
|
|||
|
|
' Else
|
|||
|
|
' _fastLine(i).Title = $"CH{i - 1}"
|
|||
|
|
' End If
|
|||
|
|
|
|||
|
|
' ' _fastLine(i).Visible = False
|
|||
|
|
' ' _fastLine(i).CustomVertAxis = _axis(0) '绑定电压
|
|||
|
|
' _fastLine(i).Transparency = 75 '线条透明度
|
|||
|
|
' _fastLine(i).LinePen.Color = Color.FromArgb(126, 0, 0, 255) '线条颜色
|
|||
|
|
' _fastLine(i).Legend.Visible = True '不在图例中显示
|
|||
|
|
' Case Else
|
|||
|
|
_fastLine.Item(kkdic.Keys(i)).Title = $"{kkdic.Keys(i)}"
|
|||
|
|
'_fastLine(i).Legend.Visible = True '不在图例中显示
|
|||
|
|
' _fastLine.Item(kkdic.Keys(i)).Visible = False
|
|||
|
|
_fastLine.Item(kkdic.Keys(i)).Transparency = 0 '线条透明度
|
|||
|
|
_fastLine.Item(kkdic.Keys(i)).CustomVertAxis = _axis(i) '绑定IO轴
|
|||
|
|
_fastLine.Item(kkdic.Keys(i)).Stairs = True '线条阶梯状
|
|||
|
|
Dim random As New Random()
|
|||
|
|
|
|||
|
|
_fastLine.Item(kkdic.Keys(i)).LinePen.Color = Color.GhostWhite '线条颜色
|
|||
|
|
'_fastLine.Item(kkdic.Keys(i)).LinePen.Color = Color.Blue
|
|||
|
|
_fastLine.Item(kkdic.Keys(i)).LinePen.Width = 2
|
|||
|
|
_fastLine.Item(kkdic.Keys(i)).Legend.Visible = False '不在图例中显示
|
|||
|
|
' _fastLine(i).LinePen.Color = _axis(i - 5).Labels.Color
|
|||
|
|
'End Select
|
|||
|
|
' FastLine(i).LinePen.Color = Color.FromArgb(12, 12, 12, 12) '颜色
|
|||
|
|
' FastLine(i).ColorEach = False '各点之间颜色不一
|
|||
|
|
Next
|
|||
|
|
End Sub
|
|||
|
|
Private Sub InitFastLine(kkdic As Dictionary(Of String, Dictionary(Of String, Double)))
|
|||
|
|
ChartBar.Series.Clear()
|
|||
|
|
_fastLine.Clear()
|
|||
|
|
For i = 0 To kkdic.Count - 1
|
|||
|
|
_fastLine.Add(kkdic.Keys(i), New Steema.TeeChart.Styles.FastLine)
|
|||
|
|
AddHandler _fastLine.Item(kkdic.Keys(i)).Click, AddressOf FastLine1_Click
|
|||
|
|
' _fastLine(i).Title = $"电流{i}" ' FastLineTitle(i) '标题
|
|||
|
|
_fastLine.Item(kkdic.Keys(i)).TreatNulls = Steema.TeeChart.Styles.TreatNullsStyle.DoNotPaint
|
|||
|
|
ChartBar.Series.Add(_fastLine.Item(kkdic.Keys(i)))
|
|||
|
|
_fastLine.Item(kkdic.Keys(i)).XValues.DateTime = True
|
|||
|
|
'Select Case i
|
|||
|
|
' Case 0
|
|||
|
|
' _fastLine(i).Title = $"电流"
|
|||
|
|
' ' FastLine(i).CustomVertAxis = ChartBar.Axes.Left '绑定电流轴
|
|||
|
|
' _fastLine(i).Transparency = 0 '线条透明度
|
|||
|
|
' _fastLine(i).LinePen.Color = Color.FromArgb(255, 255, 0, 0) '线条颜色
|
|||
|
|
'
|
|||
|
|
' Case 1 To 5
|
|||
|
|
' If i = 1 Then
|
|||
|
|
' _fastLine(i).Title = $"电压"
|
|||
|
|
' Else
|
|||
|
|
' _fastLine(i).Title = $"CH{i - 1}"
|
|||
|
|
' End If
|
|||
|
|
|
|||
|
|
' ' _fastLine(i).Visible = False
|
|||
|
|
' ' _fastLine(i).CustomVertAxis = _axis(0) '绑定电压
|
|||
|
|
' _fastLine(i).Transparency = 75 '线条透明度
|
|||
|
|
' _fastLine(i).LinePen.Color = Color.FromArgb(126, 0, 0, 255) '线条颜色
|
|||
|
|
' _fastLine(i).Legend.Visible = True '不在图例中显示
|
|||
|
|
' Case Else
|
|||
|
|
_fastLine.Item(kkdic.Keys(i)).Title = $"{kkdic.Keys(i)}"
|
|||
|
|
'_fastLine(i).Legend.Visible = True '不在图例中显示
|
|||
|
|
' _fastLine.Item(kkdic.Keys(i)).Visible = False
|
|||
|
|
_fastLine.Item(kkdic.Keys(i)).Transparency = 0 '线条透明度
|
|||
|
|
_fastLine.Item(kkdic.Keys(i)).CustomVertAxis = _axis(i) '绑定IO轴
|
|||
|
|
_fastLine.Item(kkdic.Keys(i)).Stairs = True '线条阶梯状
|
|||
|
|
Dim random As New Random()
|
|||
|
|
|
|||
|
|
_fastLine.Item(kkdic.Keys(i)).LinePen.Color = Color.GhostWhite '线条颜色
|
|||
|
|
'_fastLine.Item(kkdic.Keys(i)).LinePen.Color = Color.Blue
|
|||
|
|
_fastLine.Item(kkdic.Keys(i)).LinePen.Width = 2
|
|||
|
|
_fastLine.Item(kkdic.Keys(i)).Legend.Visible = False '不在图例中显示
|
|||
|
|
' _fastLine(i).LinePen.Color = _axis(i - 5).Labels.Color
|
|||
|
|
'End Select
|
|||
|
|
' FastLine(i).LinePen.Color = Color.FromArgb(12, 12, 12, 12) '颜色
|
|||
|
|
' FastLine(i).ColorEach = False '各点之间颜色不一
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
Private Sub InitCursor()
|
|||
|
|
ChartBar.Tools.Clear()
|
|||
|
|
For i = 0 To _curSor.Length - 1
|
|||
|
|
_curSor(i) = New Steema.TeeChart.Tools.CursorTool
|
|||
|
|
ChartBar.Tools.Add(_curSor(i))
|
|||
|
|
_curSor(i).Style = Steema.TeeChart.Tools.CursorToolStyles.Vertical
|
|||
|
|
_curSor(i).OriginalCursor = System.Windows.Forms.Cursors.Default
|
|||
|
|
_curSor(i).Pen.Style = System.Drawing.Drawing2D.DashStyle.Dot
|
|||
|
|
_curSor(i).Pen.Width = 2
|
|||
|
|
_curSor(i).Tag = i
|
|||
|
|
_curSor(i).Active = True
|
|||
|
|
_curSor(i).FollowMouse = False
|
|||
|
|
AddHandler _curSor(i).Change, AddressOf CursorChange
|
|||
|
|
Select Case i
|
|||
|
|
Case 0
|
|||
|
|
_curSor(i).Pen.Color = System.Drawing.Color.Orange
|
|||
|
|
Case 1
|
|||
|
|
_curSor(i).Pen.Color = System.Drawing.Color.Lime
|
|||
|
|
Case 2
|
|||
|
|
_curSor(i).Pen.Color = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(128, Byte), Integer), CType(CType(255, Byte), Integer))
|
|||
|
|
End Select
|
|||
|
|
Next
|
|||
|
|
End Sub
|
|||
|
|
''' <summary>
|
|||
|
|
''' 光标位置改变触发事件
|
|||
|
|
''' </summary>
|
|||
|
|
''' <param name="sender"></param>
|
|||
|
|
''' <param name="e"></param>
|
|||
|
|
Private Sub CursorChange(sender As Object, e As Steema.TeeChart.Tools.CursorChangeEventArgs)
|
|||
|
|
Dim index As Integer = sender.tag
|
|||
|
|
CursorChangeDataDisplay(index)
|
|||
|
|
End Sub
|
|||
|
|
''' <summary>
|
|||
|
|
''' 光标移动显示数据
|
|||
|
|
''' </summary>
|
|||
|
|
''' <param name="index">当前移动的是第几个光标</param>
|
|||
|
|
Private Sub CursorChangeDataDisplay(index As Integer)
|
|||
|
|
|
|||
|
|
Dim X1 As Double = 0
|
|||
|
|
Dim X2 As Double = 0
|
|||
|
|
Dim dtOffset As New DateTimeOffset(New DateTime(1900, 1, 1), TimeSpan.Zero)
|
|||
|
|
|
|||
|
|
' 获取本地日期和时间
|
|||
|
|
Dim yt As DateTime
|
|||
|
|
Dim ts As TimeSpan
|
|||
|
|
Select Case index
|
|||
|
|
Case 0
|
|||
|
|
X1 = _curSor(index).XValue.ToString("#0.0000")
|
|||
|
|
|
|||
|
|
'yt.too
|
|||
|
|
yt = DateTime.FromOADate(X1)
|
|||
|
|
'Console.WriteLine($"CursorChangeDataDisplay:X1 {X1}:{yt.ToString("yyyy-MM-dd HH:mm:ss")}")
|
|||
|
|
'yt = (dtOffset + TimeSpan.FromDays(X1)).LocalDateTime
|
|||
|
|
'yt = yt + TimeSpan.FromHours(8)
|
|||
|
|
labY1.Text = yt.ToString("dd HH:mm:ss")
|
|||
|
|
ts = New TimeSpan(yt.Ticks)
|
|||
|
|
labY1.Tag = ts.TotalSeconds
|
|||
|
|
Case 1
|
|||
|
|
X2 = _curSor(index).XValue.ToString("#0.0000")
|
|||
|
|
yt = DateTime.FromOADate(X2)
|
|||
|
|
|
|||
|
|
'yt = yt + TimeSpan.FromHours(8)
|
|||
|
|
labY2.Text = yt.ToString("dd HH:mm:ss")
|
|||
|
|
'Console.WriteLine($"CursorChangeDataDisplay:X2 {X2}:{yt.ToString("yyyy-MM-dd HH:mm:ss")}")
|
|||
|
|
ts = New TimeSpan(yt.Ticks)
|
|||
|
|
labY2.Tag = ts.TotalSeconds
|
|||
|
|
End Select
|
|||
|
|
Double.TryParse(labY1.Tag, X1)
|
|||
|
|
Double.TryParse(labY2.Tag, X2)
|
|||
|
|
|
|||
|
|
|
|||
|
|
Dim couinm As Double = X2 - X1
|
|||
|
|
lab1_2.Text = ""
|
|||
|
|
If couinm < 0 Then
|
|||
|
|
lab1_2.Text = " - "
|
|||
|
|
End If
|
|||
|
|
';'Console.WriteLine($"CursorChangeDataDisplay:{ _curSor(index).XValue.ToString("#0.00")}|{_curSor(index).XValue.ToString("#0.00")}|{couinm}")
|
|||
|
|
Dim timeval As TimeSpan = TimeSpan.FromSeconds(Math.Abs(couinm))
|
|||
|
|
' 'Console.WriteLine(couinm)
|
|||
|
|
If timeval.Days > 0 Then
|
|||
|
|
lab1_2.Text = $"{ lab1_2.Text}{timeval.Days }天 "
|
|||
|
|
End If
|
|||
|
|
lab1_2.Text = $"{ lab1_2.Text}{timeval.Hours }:{timeval.Minutes }:{timeval.Seconds }"
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Private _curTool As Steema.TeeChart.Tools.CursorTool
|
|||
|
|
Private Sub ChartBar_MouseDoubleClick(sender As Object, e As MouseEventArgs) Handles ChartBar.MouseDoubleClick
|
|||
|
|
If e.Button = MouseButtons.Middle Then
|
|||
|
|
ChartBar.Zoom.Undo()
|
|||
|
|
ElseIf e.Button = MouseButtons.Left Then
|
|||
|
|
Dim idx As Integer
|
|||
|
|
Dim row As Integer
|
|||
|
|
|
|||
|
|
If _curTool Is Nothing Then
|
|||
|
|
idx = 0
|
|||
|
|
_curTool = _curSor(idx)
|
|||
|
|
_curTool.FollowMouse = True
|
|||
|
|
'row = _rowChart.Cursor + idx * (EnCursor.Width + 2) + 1 + EnCursor.FollowMouse + 1
|
|||
|
|
'GrdChartInfo.Cell(row, EnGridCol.Value).Text = $"1"
|
|||
|
|
|
|||
|
|
Else
|
|||
|
|
If _curTool.FollowMouse = False Then
|
|||
|
|
idx = _curTool.Tag
|
|||
|
|
' row = _rowChart.Cursor + idx * (EnCursor.Width + 2) + 1 + EnCursor.FollowMouse + 1
|
|||
|
|
'_isUserChange = False
|
|||
|
|
_curTool.FollowMouse = False
|
|||
|
|
'GrdChartInfo.Cell(row, EnGridCol.Value).Text = $"0"
|
|||
|
|
|
|||
|
|
idx += 1
|
|||
|
|
If idx >= _curSor.Length Then
|
|||
|
|
idx = 0
|
|||
|
|
_curTool = _curSor(idx)
|
|||
|
|
_curTool.FollowMouse = True
|
|||
|
|
Else
|
|||
|
|
_curTool = _curSor(idx)
|
|||
|
|
_curTool.FollowMouse = True
|
|||
|
|
' row = _rowChart.Cursor + idx * (EnCursor.Width + 2) + 1 + EnCursor.FollowMouse + 1
|
|||
|
|
'GrdChartInfo.Cell(row, EnGridCol.Value).Text = $"1"
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
'_isUserChange = True
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub ChartBar_MouseClick(sender As Object, e As MouseEventArgs) Handles ChartBar.MouseClick
|
|||
|
|
If e.Button = MouseButtons.Middle Then
|
|||
|
|
|
|||
|
|
ChartBar.Zoom.Undo()
|
|||
|
|
ElseIf e.Button = MouseButtons.Right Then
|
|||
|
|
If IsNothing(_curTool) Then Return
|
|||
|
|
_curTool.FollowMouse = False
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Private Sub FastLine1_Click(sender As Object, e As MouseEventArgs)
|
|||
|
|
Dim fl As Styles.FastLine = sender
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
'For Each node In _fastLine
|
|||
|
|
' If node.Value.Title.Equals(fl.Title) Then
|
|||
|
|
' fl = node.Value
|
|||
|
|
' Dim x1 As Double = 0
|
|||
|
|
' labdevanme.Text = fl.Title
|
|||
|
|
' ''Console.WriteLine($"{e.X} {fl.YValues.Value(e.X).ToString("#0.0.")} {e.Y} {fl.YValues.Value(e.Y).ToString("#0.00")}")
|
|||
|
|
' Dim intcv As Integer = CInt(Math.Round(ChartBar.Series(0).YScreenToValue(e.Y)))
|
|||
|
|
' labval.Text = intcv.ToString
|
|||
|
|
|
|||
|
|
|
|||
|
|
' 'Console.WriteLine(fl.XValues.Value.Length)
|
|||
|
|
' x1 = ChartBar.Series(0).XScreenToValue(e.X)
|
|||
|
|
' Dim stra As String = fl.XValues.AsDateTime(e.X)
|
|||
|
|
|
|||
|
|
|
|||
|
|
' Dim dtOffset As New DateTimeOffset(New DateTime(1970, 1, 1), TimeSpan.Zero)
|
|||
|
|
' ' 获取本地日期和时间
|
|||
|
|
' Dim yt As DateTime
|
|||
|
|
' yt = DateTime.FromOADate(x1)
|
|||
|
|
' yt = yt + TimeSpan.FromHours(8)
|
|||
|
|
' 'Console.WriteLine($"FastLine1_Click:{x1}:{ yt.ToString("yyyy-MM-dd HH:mm:ss")}")
|
|||
|
|
' labDate.Text = yt.ToString("yyyy-MM-dd HH:mm:ss")
|
|||
|
|
|
|||
|
|
' End If
|
|||
|
|
'Next
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub Grid_config_ComboDropDown(Sender As Object, e As Grid.ComboDropDownEventArgs) Handles Grid_config.ComboDropDown
|
|||
|
|
Grid_config.ComboBox(0).Items.Clear()
|
|||
|
|
If IsNothing(devnamedic) OrElse devnamedic.Count = 0 Then Return
|
|||
|
|
Grid_config.ComboBox(0).Items.AddRange(devnamedic.ToArray)
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
End Class
|