发表于:2016/9/1 5:49:35
#0楼
用VB6.0 写数据到PLC中过程中,调试提示 LRC = LRC(aa)中的“aa”数据类型不正确,请教大咖,我错在哪里?
Dim smsg As String
Dim aa As String
Dim a1 As String
stx = ":" '起始字符为冒号
a = Right(Text11.Text, Len(Text11.Text) - 1) 'a为需要写入寄存器的数据
If Len(a) >= 0 Then '如果写入寄存器的数值大于等于零
If Mid(a, 1) = "" Then '如果写入的数值字符的第一位是空格
MsgBox ("请输入数值!") '则提示请输入数值!
Text1.SetFocus '光标移至文本框
Text1.SelStart = 1 '光标在文本框第二位闪烁
Exit Sub
b1 = Hex(a) '那么,直接将输入的数据转换为十六进制数
If Len(b1) = 1 Then '如果输入一位十六进制数
a1 = "000" + b1 '那么,写入的数值为000加上输入的一位十六进制数
Else
If Len(b1) = 2 Then '如果输入的数据长度为2
a1 = "00" + b1 '那么,写入的数值为00加上输入的两位十六进制数
Else
If Len(b1) = 3 Then '如果输入的数据长度为3
a1 = "0" + b1 '那么写入的数值为0加上输入的一位十六进制数
Else
If Len(b1) = 4 Then '如果输入的数据长度为4
a1 = b1 '那么写入的数值为输入的数据
End If
End If
End If
End If
End If
aa = "0106" + "09A9" + a1 'PLC站号01 命令06(写入) 寄存器D地址09A9 数据a1
LRC = LRC(aa) '计算lrc校验值
If Len(LRC) = 1 Then '如果lrc校验值为一位
LRC = "0" + LRC '则lrc校验值补零
Else
LRC = LRC '否则校验值为计算值
End If
Dim smsg As String
Dim aa As String
Dim a1 As String
stx = ":" '起始字符为冒号
a = Right(Text11.Text, Len(Text11.Text) - 1) 'a为需要写入寄存器的数据
If Len(a) >= 0 Then '如果写入寄存器的数值大于等于零
If Mid(a, 1) = "" Then '如果写入的数值字符的第一位是空格
MsgBox ("请输入数值!") '则提示请输入数值!
Text1.SetFocus '光标移至文本框
Text1.SelStart = 1 '光标在文本框第二位闪烁
Exit Sub
b1 = Hex(a) '那么,直接将输入的数据转换为十六进制数
If Len(b1) = 1 Then '如果输入一位十六进制数
a1 = "000" + b1 '那么,写入的数值为000加上输入的一位十六进制数
Else
If Len(b1) = 2 Then '如果输入的数据长度为2
a1 = "00" + b1 '那么,写入的数值为00加上输入的两位十六进制数
Else
If Len(b1) = 3 Then '如果输入的数据长度为3
a1 = "0" + b1 '那么写入的数值为0加上输入的一位十六进制数
Else
If Len(b1) = 4 Then '如果输入的数据长度为4
a1 = b1 '那么写入的数值为输入的数据
End If
End If
End If
End If
End If
aa = "0106" + "09A9" + a1 'PLC站号01 命令06(写入) 寄存器D地址09A9 数据a1
LRC = LRC(aa) '计算lrc校验值
If Len(LRC) = 1 Then '如果lrc校验值为一位
LRC = "0" + LRC '则lrc校验值补零
Else
LRC = LRC '否则校验值为计算值
End If