Ifix 3.5画面死机,数据不刷新

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ifix 3.5画面死机,数据不刷新相关的知识,希望对你有一定的参考价值。

电脑操作系统是windows 2000,上位机是ifix 3.5,上位机运行不超过20分钟画面就死了,数据停止刷新,重启ifix后能运行一会然后又死了。重启电脑自动运行ifix时会提示"…溢出,多个报警丢失"字样。有时画面死的时候会弹出system error的框说"Nico_map_dev-Bad Device Handle",另外重新装载数据库也解决不了

这个现象有很多种可能的原因,但是必须先确定是上位PC的问题还是IFIX组态的问题。可以更换下上位机,如果故障依旧那么确定是组态的问题。

如果是IFIX组态的问题的话:

建议你:
1,用任务管理器查看相关进程的资源情况,主要定时查看以下进程的CPU占用率,内存占用率的变化:workspace.exe(画面运行的进程)FixTohist.exe(历史数据保存)。
2,如果没啥复杂的应用建议最好不要写过多的脚本,能简单就简单。因为脚本里很多能过编译的隐藏问题,不是很好找。脚本采用的基本就是VB不想C#那样具备"垃圾自动回收"功能。

从你的故障描述来看,个人认为很可能是脚本惹的祸。

补充下:1,过程数据库里的IO扫描可以优化一下,采用相位方式,能减少CPU占用率。IO过来的数据首先被放入DIT(可以理解成一个中间数据表)然后由周期扫描功能SAC周期采集DIt里的过程变量给WORKSPACE显示实时数据。

2,画面动画的刷新也要讲究,少用闪烁功能,刷新时间最好一致采用默认的1,刷新时间需要小于 该 数据 从 DIT提取的时间。
参考技术A 可能是历史数据超过数据库最大容量,或者文件数量超过文件夹限制了,试一下将历史数据做成每日一份文件,将文件夹中的历史文件剪切到其他地方,如果还不行就重做系统。

JACOB类使用问题

最近需要将 WORD/EXCEL/PDF 与 HTML 互转,上网搜了很久找到了大量源代码,都是使用JACOB实现的,但是几乎所有源码都没有详细解释这行代码到底干什么用?JACOB1.9的API中也没有详细解释,有没有谁有相关资料(最好是中文的),详细介绍类中每个方法的作用,使用方法.
谢谢.

public class Jacob
/**
* 打开文件
*
* @param documents
* @param inputDocPath
* @return
*/
private Dispatch open(Dispatch documents, String inputDocPath)
return Dispatch.call(documents, "Open", inputDocPath).toDispatch();


/**
* 选定内容
*
* @param word
* @return
*/
private Dispatch select(ActiveXComponent word)
return word.getProperty("Selection").toDispatch();


/**
* 把插入点移动到文件首位置
*
* @param selection
*/
private void moveStart(Dispatch selection)
Dispatch.call(selection, "HomeKey", new Variant(6));


/**
* 从选定内容或插入点开始查找文本
*
* @param selection
* 选定内容
* @param toFindText
* 要查找的文本
* @return true:查找到并选中该文本;false:未查找到文本。
*/
private boolean find(Dispatch selection, String toFindText)
// 从selection所在位置开始查询
Dispatch find = Dispatch.call(selection, "Find").toDispatch();
// 设置要查找的内容
Dispatch.put(find, "Text", toFindText);
// 向前查找
Dispatch.put(find, "Forward", "True");
// 设置格式
Dispatch.put(find, "format", "True");
// 大小写匹配
Dispatch.put(find, "MatchCase", "True");
// 全字匹配
Dispatch.put(find, "MatchWholeWord", "True");
// 查找并选中
return Dispatch.call(find, "Execute").getBoolean();


/**
* 把选定内容替换为设定文本
*
* @param selection
* @param newText
*/
private void replace(Dispatch selection, String newText)
Dispatch.put(selection, "Text", newText);


/**
* 全局替换
*
* @param selection
* @param oldText
* @param replaceObj
*/
private void replaceAll(Dispatch selection, String oldText, Object replaceObj)
moveStart(selection);
String newText = (String) replaceObj;
while (find(selection, oldText))
replace(selection, newText);
Dispatch.call(selection, "MoveRight");



/**
* 打印
*
* @param document
*/
private void print(Dispatch document)
Dispatch.call(document, "PrintOut");


/**
* 保存文件
*
* @param word
* @param outputPath
*/
private void save(ActiveXComponent word, String outputPath)
Dispatch.call(Dispatch.call(word, "WordBasic").getDispatch(), "FileSaveAs", outputPath);


/**
* 关闭文件
*
* @param doc
*/
private void close(Dispatch doc)
Dispatch.call(doc, "Close", new Variant(true));


/**
* 保存打印doc文档
*
* @param inputDocPath
* @param outPutDocPath
* @param data
* @param isPrint
*/
public void saveDoc(String inputDocPath, String outPutDocPath, HashMap data, boolean isPrint)
// 初始化com的线程
ComThread.InitSTA();
// word运行程序对象
ActiveXComponent word = new ActiveXComponent("Word.Application");
// 文档对象
Dispatch wordObject = (Dispatch) word.getObject();
// 设置属性 Variant(true)表示word应用程序可见
Dispatch.put((Dispatch) wordObject, "Visible", new Variant(false));
// word所有文档
Dispatch documents = word.getProperty("Documents").toDispatch();
// 打开文档
Dispatch document = this.open(documents, inputDocPath);
Dispatch selection = this.select(word);
Iterator keys = data.keySet().iterator();
String oldText;
Object newValue;
while (keys.hasNext())
oldText = (String) keys.next();
newValue = data.get(oldText);
this.replaceAll(selection, oldText, newValue);

// 是否打印
if (isPrint)
this.print(document);

this.save(word, outPutDocPath);
this.close(document);
word.invoke("Quit", new Variant[0]);
// 关闭com的线程
ComThread.Release();

参考技术A 楼上的回答不错

以上是关于Ifix 3.5画面死机,数据不刷新的主要内容,如果未能解决你的问题,请参考以下文章

如何使刷新时画面不闪烁

我的电脑每次开机就定格在一个画面上上面显示 ese f2 f12 下面是BIOS中的电脑启动项

打开aws软件加载画面卡住

wpf画面ListBox绑定的数据发生变化时 画面闪烁

我在WINCC上面组态了画面,想做成只有登录正确的用户名和密码,才能进行画面中的操作.请问怎么做啊?我做了下

如何在 ios 7 和 ios6 中显示启动画面