大家好!
近期项目上一有一台称量设备是串口通信需要接入系统,但只有运行WinCC的电脑才有串口,所以就想着在WinCC上利用MSComm控件来读取串口数据。
根据网卡相关资料,我先注册了MSComm控件,后通过VB程序来打开控件,程序如下:
Sub OnOpen()
Dim objMSComm1, tagConnection
Set objMSComm1 = HMIRuntime.Screens("Home").ScreenItems("MSComm1")
If objMSComm1.PortOpen = False Then
objMSComm1.Commport = 2
objMSComm1.Settings = "9600,N,8,1"
objMSComm1.RThreshold = 1
objMSComm1.SThreshold = 1
objMSComm1.InBufferCount = 0
objMSComm1.InputLen = 0
objMSComm1.PortOpen = True
HMIRuntime.Tags("UA2").Write 88
Else
End If
End Sub
再通过按钮单击事件来发送命令,程序如下:
Sub OnClick(ByVal Item)
Dim MSComm1
Dim SendData
Set MSComm1 = HMIRuntime.Screens("Home").ScreenItems("MSComm1")
If MSComm1.PortOpen = True Then
MSComm1.Output = "SI" & vbCrLf
HMIRuntime.Tags("UA2").Write 5
Else
HMIRuntime.Tags("UA2").Write 10
End If
End Sub
但在测试的程序,发现一个问题,就是当按下发送按钮后,发送指令的程序会执行一次,将命令字符传送到发送缓存区,但数据并没有发从串口发出。当我从主画面切换到其他画面时,数据才从串口发出。这样也就需要切换画面才能发送数据,个人觉得这个情况不正常。所以特此向各位请教。