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

📄 module1.bas

📁 PC机端程序
💻 BAS
字号:
Attribute VB_Name = "Module1"



'接收模块

Public bytReceiveByte() As Byte     '接收到的字节
Public intReceiveLen As Integer     '接收到的字节数

'显示模块

Public strAddress As String     '地址信息
Public strHex As String         '十六进制编码
Public strAscii As String        'ASCII码




Public intHexWidth As Integer       '显示列数



Public intOriginX As Long       '横向原点(像素)
Public intOriginY As Integer    '纵向原点(行)
Public intLine As Integer       '总行数





'显示常量

Public Const ChrWidth = 105             '单位宽度
Public Const ChrHeight = 2 * ChrWidth   '单位高度
Public Const BorderWidth = 210          '预留边界
Public Const LineMax = 16               '最大显示行数



'**********************************
'输入处理
'处理接收到的字节流,并保存在全局变量
'bytReceiveRyte()
'**********************************



Public Sub InputManage(bytInput() As Byte, intInputLenth As Integer)

    

   
    Dim n As Integer                                '定义变量及初始化
    
    ReDim Preserve bytReceiveByte(intReceiveLen + intInputLenth)

    For n = 1 To intInputLenth Step 1
        bytReceiveByte(intReceiveLen + n - 1) = bytInput(n - 1)
    Next n
    
    intReceiveLen = intReceiveLen + intInputLenth
    
End Sub

'为输出准备文本
'保存在全局变量
'strText
'strHex
'strAddress
'总行数保存在
'intLine

Public Sub GetDisplayText()

    Dim n As Integer
    Dim intValue As Integer
    Dim intHighHex As Integer
    Dim intLowHex As Integer
    Dim strSingleChr As String * 1
    
    Dim intAddress As Integer
    Dim intAddressArray(8) As Integer
    Dim intHighAddress As Integer
    
    
    
    strAscii = ""            '设置初值
    strHex = ""
    strAddress = ""
    
    '*****************************************
    '获得16进制码和ASCII码的字符串
    '*****************************************
    
    
    
    For n = 1 To intReceiveLen
        intValue = bytReceiveByte(n - 1)
        
        If intValue < 32 Or intValue > 128 Then         '处理非法字符
            strSingleChr = Chr(46)                      '对于不能显示的ASCII码,
        Else                                            '用"."表示
            strSingleChr = Chr(intValue)
        End If
        
        strAscii = strAscii + strSingleChr
        
        intHighHex = intValue \ 16
        intLowHex = intValue - intHighHex * 16
        
        If intHighHex < 10 Then
            intHighHex = intHighHex + 48
        Else
            intHighHex = intHighHex + 55
        End If
        If intLowHex < 10 Then
            intLowHex = intLowHex + 48
        Else
            intLowHex = intLowHex + 55
        End If
        
        strHex = strHex + " " + Chr$(intHighHex) + Chr$(intLowHex) + " "
        
        If (n Mod intHexWidth) = 0 Then                 '设置换行
            strAscii = strAscii + Chr$(13) + Chr$(10)
            strHex = strHex + Chr$(13) + Chr$(10)
        Else
            
        End If
    Next n
    
    
    
    '***************************************
    '获得地址字符串
    '***************************************
    
    intLine = intReceiveLen \ intHexWidth
    
    If (intReceiveLen - intHexWidth * intLine) > 0 Then
    intLine = intLine + 1
    End If
    
    For n = 1 To intLine
        intAddress = (n - 1) * intHexWidth
        
        If intAdd48Chk = 1 Then
            intHighAddress = 8
        Else
            intHighAddress = 4
        End If
            intAddressArray(0) = intAddress
        For m = 1 To intHighAddress
            intAddressArray(m) = intAddressArray(m - 1) \ 16
        Next m
        For m = 1 To intHighAddress
            intAddressArray(m - 1) = intAddressArray(m - 1) - intAddressArray(m) * 16
        Next m
        For m = 1 To intHighAddress
        
            If intAddressArray(intHighAddress - m) < 10 Then
                intAddressArray(intHighAddress - m) = intAddressArray(intHighAddress - m) + Asc("0")
                
            Else
                intAddressArray(intHighAddress - m) = intAddressArray(intHighAddress - m) + Asc("A") - 10
                
            End If
            strAddress = strAddress + Chr$(intAddressArray(intHighAddress - m))
        Next m
        
        strAddress = strAddress + Chr$(13) + Chr$(10)       '设置换行
            
    Next n
    
    
    '***************************************
End Sub

'*************************************
'显示输出
'*************************************

Public Sub display()

    
    Dim intViewWidth As Long        '横向宽度(像素)
    Dim intViewLine As Integer      '纵向宽度(行)

    Dim strDisplayAddress As String
    Dim strDisplayHex As String
    Dim strDisplayAscii As String
    
    strDisplayAddress = ""
    strDisplayHex = ""
    strDisplayAscii = ""
    
    Dim intStart As Integer
    Dim intLenth As Integer
    
    
   
    
    intStart = intOriginY * (intHexWidth + 2) + 1
    intLenth = intViewLine * (intHexWidth + 2)
    strDisplayAscii = Mid(strAscii, intStart, intLenth)
    
    
    
   
    
    
    
End Sub

'******************************************
'文本无变化的刷新
'******************************************

Public Sub ScrollRedisplay()

    Call display
    
End Sub

'******************************************
'文本发生变化的刷新
'******************************************

Public Sub SlideRedisplay()
    
    Call GetDisplayText
    Call display

End Sub



⌨️ 快捷键说明

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