📄 frmmain1.frm
字号:
BorderStyle = 0 'None
Height = 285
Left = 1080
TabIndex = 15
Text = "VW"
Top = 525
Width = 495
End
Begin VB.Label Label6
Caption = "数据:"
Height = 375
Left = 240
TabIndex = 10
Top = 1800
Width = 735
End
Begin VB.Label Label5
Caption = "长度:"
Height = 375
Left = 240
TabIndex = 9
Top = 1080
Width = 735
End
Begin VB.Label Label4
Caption = "起始地址:"
Height = 375
Left = 240
TabIndex = 8
Top = 480
Width = 975
End
End
Begin VB.Frame Frame1
Caption = "读寄存器VW"
Height = 2295
Left = 120
TabIndex = 3
Top = 1320
Width = 4335
Begin VB.CommandButton CmdReadVW
Caption = "read"
Enabled = 0 'False
Height = 375
Left = 3000
TabIndex = 19
Top = 1080
Width = 975
End
Begin VB.TextBox TextDataRW
Height = 495
Left = 1560
MultiLine = -1 'True
ScrollBars = 2 'Vertical
TabIndex = 14
Top = 1680
Width = 2415
End
Begin VB.ComboBox CobRWNumber
Height = 315
Left = 1560
TabIndex = 13
Text = "Combo6"
Top = 1080
Width = 975
End
Begin VB.TextBox TextAddRW
Height = 375
Left = 1560
TabIndex = 12
Text = "0"
Top = 555
Width = 975
End
Begin VB.TextBox Text1
Alignment = 1 'Right Justify
BorderStyle = 0 'None
Height = 285
Left = 1080
TabIndex = 11
Text = "VW"
Top = 600
Width = 495
End
Begin VB.Label Label3
Caption = "返回值:"
Height = 375
Left = 240
TabIndex = 7
Top = 1800
Width = 975
End
Begin VB.Label Label2
Caption = "长度:"
Height = 375
Left = 240
TabIndex = 6
Top = 1080
Width = 975
End
Begin VB.Label Label1
Caption = "起始地址:"
Height = 375
Left = 240
TabIndex = 5
Top = 600
Width = 975
End
End
Begin VB.Frame Frame5
Caption = "参数设定"
Height = 735
Left = 120
TabIndex = 0
Top = 600
Width = 8895
Begin VB.ComboBox CombAddPLC
Height = 315
Left = 5760
TabIndex = 64
Top = 240
Width = 975
End
Begin VB.CommandButton CmdPort
Caption = "打开端口"
Height = 375
Left = 7320
TabIndex = 2
Top = 240
Width = 1215
End
Begin VB.ComboBox ComboPort
Height = 315
Left = 1440
TabIndex = 1
Top = 270
Width = 975
End
Begin VB.Label Label7
Caption = "从站地址:"
Height = 255
Left = 4680
TabIndex = 63
Top = 240
Width = 975
End
Begin VB.Label Label8
Caption = "端口选择:"
Height = 375
Left = 240
TabIndex = 21
Top = 240
Width = 975
End
End
Begin MSCommLib.MSComm MSComm1
Left = 0
Top = 0
_ExtentX = 1005
_ExtentY = 1005
_Version = 393216
DTREnable = -1 'True
ParityReplace = 64
RTSEnable = -1 'True
ParitySetting = 2
InputMode = 1
End
Begin VB.Menu MnuPort
Caption = "端口选择"
Begin VB.Menu MnuCom1
Caption = "MSCOMM1"
Checked = -1 'True
End
Begin VB.Menu MnuCom2
Caption = "MSCOMM2"
End
End
End
Attribute VB_Name = "FrmMain1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'***********************************************************************************************
'读多个保持寄存器值 功能码=03H
'[地址][功能码][寄存器起始地址高8位][寄存器起始地址低8位][寄存器数量高8位][寄存器数量低8位][CRC低字节][CRC高字节]
'写多个保持寄存器值 功能码=10H
'[地址][功能码][寄存器起始地址高8位][寄存器起始地址低8位][寄存器数量高8位][寄存器数量低8位][字节计数][数据高字节][数据低字节]...[数据高字节][数据低字节][CRC低字节][CRC高字节]
'写单个保持寄存器值 功能码=06H
'[地址][功能码][寄存器起始地址高8位][寄存器起始地址低8位][数据高字节][数据低字节][CRC低字节][CRC高字节]
'
'编程 刘胜红 2007-07-13
'************************************************************************************************
Option Explicit
'
Private Sub CmdPort_Click()
If MSComm1.PortOpen = False Then
MSComm1.CommPort = Me.ComboPort.ListIndex + 1
MSComm1.Settings = "19200,e,8,1"
MSComm1.InputMode = comInputModeBinary
MSComm1.PortOpen = True
End If
' Timer1.Enabled = True
' Timer2.Enabled = True
' Timer3.Enabled = True
Me.CmdReadB.Enabled = True
Me.CmdReadVD.Enabled = True
Me.CmdReadVW.Enabled = True
Me.CmdWriteB0.Enabled = True
Me.CmdWriteB1.Enabled = True
Me.CmdWriteVD.Enabled = True
Me.CmdWriteVW.Enabled = True
If Err Then '打开串口失败,则显示出错信息
MsgBox Error$, 48, "错误信息"
Exit Sub
End If
End Sub
Private Sub CmdReadB_Click()
AddPLC = CStr(Me.CombAddPLC.Text)
AddrReadB = Me.TextAddRB.Text
BitNumber = Val(Me.TextBitNumR.Text)
ReadNumberB = Val(Me.CobRBNumber.Text)
Call GetBit(0, AddrReadB, BitNumber, ReadNumberB)
End Sub
Private Sub CmdReadVD_Click()
AddPLC = CStr(Me.CombAddPLC.Text)
ReadNumberD = Val(Me.CobRDNumber.Text)
AddrReadD = CStr(TextAddRD.Text)
Call ReadVD(0, AddrReadD, ReadNumberD)
End Sub
Private Sub CmdReadVW_Click()
AddPLC = CStr(Me.CombAddPLC.Text)
ReadNumberW = Val(Me.CobRWNumber.Text)
AddrReadW = CStr(TextAddRW.Text)
Call ReadVW(0, AddrReadW, ReadNumberW)
End Sub
Private Sub CmdWriteB0_Click()
Dim AddrWrite As String
Dim BitNumber As Integer
AddrWrite = Me.TextAddWB.Text
BitNumber = Val(Me.TextBitNumR.Text)
Call SetBitFalse(AddrWrite, BitNumber)
End Sub
Private Sub CmdWriteB1_Click()
Dim AddrWrite As String
Dim BitNumber As Integer
AddrWrite = Me.TextAddWB.Text
BitNumber = Val(Me.TextBitNumR.Text)
Call SetBitTrue(AddrWrite, BitNumber)
End Sub
Private Sub CmdWriteVD_Click()
Dim AddrWrite As String
Dim DataWrite As Single
AddPLC = CStr(Me.CombAddPLC.Text)
AddrWrite = CStr(TextAddWD.Text)
DataWrite = Val(Me.TextDataD.Text)
Call WriteVD(AddrWrite, DataWrite)
End Sub
Private Sub CmdWriteVW_Click()
Dim AddrWrite As String
Dim DataWrite As Integer
AddPLC = CStr(Me.CombAddPLC.Text)
AddrWrite = CStr(TextAddWW.Text)
DataWrite = Val(Me.TextDataW.Text)
Call WriteVW(AddrWrite, DataWrite)
End Sub
Private Sub CombAddPLC_Change()
AddPLC = Me.CombAddPLC.ListIndex
End Sub
Private Sub Command1_Click()
Form1.Show
End Sub
Private Sub Command2_Click()
End Sub
Private Sub Form_Load()
Dim i As Integer
Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2
AddPLC = 2
ComboPort.AddItem "1"
ComboPort.AddItem "2"
ComboPort.AddItem "3"
ComboPort.ListIndex = 1
For i = 0 To 254
CobRWNumber.AddItem i
CobRDNumber.AddItem i
CobRBNumber.AddItem i
CobWWNumber.AddItem i
CobWDNumber.AddItem i
CobWBNumber.AddItem i
Me.CombAddPLC.AddItem i
Next
Me.CombAddPLC.ListIndex = 2
CobRWNumber.ListIndex = 3
CobRDNumber.ListIndex = 3
CobRBNumber.ListIndex = 3
CobWWNumber.ListIndex = 1
CobWDNumber.ListIndex = 1
CobWBNumber.ListIndex = 1
FlagVW = False
FlagVD = False
End Sub
Private Sub Form_Unload(Cancel As Integer)
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
End Sub
Private Sub MSComm1_OnComm()
Dim Inbyte() As Byte
Dim InHEx As String
Dim i, j As Integer
Dim recstr As String
Dim a As Integer
recstr = ""
ReDim inSafeArray(MSComm1.RThreshold)
If MSComm1.CommEvent = comEvReceive Then '收到 RThreshold # of chars.
Inbyte = MSComm1.Input
For i = 0 To MSComm1.RThreshold - 1
InHEx = Hex(Val(Inbyte(i)))
inSafeArray(i) = IIf(Len(InHEx) < 2, "0" + InHEx, InHEx)
recstr = recstr & inSafeArray(i)
Me.Text6.Text = recstr
Next i
a = Len(recstr)
FlagRec = 1
If FlagVW = True Then
If a = 2 * (5 + ReadNumberW * 2) Then
Call ReadVW(1, 0, 0)
Else
Call ReadVW(0, AddrReadW, ReadNumberW)
End If
ElseIf FlagVD = True Then
If a = 2 * (5 + ReadNumberD * 4) Then
Call ReadVD(1, 0, 0)
Else
Call ReadVD(0, AddrReadD, ReadNumberD)
End If
ElseIf FlagVB = True Then
If a = 2 * (5 + ReadNumberB * 2) Then
Call GetBit(1, 0, BitNumber, 0)
Else
Call GetBit(0, AddrReadB, BitNumber, ReadNumberB)
End If
End If
End If
End Sub
Private Sub ComboPort_Click() '串口选择
MSComm1.CommPort = ComboPort.ListIndex + 1
End Sub
Private Sub Timer1_Timer()
AddPLC = CStr(Me.CombAddPLC.Text)
ReadNumberW = Val(Me.CobRWNumber.Text)
AddrReadW = CStr(TextAddRW.Text)
Call ReadVW(0, AddrReadW, ReadNumberW)
End Sub
Private Sub Timer2_Timer()
AddPLC = CStr(Me.CombAddPLC.Text)
AddrReadD = CStr(TextAddRD.Text)
ReadNumberD = Val(Me.CobRDNumber.Text)
Call ReadVD(0, AddrReadD, ReadNumberD)
End Sub
Private Sub Timer3_Timer()
AddPLC = CStr(Me.CombAddPLC.Text)
AddrReadB = Me.TextAddRB.Text
BitNumber = Val(Me.TextBitNumR.Text)
ReadNumberB = Val(Me.CobRBNumber.Text)
Call GetBit(0, AddrReadB, BitNumber, ReadNumberB)
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -