⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chartds2770.bas

📁 利用VB开发的针对Maxim-Dallas DS2770电量检测芯片
💻 BAS
字号:
Attribute VB_Name = "ChartDS2770"
Option Explicit
Dim Row As Integer
Dim Column As Integer

Public VoltageData(500) As Variant
Public HighVolt(500) As Variant
Public TempData(500) As Variant
Public HighTemp(500) As Variant
Public CurrentData(500) As Variant
Public HighCurrent(500) As Variant
Public LowCurrent(500) As Variant
Public CapacityData(500) As Variant
Public HighCapacity(500) As Variant

Public Sub UpdateMeter() 'Updates Fuel Pack Meter
Dim PtrX As Single
    
    PtrX = RARC
    Select Case PtrX
        Case Is < 0
            frmEvalKit.FuelGaugeNeedle.X1 = 520
            frmEvalKit.FuelGaugeNeedle.Y1 = 1560
        Case 0 To 0.1
            frmEvalKit.FuelGaugeNeedle.X1 = 520 + (400 * PtrX)
            frmEvalKit.FuelGaugeNeedle.Y1 = 1560 - (3000 * PtrX)
        Case Is <= 0.2
            frmEvalKit.FuelGaugeNeedle.X1 = 560 + (1200 * (PtrX - 0.1))
            frmEvalKit.FuelGaugeNeedle.Y1 = 1260 - (2800 * (PtrX - 0.1))
        Case Is <= 0.3
            frmEvalKit.FuelGaugeNeedle.X1 = 680 + (2400 * (PtrX - 0.2))
            frmEvalKit.FuelGaugeNeedle.Y1 = 980 - (2400 * (PtrX - 0.2))
        Case Is <= 0.4
            frmEvalKit.FuelGaugeNeedle.X1 = 920 + (2800 * (PtrX - 0.3))
            frmEvalKit.FuelGaugeNeedle.Y1 = 740 - (1200 * (PtrX - 0.3))
        Case Is <= 0.5
            frmEvalKit.FuelGaugeNeedle.X1 = 1200 + (2400 * (PtrX - 0.4))
            frmEvalKit.FuelGaugeNeedle.Y1 = 620 - (200 * (PtrX - 0.4))
        Case Is <= 0.6
            frmEvalKit.FuelGaugeNeedle.X1 = 1440 + (2400 * (PtrX - 0.5))
            frmEvalKit.FuelGaugeNeedle.Y1 = 600 + (200 * (PtrX - 0.5))
        Case Is <= 0.7
            frmEvalKit.FuelGaugeNeedle.X1 = 1680 + (2800 * (PtrX - 0.6))
            frmEvalKit.FuelGaugeNeedle.Y1 = 620 + (1200 * (PtrX - 0.6))
        Case Is <= 0.8
            frmEvalKit.FuelGaugeNeedle.X1 = 1960 + (2400 * (PtrX - 0.7))
            frmEvalKit.FuelGaugeNeedle.Y1 = 740 + (2400 * (PtrX - 0.7))
        Case Is <= 0.9
            frmEvalKit.FuelGaugeNeedle.X1 = 2200 + (1200 * (PtrX - 0.8))
            frmEvalKit.FuelGaugeNeedle.Y1 = 980 + (2800 * (PtrX - 0.8))
        Case Is <= 1
            frmEvalKit.FuelGaugeNeedle.X1 = 2320 + (400 * (PtrX - 0.9))
            frmEvalKit.FuelGaugeNeedle.Y1 = 1260 + (3000 * (PtrX - 0.9))
        Case Is > 1
            frmEvalKit.FuelGaugeNeedle.X1 = 2360
            frmEvalKit.FuelGaugeNeedle.Y1 = 1560
    End Select
End Sub

Sub VoltageMeter()
Dim Max As Single
Dim PtrX As Single
    
    Max = 5
    PtrX = (Voltage / Max)
    Select Case PtrX
        Case Is < 0
            frmEvalKit.VoltNeedle.X1 = 360
            frmEvalKit.VoltNeedle.Y1 = 1245
        Case 0 To 0.1
            frmEvalKit.VoltNeedle.X1 = 360 + (300 * PtrX)
            frmEvalKit.VoltNeedle.Y1 = 1245 - (1600 * PtrX)
        Case Is <= 0.2
            frmEvalKit.VoltNeedle.X1 = 390 + (1100 * (PtrX - 0.1))
            frmEvalKit.VoltNeedle.Y1 = 1085 - (2300 * (PtrX - 0.1))
        Case Is <= 0.3
            frmEvalKit.VoltNeedle.X1 = 500 + (1800 * (PtrX - 0.2))
            frmEvalKit.VoltNeedle.Y1 = 855 - (1500 * (PtrX - 0.2))
        Case Is <= 0.4
            frmEvalKit.VoltNeedle.X1 = 680 + (1600 * (PtrX - 0.3))
            frmEvalKit.VoltNeedle.Y1 = 705 - (800 * (PtrX - 0.3))
        Case Is <= 0.5
            frmEvalKit.VoltNeedle.X1 = 840 + (1600 * (PtrX - 0.4))
            frmEvalKit.VoltNeedle.Y1 = 625 - (400 * (PtrX - 0.4))
        Case Is <= 0.6
            frmEvalKit.VoltNeedle.X1 = 1000 + (1600 * (PtrX - 0.5))
            frmEvalKit.VoltNeedle.Y1 = 585 + (400 * (PtrX - 0.5))
        Case Is <= 0.7
            frmEvalKit.VoltNeedle.X1 = 1160 + (1600 * (PtrX - 0.6))
            frmEvalKit.VoltNeedle.Y1 = 625 + (800 * (PtrX - 0.6))
        Case Is <= 0.8
            frmEvalKit.VoltNeedle.X1 = 1320 + (1800 * (PtrX - 0.7))
            frmEvalKit.VoltNeedle.Y1 = 705 + (1500 * (PtrX - 0.7))
        Case Is <= 0.9
            frmEvalKit.VoltNeedle.X1 = 1500 + (1100 * (PtrX - 0.8))
            frmEvalKit.VoltNeedle.Y1 = 885 + (2300 * (PtrX - 0.8))
        Case Is <= 1
            frmEvalKit.VoltNeedle.X1 = 1610 + (300 * (PtrX - 0.9))
            frmEvalKit.VoltNeedle.Y1 = 1085 + (1600 * (PtrX - 0.9))
        Case Is > 1
            frmEvalKit.VoltNeedle.X1 = 1640
            frmEvalKit.VoltNeedle.Y1 = 1245
    End Select
End Sub


Sub CurrentMeter()
Dim Max As Single
Dim PtrX As Single
    
    Max = 2
    If Current < 0 Then
        PtrX = -(Current / Max)
        frmEvalKit.lblHalfCurrent.Caption = "-1"
        frmEvalKit.lblFullCurrent.Caption = "-2"
    Else
        PtrX = (Current / Max)
        frmEvalKit.lblHalfCurrent.Caption = "1"
        frmEvalKit.lblFullCurrent.Caption = "2"
    End If
    Select Case PtrX
        Case Is < 0
            frmEvalKit.CurrentNeedle.X1 = 360
            frmEvalKit.CurrentNeedle.Y1 = 1245
        Case 0 To 0.1
            frmEvalKit.CurrentNeedle.X1 = 360 + (300 * PtrX)
            frmEvalKit.CurrentNeedle.Y1 = 1245 - (1600 * PtrX)
        Case Is <= 0.2
            frmEvalKit.CurrentNeedle.X1 = 390 + (1100 * (PtrX - 0.1))
            frmEvalKit.CurrentNeedle.Y1 = 1085 - (2300 * (PtrX - 0.1))
        Case Is <= 0.3
            frmEvalKit.CurrentNeedle.X1 = 500 + (1800 * (PtrX - 0.2))
            frmEvalKit.CurrentNeedle.Y1 = 855 - (1500 * (PtrX - 0.2))
        Case Is <= 0.4
            frmEvalKit.CurrentNeedle.X1 = 680 + (1600 * (PtrX - 0.3))
            frmEvalKit.CurrentNeedle.Y1 = 705 - (800 * (PtrX - 0.3))
        Case Is <= 0.5
            frmEvalKit.CurrentNeedle.X1 = 840 + (1600 * (PtrX - 0.4))
            frmEvalKit.CurrentNeedle.Y1 = 625 - (400 * (PtrX - 0.4))
        Case Is <= 0.6
            frmEvalKit.CurrentNeedle.X1 = 1000 + (1600 * (PtrX - 0.5))
            frmEvalKit.CurrentNeedle.Y1 = 585 + (400 * (PtrX - 0.5))
        Case Is <= 0.7
            frmEvalKit.CurrentNeedle.X1 = 1160 + (1600 * (PtrX - 0.6))
            frmEvalKit.CurrentNeedle.Y1 = 625 + (800 * (PtrX - 0.6))
        Case Is <= 0.8
            frmEvalKit.CurrentNeedle.X1 = 1320 + (1800 * (PtrX - 0.7))
            frmEvalKit.CurrentNeedle.Y1 = 705 + (1500 * (PtrX - 0.7))
        Case Is <= 0.9
            frmEvalKit.CurrentNeedle.X1 = 1500 + (1100 * (PtrX - 0.8))
            frmEvalKit.CurrentNeedle.Y1 = 885 + (2300 * (PtrX - 0.8))
        Case Is <= 1
            frmEvalKit.CurrentNeedle.X1 = 1610 + (300 * (PtrX - 0.9))
            frmEvalKit.CurrentNeedle.Y1 = 1085 + (1600 * (PtrX - 0.9))
        Case Is > 1
            frmEvalKit.CurrentNeedle.X1 = 1640
            frmEvalKit.CurrentNeedle.Y1 = 1245
    End Select
End Sub

Sub CapacityMeter()
Dim Max As Single
Dim PtrX As Single
    
    If BatteryCapacity = 0 Then
        Max = 2000
        PtrX = ACR / Max
    Else
        Max = BatteryCapacity
        PtrX = ACR / BatteryCapacity
    End If
    
    Select Case PtrX
        Case Is < 0
            frmEvalKit.AccNeedle.X1 = 360
            frmEvalKit.AccNeedle.Y1 = 1245
        Case 0 To 0.1
            frmEvalKit.AccNeedle.X1 = 360 + (300 * PtrX)
            frmEvalKit.AccNeedle.Y1 = 1245 - (1600 * PtrX)
        Case Is <= 0.2
            frmEvalKit.AccNeedle.X1 = 390 + (1100 * (PtrX - 0.1))
            frmEvalKit.AccNeedle.Y1 = 1085 - (2300 * (PtrX - 0.1))
        Case Is <= 0.3
            frmEvalKit.AccNeedle.X1 = 500 + (1800 * (PtrX - 0.2))
            frmEvalKit.AccNeedle.Y1 = 855 - (1500 * (PtrX - 0.2))
        Case Is <= 0.4
            frmEvalKit.AccNeedle.X1 = 680 + (1600 * (PtrX - 0.3))
            frmEvalKit.AccNeedle.Y1 = 705 - (800 * (PtrX - 0.3))
        Case Is <= 0.5
            frmEvalKit.AccNeedle.X1 = 840 + (1600 * (PtrX - 0.4))
            frmEvalKit.AccNeedle.Y1 = 625 - (400 * (PtrX - 0.4))
        Case Is <= 0.6
            frmEvalKit.AccNeedle.X1 = 1000 + (1600 * (PtrX - 0.5))
            frmEvalKit.AccNeedle.Y1 = 585 + (400 * (PtrX - 0.5))
        Case Is <= 0.7
            frmEvalKit.AccNeedle.X1 = 1160 + (1600 * (PtrX - 0.6))
            frmEvalKit.AccNeedle.Y1 = 625 + (800 * (PtrX - 0.6))
        Case Is <= 0.8
            frmEvalKit.AccNeedle.X1 = 1320 + (1800 * (PtrX - 0.7))
            frmEvalKit.AccNeedle.Y1 = 705 + (1500 * (PtrX - 0.7))
        Case Is <= 0.9
            frmEvalKit.AccNeedle.X1 = 1500 + (1100 * (PtrX - 0.8))
            frmEvalKit.AccNeedle.Y1 = 885 + (2300 * (PtrX - 0.8))
        Case Is <= 1
            frmEvalKit.AccNeedle.X1 = 1610 + (300 * (PtrX - 0.9))
            frmEvalKit.AccNeedle.Y1 = 1085 + (1600 * (PtrX - 0.9))
        Case Is > 1
            frmEvalKit.AccNeedle.X1 = 1640
            frmEvalKit.AccNeedle.Y1 = 1245
    End Select
End Sub

Sub Thermometer()
Dim Max As Single
Dim PtrX As Single
    
    Max = 250
    PtrX = ((Temperature + 125) / Max)
    Select Case PtrX
        Case Is < 0
            frmEvalKit.TempNeedle.X1 = 360
            frmEvalKit.TempNeedle.Y1 = 1245
        Case 0 To 0.1
            frmEvalKit.TempNeedle.X1 = 360 + (300 * PtrX)
            frmEvalKit.TempNeedle.Y1 = 1245 - (1600 * PtrX)
        Case Is <= 0.2
            frmEvalKit.TempNeedle.X1 = 390 + (1100 * (PtrX - 0.1))
            frmEvalKit.TempNeedle.Y1 = 1085 - (2300 * (PtrX - 0.1))
        Case Is <= 0.3
            frmEvalKit.TempNeedle.X1 = 500 + (1800 * (PtrX - 0.2))
            frmEvalKit.TempNeedle.Y1 = 855 - (1500 * (PtrX - 0.2))
        Case Is <= 0.4
            frmEvalKit.TempNeedle.X1 = 680 + (1600 * (PtrX - 0.3))
            frmEvalKit.TempNeedle.Y1 = 705 - (800 * (PtrX - 0.3))
        Case Is <= 0.5
            frmEvalKit.TempNeedle.X1 = 840 + (1600 * (PtrX - 0.4))
            frmEvalKit.TempNeedle.Y1 = 625 - (400 * (PtrX - 0.4))
        Case Is <= 0.6
            frmEvalKit.TempNeedle.X1 = 1000 + (1600 * (PtrX - 0.5))
            frmEvalKit.TempNeedle.Y1 = 585 + (400 * (PtrX - 0.5))
        Case Is <= 0.7
            frmEvalKit.TempNeedle.X1 = 1160 + (1600 * (PtrX - 0.6))
            frmEvalKit.TempNeedle.Y1 = 625 + (800 * (PtrX - 0.6))
        Case Is <= 0.8
            frmEvalKit.TempNeedle.X1 = 1320 + (1800 * (PtrX - 0.7))
            frmEvalKit.TempNeedle.Y1 = 705 + (1500 * (PtrX - 0.7))
        Case Is <= 0.9
            frmEvalKit.TempNeedle.X1 = 1500 + (1100 * (PtrX - 0.8))
            frmEvalKit.TempNeedle.Y1 = 885 + (2300 * (PtrX - 0.8))
        Case Is <= 1
            frmEvalKit.TempNeedle.X1 = 1610 + (300 * (PtrX - 0.9))
            frmEvalKit.TempNeedle.Y1 = 1085 + (1600 * (PtrX - 0.9))
        Case Is > 1
            frmEvalKit.TempNeedle.X1 = 1640
            frmEvalKit.TempNeedle.Y1 = 1245
    End Select
End Sub



Sub VoltageChart()

    With frmEvalKit.chtVoltageChart
        .chartType = VtChChartType2dLine
        .ColumnCount = 2
        .RowCount = 500
        For Row = 1 To 500
            .Column = 1
            .Row = Row
            If Row = 500 Then
                VoltageData(500) = Voltage
            Else
                VoltageData(Row) = VoltageData(Row + 1)
            End If
            .data = VoltageData(Row)
            
            .Column = 2
            .Row = Row
            If Row = 500 Then
                HighVolt(500) = Voltage + 1
            Else
                HighVolt(Row) = HighVolt(Row + 1)
            End If
            .data = HighVolt(Row)
        Next Row
    End With
    
    
End Sub

Sub TempChart()
    
    With frmEvalKit.chtTempChart
        .chartType = VtChChartType2dLine
        .ColumnCount = 2
        
        .RowCount = 500
        For Row = 1 To 500
            .Column = 1
            .Row = Row
            If Row = 500 Then
                TempData(500) = Temperature
            Else
                TempData(Row) = TempData(Row + 1)
            End If
            .data = TempData(Row)
            
            .Column = 2
            .Row = Row
            If Row = 500 Then
                HighTemp(500) = Temperature + 5
            Else
                HighTemp(Row) = HighTemp(Row + 1)
            End If
            .data = HighTemp(Row)
        Next Row
    End With
End Sub

Sub CurrentChart()
    
    With frmEvalKit.chtCurrentChart
        .chartType = VtChChartType2dLine
        .ColumnCount = 3
        .RowCount = 500
        For Row = 1 To 500
            .Column = 1
            .Row = Row
            If Row = 500 Then
                CurrentData(500) = Current * 1000
            Else
                CurrentData(Row) = CurrentData(Row + 1)
            End If
            .data = CurrentData(Row)
            
            .Column = 2
            .Row = Row
            If Row = 500 Then
                HighCurrent(500) = (Current * 1000) + 10
            Else
                HighCurrent(Row) = HighCurrent(Row + 1)
            End If
            .data = HighCurrent(Row)
            
            .Column = 3
            .Row = Row
            If Row = 500 Then
                LowCurrent(500) = (Current * 1000) - 10
            Else
                LowCurrent(Row) = LowCurrent(Row + 1)
            End If
            .data = LowCurrent(Row)
            
        Next Row
      End With
End Sub

Sub CapacityChart()
        
    With frmEvalKit.chtCapacityChart
        .chartType = VtChChartType2dLine
        .ColumnCount = 2
        .RowCount = 500
        For Row = 1 To 500
            .Column = 1
            .Row = Row
            If Row = 500 Then
                CapacityData(500) = ACR
            Else
                CapacityData(Row) = CapacityData(Row + 1)
            End If
            .data = CapacityData(Row)
            
            .Column = 2
            .Row = Row
            If Row = 500 Then
                HighCapacity(500) = (ACR) + 0.2
            Else
                HighCapacity(Row) = HighCapacity(Row + 1)
            End If
            .data = HighCapacity(Row)
        Next Row
     End With
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -