vb 程序 代码有几个句不懂 请大家帮看看
Private Sub cmdSendHex_Click() '16进制发送
Dim sj() As Byte
Dim sj_Txt As String
Dim i As Integer
sj_Txt = TxtSend
If Len(TxtSend) Mod 2 = 0 And Len(TxtSend) <> 0 Then
ReDim sj(Len(sj_Txt) / 2 - 1)
For i = 0 To Len(sj_Txt) - 1 Step 2
sj(i / 2) = Val("&H" & Mid(sj_Txt, i + 1, 2))
Next
If MSComm1.PortOpen = True Then
MSComm1.Output = sj
Else
MSComm1.PortOpen = True
Shape1.FillColor = vbGreen
MSComm1.Output = sj
End If
-------------------------------------------------------------------------------------
这里的
If Len(TxtSend) Mod 2 = 0 And Len(TxtSend) <> 0 Then
ReDim sj(Len(sj_Txt) / 2 - 1)
For i = 0 To Len(sj_Txt) - 1 Step 2
sj(i / 2) = Val("&H" & Mid(sj_Txt, i + 1, 2))
每行 都什么意思呀
追问:原来是发0203010006接收020401000007 现在我想大02 03 01 00 06接收02 04 01 00 00 07 应该怎么改呀 应该改这句吧 sj(i / 2) = Val(" &H" & Mid(sj_Txt, i + 1, 2)) 我刚接触vb不久 不知道怎么改谢谢了原来是发0203010006接收020401000007 现在我想把02 03 01 00 06接收02 04 01 00 00 07 应该怎么改呀 应该改这句吧 sj(i / 2) = Val(" &H" & Mid(sj_Txt, i + 1, 2)) 我刚接触vb不久 不知道怎么改谢谢了
答案:首先你的知道len,mod,redim这些函数的作用
If Len(TxtSend) Mod 2 = 0 And Len(TxtSend) <> 0 Then
Len(TxtSend) 是算TxtSend的字符串长度,MOD是取余;<>是不等于
例如len("abcd”)=4; 5mod2=1
那么这句的意思你应该知道了吧
ReDim sj(Len(sj_Txt) / 2 - 1)
ReDim是进行重新赋值。也就将sj重新赋值下,这也知道了吧
For i = 0 To Len(sj_Txt) - 1 Step 2
sj(i / 2) = Val("&H" & Mid(sj_Txt, i + 1, 2))
next
这句就是一个循环语句了Len(sj_Txt)现在应该知道了,step2 也就是不断加2一直到Len(sj_Txt)
sj(i / 2) = Val("&H" & Mid(sj_Txt, i + 1, 2))
Mid(sj_Txt, i + 1, 2)是指在sj_Txt中从i+1位开始取2个字符.
例如mid("abcd",2,2)结果"bc"
"&H" 这里的&作用是如果实际字符小于符号位数,字符前不加空格
嗯,这句也差不多理解了吧
就这些,希望对你有帮助
其他:看这个意思是打算输入一些16进制的字符串,发送到串口。
if 语句的意思是判断【输入的字符串是偶数个字符】并且【不是空串】。
下面几行是把这个串中每两个字符组合成一个16进制数字,并保存到sj里面。 如果TxtSend函数返回的字符串的字符个数是2的整数倍数(即能被整除)同时有值(不为空),那么
重定义数组SJ的可用的最大下标为字符个数整除2减1 (即每两个字符放入一个数组元素,数组上标计数起始值默认为0,所以应减1)
从字符串从左向右每次取两个字符转化为16进制放入一个数组元素,循环次数同数组元素个数,所以步进值为2.
上一个:vb的WebBrowser控件怎样避免浏览器脚本错误?
下一个:vb删除数据库