我有3個(gè)圖片,要求當(dāng)一個(gè)二進(jìn)制數(shù)a等于1,并且一個(gè)8位無符號(hào)整數(shù)b等于1、2、3時(shí),分別顯示1號(hào)、2號(hào)、3號(hào)圖片,同時(shí)要求8位無符號(hào)整數(shù)b每固定
時(shí)間間隔從1--2--3--1進(jìn)行循環(huán)變化,實(shí)現(xiàn)3個(gè)圖片的交替顯示。希望回答的把c語言的語句,回答準(zhǔn)確些,謝謝了,急。
問題補(bǔ)充:我說的變量a,實(shí)際上是一個(gè)反饋點(diǎn),我想做的是當(dāng)反饋有信號(hào)時(shí),圖片就顯示,同時(shí)變量b是一個(gè)中間變量,時(shí)時(shí)的從
1--2--3---1變化,對(duì)應(yīng)3個(gè)圖片的顯示,也就是說,我想要3圖片的顯示是分別滿足a==1且b==1,和a==1且b==2,a==1且
b==3。用動(dòng)態(tài)對(duì)話框,只能滿足一個(gè)條件,所以我想用c語言編寫,但是不會(huì)。
RE 有誰共鳴
首先我要顯示的是圖片,不是畫面,在有就是我最基本的要求就是3個(gè)圖片的顯示是2個(gè)變量“與”的關(guān)系,所以在圖片的“顯示”動(dòng)態(tài)屬性那用動(dòng)態(tài)對(duì)話框無法實(shí)
現(xiàn),如果用c語言編寫,那里根本就不讓用SetVisible(lpszPictureName,pic,1)這個(gè)函數(shù),所以我才頭疼。
============================================
你可以使用腳本來實(shí)現(xiàn) (if a=1 then (b=b+1 if b=3 then b=1)?。澹欤螅濉。猓剑?
也可以在PLC里面實(shí)現(xiàn)
然后將3個(gè)畫面的顯示條件為b=1、2、3
采用時(shí)間觸發(fā) 其切換時(shí)間可以自己定 不會(huì)出現(xiàn)顯示不清楚的
補(bǔ)充:樓上這樣做,三個(gè)圖片是不是切換的很快,間隔時(shí)間就沒法控制了。圖片切換過快我懷疑更本看不清。
b 可以在PLC中做循環(huán),間隔時(shí)間可以控制,上位機(jī)1號(hào)圖片顯示的條件為a=1 & b=1;2號(hào)圖片的顯示條件為:a=1& b=2 ;3 號(hào)圖片的顯示條件為a=1 &b=3;
你先在主畫面上放上三個(gè)“畫面窗口”Pic1、Pic2、Pic3然后在把三個(gè)要循環(huán)顯示的“畫面”分別連接到三個(gè)畫面窗口中,然后做個(gè)全局動(dòng)作循環(huán)時(shí)間
為10秒,等等,如果你的循環(huán)顯示的周期是固定的話,讓腳本周期性掃描變量的值,然后再顯示相應(yīng)的畫面窗口,這樣不就OK了,參考下面的腳本就可以了
if (GetTagBit("A")==1)
{
if (GetTagByte("B")==1)
{
SetVisible(lpszPictureName,"Pic1",TRUE);
SetVisible(lpszPictureName,"Pic2",FALSE);
SetVisible(lpszPictureName,"Pic3",FASLE);
SetTagByte("B",2);
}
else
{
if (GetTagByte("B")==2)
{
SetVisible(lpszPictureName,"Pic1",FALSE);
SetVisible(lpszPictureName,"Pic2",TRUE);
SetVisible(lpszPictureName,"Pic3",FASLE);
SetTagByte("B",3);
}
else
{
if (GetTagByte("B")==3)
{
SetVisible(lpszPictureName,"Pic1",FALSE);
SetVisible(lpszPictureName,"Pic2",FALSE);
SetVisible(lpszPictureName,"Pic3",TRUE);
SetTagByte("B",1);
}
}
}
}
return 0;
=============================================
a為布爾變量,b為雙整數(shù)。
方法一:
你可以在全局腳本里添加代碼,如下:
BOOL a;
DWORD b;
a=GetTagBit("a");
b=GetTagWord("b");
b=b+1;
SetTagDouble("b",b);
if (b>=4)
SetTagDouble("b",1);
if (a==1&b==4)
{
SetVisible("NewPdl0.Pdl","one",1);
}
else
SetVisible("NewPdl0.Pdl","one",0);
if (a==1&b==2)
{
SetVisible("NewPdl0.Pdl","GraphicObject2",1);
}
else
SetVisible("NewPdl0.Pdl","GraphicObject2",0);
if (a==1&b==3)
{
SetVisible("NewPdl0.Pdl","GraphicObject3",1);
}
else
SetVisible("NewPdl0.Pdl","GraphicObject3",0);
其中NewPdl0.Pdl為畫面名稱,GraphicObject1、2、3分別為圖片名稱,觸發(fā)時(shí)間可根據(jù)需要設(shè)定。
方法二:
在畫面中添加控件Status Display(Smart Objects目錄下),在其屬性---state---Current Status中連接變量b,在Static中分別輸入1、2、3,在Basic Picture中分別對(duì)應(yīng)著你要顯示的三張圖片,在其他---顯示---中添加動(dòng)態(tài)連接,用變量a控制其顯示,1為顯示,0位不顯示,然后保存畫面。
在全局腳本中添加如下代碼:
BOOL a;
DWORD b;
a=GetTagBit("a");
b=GetTagWord("b");
b=b+1;
SetTagDouble("b",b);
if (b>=4)
SetTagDouble("b",1);
觸發(fā)時(shí)間同樣可根據(jù)自己的需要選定,我試的時(shí)候用的2S。
我已經(jīng)試過了,這兩種方法都可行,區(qū)別是第一種方法的三張圖片可以放在不同的位置,而第二種方法的三張圖片在同一個(gè)位置。
========================================
1、首先建兩個(gè)全局變量:a、b
2、寫一個(gè)腳本,腳本使用時(shí)間做觸發(fā)器,要多長時(shí)間根據(jù)需要改!
if(b>=3||b<1),則b=1;if(b==1),則b=2;if(b==2),則b=3;
3、在三個(gè)圖片的顯示屬性中,將條件公式寫為
A、a==1&&b==1
B、a==1&&b==2
C、a==1&&b==3
在第一個(gè)畫面顯示屬性里 用動(dòng)態(tài)對(duì)話框表示:A+3*B =4
在第二個(gè)畫面顯示屬性里 用動(dòng)態(tài)對(duì)話框表示:A+3*B =7
在第三個(gè)畫面顯示屬性里 用動(dòng)態(tài)對(duì)話框表示:A+3*B =10