字串9
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
Text8.Text = ""
Text10.Text = ""
MSComm1.CommPort = 1 '设定端口号
MSComm1.Settings = "9600,n,8,1" '设定通讯波特率
MSComm1.InBufferSize = 1024 '接收缓冲器大小
MSComm1.OutBufferSize = 1024 '输出缓冲器大小
MSComm1.InputMode = comInputModeBinary '以二进制传输
MSComm1.RThreshold = 1 '
MSComm1.SThreshold = 0
MSComm1.InputLen = 0 '读取接收缓冲器所有字符
MSComm1.OutBufferCount = 0 '清空发送缓冲区
MSComm1.InBufferCount = 0 '清空接收缓冲区
If MSComm1.PortOpen = False Then
Command3.Caption = "打开串口"
Else
Command3.Caption = "关闭串口"
End If
End Sub
字串7
Private Sub Command1_Click()
Timer1.Enabled = True
End Sub
Private Sub Command2_Click() '退出程序,定时器1无效
Timer1.Enabled = False
Cls
Unload Me
End Sub
Private Sub Command3_Click()
On Error Resume Next
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
Else
MSComm1.PortOpen = False
End If
If MSComm1.PortOpen Then '打开关闭按钮显示文字
Command3.Caption = "关闭串口"
Else
Command3.Caption = "打开串口"
End If
If Err Then '打开串口失败,则显示出错信息
MsgBox Error$, 48, "错误信息"
Exit Sub
End If
End Sub
Private Sub Timer1_Timer() '读V存储区数据
Dim CRC() As Byte
Dim FGetData As String
Dim aa() As Byte
Dim s As String
Dim str As String
Dim i As Integer 字串8
Dim bb, cc As String
ReDim aa(5) As Byte '定义动态数组
aa(0) = &HC
aa(1) = &H3
aa(2) = &H0
aa(3) = &H32
aa(4) = &H0
aa(5) = &H4
CRC = CRC16(aa)
str = CRC
s = ""
For i = 1 To LenB(str)
s = s + Hex(AscB(MidB(str, i, 1)))
Next i
bb = Right(s, 2)
cc = Mid(s, 1, 2)
If Len(s) < 4 Then
cc = Mid(s, 1, 1)
End If
ReDim Preserve aa(0 To 7) As Byte
aa(6) = Val("&H" & bb)
aa(7) = Val("&H" & cc)
MSComm1.OutBufferCount = 0 '清空输出寄存器
MSComm1.Output = aa
FGetData = ReceiveData
Text5.Text = FGetData
p11 = Val("&H" & Mid(FGetData, 7, 4))
p12 = Val("&H" & Mid(FGetData, 11, 4))
p13 = Val("&H" & Mid(FGetData, 15, 4)) 字串4
p14 = Val("&H" & Mid(FGetData, 19, 4))
End Sub
Private Sub Command4_Click() 'I状态
Dim CRC() As Byte
Dim FGetData As String
Dim aa() As Byte
Dim s As String
Dim str As String
Dim i As Integer
Dim bb, cc As String
ReDim aa(5) As Byte '定义动态数组
aa(0) = &HC
aa(1) = &H2
aa(2) = &H0
aa(3) = &H0
aa(4) = &H0
aa(5) = &H1
CRC = CRC16(aa)
str = CRC
s = ""
For i = 1 To LenB(str)
s = s + Hex(AscB(MidB(str, i, 1)))
Next i
bb = Right(s, 2)
cc = Mid(s, 1, 2)
If Len(s) < 4 Then
cc = Mid(s, 1, 1)
End If
ReDim Preserve aa(0 To 7) As Byte
aa(6) = Val("&H" & bb)
aa(7) = Val("&H" & cc)
MSComm1.OutBufferCount = 0 '清空输出寄存器 字串8
MSComm1.Output = aa
FGetData = IReceiveData
p17 = Val("&H" & Mid(FGetData, 7, 2))
p18 = Val("&H" & Mid(FGetData, 9, 2))
End Sub
Private Sub Command5_Click() 'Q状态
Dim CRC() As Byte
Dim FGetData As String
Dim aa() As Byte
Dim s As String
Dim str As String
Dim i As Integer
Dim bb, cc As String
ReDim aa(5) As Byte '定义动态数组
aa(0) = &HC
aa(1) = &H1
aa(2) = &H0
aa(3) = &H0
aa(4) = &H0
aa(5) = &H1
CRC = CRC16(aa)
str = CRC
s = ""
For i = 1 To LenB(str)
s = s + Hex(AscB(MidB(str, i, 1))) 字
Next i
bb = Right(s, 2)
cc = Mid(s, 1, 2)
If Len(s) < 4 Then
cc = Mid(s, 1, 1)
End If
ReDim Preserve aa(0 To 7) As Byte
aa(6) = Val("&H" & bb)
aa(7) = Val("&H" & cc)
MSComm1.OutBufferCount = 0 '清空输出寄存器
MSComm1.Output = aa
FGetData = QReceiveData
p15 = Val("&H" & Mid(FGetData, 7, 2))
p16 = Val("&H" & Mid(FGetData, 9, 2))
End Sub
Private Function ReceiveData() As String '返回V存储器区数据
Dim FGetData As String
Dim t1 As Long
Dim av As Variant
Dim i As Integer
Dim ReDataLen As Integer
FGetData = ""
t1 = GetTickCount() '取时间,做延时用
Do '循环等待接收数据
DoEvents
If MSComm1.InBufferCount > 0 Then '串口有数据了
ReDataLen = MSComm1.InBufferCount '取数据长度 字串9
av = MSComm1.Input '将串口数据取出来
For i = 0 To ReDataLen - 1
FGetData = FGetData & Right("00" & Hex(av(i)), 2)
本文关键字:程序 PLC入门,plc技术 - PLC入门
上一篇:AB控制网应用一例