⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 module1.bas

📁 DSO2902示波器源码,半年多才做好的,功能超牛
💻 BAS
📖 第 1 页 / 共 3 页
字号:

Public Enum COUPLE        'CP_VAL  藕和方式
    ac = 0
    dc = 1
    gnd = 2
End Enum

Public Enum zoomfactor   '缩放因子
    zoom1_50 = 0
    zoom1_20
    zoom1_10
    zoom1_5
    zoom1_2
    zoom1_1
    zoom2_1
    zoom4_1
    zoom10_1
    zoom20_1
    zoom40_1
    zoom100_1
    zoom200_1
    zoom400_1
End Enum

Public Enum ATTENUATE  'p_attn
    attn_1 = 0                      '探头比 1:1
    attn_10 = 1                     '探头比 10:1
    attn_100 = 2                    '探头比 100:1
    attn_1000 = 3                   '探头比 100:1
End Enum
Public Enum CLOCKSOURCE  'ClkSource  '时钟源
    clk_int = 0

    clk_ext = 1
    clk_soft = 2

    CLK_EXT_RISING = 3
    CLK_EXT_FALLING = 4

End Enum
Public Enum capturemode    '采集方式
    cap_once = 0            '单次
    cap_repeat = 1          '正常
    cap_auto = 2            '自动
End Enum

Public Enum VOLTAGE   '  s_val (10)   探头比1:1 每格电压 10mv,20mv,50mv,100mv,200mv,500mv 探头比10:1 每格电压100mv,200mv,500mv,1V,2V,5V,10V
    mv10 = 0
    mv20 = 1
    mv50 = 2
    mv100 = 3
    mv200 = 4
    mv500 = 5
    mv1000 = 6
    mv2000 = 7
    mv5000 = 8
    mv10000 = 9
    mv20000 = 10
    mv50000 = 11
    mv100000 = 12
    mv200000 = 13
    mv500000 = 14
    mv1000000 = 15
    mv2000000 = 16
    mv10000000 = 17
End Enum

Public Enum MEMORYSIZE   ' MEMORY SIZE 1K,8K,128K,256K  MemMode
    MemSmall = 6
    MemMedium = 7
    MemLarge = 8
    MemHuge = 9
End Enum

Public Enum number
    numanalog2902_128 = 2
    numdigital2902_128 = 8
    numanalog2902_256 = 2
    numdigital2902_256 = 8
    numanalog2904_256 = 4
    numdigital2904_256 = 16
    numanalog2906_256 = 6
    numdigital2906_256 = 24
    numanalog2908_256 = 16
    numdigital2908_256 = 32
    numanalog2500 = 2
    numdigital2500 = 16
End Enum

Public Enum displayon
    dison = 0
    disoff = 1

End Enum

Sub Refresh1()
    red = RGB(255, 0, 0)
    blue = RGB(0, 0, 255)
    green = RGB(0, 255, 0)

    dotcolor = RGB(255, 0, 0)
    white = RGB(255, 255, 255)
    grey = RGB(128, 128, 128)

    If persistance = 0 Then Form1.Picture1.Cls  '如果非持续跟踪,每显示一次,清屏一次

    Call draw_scale                          '画网络

    Form1.Picture1.DrawStyle = 0

    Select Case timingtype
      Case dot
        dotcolor = RGB(0, 255, 0)

        Call dotdraw(dotcolor)
      Case Line
        '  For cx = 0 To 650 Step 1
        '   tt = SetPixel(ByVal Form1.Picture1.hdc, ByVal cx, ByVal disanalog0(cx + analogch0), ByVal Form1.Text17.ForeColor)
        Call SetPixeltest(ByVal Form1.Picture1.hdc, ByVal analogch0, disanalog0(0), ByVal Form1.Text17.ForeColor)
        ' Next cx

        Call SetPixeltest(ByVal Form1.Picture1.hdc, ByVal analogch1, disanalog0(0), ByVal Form1.Text18.ForeColor)
        Form1.Picture1.ForeColor = Form1.Text17.ForeColor
        Call linedraw(ByVal Form1.Picture1.hdc, ByVal analogch0, disanalog0(0))
        Form1.Picture1.ForeColor = Form1.Text18.ForeColor
        Call linedraw(ByVal Form1.Picture1.hdc, ByVal analogch1, disanalog0(0))

        If board_model = dso2904_256 Then
            Call SetPixeltest(ByVal Form1.Picture1.hdc, ByVal analogch2, disanalog0(0), ByVal Form1.Text19.ForeColor)
            Call SetPixeltest(ByVal Form1.Picture1.hdc, ByVal analogch3, disanalog0(0), ByVal Form1.Text20.ForeColor)

            Form1.Picture1.ForeColor = Form1.Text19.ForeColor
            Call linedraw(ByVal Form1.Picture1.hdc, ByVal analogch2, disanalog0(0))
            Form1.Picture1.ForeColor = Form1.Text20.ForeColor
            Call linedraw(ByVal Form1.Picture1.hdc, ByVal analogch3, disanalog0(0))

        End If
      Case linedot
        dotcolor = RGB(0, 255, 0)
        Call dotdraw(dotcolor)
        Form1.Picture1.ForeColor = Form1.Text17.ForeColor
        Call linedraw(ByVal Form1.Picture1.hdc, ByVal analogch0, disanalog0(0))
        Form1.Picture1.ForeColor = Form1.Text18.ForeColor
        Call linedraw(ByVal Form1.Picture1.hdc, ByVal analogch1, disanalog0(0))

        If board_model = dso2904_256 Then
            Form1.Picture1.ForeColor = Form1.Text19.ForeColor
            Call linedraw(ByVal Form1.Picture1.hdc, ByVal analogch2, disanalog0(0))
            Form1.Picture1.ForeColor = Form1.Text20.ForeColor
            Call linedraw(ByVal Form1.Picture1.hdc, ByVal analogch3, disanalog0(0))

        End If

    End Select
    If Form1.VScroll1.Value <= 0 Then
        yposition = 270
        Form1.Picture1.ForeColor = Form1.Text1.ForeColor
        Call linedrawlogic(ByVal yposition, ByVal Form1.Picture1.hdc, ByVal logicch0, disanalog0(0))
    End If

    If Form1.VScroll1.Value <= 1 Then
        yposition = 270 + 16 * (1 - Form1.VScroll1.Value)
        Form1.Picture1.ForeColor = Form1.Text2.ForeColor
        Call linedrawlogic(ByVal yposition, ByVal Form1.Picture1.hdc, ByVal logicch1, disanalog0(0))
        '          Call linedrawlogic(yposition, logicch1, Form1.Text2.ForeColor)
    End If

    If Form1.VScroll1.Value <= 2 Then
        yposition = 270 + 16 * (2 - Form1.VScroll1.Value)
        Form1.Picture1.ForeColor = Form1.Text3.ForeColor
        Call linedrawlogic(ByVal yposition, ByVal Form1.Picture1.hdc, ByVal logicch2, disanalog0(0))

    End If

    If Form1.VScroll1.Value <= 3 Then
        yposition = 270 + 16 * (3 - Form1.VScroll1.Value)
        Form1.Picture1.ForeColor = Form1.Text4.ForeColor
        Call linedrawlogic(ByVal yposition, ByVal Form1.Picture1.hdc, ByVal logicch3, disanalog0(0))

    End If

    If Form1.VScroll1.Value <= 4 Then
        yposition = 270 + 16 * (4 - Form1.VScroll1.Value)
        Form1.Picture1.ForeColor = Form1.Text5.ForeColor
        Call linedrawlogic(ByVal yposition, ByVal Form1.Picture1.hdc, ByVal logicch4, disanalog0(0))

    End If

    If Form1.VScroll1.Value <= 5 Then
        yposition = 270 + 16 * (5 - Form1.VScroll1.Value)
        Form1.Picture1.ForeColor = Form1.Text6.ForeColor
        Call linedrawlogic(ByVal yposition, ByVal Form1.Picture1.hdc, ByVal logicch5, disanalog0(0))

    End If

    If Form1.VScroll1.Value <= 6 Then
        yposition = 270 + 16 * (6 - Form1.VScroll1.Value)
        Form1.Picture1.ForeColor = Form1.Text7.ForeColor
        Call linedrawlogic(ByVal yposition, ByVal Form1.Picture1.hdc, ByVal logicch6, disanalog0(0))

    End If

    If Form1.VScroll1.Value <= 7 Then
        yposition = 270 + 16 * (7 - Form1.VScroll1.Value)
        Form1.Picture1.ForeColor = Form1.Text8.ForeColor
        Call linedrawlogic(ByVal yposition, ByVal Form1.Picture1.hdc, ByVal logicch7, disanalog0(0))

    End If
    If board_model = dso2904_256 Then
        If Form1.VScroll1.Value <= 8 Then
            yposition = 270 + 16 * (8 - Form1.VScroll1.Value)
            Form1.Picture1.ForeColor = Form1.Text9.ForeColor
            Call linedrawlogic(ByVal yposition, ByVal Form1.Picture1.hdc, ByVal logicch8, disanalog0(0))

        End If

        If Form1.VScroll1.Value <= 9 Then
            yposition = 270 + 16 * (9 - Form1.VScroll1.Value)
            Form1.Picture1.ForeColor = Form1.Text10.ForeColor
            Call linedrawlogic(ByVal yposition, ByVal Form1.Picture1.hdc, ByVal logicch9, disanalog0(0))

        End If

        If Form1.VScroll1.Value <= 10 Then
            yposition = 270 + 16 * (10 - Form1.VScroll1.Value)
            Form1.Picture1.ForeColor = Form1.Text11.ForeColor
            Call linedrawlogic(ByVal yposition, ByVal Form1.Picture1.hdc, ByVal logicch10, disanalog0(0))

        End If

        If Form1.VScroll1.Value <= 11 Then
            yposition = 270 + 16 * (11 - Form1.VScroll1.Value)
            Form1.Picture1.ForeColor = Form1.Text12.ForeColor
            Call linedrawlogic(ByVal yposition, ByVal Form1.Picture1.hdc, ByVal logicch11, disanalog0(0))

        End If

        If Form1.VScroll1.Value <= 12 Then
            yposition = 270 + 16 * (12 - Form1.VScroll1.Value)
            Form1.Picture1.ForeColor = Form1.Text13.ForeColor
            Call linedrawlogic(ByVal yposition, ByVal Form1.Picture1.hdc, ByVal logicch12, disanalog0(0))

        End If

        If Form1.VScroll1.Value <= 13 Then
            yposition = 270 + 16 * (13 - Form1.VScroll1.Value)
            Form1.Picture1.ForeColor = Form1.Text14.ForeColor
            Call linedrawlogic(ByVal yposition, ByVal Form1.Picture1.hdc, ByVal logicch13, disanalog0(0))

        End If

        If Form1.VScroll1.Value <= 14 Then
            yposition = 270 + 16 * (14 - Form1.VScroll1.Value)
            Form1.Picture1.ForeColor = Form1.Text15.ForeColor
            Call linedrawlogic(ByVal yposition, ByVal Form1.Picture1.hdc, ByVal logicch14, disanalog0(0))

        End If

        If Form1.VScroll1.Value <= 15 Then
            yposition = 270 + 16 * (15 - Form1.VScroll1.Value)
            Form1.Picture1.ForeColor = Form1.Text16.ForeColor
            Call linedrawlogic(ByVal yposition, ByVal Form1.Picture1.hdc, ByVal logicch15, disanalog0(0))

        End If
    End If

End Sub

Sub draw_scale()
    Form1.Picture1.DrawStyle = 2
    grey = RGB(128, 128, 128)
    cx = 50
    cy = 25

    For i = 0 To 10
        Form1.Picture1.Line (0, (i * cy) + 3)-(13 * cx, (i * cy) + 3), grey
    Next i

    For i = 0 To 13
        Form1.Picture1.Line (i * cx, 3)-(i * cx, (10 * cy) + 3), grey
    Next i

End Sub
Sub DIV_ATTEU()
    constant1 = 400
    div(selectchannel) = Form2.HScroll7.Value
    Select Case Form2.HScroll1.Value
      Case board1
        temp0 = div(0)
        temp1 = div(1)
        temp2 = p_attn(0)
        temp3 = p_attn(1)

        Call divDISPLAY
        s_val(0) = temp4
        s_val(1) = temp5

      Case board2
        temp0 = div(2)
        temp1 = div(3)
        temp2 = p_attn(2)
        temp3 = p_attn(3)
        Call divDISPLAY
        s_val(2) = temp4
        s_val(3) = temp5
    End Select

    Call setoffset
    Call setlevel
End Sub

Sub setoffset()

    VOffDex(selectchannel) = Form2.HScroll8.Value
    Select Case Form2.HScroll1.Value
      Case board1
        Call chpixelvoltage(0)
        Call setvoltage(VOffDex(0), Form2.Label9)
        Call chpixelvoltage(1)
        Call setvoltage(VOffDex(1), Form2.Label17)
      Case board2
        Call chpixelvoltage(2)
        Call setvoltage(VOffDex(2), Form2.Label9)
        Call chpixelvoltage(3)
        Call setvoltage(VOffDex(3), Form2.Label17)
    End Select
    Call setlevel

End Sub

Sub setcoupling()
    cp_val(selectchannel) = Form2.HScroll5.Value
    Select Case Form2.HScroll1.Value
      Case board1
        Call couplesetting(cp_val(0), Form2.Label10)
        Call couplesetting(cp_val(1), Form2.Label18)
      Case board2
        Call couplesetting(cp_val(2), Form2.Label10)
        Call couplesetting(cp_val(3), Form2.Label18)
    End Select

End Sub
Sub SETDISPLAY()
    Trans(selectchannel) = Form2.HScroll6.Value

    Select Case Form2.HScroll1.Value
      Case board1
        If Trans(0) = 0 Then
            Form2.Label7.Caption = "Off"
        Else
            Form2.Label7.Caption = "On"
        End If

        If Trans(1) = 0 Then
            Form2.Label3.Caption = "Off"
        Else

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -