Attribute VB_Name = "tiltdgh"
Option Explicit
'Changes for version 1.1 = Flow sen. 1602 mod's address changed from 3 to 5
    'pH probe 1132 mod's address changed from 4 to 6
    'enable therm 5452 mod's channel 2
    'added therm 3 label and slide bar
    'added therm 3 to logging
'MODULE ADDRESS AND FUNCTION:
'''''MOD1 = Thermistor #1 (5452 channel - 0)
'''''MOD2 = Thermistor #2 (5452 channel - 1)
'''''MOD3 = Thermistor #3 (5452 channel - 2)
'''''MOD4 = Thermistor #4 (5452 channel - 3) this channel is not currently used
'''''MOD5 = Flow Sensor (1602) was MOD3 in version 1.0
'''''MOD6 = pH-1 Probe (5132 channel - 0)(1132) was MOD4 in version 1.0
'''''MOD7 = pH-2 Probe (5132 channel - 1)
'''''MOD8 = pH-3 Probe (5132 channel - 2)
'''''MOD9 = pH-4 Probe (5132 channel - 3)

Public Const ProgramTitle As String = "Ventana Science DGH Driver"
Public Const Section As String = "Coefficients"
Public Const Version As String = "1.1"
Public Const Asterisk As String = "*"
Public Const QuestionMark As String = "?"

Public Const MOD0 As String = "0"
Public Const MOD1 As String = "1"
Public Const MOD2 As String = "2"
Public Const MOD3 As String = "3"
Public Const MOD4 As String = "4"
Public Const MOD5 As String = "5"
Public Const MOD6 As String = "6"
Public Const MOD7 As String = "7"
Public Const MOD8 As String = "8"
Public Const MOD9 As String = "9"
Public Const MOD10 As String = ":"
Public Const MOD11 As String = ";"
Public Const MOD12 As String = "<"
Public Const MOD13 As String = "="
Public Const MOD14 As String = ">"
Public Const MOD15 As String = "?"

Public Const DataFormat As String = "+00000.00;-00000.00"
Public TimeOut As Boolean
Public pHflag As Boolean
Public FlowFlag As Boolean
Public ThermFlag As Boolean
Public Therm1 As Double
Public Therm2 As Double
Public Therm3 As Double
Public ph1Temp As Integer
Public ph2temp As Integer
Public Freq As Double
Public Flow As Double
Public liters As Double
Public OldCount As Double

Public T As Double
Public pHvalue As Double
Public pHvalue2 As Double
Public Vout As Double
Public Vout2 As Double
Public mVout As Double
Public mVout2 As Double
Public Offset As Double
Public Offset2 As Double
Public Slope As Double
Public Slope2 As Double
Public SN As String
Public SN2 As String
Public CalDate As Date
Public CalDate2 As Date

Public Const K As Double = 0.000198416
Public Const Kelvin As Double = 273.15


Public Const Pulses As Integer = 6900
Public Const Dollar As String = "$"
Public Const SP As String = "SP"
Public Const CP As String = "CP"
Public Const RD As String = "RD"
Public Const DI As String = "DI"

Private Field() As String
Public Celcius As String
Public VoltsTemp As String
Declare Function timeGetTime& Lib "WINMM.DLL" ()

Public Sub TX1(S As String)
If frmMain.MSComm1.PortOpen = True Then
    frmMain.MSComm1.Output = S
Else
    MsgBox "Port Not open", , "Port Failure"
End If
End Sub

Public Function RX1()
Dim A, B As String
Dim START As Integer
A = ""
START = 0
If frmMain.MSComm1.PortOpen = True Then
frmMain.MSComm1.InputLen = 1
    Wait 35
    While frmMain.MSComm1.InBufferCount > 0
        B = Chr(Asc(frmMain.MSComm1.Input) And &H7F)
        If (B = Asterisk) Or (B = QuestionMark) Then
            START = 1
            A = B
        Else
            If START = 1 Then A = A + B
        End If
    Wend
    If Right(A, 1) = Chr(13) Then
        RX1 = Left(A, Len(A) - 1)
    Else
        RX1 = "TIMEOUT"
    End If
End If
End Function

Public Sub Wait(TimeOut As Single)
    Dim WaitTime As Long
    WaitTime = Int(TimeOut) + timeGetTime()
    Do Until timeGetTime() >= WaitTime
    Loop
End Sub

Public Sub rdpH(address As String) 'address should = MOD6(pH-1) or MOD7(pH-2)
Dim ReadData As String
Dim senddata As String
Dim mVolts As String
Dim Result As Double
Dim TEMP As Double
Dim c As Integer
Dim Index As Integer

ReadData = Dollar & address & RD & vbCr
TX1 ReadData
ReadData = RX1
'frmMain.lblTemp.Caption = T

If Left(ReadData, 1) = Asterisk Then
    ReadData = Mid(ReadData, 3, 8)
    If ReadData = "" Then Exit Sub
    Select Case address
        Case 6
            mVout = ReadData
            Vout = mVout / 1000
            frmMain.lblmV.Caption = mVout
            Select Case ph1Temp
                Case 1
                    T = Therm1
                Case 2
                    T = Therm2
                Case 3
                    T = Therm3
                Case Else
                    T = Therm1
            End Select
            TEMP = T + Kelvin
            Result = (Vout - Offset) / K / Slope / TEMP + 7
            pHvalue = Round(Result, 4)
            frmMain.lblpH.Caption = pHvalue
        Case 7
            mVout2 = ReadData
            Vout2 = mVout2 / 1000
            frmMain.lblmV1.Caption = mVout2
            Select Case ph2temp
                Case 1
                    T = Therm1
                Case 2
                    T = Therm2
                Case 3
                    T = Therm3
                Case Else
                    T = Therm1
            End Select
            TEMP = T + Kelvin
            Result = (Vout2 - Offset2) / K / Slope2 / TEMP + 7
            pHvalue2 = Round(Result, 4)
            frmMain.lblpH1.Caption = pHvalue2
    End Select
Else
    MsgBox "NO VALID RETURN FROM pH MODULE"
    frmMain.cwbPh.Value = False
    Exit Sub
End If

End Sub

'Public Sub RDpH_probe_cal()
'Dim ReadData As String
'frmCalventana.tmrCal.Enabled = False
'ReadData = Dollar & MOD1 & RD & vbCr
'TX1 ReadData
'ReadData = RX1
'If Left(ReadData, 1) = Asterisk Then
'    ReadData = Mid(ReadData, 3, 8)
'    If ReadData = "" Then Exit Sub
'    mVout = ReadData
'    Vout = mVout / 1000
'    frmMain.lblmV.Caption = mVout
'     ph
'    frmMain.lblpH.Caption = pHvalue
''    frmMain.lblTemp.Caption = T
'Else
'    MsgBox "NO VALID RETURN FROM pH CAL MODULE"
'    frmCalventana.CWcal_enable.Value = False
'    Exit Sub
'End If
'frmCalventana.tmrCal.Enabled = True
'End Sub

Public Sub RDflowSensor()
Dim ReadData As String
Dim NewCount As Double
ReadData = Dollar & MOD5 & RD & vbCr
TX1 ReadData
ReadData = RX1
If Left(ReadData, 1) = Asterisk Then
    ReadData = Mid(ReadData, 3, 8)
    If ReadData = "" Then Exit Sub
    If ReadData > 90000# Then
        ReadData = 0
    End If
    Freq = ReadData
    Flow = (Freq * 60) / Pulses
    Flow = Round(Flow, 2)
    NewCount = Freq
    OldCount = NewCount + OldCount
    liters = OldCount / Pulses
    liters = Round(liters, 2)
    frmMain.lblHz.Caption = Freq
    frmMain.lblLitersPerMin = Flow
    frmMain.CWSlideFlow.Value = Flow
    frmMain.liters.Caption = liters
    frmMain.CWSlideLiters.Value = liters
Else
    MsgBox "NO VALID RETURN FROM FLOW MODULE"
    frmMain.cwbFlow.Value = False
    Exit Sub
End If

End Sub


Public Sub RdThermistor()
Dim ReadData As String
ReadData = Dollar & MOD1 & RD & vbCr
TX1 ReadData
ReadData = RX1
If Left(ReadData, 1) = Asterisk Then
    ReadData = Mid(ReadData, 3, 8)
    If ReadData = "" Then Exit Sub
    Therm1 = ReadData
    frmMain.lblTherm1.Caption = Therm1
    frmMain.CWSlideTherm1.Value = Therm1
Else
    MsgBox "No valid return from thermistor 1"
End If

ReadData = Dollar & MOD2 & RD & vbCr
TX1 ReadData
ReadData = RX1
If Left(ReadData, 1) = Asterisk Then
    ReadData = Mid(ReadData, 3, 8)
    If ReadData = "" Then Exit Sub
    Therm2 = ReadData
    frmMain.lblTherm2.Caption = Therm2
    frmMain.CWSlideTherm2.Value = Therm2
Else
    MsgBox "No valid return from thermistor 2"
End If

ReadData = Dollar & MOD3 & RD & vbCr
TX1 ReadData
ReadData = RX1
If Left(ReadData, 1) = Asterisk Then
    ReadData = Mid(ReadData, 3, 8)
    If ReadData = "" Then Exit Sub
    Therm3 = ReadData
    frmMain.lblTherm3.Caption = Therm3
    frmMain.CWSlideTherm3.Value = Therm3
Else
    MsgBox "No valid return from thermistor 3"
    frmMain.cwbTherm.Value = False
End If

End Sub
