如何在页面未填满时,使用 “MSRTPrintMProt” 函数打印消息顺序报表?

指导:
缺省情况下,仅当消息顺序报表页完全填充完,打印布局才能打印出来。从WinCC V6.0 SP3 起,可以使用 "MSRTPrintMProt" 函数,在消息顺序报表完全填充完之前来打印。
此信息清参考 WinCC 在线帮助下的 "WinCC Information System > Working with WinCC > Documentation of Configuration and Runtime Data > Runtime Documentation > Reporting Messages in Runtime > Outputting Runtime Data with the Message Sequence Report" 和 "WinCC ODK (Open Development Kit)". 的文档,关于ODK 的信息请参见条目:9652128.n

声明:
BOOL MSRTPrintMProt (DWORD* pdwLines, LPCMN_ERROR lpError);n

参数/返回值:

参数 数据类型 描述
pdwLines DWORD* 使用参数 "pdwLines" 向函数传递指向DWORD 型变量的指针, 函数将要打印的行数写到该地址。
lpError LPCMN_ERROR 使用参数 "lpError" 向函数传递指向CMN_ERROR型变量的指针, 如果有错误或警告发生,函数将相应的错误信息写到该地址。
Return BOOL 返回 "TRUE" ,当: n

  • 顺序报表的消息成功地送到打印机,或n
  • 调用时,没有新的顺序报表的消息,或n
  • 调用时,先前触发的打印作业还未完成。

若失败,返回 "FALSE".

下面的脚本说明了如何在鼠标点击中调用函数 "MSRTPrintMProt"。

#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
DWORD dwLines = 0;
CMN_ERROR scError;
BOOL bOK;
printf ("rn#Info001: MSRTPrintMProt() ==> ... is working!rn");
bOK = MSRTPrintMProt( &dwLines, &scError );
printf ("#Info002: MSRTPrintMProt() ==> bOK=%d dwLines=%d scError="%s"rn",
bOK, dwLines, scError.szErrorText );
}

注意:
此脚本必须在消息顺序报表所在的WinCC计算机上执行。n

调用时,"MSRTPrintMProt"函数会确定要被打印的消息的数目。如果在打印作业中至少有一条消息存在且未被成功输出,那么消息顺序报表将形成图形文件,传送到打印机。
函数在参数"pdwLines"中返回被打印的消息数。如果函数 "MSRTPrintMProt" 确定没有新的消息要打印,那么没有消息报表产生并输出,这种情况下,参数"pdwLines"的返回值为 "0"。

仅当先前触发的打印任务完成后,函数 "MSRTPrintMProt" 才能触发打印新的消息顺序报表。如果先前触发的打印任务还未完成,而再次调用 "MSRTPrintMProt" ,函数会在参数 "pdwLines" 中返回一个大于 "0"的值 。但是在这种情况下,不会创建和打印新页。

"MSRTPrintMProt" 函数需要更多的运算时间来准备新的一页消息顺序报表。 其他的动作 (比如:循环 C 动作或使用脚本切换画面) 因此可能会延迟被处理。

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc338059.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日
下一篇 2021年4月12日

相关推荐

发表回复

登录后才能评论