我用WINCC读仪表发来的数据(串口),仪表在接收到指令后发送25个字节的十六进制数据.但是我用MSCOMM控件读取时,却得不到完整的25个字节.我是通过按钮来发送指令的.需要点多次按钮才能接收完毕完整的25个字节.请问各位大侠:是不是事件驱动有问题?每次按下发送按钮时,收到的数据都不一样长.我对inputlen=25也不行;收不到完整的数据.该如何解决?
具体代码如下:Dim text1
Dim text2
Dim text3
Dim text4
Set text4=ScreenItems("控件5")
Set text3=ScreenItems("控件4")
Set text1=ScreenItems("控件2")
Set text2=ScreenItems("控件3")
HMIRuntime.Trace "OnComm...." & CStr(Now())& vbCrLf
'If item.CommEvent=2 Then
Dim intInputLen
intInputLen = item.InBufferCount
' If intInputLen<1 Then Exit Sub
'End If
Dim ADS
Set ADS = CreateObject("ADs.ArrayConvert")
Dim CharV
Dim OctV
Dim HexV
Dim tex
tex=" "
Item.InputLen =1024
CharV=Item.Input
' Do
' DoEvents
' Loop Until .InBufferCount = 25
'HMIRuntime.Trace "CharV is :" & CStr(CharV) & vbCrLf
OctV=ads.CvStr2vOctetStr(CharV)
'MsgBox("yes5")
'text1.Text =CStr(OctV)
'MsgBox("yes6")
' HMIRuntime.Trace "OctV is :" & CStr(OctV) & vbCrLf
'MsgBox("yes7")
HexV=ads.CvOctetStr2vHexStr(OctV)
MsgBox("yes8")
tex=tex&CStr(HexV)
text2.Text =tex
MsgBox("yes9")
text4.Text =Len(HexV)
'HMIRuntime.Trace "HexV is :" & CStr(HexV) & vbCrLf
'End If
If Len(HexV)=10 Then
Dim str(4),strFloat
str(0)=Mid(HexV,7,2)
str(1)=Mid(HexV,5,2)
str(2)=Mid(HexV,3,2)
str(3)=Mid(HexV,1,2)
str(4)=Mid(HexV,9,2)
strFloat=str(0)&str(1)&str(2)&str(3)&"."&str(4)
HMIRuntime.Trace "strFloat is :" & CStr(strFloat) & vbCrLf
Dim vFloat
vFloat=CDbl(strFloat)
text3.Text =CStr(vFloat)
HMIRuntime.Trace "vFloat is :" & CStr(vFloat) & vbCrLf
End If