91黄动漫 I 欧美 日韩 国产 成人 在线 I a级成人毛片 I 农村黄色片 I 男生捅女生的肌肌 I 精品99一区二区三区 I 妃光莉av I 日日夜夜操操 I 性中国古装videossex I 久久不卡av I 美女高潮动态图 I 极品美女开粉嫩精品 I 牛牛精品一区二区 I 91精品福利视频 I 成人刺激视频 I 91国内精品视频 I 中国一级特黄毛片大片 I 校长狠狠挺进校花体内小说 I 欧美激情黄色片 I 欧美久久久一区 I 爱豆国产剧免费观看大全剧苏畅 I 麻豆国产人妻欲求不满谁演的 I 亚洲一区二区在线免费观看视频 I 国产超碰av人人做人人爽 I 精品国产第一国产综合精品 I 久久免费看av I 欧美一区二区三区白人 I 国产精品夫妻激情 I 校花被肉干高h潮不断 I 欧美最猛黑人xxxx黑人表情 I 国产欧美日韩一区二区搜索 I 极品女神露脸呻吟啪啪 I 人人天天久久 I 亚洲动漫在线 I 日本91福利区 I 五月天 桃色 开心 I av在线免费观看国产 I 男人添女人的免费视频 I 夜夜穞天天穞狠狠穞

龍海兒
關注《電氣外傳》公眾號,知乎,CSDN等同號
級別: 論壇先鋒
精華主題: 0
發帖數量: 376 個
工控威望: 1401 點
下載積分: 1252 分
在線時間: 104(小時)
注冊時間: 2018-04-13
最后登錄: 2026-02-11
查看龍海兒的 主題 / 回貼
樓主  發表于: 2025-07-02 12:35
圖片:
圖片:
圖片:
圖片:
圖片:
1111MicrosoftInternetExplorer402DocumentNotSpecified7.8 磅Normal0如題,聲音報警我們用的很多,但是如何實現差異化的語音報警呢?直接先看圖看效果。
那語音報警都好理解,差異化又具體體現在哪里呢?
因為市面上已經有前輩開發出了語音報警,但是不能靈活單獨的應用到每一條報警上面。比如我只想要一條或者兩條重要信息實現語音播報,其它報警靜默顯示就行。那么通過本例可輕松解決。
特別說明!開發不易,本例所用腳本原件放在文章末尾,小額支持即可下載!感謝理解,歡迎交流。
第一步,打開WinCC創建內部變量(alarmComing)二進制類型與(alarmText)(prevAlarmText1)(prevAlarmText2)三個16位文本類型。(如需要多個報警可多建立兩個Text變量)
第二步,用Win+r輸入services.msc然后找到Windows Audio服務,啟動它(一般都啟動著)。
第三步,把gmsgfunc.fct腳本放到C:\Program Files (x86)\SIEMENS\WinCC\aplib\Alarm中替換掉以前的。
第四步,把Voice腳本vbs放到wincc項目ScriptAct文件夾中。
第五步,打開報警記錄找到想要播報的變量勾選屬性里面觸發動作如圖(不勾選的變量不會播報)。
通過以上操作就可以實現單獨變量的聲音報警,其它變量依然按照普通設置呈現。如果想觸發報警之后一直播報,直到人員點擊消音按鈕才消失。那請看之下進階操作。
將剛才第二步的Voice替換成cycle腳本(注意一定要替換,不可以都保留),然后在報警控件中將事件里面的OnToolbarButtonClicked屬性加上記事本中的c腳本用于取消循環,也可以自己外加按鈕來實現。
記得拷貝進去的每個腳本都打開再次保存一下,否則可能不能發聲。以下是本例用到的腳本,各位也可以再次優化腳本生成更多功能。
更過截圖和腳本鏈接請移步同名公眾號查看

關注《電氣外傳》公眾號,知乎,CSDN等同號
往事如風
科技改變制造
級別: 網絡英雄

精華主題: 0
發帖數量: 12142 個
工控威望: 19950 點
下載積分: 16098 分
在線時間: 2857(小時)
注冊時間: 2013-01-31
最后登錄: 2026-03-01
查看往事如風的 主題 / 回貼
1樓  發表于: 2025-07-05 20:50
  
三人行者必有我師 ,擇其善者而從之
hqokabc
級別: 略有小成
精華主題: 0
發帖數量: 241 個
工控威望: 259 點
下載積分: 980 分
在線時間: 17(小時)
注冊時間: 2025-01-02
最后登錄: 2026-03-05
查看hqokabc的 主題 / 回貼
2樓  發表于: 84天前
全局腳本怎么寫?
qwerty_123
www
級別: 略有小成
精華主題: 0
發帖數量: 191 個
工控威望: 322 點
下載積分: 8718 分
在線時間: 69(小時)
注冊時間: 2010-09-26
最后登錄: 2026-03-06
查看qwerty_123的 主題 / 回貼
3樓  發表于: 83天前
//wincc聲音報警C腳本版,和wincc自身的報警沒有任何關系,所以不要和wincc自帶的報警相關聯
//曾經用于工程中的語音報警,事先將語音先錄好,然后將變量和語音關聯起來

#include "apdefap.h"


//播放聲音的函數聲明
#pragma code("winmm.dll")
VOID WINAPI PlaySoundA(char *,char *,DWORD);
#pragma code()

struct datainfo    //變量名和聲音文件名的對應關系
{
    const char * const tagname;    //變量名
    const char * const soundname;    //聲音文件名
};
struct statusdatainfo        //保存報警變量的狀態信息
{
    int prevStatus;
    int playing;
};
//所有的報警變量和聲音文件名對應關系表
//注意:變量名和文件名要和實際的變量名、文件名完全一致
//注意:聲音文件只支持wav文件
//注意:變量越靠前,則優先級越高,在同時發生多個報警時,優先級最高的聲音優先播放,而且任一時刻只能播放一個聲音
static struct datainfo data[]=  
{
{"www","Windows XP 啟動.wav"},    
{"testalarm","ringin.wav"},
{"qqq","Windows XP 關機.wav"},
{"eee","Windows XP 注銷音.wav"}
};

static struct statusdatainfo  statusdata[sizeof(data)/sizeof(data[0])];
////////////////////////////////////

int gscAction( void )
{
int totalnum=0;    //總的報警變量數量,也等于總的報警聲音數量
int index=0;    //循環變量
int hasfound=0;    //已找到優先級最高的報警變量
char * filename=NULL;    //當前要播放聲音的文件名
char * dirname="D:\\WINDOWS\\Media\\";    //聲音文件存放的目錄
static char * currfilename=NULL;    //當前正在播放聲音的文件名,注意:該變量是靜態變量
static char  FullName[200];    //當前正在播放聲音的文件全名,注意:文件名全名不能太長,該變量是靜態變量
char * ack_name="ack"; //報警確認變量的名字,一次只能確認優先級最高的報警
int ack_status=0;    //當前確認變量的狀態

totalnum=sizeof(data)/sizeof(struct datainfo);    //報警變量的數量
ack_status=GetTagBit(ack_name);

for(index=0;index<totalnum;index++)    //查找當前第一個報警的變量所對應的聲音文件名,搜索的順序決定了優先級
{
    if (statusdata[index].playing)
    {
        statusdata[index].prevStatus=GetTagBit(data[index].tagname);
        if (ack_status)    //確認報警變量
        {
            ack_status=0;
            statusdata[index].playing=0;
        }
        else
        {  
            if (0==hasfound)
            {
                hasfound=1;
                filename=data[index].soundname;
            }
        }
    }
    else
    {
        statusdata[index].playing=!statusdata[index].prevStatus && GetTagBit(data[index].tagname);
        statusdata[index].prevStatus=GetTagBit(data[index].tagname);
        if (statusdata[index].playing)
        {
            if(0==hasfound)
            {
                filename=data[index].soundname;
                hasfound=1;
            }
        }  
    }
}

SetTagBit(ack_name,0);  

if (filename!=currfilename)    //當要播放的聲音文件和當前正在播放的聲音文件不同時才播放新的聲音
{
    currfilename=filename;        //修改當前正在播放的聲音文件名
  
    if (NULL==currfilename)    //如果沒有報警則停止播放聲音
    {
        FullName[0]=0x0;
        PlaySoundA(NULL,NULL,0x2000|1|8);        //停止播放聲音
    }  
    else    //循環播放新的聲音文件
    {
        strcpy(FullName,dirname);        //復制目錄名
        strcat(FullName,currfilename);        //合成聲音文件全名
        PlaySoundA(FullName,NULL,0x2000|1|8);    //播放聲音
    }  
}

return 0;


}

主站蜘蛛池模板: 欧美亚洲色倩在线观看 | 亚洲中文字幕无码一区在线 | 日韩av在线播放网址 | 天天做天天摸天天爽天天爱 | 国产女人的高潮国语对白 | 欧美伊人精品成人久久综合97 | 把插八插露脸对白内射 | 精品无码国产自产拍在线观看 | 亚洲视频免费在线 | 国产欧美亚洲精品a第一页 久久香蕉综合色一综合色88 | 少妇午夜福利水多多 | 亚洲精品视频在线观看免费 | 狠狠躁天天躁夜夜添人人 | 国产精品久久久久久久久大全 | 日韩理论视频 | 正在播放的国产a一片 | 欧美日韩在线观看成人 | 成人综合影院 | 黄色生活毛片 | 亚洲欧美婷婷六月色综合 | 国产在线无码精品无码 | 超碰成人在线免费观看 | 国产超碰人人爽人人做av | 成人永久免费网站在线观看 | 拍摄av现场失控高潮数次 | 在线免费日韩 | 男女猛烈无遮挡免费视频 | 伊人色区| 91啦丨九色丨蝌蚪丨中文 | 国产在线无码制服丝袜无码 | 精品亚洲国产成av人片传媒 | 欧美巨波霸乳影院 | 天天躁夜夜躁天干天干200 | 亚洲国产成人av好男人在线观看 | 国产免费丝袜调教视频 | 99精品亚洲 | 狠狠热精品免费视频 | 欧美精品黑人粗大 | 亚洲欧洲久久av | 在线免费观看av的网站 | 日日夜夜视频 | 国产精品奇米一区二区三区小说 | 日本久久综合久久鬼色 | 日日碰狠狠躁久久躁9 | 日韩加勒比无码人妻系列 | 国产人妻精品区一区二区三区 | 性高朝大尺度少妇大屁股 | 四虎8848| 久草这里只有精品 | 国内精品久久久久电影院 | 天天操大逼 | 东北老女人高潮大叫对白 | 国产在线色视频 | 久久精品国产国产精品四凭 | 中文字幕免费在线视频 | 欧美精品一区二区视频在线观看 | 毛片基地在线观看 | 欧美在线视频不卡 | 福利视频久久 | 日韩精品无码中文字幕电影 | 欧美日韩1区2区 | 欧美激情精品成人一区 | 中文字幕一区二区视频 | 国产精品久久在线 | 五月天精品视频在线观看 | 成在人线av无码免费高潮水老板 | 久久福利社 | 中国特黄毛片 | 国产精品任我爽爆在线播放, | 久久成人人人人精品欧 | 久久精品一区二区三区av | 97精品伊人久久久大香线蕉 | 免费观看又色又爽又黄的崩锅 | 久久精品视频观看 | 国产精品内射视频免费 | 欧美喷潮久久久xxxxx | 一级黄色日本 | 韩国精品在线观看 | 欧美在线视频你懂的 | 国产日韩区 | 国产精品99久久久久久www | 动漫精品中文无码卡通动漫 | 亚洲αv | 日本色网站 | 欧美精品一区二区三区久久久 | 人妻忍着娇喘被中进中出视频 | 午夜福利理论片在线观看 | 99视频导航 | 日本蜜桃视频 | 天天干夜夜躁 | 亚洲精品美女久久久久网站 | av在线黄色| 老师粉嫩小泬喷水视频90 | 性感少妇av | 黄色片网址在线观看 | 亚洲男人的天堂在线观看 | 免费精品国产自产拍在线观看图片 | 成人av免费网址 | 五月婷婷六月丁香动漫 |