WINCC的系統(tǒng)時(shí)間如何讀取到變量中
劉玉蓉
發(fā)布于2014-10-10 16:53
6
0
標(biāo)簽:
想在WINCC中把系統(tǒng)時(shí)間賦值到變量中,然后用變量比較實(shí)現(xiàn)時(shí)間歸檔,但是我按下面這個(gè)程序做的時(shí)候變量沒(méi)有賦過(guò)來(lái)。請(qǐng)問(wèn)是什么原因呢?
#pragma code("kernel32.dll")
VOID GetLocalTime(SYSTEMTIME *lpst);
#pragma code();
SYSTEMTIME zeit;
GetLocalTime(&zeit);
SetTagWord("varname",zeit.wYear);
SetTagWord("varname",zeit.wMonth);
SetTagWord("varname",zeit.wDayOfWeek);
SetTagWord("varname",zeit.wDay);
SetTagWord("varname",zeit.wHour);
SetTagWord("varname",zeit.wMinute);
SetTagWord("varname",zeit.wSecond);
SetTagWord("varname",zeit.wMilliseconds);
是不是varname變量需要在WINCC的內(nèi)部變量里面定義?如果是該變量應(yīng)該是無(wú)符號(hào)16位數(shù)嗎?是需要定義8個(gè)不同的varname變量嗎?
以上的程序是不是能直接復(fù)制過(guò)來(lái)用?還是需要做一些定義,請(qǐng)問(wèn)能否幫忙指點(diǎn)一下如何修改該程序?
佳答案
做個(gè)例子,定義一個(gè)16位文本集的字符串內(nèi)部變量Date1,以下代碼把年月日寫(xiě)入變量
#pragma code("kernel32.dll")
VOID GetLocalTime(SYSTEMTIME *lpst);
#pragma code();
SYSTEMTIME zeit;
char *p;
GetLocalTime(&zeit);
p=SysMalloc(32);
sprintf(p,"%4d年%02d月%02d日",zeit.wYear,zeit.wMonth,zeit.wDay);
SetTagChar("Date1",p);