📄 datads2770.bas
字号:
Attribute VB_Name = "DataDS2770"
Option Explicit
'DS2770 Variables
Public ElapsedTime As Double
Public ChargeTime As Double
Public Voltage As Double
Public Current As Double
Public ACR As Single
Public Temperature As Double
Public gStatus As Byte
Public gETRMSB As Byte
Public gETRLSB As Byte
Public gETRLWMSB As Byte
Public gETRLWLSB As Byte
Public gCTR As Byte
Public gCTRLSB As Byte
Public gEEPROM As Byte
Public gVoltMSB As Byte
Public gVoltLSB As Byte
Public gCurrentMSB As Byte
Public gCurrentLSB As Byte
Public gACRMSB As Byte
Public gACRLSB As Byte
Public gTempMSB As Byte
Public gTempLSB As Byte
Public Hours As Integer
Public Minutes As Integer
Public Seconds As Integer
Public ChargeHours As Integer
Public ChargeMinutes As Integer
Public ChargeSeconds As Integer
Public CurrentOffsetBias As Single
Public DataIn(256) As Variant
Public DataRead(256) As Variant
Public Memory(256) As Variant
Public SenseResistor As Single
Public BatteryCapacity As Single
Public StandardPower As Single
Public LastTAD As Double
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''prepares Real-Time data for display
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub MakeCalculations()
Dim temp As Single
Dim Register As Long
Dim register2 As Long
'Calculations to get Data into a readable form
If SenseResistor <= 0 Then
SenseResistor = 0.025
End If
temp = gVoltMSB
gVoltLSB = gVoltLSB And &HE0
If gVoltMSB > 127 Then
Register = ((temp * 256) + gVoltLSB - 65536)
Else
Register = ((temp * 256) + gVoltLSB)
End If
Voltage = (Register / 32) * 0.00488
frmEvalKit.txtVoltage.Caption = Hex(Register) & "h"
frmEvalKit.txtRoundVoltage.Caption = Format(Voltage, "#0.0000") & " Volts"
'''''''''''''''''''''''''''''''''''
temp = gCurrentMSB
If gCurrentMSB > 127 Then
Register = (((temp * 256) + gCurrentLSB - 65536) And &HFFFF)
Else
Register = (((temp * 256) + gCurrentLSB) And &HFFFF)
End If
Current = (Register) * 0.0000015625 / SenseResistor
frmEvalKit.txtCurrent.Caption = Hex(Register) & "h"
frmEvalKit.txtRoundCurrent.Caption = Format(1000 * Current, "#0.000") & " mAmps"
'''''''''''''''''''''''''''''''''''
temp = gACRMSB
If gACRMSB > 127 Then
Register = ((temp * 256) + gACRLSB - 65536)
Else
Register = ((temp * 256) + gACRLSB)
End If
ACR = Register * 0.00625 / SenseResistor
frmEvalKit.txtICAhex.Caption = Hex(Register) & "h"
frmEvalKit.txtICA.Caption = Format(ACR, "#0.00") & " mAhr"
'''''''''''''''''''''''''''''''''''
temp = gTempMSB
If gTempMSB > 127 Then
Register = ((temp * 256) + gTempLSB - 65536)
Else
Register = ((temp * 256) + gTempLSB)
End If
Temperature = (Register / 32) * 0.125
frmEvalKit.txtTemp.Caption = Hex(Register) & "h"
frmEvalKit.txtRoundTemp.Caption = Format(Temperature, "#0.0000") & " C"
frmEvalKit.txtFTemp.Caption = Format((Temperature * (9 / 5) + 32), "0.000") & " F"
'''''''''''''''''''''''''''''''''''
temp = gETRMSB
Register = ((temp * 256) + gETRLSB)
ElapsedTime = Register * 56.25 'seconds
'temp = gETRLWMSB
'register2 = ((temp * 256) + gETRLWLSB)
'ElapsedTime = ElapsedTime + (temp * 0.22)
'temp = gETRLWLSB
'ElapsedTime = ElapsedTime + (temp * 0.000858)
ElapsedTime = ElapsedTime / 3600 'hours
Hours = Int(ElapsedTime)
Minutes = Int((ElapsedTime - Hours) * 60)
'Seconds = Int((ElapsedTime - Hours - (Minutes / 60)) * 3600)
frmEvalKit.txtETR.Caption = Hex(Register) & "h"
frmEvalKit.txtElapsedTime.Caption = Format(Hours, "00") & " h " & Format(Minutes, "00") & " m " ' & Format(Seconds, "00")
'''''''''''''''''''''''''''''''''''
Register = gCTR
ChargeTime = Register * 56.25 'seconds
'temp = gCTRLSB
'register2 = temp
'ChargeTime = ChargeTime + (temp * 0.22)
ChargeTime = (ChargeTime) / 3600 'hours
ChargeHours = Int(ChargeTime)
ChargeMinutes = Int((ChargeTime - ChargeHours) * 60)
'ChargeSeconds = Int((ChargeTime - ChargeHours - (ChargeMinutes / 60)) * 3600)
frmEvalKit.txtCTR.Caption = Hex(Register) & "h"
frmEvalKit.txtChargeTime.Caption = Format(ChargeHours, "00") & " h " & Format(ChargeMinutes, "00") & " m " '& Format(ChargeSeconds, "00")
'''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''
If (gStatus And &HC0) = &HC0 Then
frmEvalKit.lblChargeStatus.ForeColor = &H0
frmEvalKit.lblChargeStatus.Caption = "Charge sequence completed"
frmEvalKit.lblChargeStatus.Alignment = 1
frmEvalKit.cmdClearCSTAT.Visible = True
ElseIf (gStatus And &HC0) = &H80 Then
frmEvalKit.lblChargeStatus.ForeColor = &H0
frmEvalKit.lblChargeStatus.Caption = "Charge source is present"
frmEvalKit.lblChargeStatus.Alignment = 2
frmEvalKit.cmdClearCSTAT.Visible = False
ElseIf (gStatus And &HC0) = &H40 Then
frmEvalKit.lblChargeStatus.ForeColor = &HFF
frmEvalKit.lblChargeStatus.Caption = "Charge in progress"
frmEvalKit.lblChargeStatus.Alignment = 2
frmEvalKit.cmdClearCSTAT.Visible = False
Else
frmEvalKit.lblChargeStatus.ForeColor = &H0
frmEvalKit.lblChargeStatus.Caption = "No charge source present"
frmEvalKit.lblChargeStatus.Alignment = 2
frmEvalKit.cmdClearCSTAT.Visible = False
End If
If (gStatus And &H1) = &H1 Then
frmEvalKit.lblChargeType.Caption = "NiMH Charger"
Else
frmEvalKit.lblChargeType.Caption = "Li-Ion Charger"
End If
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -