我有3個圖片,,要求當(dāng)一個二進制數(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語言的語句,回答準(zhǔn)確些,,謝謝了,,急。
問題補充:我說的變量a,,實際上是一個反饋點,,我想做的是當(dāng)反饋有信號時,圖片就顯示,,同時變量b是一個中間變量,時時的從
1--2--3---1變化,,對應(yīng)3個圖片的顯示,,也就是說,,我想要3圖片的顯示是分別滿足a==1且b==1,和a==1且b==2,,a==1且
b==3,。用動態(tài)對話框,只能滿足一個條件,,所以我想用c語言編寫,,但是不會。
RE 有誰共鳴
首先我要顯示的是圖片,,不是畫面,,在有就是我最基本的要求就是3個圖片的顯示是2個變量“與”的關(guān)系,所以在圖片的“顯示”動態(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)顯示的周期是固定的話,,讓腳本周期性掃描變量的值,然后再顯示相應(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ā)時間可根據(jù)需要設(shè)定。
方法二:
在畫面中添加控件Status Display(Smart Objects目錄下),,在其屬性---state---Current Status中連接變量b,在Static中分別輸入1,、2、3,,在Basic Picture中分別對應(yī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ā)時間同樣可根據(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