求vb代码解释?

[复制链接]
查看11 | 回复1 | 2011-6-24 01:03:33 | 显示全部楼层 |阅读模式
PrivateSubPresureMSComm_OnComm()
DimBuf$
DimInbyte()AsByte
Dimtemp$

SelectCasePresureMSComm.CommEvent
CasecomEvReceive
Inbyte=PresureMSComm.Input
Fori=LBound(Inbyte)ToUBound(Inbyte)
Buf=BufHex(Inbyte(i))Chr(32)
Nexti
Buf=Mid(Buf,9,4)

\'将16进制数据转换成10进制数值
IfLen(Trim(Mid(Buf,1,2)))=1Then
IfLen(Trim(Mid(Buf,3,2)))=1Then
Buf=Val(\"defds123H\"defds123Str(\"0\")defds123Mid(Buf,1,2)defds123Str(\"0\")defds123Mid(Buf,3,2))
Else
Buf=Val(\"defds123H\"defds123Str(\"0\")defds123Mid(Buf,1,2)defds123Mid(Buf,3,1))
EndIf
Else
IfLen(Trim(Mid(Buf,3,2)))=1Then
Buf=Val(\"defds123H\"defds123Mid(Buf,1,2)defds123Str(\"0\")defds123Mid(Buf,3,2))
Else
Buf=Val(\"defds123H\"defds123Mid(Buf,1,2)defds123Mid(Buf,3,2))
EndIf
EndIf

temp=Val(Buf)

Text1.Text=Format$(temp*0.01,\"0.00\")

CasecomEvSend
EndSelect
EndSub
回复

使用道具 举报

千问 | 2011-6-24 01:03:33 | 显示全部楼层
PrivateSubPresureMSComm_OnComm()
DimBuf$
DimInbyte()AsByte
Dimtemp$
\'上面的定义变量就不用解释了吧?
SelectCasePresureMSComm.CommEvent选择结构
CasecomEvReceive如果事件为接受到串口数据
Inbyte=PresureMSComm.Input读取数据内容到字节数组inbyte
Fori=LBound(Inbyte)ToUBound(Inbyte)从字节数组下标最小到下标最大循环
Buf=BufHex(Inbyte(i))Chr(32)把每一个字节的内容转换成16进制字符串表示且加上空格,合成到Buf字符串中
Nexti
Buf=Mid(Buf,9,4)从Buf字符串第九个字符开始,顺序取4个字符【中文字与英文字均算一个】

\'将16进制数据转换成10进制数值【这个已经有解释了】
IfLen(Trim(Mid(Buf,1,2)))=1Then
IfLen(Trim(Mid(Buf,3,2)))=1Then
Buf=Val(\"defds123H\"defds123Str(\"0\")defds123Mid(Buf,1,2)defds123Str(\"0\")defds123Mid(Buf,3,2))
Else
Buf=Val(\"defds123H\"defds123Str(\"0\")defds123Mid(Buf,1,2)defds123Mid(Buf,3,1))
EndIf
Else
IfLen(Trim(Mid(Buf,3,2)))=1Then
Buf=Val(\"defds123H\"defds123Mid(Buf,1,2)defds123Str(\"0\")defds123Mid(Buf,3,2))
Else
Buf=Val(\"defds123H\"defds123Mid(Buf,1,2)defds123Mid(Buf,3,2))
EndIf
EndIf

temp=Val(Buf)将数字字符串转换成数值保存在temp中

Text1.Text=Format$(temp*0.01,\"0.00\")显示在text1文本框中

CasecomEvSend
EndSelect
EndSub
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行