在VB里写了一个脚本,到WinCC下可能需要变化下,请指导下,vb脚本如下:
Dim buf(11) As Byte
buf(0) = &H1
buf(1) = &H0
buf(2) = &H0
buf(3) = &H0
buf(4) = &H0
buf(5) = &H6
buf(6) = &H1
buf(7) = &H4
buf(8) = &H0
buf(9) = &H40
buf(10) = &H0
buf(11) = &H3
sockClient.SendData buf
这是给一个winsock控件发的命令,请问在VBS下应该如何编写?谢谢了。
问题补充:
我重新编写了一段程序,如下:
Dim sock
Dim buf (11)
buf(0) = &H1
buf(1) = &H0
buf(2) = &H0
buf(3) = &H0
buf(4) = &H0
buf(5) = &H6
buf(6) = &H1
buf(7) = &H4
buf(8) = &H0
buf(9) = &H40
buf(10) = &H0
buf(11) = &H3
Set sock = HMIRuntime.ActiveScreen.ScreenItems.Item("sockclient")
sock.senddata buf
是写在按钮的脚本里,但是按下发现没有执行,与网桥没有数据交换,但是在VB里是可以的,与winsock的连接也已经建立。 我怎么才能看到BUF的值到底是多少呢?应该怎么设置下?请指教~
我的用的TCP转MODBUS,网桥是moxa的3180,下边有一个设备是通过mobus协议过来的,网桥是从站,我现在就是要通过网桥与modbus设备进行通讯。连接已经正常,winsock的status值是7,代表连接已建立。
------------------------------------------------------
请问你确定WinCC的VBS下Winsock控件不能发送字节数组吗?那在C语言下Winsock控件可以发送字节数组吗?还有怎么判断VBS下不能发送字节数组的呢?有资料可以查询吗?
最佳答案
变化不大
1、VBS不能声明类型
Dim buf(11) As Byte >> Dim buf(11)
2、使用ScreenItems获取控件
dim sockClient
set sockClient = ScreenItems("WinSockControl")
sockClient.xxxx
-----------------------------
楼主你是用TCP还是UDP啊?谁是Server谁时Client?
要先保证连接正常再进行收发数据。
-----------------------------
对了,WinCC VBS的Winsock是无法发送字节数组的,这点跟MsComm控件有点像,这是个麻烦事,我觉得还是用VB编写好了,再通过Ole写入WinCC即可,还可节省WinCC资源。
提问者对于答案的评价:
WinCC不能通过自带的Winsock控件发送数组,这给用户带来了很大的麻烦,希望以后能改进。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc274610.html