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

📄 module1.bas

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

'DLL库应拷贝到 "C:\program files\dso29dll\OUT.dll"

'硬件控制 API 函数调用
'Sysver是操作系统板本号
Declare Function FindPort Lib "out.dll" (ByRef UIP As Long, ByRef UCP As Byte, ByVal Sysver As Byte) As Byte



'FindHardware:  Call it at beginning when load program first,it can let program auto detect printer port address and model of dso scope.
'在程序执行前,用来检测并口通讯和示波器型号,并口通讯是否为EPP增强并口,USB通迅是通过并口转USB实现。主机型号分为DSO2902双通道,DSO2904四通道。
Declare Function FindHardware Lib "out.dll" (ByVal winversion As Long, ByRef board_model As Byte, ByRef UIP As Long, ByRef UCP As Byte) As Byte


'PowerOn  : It turn on dso scope power,call it at beginning when load program first.
'打开示波器电源,在程序开始时调用,因为示波器即使接通电源,亦处在休眠状态,必须软件初始化。
Declare Sub PowerOn Lib "out.dll" (ByRef UIP As Long, ByRef UCP As Byte)    '参数 UIP,UCP 无须返回参数


'PowerOff  : It turn off dso scope power,call it at ending when quit program .
'在程序退出之前,关掉示波器电源,使示波器处在休眠状态。
Declare Sub PowerOff Lib "out.dll" (ByRef UIP As Long, ByRef UCP As Byte)


'ForceTrigger: it can let hardware auto generate a proper trigger when you can't get trigger in auto trigger mode.
'使硬件自动产生一个适当的触发,当你在自动方式时不能得到触发。
Declare Sub ForceTrigger Lib "out.dll" (ByRef UIP As Long, ByRef UCP As Byte)



'capture : Call it everytime when u want capture a new data,it set all parameter to hardware.
'当你每次采集新数据时调用,并传送所有一至四通道的参数到硬件。如触发电平,触发方式,触发斜率,触发位置,触发通道,存储深度,采样时钟等等 V_tshd =0~80 ,TrigPos:=0~256k ,voffdex:=3~252,clk_int=0 设置为内时钟,Trans总为1 ,AdjAddr:无用 ,返回参数:无
Declare Sub capture Lib "out.dll" (ByRef bufanalog0 As Byte, ByRef bufanalog1 As Byte, ByRef bufanalog2 As Byte, ByRef bufanalog3 As Byte, ByRef buflogic0 As Byte, ByRef buflogic1 As Byte, ByVal ABufLen As Long, ByVal MemMode As Byte, ByVal board_model As Byte, ByRef UIP As Long, ByRef UCP As Byte, ByRef s_val As Byte, ByVal ClkRate As Byte, ByVal TrigCh As Byte, ByRef TrigSlope As Byte, ByVal TrigWd1A As Byte, ByVal TrigWd1B As Byte, ByVal TrigWd2A As Byte, ByVal TrigWd2B As Byte, ByVal TrigWd3A As Byte, ByVal TrigWd3B As Byte, ByVal TrigWd4A As Byte, ByVal TrigWd4B As Byte, ByVal v_tshd As Byte, ByVal v_tshd2 As Byte, ByVal v_tshd3 As Byte, ByVal v_tshd4 As Byte, ByRef cp_val As Byte, ByRef p_attn As Byte, ByVal TrigPos As Long, ByRef VOffDex As Long, ByVal ClkSource As Byte, ByRef Trans As Byte, ByRef AdjAddr As Long)



'传送主机采样的数据到计算机内存。
'EndCapture : This routine transfers the captured data from DSO to memory.
Declare Sub EndCapture Lib "out.dll" (ByRef bufanalog0 As Byte, ByRef bufanalog1 As Byte, ByRef bufanalog2 As Byte, ByRef bufanalog3 As Byte, ByRef buflogic0 As Byte, ByRef buflogic1 As Byte, ByVal ABufLen As Long, ByVal MemMode As Byte, ByVal board_model As Byte, ByRef UIP As Long, ByRef UCP As Byte, ByRef s_val As Byte, ByVal ClkRate As Byte, ByVal TrigCh As Byte, ByRef TrigSlope As Byte, ByVal TrigWd1A As Byte, ByVal TrigWd1B As Byte, ByVal TrigWd2A As Byte, ByVal TrigWd2B As Byte, ByVal TrigWd3A As Byte, ByVal TrigWd3B As Byte, ByVal TrigWd4A As Byte, ByVal TrigWd4B As Byte, ByVal v_tshd As Byte, ByVal v_tshd2 As Byte, ByVal v_tshd3 As Byte, ByVal v_tshd4 As Byte, ByRef cp_val As Byte, ByRef p_attn As Byte, ByVal TrigPos As Long, ByRef VOffDex As Long, ByVal ClkSource As Byte, ByRef Trans As Byte, ByRef AdjAddr As Long)



'得到触发状态,从主机读状态寄存器,通过反回值确定示波器处在的工作状态。
' GetTrigStat: This routine reads the status register from the DSO, so one can determine
' the state the DSO is in
' 反回值
'   6        触发 缓冲区满 triggered and buffer filled
'   0,1,4,5  预触发等待状态 pre_trigger wait state
'   3        预触发等待状态之后,没看到触发字after pre trigger state but has not seen trigger word
'   2        预触发等待,充满缓冲区post trigger wait, filling buffer
Declare Function GetTrigStat Lib "out.dll" (ByRef bufanalog0 As Byte, ByRef bufanalog1 As Byte, ByRef bufanalog2 As Byte, ByRef bufanalog3 As Byte, ByRef buflogic0 As Byte, ByRef buflogic1 As Byte, ByVal ABufLen As Long, ByVal MemMode As Byte, ByVal board_model As Byte, ByRef UIP As Long, ByRef UCP As Byte, ByRef s_val As Byte, ByVal ClkRate As Byte, ByVal TrigCh As Byte, ByRef TrigSlope As Byte, ByVal TrigWd1A As Byte, ByVal TrigWd1B As Byte, ByVal TrigWd2A As Byte, ByVal TrigWd2B As Byte, ByVal TrigWd3A As Byte, ByVal TrigWd3B As Byte, ByVal TrigWd4A As Byte, ByVal TrigWd4B As Byte, ByVal v_tshd As Byte, ByVal v_tshd2 As Byte, ByVal v_tshd3 As Byte, ByVal v_tshd4 As Byte, ByRef cp_val As Byte, ByRef p_attn As Byte, ByVal TrigPos As Long, ByRef VOffDex As Long, ByVal ClkSource As Byte, ByRef Trans As Byte, ByRef AdjAddr As Long) As Byte


'display control to let display fast because visual c is faster than visual basic,user can write their own display routine to replace it.
Declare Sub buffer2display Lib "out.dll" (ByVal Displayaddress As Long, ByVal board_model As Byte, ByRef bufanalog0 As Byte, ByRef bufanalog1 As Byte, ByRef bufanalog2 As Byte, ByRef bufanalog3 As Byte, ByRef buflogic0 As Byte, ByRef buflogic1 As Byte, ByRef disanalog0 As Byte, ByRef AdjAddr As Long)
Declare Sub SetPixeltest Lib "out.dll" (ByVal hdc As Long, ByVal analogch0ADD As Long, ByRef disanalog0 As Byte, ByVal crColor As Long)
Declare Sub linedraw Lib "out.dll" (ByVal hdc As Long, ByVal analogch0ADD As Long, ByRef disanalog0 As Byte)
Declare Sub linedrawlogic Lib "out.dll" (ByVal yposition As Long, ByVal hdc As Long, ByVal analogch0ADD As Long, ByRef disanalog0 As Byte)


    
'gdi function
Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long) As Long
Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, lpPoint As Long) As Long
Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long



'it is system program to get window version
Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Boolean




Public testy(20) As Long

Public Handlevalue As Long
Public objectcolor As Long
Public disobject As Long

Public Const VER_PLATFORM_WIN32s = 0
Public Const VER_PLATFORM_WIN32_WINDOWS = 1
Public Const VER_PLATFORM_WIN32_NT = 2
Type OSVERSIONINFO
    dwOSVersionInfoSize As Long
    dwMajorVersion As Long
    dwMinorVersion As Long
    dwBuildNumber As Long
    dwPlatformId As Long
    szCSDVersion As String * 128
End Type
Public winversion As Long

Public board_model As Byte '数字示波器型号 dso2902_256 = 28  dso2904_256 = 29 dso2906_256=30 dso2908_256=  31  dso2500=  32   dso2902_128= 27

Public Enum boardmodel
    dso2902_128 = 27

    dso2902_256 = 28
    dso2904_256 = 29

    dso2906_256 = 30
    dso2908_256 = 31
    dso2500 = 32

    dso2902_64 = 33
    dso2902_1mega = 34
    dso2904_1mega = 35
    dso2906_1mega = 36
    dso2908_1mega = 37

    dso2902_512 = 38
    dso2904_512 = 39
    dso2906_512 = 40
    dso2908_512 = 41

    vbpllorosc = 1003
    vbjjoffset = 1004
    vbosc400 = 1005
    vbstatus = 1007
    vbstatus1 = 1008
    Reset = 1009
    vb256k = 1010
End Enum

Public ClkRate As Byte  'RATELIST
Public MemMode As Byte  'MEMORYSIZE
Public TrigCh As Byte  '=aCH0 ......
Public TrigWd1A As Byte 'TRIGGER WORD
'TRIGGER WORD
'if trigger word= 1111xxxx then TrigWd1A=11111111:TrigWd1B =00001111 (don't care mask)
'if trigger word= 11xxxx10 then TrigWd1A=11111110:TrigWd1B =00111100 (don't care mask)
Public TrigWd1B As Byte 'TRIGGER WORD
Public TrigWd2A As Byte 'TRIGGER WORD
Public TrigWd2B As Byte 'TRIGGER WORD
Public TrigWd3A As Byte 'TRIGGER WORD
Public TrigWd3B As Byte 'TRIGGER WORD
Public TrigWd4A As Byte 'TRIGGER WORD
Public TrigWd4B As Byte 'TRIGGER WORD
Public v_tshd As Byte  'THRESHOLD VOLTAGE
Public v_tshd2 As Byte  'THRESHOLD VOLTAGE
Public v_tshd3 As Byte  'THRESHOLD VOLTAGE
Public v_tshd4 As Byte  'THRESHOLD VOLTAGE
Public TrigPos As Long   'TRIGGER POSITION
Public temp0 As Long
Public temp1 As Long
Public temp2 As Long
Public temp3 As Long
Public temp4 As Long
Public temp5 As Long
Public temp6 As Double
Public temp7 As Double

Public paraon As Byte

Public persistance As Byte

Public ClkSource As Byte 'INTERNAL EXTERNAL...
Public ABufLen As Long '1k,8k,128k,256k
Public constant1 As Long
Public selectchannel As Byte
Public pixelvoltage As Double  'unit=u V
Public pixelvoltage1 As Double

Public triggerdisflag As Byte
Public v1v2disflag As Byte
Public toolbarstop As Byte
Public autocapturetime As Byte

Public offsetvoltage As Double
Public timeperiod As Double
Public constant2   As Double
Public zoomperiod As Double
Public zoomperiod1 As Double
Public totalperiod As Double
Public Displayaddress As Long
Public number1 As Long
Public ii As Long
Public j As Long
Public dotcolor As Long
Public linecolor As Long
Public white As Long
Public red As Long
Public blue As Long
Public green As Long
Public grey As Long
Public timingtype As Byte 'line,dot,linedot

Public UIP(2048) As Long
'Public UCP(1024 * 10) As Byte
Public UCP(1023, 1023 + 11, 6) As Byte
'memory buffer
Public bufanalog0() As Byte
Public bufanalog1() As Byte
Public bufanalog2() As Byte
Public bufanalog3() As Byte
Public buflogic0() As Byte
Public buflogic1() As Byte

'display buffer
Public disanalog0(1024 * 24) As Byte '8ch analog +16 channel logic  可达8个模拟输入,16路逻辑输入

'可调整的缓冲区 ADJUST buffer

Public s_val(50) As Byte

Public TrigSlope(64) As Byte
Public cp_val(50) As Byte
Public p_attn(50)  As Byte
Public Trans(50) As Byte
Public AdjAddr(50) As Long
Public VOffDex(50) As Long ' OFFSET
Public div(50) As Byte
Public Enum logicrank
    k1 = 0
    k8
    k128
    k256

End Enum

Public Enum memsize
    larank0 = 0
    larank1
    larank2
    larank3
    larank4
    larank5
    larank6
    larank7
    larank8
    larank9
    larank10
    larank11
    larank12
    larank13
    larank14
    larank15

End Enum

Public Enum RATELIST

    ghz020 = 0
    ghz010
    ghz005
    ghz004
    ghz002
    ghz001
    mhz800
    mhz500
    mhz400
    mhz250
    mhz200
    mhz100
    mhz050
    mhz020
    mhz010
    mhz005
    mhz002
    mhz001
    khz500
    khz200
    khz100
    khz050
    khz020
    khz010
    khz005
    khz002
    khz001
    hz500
    hz200
    hz100
    hz050
    hz020
    hz010
    hz005
    hz002
    hz001
    rateExtFalling
    rateExtRising
    nRateStr
End Enum

Public Enum BOARDTYPE
    board1 = 0
    board2
    board3
    board4

End Enum

Public Enum dottype
    Line = 0
    dot
    linedot
End Enum
Public Enum CHANNELLOGIC
    chlogic = 36
    chlogic1 = 37
    chlogic2 = 38
    chlogic3 = 39
End Enum

Public Enum CHANNELANALOG
    aCH0 = 0
    aCH1 = 1
    aCH2 = 2
    aCH3 = 3
    aCH4 = 4
    aCH5 = 5
    aCH6 = 6
    aCH7 = 7

End Enum

Public Enum displaybuffer
    analogch0 = 0
    analogch1 = 1024 * 1
    analogch2 = 1024 * 2
    analogch3 = 1024 * 3
    analogch4 = 1024 * 4
    analogch5 = 1024 * 5
    analogch6 = 1024 * 6
    analogch7 = 1024 * 7

    logicch0 = 1024 * 8
    logicch1 = 1024 * 9
    logicch2 = 1024 * 10
    logicch3 = 1024 * 11
    logicch4 = 1024 * 12
    logicch5 = 1024 * 13
    logicch6 = 1024 * 14
    logicch7 = 1024 * 15
    logicch8 = 1024 * 16
    logicch9 = 1024 * 17
    logicch10 = 1024 * 18
    logicch11 = 1024 * 19
    logicch12 = 1024 * 20
    logicch13 = 1024 * 21
    logicch14 = 1024 * 22
    logicch15 = 1024 * 23

End Enum

Public Enum transon
    ChOff = 0
    ChOn = 1
End Enum
Public Enum TRIGGERSLOPE  '触发斜率

    POSITIVE = 0            '正沿触发
    NEGATIVE = 1            '负沿触发
End Enum

⌨️ 快捷键说明

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