Option Strict Off Option Explicit On Friend Class MainForm Inherits System.Windows.Forms.Form Public DeviceIndex As UInteger Dim DIOData(0 To 3) As Byte Dim DoUpdate As Boolean Public DetectOK As Boolean Private Function FormatFreq(ByRef Freq As Double) As String If Freq >= 1000000 Then FormatFreq = VB6.Format(Freq / 1000000, "0.0MHz") ElseIf Freq >= 10000 Then FormatFreq = VB6.Format(Freq / 1000, "0.0KHz") ElseIf Freq >= 1000 Then FormatFreq = VB6.Format(Freq / 1000, "0.0KHz") ElseIf Freq >= 10 Then FormatFreq = VB6.Format(Freq, "0.00Hz") ElseIf Freq >= 1 Then FormatFreq = VB6.Format(Freq, "0.00Hz") Else FormatFreq = VB6.Format(Freq, "0.00Hz") End If End Function Private Sub MainForm_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load Dim OutMask As Byte Dim I As Short Dim Status As Integer DeviceIndex = diOnly OutMask = &H0 DIOData(0) = &HFF& DIOData(1) = &HFF& DIOData(2) = &HFF& DIOData(3) = &HFF& Status = DIO_Configure(DeviceIndex, False, OutMask, DIOData(0)) 'UPGRADE_WARNING: Couldn't resolve default property of object ERROR_SUCCESS. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"' If Status <> 0 Then Call VB6.ShowForm(DetectForm, VB6.FormShowConstants.Modal, Me) If DetectOK = False Then Me.Close() Exit Sub End If End If For I = 0 To 2 Call CTR_8254Mode(DeviceIndex, I, 1, 2) Call CTR_8254Mode(DeviceIndex, I, 2, 3) Next I DoUpdate = True ReadTime.Enabled = True End Sub Private Sub MainForm_FormClosed(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed ReadTime.Enabled = False End Sub 'UPGRADE_WARNING: Event FreqOutButton.CheckStateChanged may fire when form is initialized. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="88B12AE1-6DE0-48A0-86F1-60C0686C026A"' Private Sub FreqOutButton_CheckStateChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles FreqOutButton.CheckStateChanged Dim Index As Short = FreqOutButton.GetIndex(eventSender) Dim CounterValue As Integer If FreqOutButton(Index).CheckState = 1 Then CounterValue = 65535 - FreqOutTrack(Index).Value Call CTR_8254ModeLoad(DeviceIndex, Index, 1, 2, CounterValue) Call CTR_8254ModeLoad(DeviceIndex, Index, 2, 3, CounterValue) Else Call CTR_8254Mode(DeviceIndex, Index, 1, 2) Call CTR_8254Mode(DeviceIndex, Index, 2, 3) End If End Sub Private Sub FreqOutTrack_Change(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles FreqOutTrack.Change Dim Index As Short = FreqOutTrack.GetIndex(eventSender) Dim CounterValue As Integer CounterValue = 65535 - FreqOutTrack(Index).Value FreqOutButton(Index).Text = "Output " & FormatFreq(3000000 / (CDbl(CounterValue) * CounterValue)) If FreqOutButton(Index).CheckState = 1 Then Call CTR_8254ModeLoad(DeviceIndex, Index, 1, 2, CounterValue) Call CTR_8254ModeLoad(DeviceIndex, Index, 2, 3, CounterValue) End If End Sub Private Sub LevelImage_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles LevelImage.Click Dim Index As Short = LevelImage.GetIndex(eventSender) 'Toggle bit DIOData(Index \ 8) = DIOData(Index \ 8) Xor (2 ^ (Index Mod 8)) Call DIO_WriteAll(DeviceIndex, DIOData(0)) DoUpdate = True End Sub 'UPGRADE_WARNING: Event OutButton.CheckStateChanged may fire when form is initialized. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="88B12AE1-6DE0-48A0-86F1-60C0686C026A"' Private Sub OutButton_CheckStateChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles OutButton.CheckStateChanged Dim Index As Short = OutButton.GetIndex(eventSender) Dim I As Short Dim OutMask As Byte Dim TristateChecked As Boolean OutMask = &H0 For I = 0 To 3 If OutButton(I).CheckState = 1 Then OutMask = OutMask Or (2 ^ I) End If Next I TristateChecked = (TristateButton.CheckState = 1) Call DIO_Configure(DeviceIndex, TristateChecked, OutMask, DIOData(0)) DoUpdate = True End Sub Private Sub ReadTime_Tick(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles ReadTime.Tick Dim oDIOData(0 To 3) As Byte Dim Changes(0 To 3) As Byte Dim Byt As Integer Dim Bit As Integer oDIOData(0) = DIOData(0) oDIOData(1) = DIOData(1) oDIOData(2) = DIOData(2) oDIOData(3) = DIOData(3) Call DIO_ReadAll(DeviceIndex, DIOData(0)) For Byt = 0 To 3 Changes(Byt) = DIOData(Byt) Xor oDIOData(Byt) For Bit = 0 To 7 If ((Changes(Byt) And (2 ^ Bit)) <> 0) Or DoUpdate Then If (DIOData(Byt) And (2 ^ Bit)) <> 0 Then LevelImage(Byt * 8 + Bit).Image = HighLevel.Image Else LevelImage(Byt * 8 + Bit).Image = LowLevel.Image End If 'DIOData End If 'Changes Next Bit Next Byt DoUpdate = False End Sub 'UPGRADE_WARNING: Event TristateButton.CheckStateChanged may fire when form is initialized. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="88B12AE1-6DE0-48A0-86F1-60C0686C026A"' Private Sub TristateButton_CheckStateChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles TristateButton.CheckStateChanged Dim I As Short Dim OutMask As Byte Dim TristateChecked As Boolean OutMask = &H0 For I = 0 To 3 If OutButton(I).CheckState = 1 Then OutMask = OutMask Or (2 ^ I) End If Next I TristateChecked = (TristateButton.CheckState = 1) Call DIO_Configure(DeviceIndex, TristateChecked, OutMask, DIOData(0)) End Sub End Class