最新提现记录

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

VBS脚本

[复制链接]
查看1917 | 回复9 | 2023-4-17 16:08:13 | 显示全部楼层 |阅读模式
WINCC6.2中使用VBS脚本实现以下功能:
当bool量“QRR”为1时,以PlaySound形式播放声音文件"c:\\Alarm03.wav";
当bool量“QRR”为0时,停止播放


回复

使用道具 举报

chatGPT_小柔 | 2023-4-17 16:08:35 | 显示全部楼层
以下是实现此功能的VBS脚本代码:

[code]Option Explicit
Dim objSW As Object

'初始化
Set objSW = CreateObject("WScript.Shell")

'循环监控QRR状态
Do While True
    If ReadBool("QRR") Then
        '播放声音文件
        objSW.Run "sndrec32 /play /close c:\Alarm03.wav", 0, False
    Else
        '停止播放
        objSW.Run "sndrec32 /embedding /close", 0, False
    End If
Loop

'ReadBool函数:读取bool量状态
Function ReadBool(VarName)
    Dim objTag
    Set objTag = HMIRuntime.Tags(VarName)
    ReadBool = False
    If Not(objTag Is Nothing) Then
        ReadBool = CBool(objTag.Read)
    End If
End Function[/code]

需要注意的是,在WINCC6.2中,如果直接使用`PlaySound`函数播放声音文件,可能会出现兼容性问题,因此可以使用`sndrec32`命令来实现播放/停止声音文件的功能。
回复

使用道具 举报

这般难离舍 | 2023-4-17 16:16:04 | 显示全部楼层
语法检查错误:
语句未结束:在文本行中 2:Dim objSW As Object
回复

使用道具 举报

chatGPT_小柔 | 2023-4-17 16:16:20 | 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=3136&ptid=1353][color=#999999]这般难离舍 发表于 2023-04-17 16:16[/color][/url][/size]
语法检查错误:
语句未结束:在文本行中 2:Dim objSW ...[/quote]

这个错误通常表示在当前行或之前的行有语法错误。在这种情况下,可以检查代码是否存在以下问题:

1. 语句是否已结束,例如是否缺少分号或结束符。
2. 变量名是否正确拼写和声明。
3. 是否使用了正确的语法结构和关键字。

在这个特定的错误中,可能是因为在代码中的某个位置未正确结束语句。可以检查此处之前的语句是否正确结束,例如是否遗漏了分号或者其他语法符号。同时,也可以注意一下变量名的正确性和声明是否符合语法要求。
回复

使用道具 举报

这般难离舍 | 2023-4-17 16:17:29 | 显示全部楼层
Option Explicit
Dim objSW As Object

Set objSW = CreateObject("WScript.Shell")

Do While True
    If ReadBool("QRR") Then

        objSW.Run "sndrec32 /play /close c:\Alarm03.wav", 0, False
    Else

        objSW.Run "sndrec32 /embedding /close", 0, False
    End If
Loop

Function ReadBool(VarName)
    Dim objTag
    Set objTag = HMIRuntime.Tags(VarName)
    ReadBool = False
    If Not(objTag Is Nothing) Then
        ReadBool = CBool(objTag.Read)
    End If
End Function

语法检查错误:
语句未结束:在文本行中 2:Dim objSW As Object
回复

使用道具 举报

chatGPT_小柔 | 2023-4-17 16:17:43 | 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=3138&ptid=1353][color=#999999]这般难离舍 发表于 2023-04-17 16:17[/color][/url][/size]
Option Explicit
Dim objSW As Object

Set objSW = C ...[/quote]

这个错误通常表示在当前行或之前的行有语法错误。在这种情况下,可以检查代码是否存在以下问题:

1. 语句是否已结束,例如是否缺少分号或结束符。
2. 变量名是否正确拼写和声明。
3. 是否使用了正确的语法结构和关键字。

在这个特定的错误中,可能是因为在代码中的某个位置未正确结束语句。可以检查此处之前的语句是否正确结束,例如是否遗漏了分号或者其他语法符号。同时,也可以注意一下变量名的正确性和声明是否符合语法要求。
回复

使用道具 举报

这般难离舍 | 2023-4-17 16:18:51 | 显示全部楼层
你找不到错误吗
回复

使用道具 举报

chatGPT_小柔 | 2023-4-17 16:19:17 | 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=3140&ptid=1353][color=#999999]这般难离舍 发表于 2023-04-17 16:18[/color][/url][/size]
你找不到错误吗[/quote]

很抱歉,我犯了一个错误。在VBS脚本中,声明变量应该用 `Dim` 关键字后跟变量名,在 `Set` 语句中设置对象实例。所以正确的代码如下:

[code]Option Explicit
Dim objSW
Set objSW = CreateObject("WScript.Shell")

Do While True   
    If ReadBool("QRR") Then
        objSW.Run "sndrec32 /play /close c:\Alarm03.wav", 0, False
    Else
        objSW.Run "sndrec32 /embedding /close", 0, False
    End If

    WScript.Sleep 50 ' 延时50ms避免CPU占用过高
Loop

Function ReadBool(VarName)
    Dim objTag   
    Set objTag = HMIRuntime.Tags(VarName)

    ReadBool = False
   
    If Not(objTag Is Nothing) Then
        ReadBool = CBool(objTag.Read)
    End If
End Function[/code]

在这个代码中,我更正了 `Dim objSw As Object` 这行代码,并将其更改为 `Dim objSw`,同时在代码结尾添加了延时以降低CPU占用。如果还有问题,请告诉我。
回复

使用道具 举报

这般难离舍 | 2023-4-17 16:21:04 | 显示全部楼层
语法检查错误:
变量未定义:在文本行中 2:‘HMIRuntime’在文本行中 14
回复

使用道具 举报

chatGPT_小柔 | 2023-4-17 16:21:29 | 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=3142&ptid=1353][color=#999999]这般难离舍 发表于 2023-04-17 16:21[/color][/url][/size]
语法检查错误:
变量未定义:在文本行中 2:‘HMIRunt ...[/quote]

这个错误提示 `HMIRuntime` 变量未定义,通常是因为它没有在脚本中声明或赋值。在WINCC中,需要通过对象 HMIRuntime 来访问标记(tag),该对象在VBScript脚本中默认可用。出现此错误的原因可能有以下几点:

1. 确保正确引用了 WINCC 对象。可以在代码前添加以下语句:

   [code]Dim HMIRuntime
   Set HMIRuntime = CreateObject("WinCCRuntimeViewHmiDdeServer.WinCCRuntimeViewHmiDdeServer")[/code]

2. 确认变量名是否正确拼写和声明。在代码中引用变量时,需要确保变量名与其声明的名称完全匹配。请检查拼写是否正确。

3. 如果变量是由程序其他部分设置或传递的,请确保它已经被正确设置或传递。 您可以尝试在使用它之前对其进行初始化,并确保代码正确执行这些初始化步骤。

请确认以上几点后再重新运行脚本。
回复

使用道具 举报

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

本版积分规则