WINCC的声报警怎么做 点击:2341 | 回复:6



雁306269

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:5帖 | 4回
  • 年度积分:0
  • 历史总积分:19
  • 注册:2005年6月18日
发表于:2005-07-14 18:46:00
楼主
若调用WINCC中的函数,API指的是标准函数还是内部函数,API函数中的PLAYSOUND(),和MESSAGEBEEP(),怎么找不到呢。有请大家帮帮忙!



木道人

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 105回
  • 年度积分:0
  • 历史总积分:345
  • 注册:2002年9月30日
发表于:2005-10-28 16:35:00
1楼
#include "apdefap.h"

int gscAction(void)

{

#pragma code("Winmm.dll")

BOOL WINAPI sndPlaySoundA(char* szWave,DWORD dwFlag);

#pragma code()

DWORD SND_ASYNC=0x0001;

DWORD SND_LOOP=0x0008;

DWORD alarmunack;

LPCMN_ERROR errorunack;

MSRTGetMsgQuit(&alarmunack,errorunack);

if(alarmunack>0)

sndPlaySoundA("C:\WINNT\Media\\ringin.wav",SND_ASYNC|SND_LOOP);

return 1;

}

把这段放在全局脚本中,同时定义触发器的时间为500ms,然后在计算机的启动属性里把全局脚本勾上,运行即可。在新的报警到来的时候,按单个确认后,声音就消失了。这里是针对5.2版本的

如果是6.0的,情况如下:

首先在变量管理器建立一个内部变量alarm_tag,32wei
接上:首先在变量管理器里建立一个内部BOOL变量alarm_tag

然后在全局脚本里加上如下语句:

#include "apdefap.h"



int gscAction(void)



{



DWORD alarmunack;



LPCMN_ERROR errorunack;



MSRTGetMsgQuit(&alarmunack,errorunack);



if(alarmunack>0)

SetTagBit("alarm_tag",TRUE);



return 1;

}

全局脚本的扫描周期改为500ms

然后在HORN里的第二个标签里,左边的变量选择alarm_tag,右边选择一段音乐,中间不需要填写

同样要在计算机的启动属性里把全局脚本给加上,当新的报警到来时,按下单个确认键后,报警消失.
对此问题解决的核心在于,怎样用一个函数去识别一个新到且没有经过确认的消息,消息一来产生报警,而函数MSRTGetMsgQuit(DWORD dw,LPCMN_ERROR lp)正可以实现这样一个功能,它能够识别报警管理器中有多少个没有确认的消息,dw中存放未确认消息的个数,按单个确认后,dw自动减1,直到dw为0。用一个if语句对dw进行判断,在5.2里可以调用WINDOWS操作系统内部的动态函数实现发声,而在6.0里集成有HORN的功能,只需有一个内部变量,既可实现声音报警

arashi

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 5回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2008年3月26日
发表于:2008-04-10 14:27:14
2楼
我是使用kernel32.dll來做警示的....

ranranplay

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 382回
  • 年度积分:0
  • 历史总积分:773
  • 注册:2005年9月27日
发表于:2008-04-16 09:53:45
3楼
看看老帖子。有专门的关于声音报警的帖子

春华★秋实

  • 精华:0帖
  • 求助:0帖
  • 帖子:103帖 | 1038回
  • 年度积分:0
  • 历史总积分:3013
  • 注册:2007年5月17日
发表于:2008-07-18 20:05:43
4楼

学习了,多谢大侠们的帮忙和指导

西城教父

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 68回
  • 年度积分:0
  • 历史总积分:306
  • 注册:2008年3月01日
发表于:2008-07-24 11:03:29
5楼
API是指Windows的函数。

xingjinlu

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 18回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2011-11-28 11:19:45
6楼

哪位你的代码你测试过吗?我编译过了 有错误


热门招聘
相关主题

官方公众号

智造工程师