WINCC实现打印时间选择教程
打印时间选择教程
1. 报表编辑器-〉布局,新建动态对象中的动态表格。然后连结表格。
2. 取消时间范围的选择,并建立好变量选择,这里的变量应该是变量记录中的归档变量,其采集时间是从归档变量中设置的。
3. 完成后退出并新建打印作业。取消启动参数的选择,选择时间范围中的绝对时间。
4. 实现打印功能最关键的是一个新建的项目函数,西门子的教程上有例子。我已将条是调试通过。
/*****************************************************************************/
// 函数名:ModifyPrintJob
// 功 能:修改打印作业的绝对时间
/*****************************************************************************/
BOOL ModifyPrintJob(SYSTEMTIME st1, SYSTEMTIME st2, char
jobname[200])
{
BOOL fRet;
PCMN_ERROR pError;
HPROPERTIES hProp;
LPVOID ptr1, ptr2;
DWORD typ;
DWORD dwVal;
char
propname1[200],propname2[200];
TCHAR g_szProj[MAX_PATH+1];
typ = VT_DATE;
strcpy( propname1, "ABSOLUTESELECTIONFROM" );
strcpy( propname2, "ABSOLUTESELECTIONTO" );
ptr1 = (LPVOID)&st1;
ptr2 = (LPVOID)&st2;
if( !DMGetRuntimeProject( g_szProj, MAX_PATH, pError ) )
{
printf( "Error DMGetRuntimeProject(...)
" );
return FALSE;
}
hProp = RPJCreatePropertyHandle( g_szProj, pError );
if( !hProp )
{
printf( "Error RPJCreatePropertyHandle(...)
" );
return FALSE;
}
if( !RPJGetJobProps( hProp, jobname, pError ) )
{
printf( "Error RPJGetJobProps(...)
" );
RPJDeletePropertyHandle( hProp, pError );
return FALSE;
}
if( !RPJSetProperty( hProp, propname1, ptr1, (VARTYPE)typ,
200, pError ) )
{
printf( "Error RPJSetProperty(...)
" );
RPJDeletePropertyHandle( hProp, pError );
return FALSE;
}
if( !RPJSetJobProps( hProp, jobname, pError ) )
{
printf( "Error RPJSetJobProps(...)
" );
RPJDeletePropertyHandle( hProp, pError );
return FALSE;
}
if( !RPJGetJobProps( hProp, jobname, pError ) )
{
printf( "Error RPJGetJobProps(...)
" );
RPJDeletePropertyHandle( hProp, pError );
return FALSE;
}
if( !RPJSetProperty( hProp, propname2, ptr2, (VARTYPE)typ,
200, pError ) )
{
printf( "Error RPJSetProperty(...)
" );
RPJDeletePropertyHandle( hProp, pError );
return FALSE;
}
if( !RPJSetJobProps( hProp, jobname, pError ) )
{
printf( "Error RPJSetProps(...)
" );
RPJDeletePropertyHandle( hProp, pError );
return FALSE;
}
fRet = RPJDeletePropertyHandle( hProp, pError );
return TRUE;
}
/*****************************************************************************/
// 函数名:TimeFrom
// 功 能:打印时间的开始时间
/*****************************************************************************/
SYSTEMTIME TimeFrom()
{
SYSTEMTIME st;
st.wYear = GetTagWord("FromYear");
st.wMonth = GetTagWord("FromMonth");
st.wDay = GetTagWord("FromDay");
st.wHour = GetTagWord("FromHour");
st.wMinute = GetTagWord("FromMinute");
st.wSecond = GetTagWord("FromSecond");
return st ;
}
/*****************************************************************************/
// 函数名:TimeTo
// 功 能:打印时间的结束时间
/*****************************************************************************/
SYSTEMTIME TimeTo()
{
SYSTEMTIME st;
st.wYear = GetTagWord("ToYear");
st.wMonth = GetTagWord("ToMonth");
st.wDay = GetTagWord("ToDay");
st.wHour = GetTagWord("ToHour");
st.wMinute = GetTagWord("ToMinute");
st.wSecond = GetTagWord("ToSecond");
return st ;
}
以上的这些函数都是新建立的项目函数(可以直接粘贴使用,已经过调试)。其中用到的变量 FromYear, FromMonth,
FromDay, FromHour, FromMinute, FromSecond, ToYear, ToMonth, ToDay,
ToHour, ToMinute, ToSecond 都是新建立的内部对象。
5. 在组态画面上新建一个打印按钮,调用该函数即可实现。