CITECT读历史文件 点击:1754 | 回复:7



笨猪

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 106回
  • 年度积分:0
  • 历史总积分:181
  • 注册:2002年8月12日
发表于:2004-03-01 11:07:00
楼主
Hi here: 我在设备中定义了设备,并关联[data]:log.dbf文件,设备的周期为1个礼拜。现在,我想利用Cicode把它存的历史文件(log.000,log.001等)数据读出来,有何方法? 请不吝赐教!



fatcat

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 23回
  • 年度积分:0
  • 历史总积分:127
  • 注册:2002年2月21日
发表于:2004-02-27 15:53:00
1楼
使用Device函数进行数据读取,应该很容易的。可能用到的Device函数有Devopen(),devgetfield(),devnext(),devseek(),devclose()等,可参考Example工程

笨猪

  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 106回
  • 年度积分:0
  • 历史总积分:181
  • 注册:2002年8月12日
发表于:2004-03-01 08:22:00
2楼
呵呵,这些函数倒是用过很多次了。这个方法的缺点是我要把每一个历史文件都对应一个设备,如果我定义了很多历史文件,则定义的设备就太多了,有没有直接就读出历史数据的函数?

fatcat

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 23回
  • 年度积分:0
  • 历史总积分:127
  • 注册:2002年2月21日
发表于:2004-03-01 11:07:00
3楼
使用Device函数本身就可以读取很多历史文件啊,只要是同一个Device生成的文件都可以用Device函数读取

笨猪

  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 106回
  • 年度积分:0
  • 历史总积分:181
  • 注册:2002年8月12日
发表于:2004-03-03 08:49:00
4楼
To fatcat: 谢谢您的回复。我们可以详细的讨论一下:我定义了一个设备,并关联到一个文件,如LOG.TXT,周期为1个星期,文件数为1。我使用devopen打开这个设备并绑定了一个句柄到这个设备。这样,当运行到一个星期后citect系统自动会把原LOG.TXT更名为log.001。现在,我想看一个星期以前的数据,那么我就应该去读log.001记录的数据。好,原先绑定的句柄是关联LOG.TXT,因此我无法通过原先的句柄读log.001的数据。这样,我可以考虑通过DEVMODIFY改变设备的定义,没错,改变了设备的文件后通过DEVREAD或DEVGETFIELD是可以访问了。 但存在的问题是,我通过模板上的功能显示这个TXT文件,这样当翻页操作时,CITECT显示的永远是TXT上的内容,它不会自动的把一星期以前的数据也显示出来。因此要显示大量的数据只能让这个设备就关联LOG.TXT,问题又出来了,CITECT显示大过几MB的TXT文件就会不灵。你总得在运行性能和功能上取舍,无法随心所欲。 说了这么多,不知道讲明白了没有?还望各位指点。

fatcat

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 23回
  • 年度积分:0
  • 历史总积分:127
  • 注册:2002年2月21日
发表于:2004-03-22 09:17:00
5楼
使用你的这种方式来读取文件确实存在你所说的问题,不妨试一下不采用画面显示文件的做法,而是在画面上显示从Device中读取的信息,当然,这个需要编写一点程序,但值得一试。

shooter

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 7回
  • 年度积分:0
  • 历史总积分:7
  • 注册:2004年5月14日
发表于:2004-05-18 12:46:00
6楼
你可以将log.000,log.001等文件拷贝为log000.txt,log001.txt文件,然后用DevModify()修改原设备的指向,即可浏览原日志文件的内容。

二八

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 5回
  • 年度积分:0
  • 历史总积分:8
  • 注册:2006年11月12日
发表于:2007-08-09 10:45:00
7楼
您好,我想问一下DEVOPEN(name,nmode)的参数name所指的device设备是什么呀??是USER目录下的一个DBF文件名吗??

热门招聘
相关主题

官方公众号

智造工程师