首页 上一页 1 2 下一页 尾页

续问:声音报警的问题 点击:1982 | 回复:23



Nickleen

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 146回
  • 年度积分:0
  • 历史总积分:186
  • 注册:2007年10月18日
发表于:2007-11-05 15:46:00
楼主
    首先,感谢在上次提问中,给予回答的朋友们.我想再次具体问一些问题:
    在声音报警时,选择是让声音循环播放的.但是需要有人发现报警后,关闭声音.在监控画面上,没有报警的时候,不弹出任何东西,在有报警的时候,需要出现一个喇叭形状的图片或者其他的一些象征声音播放的简略提示,但不需要显示一个播放器.在单击提示的喇叭图片后,能够关闭声音,然后再下次报警的时候,还能继续触发声音文件.
    我采用了一个播放器 然后把它精简了 用多边型只让它显示出来静音的那个图标来,可是报警后,点击了静音后,在下一次的报警的时候却不能触发声音,解决这个问题该怎么办呢?
    希望用一个图标的显示与否决定报警的状态,同时触发声音文件的循环播放,然后有鼠标动作来中断声音文件的播放,在下一次报警能够继续触发声音报警.
    希望winCC达人指点下小弟了,在这里谢谢大家了.
    对于上次的推荐其他软件的朋友,谢谢你的好意,我们公司和西门子公司是合作伙伴,所以公司的项目的设备,西门子有的,都会用西门子的.



Nickleen

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 146回
  • 年度积分:0
  • 历史总积分:186
  • 注册:2007年10月18日
发表于:2007-11-05 16:08:00
1楼
我使用了ranranplay大哥的函数 可是出现的问题如下图 这个问题该如何解决呢?还希望ranranplay大哥给予指点~!
[url=http://hiphotos.baidu.com/zhwcj/pic/item/9eb9bece179bd20f92457edc.jpg]http://hiphotos.baidu.com/zhwcj/pic/item/9eb9bece179bd20f92457edc.jpg[/url] 我使用的是winCC V6.0 SP3亚太版 谢谢大家指点啊

youhm

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 709回
  • 年度积分:0
  • 历史总积分:2593
  • 注册:2005年2月16日
发表于:2007-11-05 22:13:00
2楼
嘿嘿!你的文件路径“\”换作“\\”

youhm

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 709回
  • 年度积分:0
  • 历史总积分:2593
  • 注册:2005年2月16日
发表于:2007-11-05 22:15:00
3楼
还有你的函数没有声明

Nickleen

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 146回
  • 年度积分:0
  • 历史总积分:186
  • 注册:2007年10月18日
发表于:2007-11-06 08:06:00
4楼
请问一下 函数该如何声明呢?

youhm

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 709回
  • 年度积分:0
  • 历史总积分:2593
  • 注册:2005年2月16日
发表于:2007-11-06 12:38:00
5楼
网上搜索的例子

WINCC声音报警程序例子,复制即可用  

//在菜单栏的触发器里选择周期触发250MS

#include "apdefap.h"

int gscAction( void )
{
 #pragma code("winmm.dll")
BOOL   PlaySound(LPCTSTR lpszSound,HMODULE hmodule,DWORD dwsound );//BOOL aa=FALSE;
#pragma code( )
if(GetTagBit("test")==1)
{
PlaySound("c:\\winnt\\Media\\ringout",NULL,8 );
}
return 0; 
}

ranranplay

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 382回
  • 年度积分:0
  • 历史总积分:773
  • 注册:2005年9月27日
发表于:2007-11-06 13:25:00
6楼
    注:我的是 sndPlaySoundA 而不是 PlaySoundA
关于windows API函数sndPlaySoundA(char* szWave,DWORD dwFlag); 

char* szWave  是声音文件的路径
DWORD dwFlag 是标识常量
 
0x0:播放WAV 文件,播放完毕后将控制转移回你的应用程序中。是不会一直响个不停的。
0x1:播放WAV文件,然后将控制立即转移回你的应用程序中,而不管对WAV文件的播放是否结束。
0x8:循环播放WAV 文件。

一般我们要让声音一直响下去的话:
sndPlaySoundA("d:\\ringout.wav",0x1|0x8);
停止的时候
sndPlaySoundA(NULL,0x0); 

ranranplay

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 382回
  • 年度积分:0
  • 历史总积分:773
  • 注册:2005年9月27日
发表于:2007-11-06 13:33:00
7楼
我的代码不是那样用,我那里有其他的项目函数都是自建
GetProjectPath();
PlaySound();
给你重写个代码:
#pragma code("Winmm.dll") 
BOOL WINAPI sndPlaySoundA(char* szWave,DWORD dwFlag); 
#pragma code() 
DWORD SND_ASYNC=0x0001; 
DWORD SND_LOOP=0x0008; 


//循环播放
                 sndPlaySoundA("c:\\win2003\\system32\\ALSNDMGR.WAV",0X1|0X8);
你把上面的代码粘贴上去就行了。 

ranranplay

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 382回
  • 年度积分:0
  • 历史总积分:773
  • 注册:2005年9月27日
发表于:2007-11-06 13:38:00
8楼
因为我考虑到可移植性,所以我上次给出的代码用的是相对路径。如果你用直接地址就简单的多。

ranranplay

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 382回
  • 年度积分:0
  • 历史总积分:773
  • 注册:2005年9月27日
发表于:2007-11-06 13:40:00
9楼
注意:0x1|0x8 是C里面的十六进制写法是“x”不是“*”

ranranplay

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 382回
  • 年度积分:0
  • 历史总积分:773
  • 注册:2005年9月27日
发表于:2007-11-06 13:53:00
10楼
建个变量(Bit)“AlarmSound”有报警的时候为“1”,没有报警的时候“0”
写个全局脚本触发器里选择变量触发“AlarmSound”
写入下代码:
int gscAction( void )
{
#pragma code("Winmm.dll") 
BOOL WINAPI sndPlaySoundA(char* szWave,DWORD dwFlag); 
#pragma code() 
if(GetTagBit("AlarmSound")!=0)
      sndPlaySoundA("c:\\win2003\\system32\\ALSNDMGR.WAV",0X1|0X8);
else
      sndPlaySoundA(NULL,0X0);   

return 0; 
}

ranranplay

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 382回
  • 年度积分:0
  • 历史总积分:773
  • 注册:2005年9月27日
发表于:2007-11-06 14:02:00
11楼

ranranplay

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 382回
  • 年度积分:0
  • 历史总积分:773
  • 注册:2005年9月27日
发表于:2007-11-06 14:04:00
12楼

ranranplay

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 382回
  • 年度积分:0
  • 历史总积分:773
  • 注册:2005年9月27日
发表于:2007-11-06 14:05:00
13楼
以上是我项目里的代码

Nickleen

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 146回
  • 年度积分:0
  • 历史总积分:186
  • 注册:2007年10月18日
发表于:2007-11-06 14:46:00
14楼
感谢ranranplay的代码 谢谢你 我去做下看看 要有疑问还要请教老兄你了啊

Nickleen

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 146回
  • 年度积分:0
  • 历史总积分:186
  • 注册:2007年10月18日
发表于:2007-11-06 15:09:00
15楼
对于全局脚本 触发声音了 在报警状态下 可否用按钮中断报警的声音 而在下一次的报警出现的时候 还能自动触发声音报警

ranranplay

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 382回
  • 年度积分:0
  • 历史总积分:773
  • 注册:2005年9月27日
发表于:2007-11-06 15:20:00
16楼
可以

发送一个

sndPlaySoundA(NULL,0X0);   就行了



Nickleen

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 146回
  • 年度积分:0
  • 历史总积分:186
  • 注册:2007年10月18日
发表于:2007-11-06 15:26:00
17楼
如果用按钮动作该怎么写代码?麻烦指点一下了 我不会C语言的 谢谢了

ranranplay

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 382回
  • 年度积分:0
  • 历史总积分:773
  • 注册:2005年9月27日
发表于:2007-11-06 16:02:00
18楼
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma code("Winmm.dll") 
BOOL WINAPI sndPlaySoundA(char* szWave,DWORD dwFlag); 
#pragma code() 
sndPlaySoundA(NULL,0X0);   
}

rf

  • 精华:1帖
  • 求助:2帖
  • 帖子:8帖 | 55回
  • 年度积分:0
  • 历史总积分:355
  • 注册:2003年5月29日
发表于:2007-11-06 21:42:00
19楼
最近新开的调查网站,裏面的调查都是4$到6$ 


这是个调查网,但赚取的美金更多也更方便! 

一、点击此链接: 

注册地址: 
http://www.AWSurveys.com/HomeMain.cfm?RefID=zhangxbrf 
二、点击最右方图标“get a free account" 

UserName填入)您的注册用户名 

Password: (填入)密码 

First Name: (填入)您的名(用拼音) 

Last Name填入)您的姓(用拼音) 

Gender选择)您的性别,male(男),female(女) 

Age选择) 

Email Address: (填入)您的电子邮箱地址 

By Typing in the image code below you are Agreeing to our T.O.S 

输入验证码 

点击提交即可 

三、参加调查: 

1、点击"login" 

2、填写您的用户名及密码,提交。 

3、拉下页面,看见“The Following Surveys are Available:” 

点击进入其中一个调查页面,每个点击项目都告示了此调查付给的酬金,有的一次是6美金,有的是4美金一次,也有1美金的。 

4、点击进入后按照要求点击其中一个页面,打开,然后在原页面点击下空格中填写您的感受,填什么无所谓,比如写“that’s good",按照要求打开两个广告页面,并填写好您的评论后,即可点击回到原页面,拉到下方即可看见您此次参加调查后所获得的酬金。 

5、至少达到75美金才支付,很快的,我只参加了一次就获得了20美金。 


6、帐户余额大於$75时,点击Redeem Money申请支付,没到时不要点击。 


7、同样是paypal,如果没有该帐户请尽快申请一

Nickleen

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 146回
  • 年度积分:0
  • 历史总积分:186
  • 注册:2007年10月18日
发表于:2007-11-07 09:21:00
20楼
大哥是强人 以后有问题找你了 哈哈 谢谢指点呀~~!马上去实践一下~~!!!

热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页