Public Sub COM_IN()
Dim Buffer As String
Dim lBuf As Integer
Dim cCH As Integer
Dim cBT As Byte
Dim cBX As Byte
Dim sBX As String
With frmOsc
If CRdy Then
Buffer = .comX.Input
Else
Buffer = ""
End If
lBuf = LenB(Buffer)
For cCH = 1 To lBuf
cBT = AscB(MidB(Buffer, cCH, 1))
Xo = Xo + 1
If cBT = 127 Then
Xo = 0
If SetV.DATb(0) Then
For cBX = 0 To 127
SetV.DATb(cBX + 5) = True
Next
SetV.DATb(133) = True
SetV.DATb(0) = False
End If
End If
If cBT = 126 Then
Xo = 0
.lblW.Visible = True
Else
.lblW.Visible = False
End If
If (Xo > 0) And (Xo < 138) Then
If (cBT <> SetV.DATx(Xo)) Or SetV.DATb(Xo) Then
Select Case Xo
Case 1 'Volts per division
cBX = (cBT And 12)
Select Case cBX
Case 0
sBX = IIf(.TB.Buttons(8).Value, " 0.25 V/div", " 1 V")
DVM(2) = "."
DVM(4) = ""
DVM(6) = ""
SetV.VxDv = 1
Case 4
sBX = IIf(.TB.Buttons(8).Value, " 2.5 V/div", " 10 V")
DVM(2) = ""
DVM(4) = "."
DVM(6) = ""
SetV.VxDv = 10
Case 8
sBX = IIf(.TB.Buttons(8).Value, " 25 V/div", " 100 V")
DVM(2) = ""
DVM(4) = ""
DVM(6) = "."
SetV.VxDv = 100
End Select
.lcdE(3).Text = sBX
cBX = (cBT And 48)
Select Case cBX
Case 0
.lcdE(2).Text = " GROUND"
.lcdE(2).CharColor = &HFF&
DVM(7) = " GND"
Case 16
.lcdE(2).Text = " AC"
.lcdE(2).CharColor = &H666A51
DVM(7) = " VAC"
Case 32
.lcdE(2).Text = " DC"
.lcdE(2).CharColor = &H666A51
DVM(7) = " VDC"
End Select
' Beep
Case 2 'Time / Frec per division
Select Case cBT
Case 0
sBX = IIf(.TB.Buttons(8).Value, " 0.5 µs/div 20MS", " 50 ns 20MS")
SetV.TxDv = 5
Case 1
sBX = IIf(.TB.Buttons(8).Value, " 1 µs/div 10MS", " 100 ns 10MS")
SetV.TxDv = 10
Case 2
sBX = IIf(.TB.Buttons(8).Value, " 5 µs/div 2MS", " 0.5 µs 2MS")
SetV.TxDv = 50
Case 3
sBX = IIf(.TB.Buttons(8).Value, " 10 µs/div 1MS", " 1 µs 1MS")
SetV.TxDv = 100
Case 4
sBX = IIf(.TB.Buttons(8).Value, " 50 µs/div 200KS", " 5 µs 200KS")
SetV.TxDv = 500
Case 5
sBX = IIf(.TB.Buttons(8).Value, " 100 µs/div 100KS", " 10 µs 100KS")
SetV.TxDv = 1000
Case 6
sBX = IIf(.TB.Buttons(8).Value, " 0.5 ms/div 20KS", " 50 µs 20KS")
SetV.TxDv = 5
Case 7
sBX = IIf(.TB.Buttons(8).Value, " 1 ms/div 10KS", " 0.1 ms 10KS")
SetV.TxDv = 10
Case 8
sBX = IIf(.TB.Buttons(8).Value, " 5 ms/div 2KS", " 0.5 ms 2KS")
SetV.TxDv = 50
Case 9
sBX = IIf(.TB.Buttons(8).Value, " 10 ms/div 1KS", " 1 ms 1KS")
SetV.TxDv = 100
End Select
.lcdE(0).Text = sBX
If cBT < 6 Then
SetV.Tdim = IIf(.TB.Buttons(14).Value, "MHz", "µs")
Else
SetV.Tdim = IIf(.TB.Buttons(14).Value, "KHz", "ms")
End If
Case 3 'Trigger status
cBX = (cBT And 120)
If (cBT And 1) = 1 Then
sBX = "SINGLE"
Else
sBX = "RUN"
End If
Select Case cBX
Case 0
sBX = " AUTO"
Case 8
sBX = " -EXTERN/" + sBX
Case 16
sBX = " +EXTERN/" + sBX
Case 32
sBX = " -INTERN/" + sBX
Case 64
sBX = " +INTERN/" + sBX
End Select
.lcdE(1).Text = sBX
' Beep
Case 4 'Triger level
Select Case cBT
Case 0
SetV.Tlev = 1
Case 2
SetV.Tlev = 6
Case 4
SetV.Tlev = 5
Case 8
SetV.Tlev = 4
Case 16
SetV.Tlev = 3
Case 32
SetV.Tlev = 2
End Select
' Beep
Case 5 'Signal info.
.Dt(Xo - 5).Y1 = .SCR.Top + .SCR.Height - cBT * SV
If SetV.DATb(Xo) Then
.Dc(Xo - 5).Y1 = .Dt(Xo - 5).Y1
.Dc(Xo - 5).Visible = .TB.Buttons(13).Value
SetV.DATc(Xo) = cBT
SetV.DATb(Xo) = False
End If
Case 6 To 132 'Signal info
.Dt(Xo - 6).Y2 = .SCR.Top + .SCR.Height - cBT * SV
.Dt(Xo - 5).Y1 = .SCR.Top + .SCR.Height - cBT * SV
If SetV.DATb(Xo) Then
.Dc(Xo - 6).Y2 = .Dt(Xo - 6).Y2
.Dc(Xo - 5).Y1 = .Dt(Xo - 5).Y1
.Dc(Xo - 5).Visible = .TB.Buttons(13).Value
SetV.DATc(Xo) = cBT
End If
Case 133 'Signal info.
.Dt(Xo - 6).Y2 = .SCR.Top + .SCR.Height - cBT * SV
If SetV.DATb(Xo) Then
.Dc(Xo - 6).Y2 = .Dt(Xo - 6).Y2
SetV.DATc(Xo) = cBT
End If
Case 134 'Hundred DVM
DVM(1) = Trim(Str(cBT))
Case 135 'Ten DVM
DVM(3) = Trim(Str(cBT))
Case 136 'Unit DVM
DVM(5) = Trim(Str(cBT))
Case 137 'Negative Voltage.
If (cBT And 8) = 8 Then
DVM(0) = "-"
Else
DVM(0) = "+"
End If
If (cBT And 3) > 0 Then
If (cBT And 8) = 8 Then
DVM(8) = "<"
Else
DVM(8) = ">"
End If
Beep
Else
DVM(8) = ""
End If
End Select
DVMtx = " " & DVM(0) & DVM(1) & DVM(2) & DVM(3) & DVM(4) & DVM(5) & DVM(6) & DVM(7)
If .lcdE(6).Text <> DVMtx Then
.lcdE(6).Text = DVMtx
End If
If SetV.DATx(Xo) <> cBT Then
SetV.DATx(Xo) = cBT
End If
If SetV.DATb(Xo) Then
SetV.DATb(Xo) = False
End If
End If
End If
Next
End With
End Sub