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

📄 module3.bas

📁 自动化测试程序
💻 BAS
📖 第 1 页 / 共 3 页
字号:
Attribute VB_Name = "Module3"
Option Explicit
Public Const FUNC_ASK_ALL = &H0
Public Const FUNC_TIME = &H1
Public Const FUNC_YK_SEL = &H2
Public Const FUNC_YK_EXE = &H3
Public Const FUNC_YK_CANCEL = &H4
Public Const FUNC_BK5 = &H5
Public Const FUNC_ALL_SOE = &H6
Public Const FUNC_CLR_SOE = &H7
Public Const FUNC_ALL_EVENT = &H8
Public Const FUNC_CLR_EVENT = &H9
Public Const FUNC_ALL_SEF = &HA
Public Const FUNC_CLR_SEF = &HB
Public Const FUNC_ALL_DEF_WAV = &HC
Public Const FUNC_CLR_DEV_WAV = &HD
Public Const FUNC_ALL_STAT = &HE
Public Const FUNC_CLR_STAT = &HF
Public Const FUNC_ALL_YK_REC = &H10
Public Const FUNC_CLR_YK_REC = &H11
Public Const FUNC_YC_CAL = &H12
Public Const FUNC_YC = &H13
Public Const FUNC_YX = &H14
Public Const FUNC_DD = &H15
Public Const FUNC_W_DD = &H16
Public Const FUNC_R_DD_CFG = &H17
Public Const FUNC_W_DD_CFG = &H18
Public Const FUNC_R_SYS_CFG = &H19
Public Const FUNC_W_SYS_CFG = &H1A
Public Const FUNC_R_XS_CFG = &H1B
Public Const FUNC_W_XS_CFG = &H1C
Public Const FUNC_R_YC_CFG = &H1D
Public Const FUNC_W_YC_CFG = &H1E
Public Const FUNC_R_DI_CFG = &H1F
Public Const FUNC_W_DI_CFG = &H20
Public Const FUNC_R_DO_CFG = &H21
Public Const FUNC_W_DO_CFG = &H22
Public Const FUNC_R_SET_CFG = &H23
Public Const FUNC_W_SET_CFG = &H24
Public Const FUNC_R_SET_GP_CFG = &H25
Public Const FUNC_W_SET_GP_CFG = &H26
Public Const FUNC_R_PROT_CFG = &H27
Public Const FUNC_W_PROT_CFG = &H28
Public Const FUNC_R_RAM_CFG = &H29
Public Const FUNC_W_RAM_CFG = &H2A
Public Const FUNC_CH_WAV = &H2B
Public Const FUNC_RE_DEF_CFG = &H2C
Public Const FUNC_PROT_ANG_CFG = &H2D
Public Const FUNC_SDZS = &H2E
Public Const FUNC_XHFG = &H2F
Public Const FUNC_SYS_PRG = &H30
Public Const FUNC_LED_PRG = &H31
Public Const FUNC_RESET = &H32
Public Const FUNC_R_TIME = &H33

Public RecData
Public PreRecData
Public CurRecData
Public PreRecDatLen
Public NewRecData
Public SOE_numble

Type yk_type
 YK_jdq_flag As Boolean   '继电器选择标志
 YK_tj_flag As Boolean    '遥控条件选择标志
 YK_flag  As Boolean      '遥控标志
 YK_num As Integer
 YK_tj As Integer
 YK_tj_sn As Integer    '遥控条件中的控件的index序号
End Type

Public yk As yk_type

Public Send_buf() As Byte

Public Sub Tx_Header(dat_len As Integer)
ReDim Send_buf(dat_len + 6) As Byte
Send_buf(0) = &HEB
Send_buf(1) = &H90
Send_buf(2) = Cur_Dev.addr   '地址
Send_buf(3) = Cur_Dev.dev_type_num    '装置类型号
Send_buf(4) = Comm_tx_type
Send_buf(5) = dat_len   '数据区长度
End Sub

Public Sub Send_handle()
Dim i, j, k As Integer
Dim sum As Long
Select Case Comm_tx_type
    Case FUNC_ASK_ALL
        Tx_Header (0)
    
    Case FUNC_TIME          '对时
        Dim systime As String
        Dim sysdate As String
        Dim str As String

        sysdate = Format(Date, "yyyy-mm-dd")
        systime = Format(Time, "hh-mm-ss")
        Tx_Header (8)
        Send_buf(2) = &HFF   '地址
        Send_buf(3) = &H0    '装置类型

        Send_buf(6) = &H0
        Send_buf(7) = &H0
        Send_buf(8) = CByte(Mid(systime, 7))
        Send_buf(9) = CByte(Mid(systime, 4, 2))
        Send_buf(10) = CByte(Mid(systime, 1, 2))
        Send_buf(11) = CByte(Mid(sysdate, 9))
        Send_buf(12) = CByte(Mid(sysdate, 6, 2))
        Send_buf(13) = CByte(Mid(sysdate, 3, 2))

    Case FUNC_YK_SEL
        Tx_Header (4)
        Send_buf(6) = yk.YK_num
        Send_buf(7) = yk.YK_tj
        Send_buf(8) = yk.YK_num
        Send_buf(9) = yk.YK_tj
    Case FUNC_YK_EXE
        Tx_Header (4)
        Send_buf(6) = yk.YK_num
        Send_buf(7) = yk.YK_tj
        Send_buf(8) = yk.YK_num
        Send_buf(9) = yk.YK_tj
    
    Case FUNC_YK_CANCEL
        Tx_Header (4)
        Send_buf(6) = yk.YK_num
        Send_buf(7) = yk.YK_tj
        Send_buf(8) = yk.YK_num
        Send_buf(9) = yk.YK_tj
    
    Case FUNC_BK5
        Tx_Header (0)
    
    Case FUNC_ALL_SOE
        Tx_Header (0)
    
    Case FUNC_CLR_SOE
        Tx_Header (0)
    
    Case FUNC_ALL_EVENT
        Tx_Header (0)
    
    Case FUNC_CLR_EVENT
        Tx_Header (0)
    
    Case FUNC_ALL_SEF
        Tx_Header (0)
    
    Case FUNC_CLR_SEF
        Tx_Header (0)
    
    Case FUNC_ALL_DEF_WAV
        Tx_Header (0)
    
    Case FUNC_CLR_DEV_WAV
        Tx_Header (0)
    
    Case FUNC_ALL_STAT
        Tx_Header (0)
    
    Case FUNC_CLR_STAT
        Tx_Header (0)
    
    Case FUNC_ALL_YK_REC
        Tx_Header (0)
    
    Case FUNC_CLR_YK_REC
        Tx_Header (0)
    
    Case FUNC_YC_CAL
        Tx_Header (6)
        Send_buf(6) = Cal_CH_type
        Send_buf(7) = 0
        Send_buf(8) = Cal_CH_num0
        Send_buf(9) = Cal_CH_num1
        Send_buf(10) = 0
        Send_buf(11) = 0
    Case FUNC_DD            '读电度表底
        Tx_Header (0)
    
    Case FUNC_W_DD          '写电度表底
        Tx_Header (DD_RATE_CFG_NUM * 4 + 4)
        j = 8
        For i = 1 To DD_RATE_CFG_NUM
            sum = Dev_Par(Cur_Dev.addr).dd_base_cfg(i)
            Send_buf(j) = sum And &HFF
            Send_buf(j + 1) = (sum And 65280) / 256
            Send_buf(j + 2) = (sum And 16711680) / 65536
            Send_buf(j + 3) = (sum And 2130706432) / 16777216
            j = j + 4
        Next i
            Send_buf(j) = Dev_Par(Cur_Dev.addr).dd_base_cfg(i) And 255
            j = j + 1
            Send_buf(j) = (Dev_Par(Cur_Dev.addr).dd_base_cfg(i) And 65280) / 256
            j = j + 1
    
    Case FUNC_R_DD_CFG      '电度变比
        Tx_Header (0)
    
    Case FUNC_W_DD_CFG
        Tx_Header (DD_RATE_CFG_NUM * 2 + 4)
        Send_buf(6) = 0
        Send_buf(7) = 0
        j = 8
        For i = 1 To DD_RATE_CFG_NUM + 1
            Send_buf(j) = Dev_Par(Cur_Dev.addr).dd_rate_cfg(i) And &HFF
            j = j + 1
            Send_buf(j) = (Dev_Par(Cur_Dev.addr).dd_rate_cfg(i) And 65280) / 256
            j = j + 1
        Next i
    
    Case FUNC_R_SYS_CFG     '读系统配置
        Tx_Header (0)
    
    Case FUNC_W_SYS_CFG     '写系统配置
        Tx_Header (SYS_CFG_NUM * 2 + 4)
        Send_buf(6) = 0
        Send_buf(7) = 0
        j = 8
        For i = 1 To SYS_CFG_NUM + 1
            Send_buf(j) = Dev_Par(Cur_Dev.addr).sys_cfg(i) And &HFF
            j = j + 1
            Send_buf(j) = (Dev_Par(Cur_Dev.addr).sys_cfg(i) And 65280) / 256
            j = j + 1
        Next i
    
    Case FUNC_R_XS_CFG      '读通道系数
        Tx_Header (0)
    
    Case FUNC_W_XS_CFG      '写通道系数
        Tx_Header (YC_CFG_NUM * 2 + 4)
        Send_buf(6) = 0
        Send_buf(7) = 0
        j = 8
        For i = 1 To YC_CFG_NUM + 1
            Send_buf(j) = Dev_Par(Cur_Dev.addr).yc_cfg(i) And &HFF
            j = j + 1
            Send_buf(j) = (Dev_Par(Cur_Dev.addr).yc_cfg(i) And &HFF00) / 256
            j = j + 1
        Next i
    
    Case FUNC_R_YC_CFG      '读遥测配置
        Tx_Header (0)
    
    Case FUNC_W_YC_CFG      '写遥测配置
        Tx_Header (YC_CFG_NUM * 2 + 4)
        Send_buf(6) = 0
        Send_buf(7) = 0
        j = 8
        For i = 1 To YC_CFG_NUM + 1
            Send_buf(j) = Dev_Par(Cur_Dev.addr).yc_cfg(i) And &HFF
            j = j + 1
            Send_buf(j) = (Dev_Par(Cur_Dev.addr).yc_cfg(i) And 65280) / 256
            j = j + 1
        Next i
    
    Case FUNC_R_DI_CFG      '读遥信配置
        Tx_Header (0)
    
    Case FUNC_W_DI_CFG      '写遥信配置
        Tx_Header (DI_CFG_NUM * 2 + 4)
        Send_buf(6) = 0
        Send_buf(7) = 0
        j = 8
        For i = 1 To DI_CFG_NUM + 1
            Send_buf(j) = Dev_Par(Cur_Dev.addr).di_cfg(i) And &HFF
            j = j + 1
            Send_buf(j) = (Dev_Par(Cur_Dev.addr).di_cfg(i) And 65280) / 256
            j = j + 1
        Next i
    
    Case FUNC_R_DO_CFG      '读开出配置
        Tx_Header (0)
    
    Case FUNC_W_DO_CFG      '写开出配置
        Tx_Header (DO_CFG_NUM * 2 + 4)
        Send_buf(6) = 0
        Send_buf(7) = 0
        j = 8
        For i = 1 To DO_CFG_NUM + 1
            Send_buf(j) = Dev_Par(Cur_Dev.addr).do_out_cfg(i) And &HFF
            j = j + 1
            Send_buf(j) = (Dev_Par(Cur_Dev.addr).do_out_cfg(i) And 65280) / 256
            j = j + 1
        Next i
    
    Case FUNC_R_SET_CFG     '读定值
        Tx_Header (2)
        Send_buf(6) = Dev_Par(Cur_Dev.addr).settle(0)
        Send_buf(7) = Send_buf(6)
        
    Case FUNC_W_SET_CFG     '写定值
        Tx_Header (SETTLE_NUM * 2 + 4)
        Send_buf(6) = Dev_Par(Cur_Dev.addr).settle(0)
        Send_buf(7) = Dev_Par(Cur_Dev.addr).settle(0)
        j = 8
        For i = 1 To SETTLE_NUM + 1
            Send_buf(j) = Dev_Par(Cur_Dev.addr).settle(i) And &HFF
            j = j + 1
            Send_buf(j) = (Dev_Par(Cur_Dev.addr).settle(i) And 65280) / 256
            j = j + 1
        Next i
    
    Case FUNC_R_SET_GP_CFG  '读定值组号
        Tx_Header (0)
    
    Case FUNC_W_SET_GP_CFG  '切换定值组
        Tx_Header (2)
        Send_buf(6) = Form1.Text13.Text
        Send_buf(7) = Send_buf(6)
    
    Case FUNC_R_PROT_CFG
        Tx_Header (0)
    
    Case FUNC_W_PROT_CFG
    
    Case FUNC_R_RAM_CFG
        Tx_Header (0)
    
    Case FUNC_W_RAM_CFG
    
    Case FUNC_CH_WAV
    
    Case FUNC_RE_DEF_CFG
    
    Case FUNC_PROT_ANG_CFG
    
    Case FUNC_SDZS
    
    Case FUNC_XHFG
    
    Case FUNC_SYS_PRG
    
    Case FUNC_LED_PRG
    
    Case FUNC_RESET
    
    Case FUNC_R_TIME
        Tx_Header (0)
    
    Case Else
            Tx_Header (0)
            If Comm_ms = True Then
                Send_buf(2) = &HFF   '地址
                Send_buf(3) = &H0    '装置类型
            End If
        Select Case Comm_tx_loop_type
            Case FUNC_YC
                Send_buf(4) = FUNC_YC    '遥测功能
                Comm_tx_loop_type = FUNC_YX
                
            Case FUNC_YX
                Send_buf(4) = FUNC_YX    '遥信功能
                Comm_tx_loop_type = FUNC_YC
        End Select
    End Select
        Send_buf(UBound(Send_buf)) = check_sum(Send_buf, UBound(Send_buf))
        SendData (Send_buf)
        Comm_tx_type_bk = Comm_tx_type
        Comm_tx_type = &H7F
End Sub

Public Sub DisposeAllData()
'写入纪录
On Error Resume Next
Dim Tempstr As String
Dim i As Integer

For i = 0 To UBound(NewRecData)
    Tempstr = Tempstr & FormatHex(NewRecData(i)) & " "
Next i
If BaoWen_Refresh Then
With frmMsgList.Text1(0)
    .Text = Tempstr & vbCrLf & .Text
    .Text = "接收数据  " & .Text
    .Text = Now & vbCrLf & .Text
End With
End If

If CheckData Then

    RData.ControlCode = RecData(4)

    Select Case (RData.ControlCode - 128)
        Case FUNC_YK_SEL    '遥控选择
            If RecData(7) = &HFF Then
                Form1.Label26.Caption = "遥控选择失败!"
                yk.YK_flag = False
            Else
                Form1.Label26.Caption = "遥控选择成功!请执行或取消遥控!"
                Form1.Command55.Enabled = True
                Form1.Command56.Enabled = True
            End If

⌨️ 快捷键说明

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