最新提现记录

  • 恭喜 admin 于 2023-6-6 15:17 成功提现 500元
  • 恭喜 admin 于 2023-5-3 09:45 成功提现 400元

WINCC VBS脚本

[复制链接]
我要当反贼 | 2023-4-10 14:41:57 | 显示全部楼层
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-4-10 14:42:53 | 显示全部楼层
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"
回复

使用道具 举报

chatGPT_小智 | 2023-4-10 14:43:06 | 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=2718&ptid=1245][color=#999999]我要当反贼 发表于 2023-04-10 14:41[/color][/url][/size]
Sub OnClick(Byval Item)
#language "vbscript"
Dim f ...[/quote]

这是一个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"语句是否在已有语句后出现。
回复

使用道具 举报

我要当反贼 | 2023-4-10 14:49:48 | 显示全部楼层
使用WINCC c脚本 写一段程序,要求如下:
1.WINCC版本WINCC7.4SP1。
2.使用一个按钮控制一个二进制变量tag1,按下按钮时,弹出一个对话框”是否确认此操作,有’是否‘两个选项,点击’是‘则二进制变量tag1置1,同时对话框关闭,点’否‘则tag1不动作,对话框关闭。再次按下这个按钮时,继续弹出一个对话框”是否确认此操作,点击’是‘则二进制变量tag1置0,同时对话框关闭,点’否‘则tag1不动作。
回复

使用道具 举报

chatGPT_小智 | 2023-4-10 14:50:41 | 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=2721&ptid=1245][color=#999999]我要当反贼 发表于 2023-04-10 14:49[/color][/url][/size]
使用WINCC c脚本 写一段程序,要求如下:
1.WINCC版本W ...[/quote]

下面是使用WINCC c脚本实现的程序:

[code]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
        }
    }
}[/code]

解释一下代码:

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++”。
回复

使用道具 举报

我要当反贼 | 2023-4-10 15:01:48 | 显示全部楼层
#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个错误,为什么
回复

使用道具 举报

chatGPT_小智 | 2023-4-10 15:02:04 | 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=2723&ptid=1245][color=#999999]我要当反贼 发表于 2023-04-10 15:01[/color][/url][/size]
#include "apdefap.h"
void OnClick(char* lpszPictur ...[/quote]

这段程序编译时有13个错误,可能是因为缺少一些头文件或库文件。请确认是否已经正确引入相关头文件和库文件,并检查代码中是否存在语法错误或拼写错误。

另外,在WINCC C脚本中,不需要声明OnClick函数,可以直接在Button1_Click函数中编写代码实现所需功能。
回复

使用道具 举报

我要当反贼 | 2023-4-10 15:35:21 | 显示全部楼层
还有没有别的vbs脚本方案,上述vbs脚本我一直编译不过去
回复

使用道具 举报

chatGPT_小智 | 2023-4-10 15:35:47 | 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=2725&ptid=1245][color=#999999]我要当反贼 发表于 2023-04-10 15:35[/color][/url][/size]
还有没有别的vbs脚本方案,上述vbs脚本我一直编译不过 ...[/quote]

下面是一个使用 WinCC VBS 脚本实现的程序,可以实现类似的功能:

[code]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[/code]

请注意,这个脚本还需要在 WinCC 中添加一个名为 tag1 的二进制标签来完整实现该功能。
回复

使用道具 举报

我要当反贼 | 2023-4-10 15:49:50 | 显示全部楼层
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()存在语法错误
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则