Private mTimerID As Long
Public Sub TimerOn()
mTimerID = SetTimer(0, 0, 5 * 1000, AddressOf TimerCallback)
If mTimerID = 0 Then
MsgBox "Unable to create the timer", vbCritical + vbOKOnly, "Error"
End If
End Sub
Public Sub TimerOff()
mTimerID = KillTimer(0, mTimerID)
If mTimerID = 0 Then
MsgBox "Unable to stop the timer", vbCritical + vbOKOnly, "Error"
End If
End Sub
Public Sub OnTimer()
Dim code As Long
code = mEyeOneCtrl.IsConnected
If code = eNoError Then
mStateLabel = "connected"
mStateLabel.BackColor = vbGreen
Else
mStateLabel = "not connected"
mStateLabel.BackColor = vbRed
End If
End Sub
Private Sub SetStatusBarText(ByVal axCode As Long)
mErrorTextLabel.Caption = mEyeOneCtrl.GetDeviceInfo("LastError")
End Sub
Private Sub LoadResults()
mResultBox.Clear
Select Case (mResultViewSelector.Object)
Case "Spectrum"
LoadSpectrum
Case "TriStimulus"
LoadTriStimulus
Case "Densities"
LoadDensities
End Select
End Sub
Private Sub LoadSpectrum()
Dim alSpectrum(0 To 35) As Single
Dim alIndex As Long
alIndex = 0
While mEyeOneCtrl.GetSpectrum(alSpectrum, alIndex) <> eNoDataAvailable
Dim alLine As String
alLine = "Spectrum[" & Format(alIndex, "000") & "]: " 'cant find project or library here, highlights,"Format"
Dim i As Long
For i = LBound(alSpectrum) To UBound(alSpectrum)
alLine = alLine & " | " & Format(alSpectrum(i), "###0.000")
Next i
mResultBox.AddItem (alLine)
alIndex = alIndex + 1
Wend
End Sub
Private Sub LoadTriStimulus()
Dim alTriStimulus(0 To 2) As Single
Dim alIndex As Long
alIndex = 0
While mEyeOneCtrl.GetTriStimulus(alTriStimulus, alIndex) <> eNoDataAvailable
Dim alLine As String
alLine = "TriStimulus[" & Format(alIndex, "000") & "]: "
Dim i As Long
For i = LBound(alTriStimulus) To UBound(alTriStimulus)
alLine = alLine & " | " & Format(alTriStimulus(i), "###0.000")
Next i
mResultBox.AddItem (alLine)
alIndex = alIndex + 1
Wend
End Sub
Private Sub LoadDensities()
Dim alDensities(0 To 3) As Single
Dim alIndex As Long
Dim alAutoDensityIndex As Long
alIndex = 0
While mEyeOneCtrl.GetDensities(alDensities, alAutoDensityIndex, alIndex) <> eNoDataAvailable
Dim alLine As String
alLine = "Densities[" & Format(alIndex, "000") & "]: "
Dim i As Long
For i = LBound(alDensities) To UBound(alDensities)
Dim tmp As String
tmp = Format(alDensities(i), "###0.000")
If i = alAutoDensityIndex Then
tmp = "<" & tmp & ">"
End If
alLine = alLine & " | " & tmp
Next i
mResultBox.AddItem (alLine)
alIndex = alIndex + 1
Wend
End Sub
Private Sub mCalibrateButton_Click()
SetStatusBarText mEyeOneCtrl.Calibrate
End Sub
Private Sub mMeasureButton_Click()
If mEyeOneCtrl.TriggerMeasurement <> 0 Then
mErrorTextLabel.Caption = mEyeOneCtrl.GetDeviceInfo("LastError")
MsgBox "mesurement failed"
Exit Sub
End If
LoadResults
End Sub
Private Sub mMeasurementModeSelector_Change()
SetStatusBarText mEyeOneCtrl.SetOption("MeasurementMode", mMeasurementModeSelector.Object)
LoadResults
End Sub
Private Sub mResultViewSelector_Change()
LoadResults
End Sub
Private Sub UserForm_Initialize()
TimerOn
mMeasurementModeSelector.AddItem ("SingleReflectance")
mMeasurementModeSelector.AddItem ("ScanningReflectance")
mMeasurementModeSelector.AddItem ("SingleEmission")
mMeasurementModeSelector.ListIndex = 0
mResultViewSelector.AddItem ("Spectrum")
mResultViewSelector.AddItem ("TriStimulus")
mResultViewSelector.AddItem ("Densities")
mResultViewSelector.ListIndex = 0
Dim alSubstrate(0 To 35) As Single
Dim i As Long
For i = LBound(alSubstrate) To UBound(alSubstrate)
alSubstrate(i) = 1
Next i
Dim code As Long
code = mEyeOneCtrl.SetSubstrate(alSubstrate)
OnTimer
End Sub
Private Sub UserForm_Terminate()
TimerOff
End Sub