文章目录
- openpnp - 给.openpnp2目录减肥
- 概述
- 笔记
- 不会引起.openpnp2目录size持续增加的目录/文件列表
- 会引起.openpnp2目录size持续增加的目录/文件列表
- 可以做一个程序来给openpnp减肥
- END
openpnp - 给.openpnp2目录减肥
概述
听同学说, 如果.openpnp2将磁盘分区都占满后, 就会出现撞刀的事故.
我装过好多版openpnp(dev/test 各个发行时间的版本), 反正到了我确实生产软件用 openpnp-2022/8/1 的时候, .openpnp2目录size基本不变(< x00KB). 也就没在关注这个问题.
今天偶然看了一眼, 80MB+了. 啥情况?
笔记
打开.openpnp2目录, 看到以下内容
不会引起.openpnp2目录size持续增加的目录/文件列表
backups 目录 : 这个目录是配置备份, 主要我们不主动点击备份, 就不会有新的内容.
log 目录 : 只要我们不开日志, 就不会产生新的内容. 即使开日志, 日志的增加也不是大头.
scripts目录 里面是openpnp用的脚本文件, 一般我们调试完成(e.g. 增加接入西门子电动飞达), 就不会向这个目录中增加脚本.
这个目录中, 即使增加openpnp脚本, size也不大(x00KB)
themes 目录, 这个目录中是皮肤文件, 默认openpnp安装完, 这个目录是空的.
machine.xml 设备树对应的配置文件, 设备调试完, 就不会变了.
packages.xml 封装对应的配置文件, 设备调试完, 就不会变了.
parts.xml 元件对应的配置文件, 设备调试完, 就不会变了.
vison-setting.xml 视觉设置对应的配置文件, 设备调试完, 就不会变了.
会引起.openpnp2目录size持续增加的目录/文件列表
除了上述目录/文件, 其他的目录/文件都会引起openpnp每次运行都会增加size, 也就是我们要关注openpnp减肥的内容
这些多出要处理的目录数量是不定的, 和配置有关系, 一般是由某项配置中, 出现了xxWriteDebug (e.g. ImageWriteDebug)引起的.
就是说, 这些在.openpnp2目录下每次运行都会多出来的内容, 是由于调试需求, 将文件写到磁盘上, 给开发者/使用者存档看的文件.
如果不写到磁盘上, 那每次openpnp运行完成后, .openpnp2目录size也就不会持续增加.
因为这些多出来的目录名称是不定的, 所以我们在openpnnp运行完成关闭后, 人工去观察一下.
对于我现在的.openpnp2目录, 多出来的目录为 : org.openpnp.vision.pipeline.stages.ImageWriteDebug
从这个目录名称看, 是因为视觉管道的图像由于开了调试属性 ImageWriteDebug 引起的.
去按照目录名称去找到对应的属性, 关了即可.
在视觉TAB页中, 可以看到库存的视觉识别方案和默认的视觉识别方案, 我们自己特化的视觉识别方案.
在视觉识别方案列表中, 逐个点击视觉识别方案. 只要看到视觉管道的右边的Edit是可以点击的, 就需要点击进去看看, 如果有xxWriteDebug属性, 就要关掉他.
当改视觉方案时, 因为我们只是关掉属性, 不需要启动设备.
将xxWriteDebug属性前面的Enable的勾去掉就行, 不用删除这个属性
可以看到, 这个属性产生的文件名称为 bv_source_.png, 稍后我们可以安全的删除这些文件.
可以看到, 这个属性产生的文件名称为 bv_result_.png, 稍后我们可以安全的删除这些文件.
因为视觉识别方案已经改了, 要保存一下. 但是UI上没有保存按钮, 只能退出视觉解决方案时被动保存.
继续检查其他的视觉识别方案, 关掉 xxWriteDebug属性, 记录产生的文件通配名称.
修改了所有的视觉识别方案, 可以看到产生的文件都为 bv_source_.png和bv_result_.png.
保存配置, 关掉openpnp.
尝试去4个主配置文件(machine.xml, packages.xml, parts.xml, vision-settings.xml)中去找 bv_source 和 bv_result.
vision-settings.xml 中找到
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="deb0" enabled="true" prefix="bv_source_" suffix=".png"/>
可以看到库存的视觉识别方案的xxWriteDebug的属性默认是true.
那些是enabled = false的视觉识别方案, 都是我们从界面上已经改过来的.
还可以看出一点, 如果是从openpnp默认的视觉识别方案特化自己的视觉识别方案, 那么xxWriteDebug就为true, 也就会在磁盘上产生垃圾(调试)文件. 所以从openpnp系统的视觉识别方案特化后, 需要自己将xxWriteDebug改为false.
查了一下, 除了vision-settings.xml之外, machine.xml有xxWriteDebug属性, 文件前缀名称为runout_calibration_source_ 和 runout_calibration_result_, 不过enabled = false, 不用管.
从这还可以看出, 可以在vision-settings.xml和machine.xml中, 将xxWriteDebug属性, 都直接改为false, 这就可以直接避免产生垃圾(调试)文件.
现在去org.openpnp.vision.pipeline.stages.ImageWriteDebug目录, 将目录文件按照详细信息显示, 按照名称排序显示, 将 bv_source*.png 和 bv_result*.png都手工删掉.
看了一眼, 确实中这个目录只有这2种前缀名称的文件.
而且这2种文件, 就是.openpnp2目录体积的大头, 删掉这些文件.
再看一眼.openpnp2目录size
备份目录和日志目录, 大概看一眼, 然后差值就是实际openpnp的运行时产生的文件体积, 可以看到, 删除了xxWriteDebug产生的文件, .openpnp2目录体积就小很多了.
可以做一个程序来给openpnp减肥
可以做一个批处理(或者写一个小程序 e.g. c++), 来自动启动openpnp, 在启动openpnnp之前, 先将那些可以安全删除(或者没有保留价值)的内容(e.g. 日志)先删掉, 再启动openpnp, 这样就不用担心.openpnp2的size会增加了.
如果在.openpnnp2目录中出现了新的未处理的目录, 可以弹出告警框, 让我们可以来分析和升级程序.
还可以增加一个功能, 自动检测修改openpnp的4个配置文件, 将xxWriteDebug选项都自动扫描, 然后改为false.