Sub OnClick(Byval Item)
#language "vbscript"
Dim flag
flag = False '初始值为false,表示tag1为0
Sub Button1_OnClick()
Dim result
If flag Then
result = MsgBox("是否确认此操作?", vbYesNo, "提示")
If result = vbYes Then
SetTagVal "tag1", 0
flag = False '改变标志位的值
End If
Else
result = MsgBox("是否确认此操作?", vbYesNo, "提示")
If result = vbYes Then
SetTagVal "tag1", 1
flag = True '改变标志位的值
End If
End If
End Sub
#End language "vbscript"
End Sub
详细讲些下这段程序,比如#language "vbscript"是什么意思,为什么编译时会报错:缺少语句(5)#language "vbscript"
Sub OnClick(Byval Item)
#language "vbscript"
Dim flag
flag = False '初始值为false,表示tag1为0
Sub Button1_OnClick()
Dim result
If flag Then
result = MsgBox("是否确认此操作?", vbYesNo, "提示")
If result = vbYes Then
SetTagVal "tag1", 0
flag = False '改变标志位的值
End If
Else
result = MsgBox("是否确认此操作?", vbYesNo, "提示")
If result = vbYes Then
SetTagVal "tag1", 1
flag = True '改变标志位的值
End If
End If
End Sub
#End language "vbscript"
End Sub
详细讲些下这段程序,比如#language "vbscript"是什么意思,为什么编译时会报错:缺少语句(5)#language "vbscript"
我要当反贼 发表于 2023-04-10 14:41
Sub OnClick(Byval Item)
#language "vbscript"
Dim f ...
这是一个WINCC VBS脚本,可实现按下按钮控制一个二进制变量tag1。当按下按钮时,弹出一个对话框,询问“是否确认此操作”,有“是”、“否”两个选项。若选中“是”,则将二进制变量tag1置1,并关闭对话框。若选中“否”,则不作任何操作,关闭对话框。再次按下按钮时,又会弹出对话框,若选中“是”,则将二进制变量tag1置0。
#language "vbscript"表示这段程序的开头是VBS脚本代码。#End language "vbscript"标志着VBS脚本的结束。
在这段程序中,Sub OnClick(ByVal Item)语句定义了一个OnClick子过程,指定了该过程的名称和参数。程序中flag表示标志位,初始值为false,表示tag1为0。当flag为true时,意味着上一次设置了tag1为1,此时按下按钮应该设置tag1为0。反之,当flag为false时,按下按钮应该设置tag1为1。接着程序进入Button1_OnClick()子过程,当flag为true时先弹出对话框,询问用户是否对tag1进行操作;当flag为false时同样弹出对话框,继续询问用户是否对tag1进行操作。根据用户选择的不同,程序使用SetTagVal方法将tag1值改变,并将flag的值修改为相应的状态,以便下一次按钮按下时使用。
编译时报错:“缺少语句(5)”,可能是因为代码中存在不符合语法要求的错误。推荐对照以上程序检查代码是否完整、格式是否正确,特别是检查"End Sub"语句是否在已有语句后出现。
使用WINCC c脚本 写一段程序,要求如下:
1.WINCC版本WINCC7.4SP1。
2.使用一个按钮控制一个二进制变量tag1,按下按钮时,弹出一个对话框”是否确认此操作,有’是否‘两个选项,点击’是‘则二进制变量tag1置1,同时对话框关闭,点’否‘则tag1不动作,对话框关闭。再次按下这个按钮时,继续弹出一个对话框”是否确认此操作,点击’是‘则二进制变量tag1置0,同时对话框关闭,点’否‘则tag1不动作。
我要当反贼 发表于 2023-04-10 14:49
使用WINCC c脚本 写一段程序,要求如下:
1.WINCC版本W ...
下面是使用WINCC c脚本实现的程序:
void Button1_Click()
{
static bool flag = false; // 静态变量,用于记录tag1当前值
if (flag) {
if (MessageBox("是否确认此操作?", "提示", MB_YESNO) == IDYES) {
SetTagVal("tag1", 0);
flag = false; // tag1置0,标志位设置为false
}
} else {
if (MessageBox("是否确认此操作?", "提示", MB_YESNO) == IDYES) {
SetTagVal("tag1", 1);
flag = true; // tag1置1,标志位设置为true
}
}
}
解释一下代码:
1. 首先声明一个静态变量`flag`,用于记录tag1当前的值。
2. 按钮按下后触发`Button1_Click()`函数。
3. 判断标志位`flag`是否为true。如果是true,说明上一次操作是将tag1置为1,需要弹出对话框询问是否将tag1置为0。否则,说明上一次操作是将tag1置为0,需要弹出对话框询问是否将tag1置为1。
4. 使用`MessageBox()`函数弹出对话框,询问是否确认操作。如果用户选择“是”,则调用`SetTagVal()`函数设置tag1的值,并更新标志位`flag`的值。如果用户选择“否”,则什么也不做。
注意:使用WINCC c脚本时,需要在WINCC的“属性”窗口中将“脚本语言”设置为“C/C++”。
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
void Button1_Click()
{
static bool flag = false; // 静态变量,用于记录tag1当前值
if (flag) {
if (MessageBox("是否确认此操作?", "提示", MB_YESNO) == IDYES) {
SetTagVal("tag1", 0);
flag = false; // tag1置0,标志位设置为false
}
} else {
if (MessageBox("是否确认此操作?","提示", MB_YESNO) == IDYES) {
SetTagVal("tag1", 1);
flag = true; // tag1置1,标志位设置为true
}
}
}}
这段程序编译时有13个错误,为什么
我要当反贼 发表于 2023-04-10 15:01
#include "apdefap.h"
void OnClick(char* lpszPictur ...
这段程序编译时有13个错误,可能是因为缺少一些头文件或库文件。请确认是否已经正确引入相关头文件和库文件,并检查代码中是否存在语法错误或拼写错误。
另外,在WINCC C脚本中,不需要声明OnClick函数,可以直接在Button1_Click函数中编写代码实现所需功能。
还有没有别的vbs脚本方案,上述vbs脚本我一直编译不过去
我要当反贼 发表于 2023-04-10 15:35
还有没有别的vbs脚本方案,上述vbs脚本我一直编译不过 ...
下面是一个使用 WinCC VBS 脚本实现的程序,可以实现类似的功能:
Sub Button1_OnClick()
Dim tagValue
tagValue = GetTagValue("tag1")
If tagValue Then
If MsgBox("是否确认此操作?", vbYesNo, "提示") = vbYes Then
SetTagValue "tag1", 0
End If
Else
If MsgBox("是否确认此操作?", vbYesNo, "提示") = vbYes Then
SetTagValue "tag1", 1
End If
End If
End Sub
请注意,这个脚本还需要在 WinCC 中添加一个名为 tag1 的二进制标签来完整实现该功能。
Sub Button1_OnClick()
Dim tagValue
tagValue = GetTagValue("tag1")
If tagValue Then
If MsgBox("是否确认此操作?", vbYesNo, "提示") = vbYes Then
SetTagValue "tag1", 0
End If
Else
If MsgBox("是否确认此操作?", vbYesNo, "提示") = vbYes Then
SetTagValue "tag1", 1
End If
End If
End Sub
错误:Sub Button1_OnClick()存在语法错误