wincc串口通信終于弄出來(lái)了,弄了這么久,總算是弄出來(lái)了,心里一個(gè)勁的高興啊。發(fā)表在下面,給大家參考一下。
初始化程序
MScomm.commport=1
MScomm.settings="9600,n,8,1"
MScomm.inputmode=1
MScomm.RThreshold = 1
MScomm.inbuffercount=0
MScomm.portopen=True
下面為接收串口數(shù)據(jù)
Sub OnComm(ByVal Item)
Dim indata
If item.InBufferCount>0 Then
indata = Item.Input
HMIRuntime.Tags("Serial_Data").Write indata
Item.InBufferCount = 0
End If
End Sub
注:這樣不能接收多個(gè)字節(jié),如果要接收多個(gè)字節(jié),可將內(nèi)部變量Serial_Data設(shè)置成文本變量,然后再把得到的數(shù)據(jù)想辦法拆分出來(lái)(用left,right,mid函數(shù)試一下吧)
下面為發(fā)送多個(gè)字節(jié)
Function Output_Trigger(Byval Item)
Dim cnvt
Dim Temp(7)
Temp(0) = &h11
Temp(1) = &h22
Temp(2) = &h33
Temp(3) = &h44
Temp(4) = &h55
Temp(5) = &h66
Temp(6) = &h77
Temp(7) = &h88
Set cnvt = CreateObject("ADs.ArrayConvert")
Dim v,v1,v2
v = Temp
v1 = cnvt.CvOctetStr2vHexStr(v)
v2 = cnvt.CvHexStr2vOctetStr(v1)
Item.Output = v2
End Function
VDS.DLL的下載地址:http://support.microsoft.com/kb/250344/en-us
http://support.microsoft.com/kb/250344/zh-cn
注:其實(shí)用VBS做這個(gè)Wincc的串口通信是很不方便的,還不如用VB做串口通信部分,把處理好的數(shù)據(jù)直接發(fā)給Wincc??刹榭矗?a >http://hi.baidu.com/andyzhou502/blog/item/35ae130e94054d216159f38f.html