当前位置:编程学习 > VB >>

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删除数据库

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,