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