есть проект на winCC.
Надо на выполнении определенной операции поставить паузу,что бы выбранное решение успело вступить перед следующим изменением оператора.
Как я думаю:
есть иконка ввода с этим кодом:
Code: Select all
#include "apdefap.h"
void OnKeyDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nChar, UINT nRepCnt, UINT nFlags)
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
char lpszTagName[128];
double dOldValue;
double dNewValue;
if (nChar == 13)
{
sprintf(lpszTagName,"%s%s",GetText(lpszPictureName,"PositionName"),GetLinkedVariable(lpszPictureName,lpszObjectName,"OutputValue"));
dOldValue = GetPropDouble(lpszPictureName,"FieldOldValue","OutputValue");
dNewValue= GetPropDouble(lpszPictureName,lpszObjectName,"InputValue");
LogValue(lpszTagName,GetText(lpszPictureName,"EUName"),dOldValue,dNewValue);
// SubstituteValue(GetText(lpszPictureName,"ODBCName"),lpszTagName,dNewValue);
SetPropDouble(lpszPictureName,"FieldOldValue","OutputValue",dNewValue);
}
}
Code: Select all
#include "apdefap.h"
void OnKeyDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nChar, UINT nRepCnt, UINT nFlags)
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
char lpszTagName[128];
double dOldValue;
double dNewValue;
if (nChar == 13)
{
sprintf(lpszTagName,"%s%s",GetText(lpszPictureName,"PositionName"),GetLinkedVariable(lpszPictureName,lpszObjectName,"OutputValue"));
dOldValue = GetPropDouble(lpszPictureName,"FieldOldValue","OutputValue");
dNewValue= GetPropDouble(lpszPictureName,lpszObjectName,"InputValue");
LogValue(lpszTagName,GetText(lpszPictureName,"EUName"),dOldValue,dNewValue);
// SubstituteValue(GetText(lpszPictureName,"ODBCName"),lpszTagName,dNewValue);
SetPropDouble(lpszPictureName,"FieldOldValue","OutputValue",dNewValue);
}
sleep(3000);
}
Но есть пара проблем:
1) как подключить библиотеку для sleep()
2) и почему-то компилятор winCC на любые изменения в программе ругается на
Code: Select all
LogValue(lpszTagName,GetText(lpszPictureName,"EUName"),dOldValue,dNewValue);
хотя программа уже несколько лет работает исправно.error(0069): type mismatch in argument 3
error (006a): not enough arguments for function 'LogValue'
Заранее спасибо