module2.bas

来自「自动化测试程序」· BAS 代码 · 共 114 行

BAS
114
字号
Attribute VB_Name = "Module2"
Option Explicit
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Const GWL_STYLE = (-16)
Public Const ES_UPPERCASE = &H8& '大写
Public Const ES_LOWERCASE = &H10& '小写
Public Const ES_NUMBER = &H2000& '全部
Public Const ES_All = &H0& '全部可以输入

Type data
    ControlCode As Integer '控制码
    Datalen As Integer '数据长度
    sum As Single '校验和
    TempData() As Byte
End Type

Public RData As data
Public SData As data

Public StartAddress As Byte
Public EndAddress As Byte

Public ParaType As Integer
Public ParaList() As Double

Public Function SetModel(tBox As TextBox, InputStyle As Long)
Dim DefaultStyle As Long, new_style As Long
DefaultStyle = GetWindowLong(tBox.hwnd, GWL_STYLE)
DefaultStyle = DefaultStyle And (Not ES_NUMBER) And Not ES_LOWERCASE And Not ES_UPPERCASE
If InputStyle <> ES_All Then
DefaultStyle = DefaultStyle Or InputStyle
new_style = SetWindowLong(tBox.hwnd, GWL_STYLE, DefaultStyle)
tBox.Refresh
End If
End Function
'sfsf

Public Function FormatHex(temp) As String
Dim str As String

str = Hex(temp)

If Len(str) = 1 Then
    str = "0" & str
End If

FormatHex = str
End Function

Public Sub MakeDataHead(ControlCode As Integer, Datalen As Integer)

SData.ControlCode = ControlCode
SData.Datalen = Datalen + 7
ReDim SData.TempData(SData.Datalen - 1)

SData.TempData(0) = &HEB
SData.TempData(1) = &H90

SData.TempData(2) = EndAddress
SData.TempData(3) = StartAddress

SData.TempData(4) = SData.ControlCode

SData.TempData(5) = SData.Datalen

SData.TempData(6) = &H0  '起始地址

SData.TempData(7) = &H68 '源地址

End Sub

Public Sub MakeDataEnd()
Dim i As Integer

SData.sum = 0
For i = 0 To SData.Datalen - 1
    SData.sum = SData.sum + SData.TempData(i)
Next i

SData.TempData(SData.Datalen - 1) = SData.sum Mod 256

Call SendData(SData.TempData)

End Sub

Public Sub SendData(TempData)
On Error Resume Next

Dim Tempstr As String
Dim i As Integer
Dim data

data = TempData

fMainForm.Comm.Output = data
'fMainForm.Timer1.Enabled = True
If BaoWen_Refresh Then
For i = 0 To UBound(data)
    Tempstr = Tempstr & FormatHex(data(i)) & " "
Next i

With frmMsgList.Text1(0)
    .Text = Tempstr & vbCrLf & .Text
    .Text = "发送数据  " & .Text
    .Text = Now & vbCrLf & .Text
End With
End If
End Sub


⌨️ 快捷键说明

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