wincc读取串口为什么读不完一贞数据?

已锁定

小仙女

  • 帖子

    23
  • 精华

    0
  • 被关注

    0

论坛等级:新手

注册时间:2008-10-06

普通 普通 如何晋级?

wincc读取串口为什么读不完一贞数据?

921

3

2008-10-21 14:05:34

我用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
wincc读取串口为什么读不完一贞数据? 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32918条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。