| 作者 | 主题 |
|---|---|
|
柳絮飘飘 游民 经验值:131 发帖数:48 精华帖:0 |
楼主
主题:关于WINCC串口通讯的讨论
以前也有过好多朋友提到过WINCC串口通讯的问题,但是大家只是进行了讨论,最终也没有形成一种结论性的东西。在这里我想抛砖引玉,再次提出这个问题,希望大家参与讨论。
我最近用VBS做了一套程序,在WINCC中启动画面上加载了控件MSComm和按钮1,按钮1链接了一个VBS鼠标动作,主要是对串口进行初始化。在MSComm中组态了一个oncomm事件,利用事件触发的形式对串口进行读写操作。在按钮1的鼠标事件中我做端口初始化,具体代码如下: Dim objMSComm,tagConnection Set objMSComm=HMIRuntime.Screens("Main").ScreenItems("MSComm") objMSComm.CommPort = 1 objMSComm.Settings = "9600,N,8,1" objMSComm.InBufferSize = 40 objMSComm.OutBufferSize = 7 objMSComm.InputLen = 1 objMSComm.SThreshold = 1 objMSComm.InputMode = comInputModeBinary objMSComm.RThreshold = 1 objMSComm.portopen=True MsgBox "port open" 设置完后我想再弹出一个窗口,说明串口已经打开,初始化完成。我使用个了MsgBox "port open"。可现在的问题是:为什么这个窗口没有打开,也没有弹出port open的提示。不知道是为什么? 哪位做过WINCC的串口通讯,请谈谈你们的看法! |
|
H.L 侠圣 经验值:2881 发帖数:1766 精华帖:9 |
楼
主题:回复:关于WINCC串口通讯的讨论
我最近刚做了一个这样的项目,上次在北京还向城斑,有谁共鸣两位斑竹请教过,以下是打开和关闭串口的代码,通过诊断窗口来调试比较方便,你可以监视到所有的收发信息,不要使用Msgbox来做。其它代码还未来得急整理,整体使用效果还不错。
Sub procedure20 ,打开串口 Dim objMSComm1 Dim tagConnection Set objMSComm1 = HMIRuntime.Screens("Main").ScreenItems("MSComm1") Set tagConnection = HMIRuntime.Tags("Connection") If objMSComm1.PortOpen = False Then objMSComm1.Commport = 1 objMSComm1.Settings = "9600,e,7,1" objMSComm1.InputLen = 0 objMSComm1.PortOpen = True tagConnection.Write(True) HMIRuntime.Trace("Port open." & vbCrLf) Else HMIRuntime.Trace("Port is already opened." & vbCrLf) End If End Sub Sub procedure1() ‘关闭串口 Dim objMSComm1, tagConnection Set objMSComm1 = HMIRuntime.Screens("Main").ScreenItems("MSComm1") Set tagConnection = HMIRuntime.Tags("Connection") If objMSComm1.PortOpen = True Then objMSComm1.PortOpen = False tagConnection.Write(False) HMIRuntime.Trace("Port close." & vbCrLf) End If End Sub |