如何检索墨盒墨水量编程(爱普生StatusMonitor应用+的Mac OS X)?

StackOverflow https://stackoverflow.com/questions/314054

  •  10-07-2019
  •  | 
  •  

我正在寻找一种方式来查询Mac OS X上我的爱普生DX 4050墨量有一些UI叫EPSON StatusMonitor应用以图形方式显示墨盒的水平,但我想从命令 - 得到它行,以便它可以养活的机器人。

任何想法?

有帮助吗?

解决方案

这将是一个任务。逆向工程的StatusMonitor应用程序,找出它是如何询问司机发现该油墨水平或寻找它的一些文件。它可能会戳入StatusMonitor应用程序找出其窗口小部件(这样的事情是可能的视窗,尽管哈克)内部值,但整个过程可能是一个污水池时间:(

其他提示

如果打印机支持SNMP,你可能会幸运与任何SNMP命令行工具来查询。存在用于打印机的标准定义和它们所包含的API来查询当前和最大墨水量。

下面是我如何用简单的UNIX shell命令做(需要的net-snmp安装)。这不是严格的Mac,但你应该拿个主意。

#!/bin/sh

me="${0##*/}"

host="${1:-wp4535}"

base=1.3.6.1.2.1.43.11.1.1

name="WP-4535"

type=$(snmpget -v1 -c public ${host} SNMPv2-MIB::sysDescr.0)

case "$type" in
"SNMPv2-MIB::sysDescr.0 = STRING: EPSON"*)
    type=epson
    ofs=1
;;
*)
    echo "! unknown printer type" 1>&2
    exit 1
;;
esac
echo "# $host $type $name"

# get current ink levels
eval $(snmpwalk -v1 -Ov -OQ -c public ${host} ${base}.6.${ofs} |
perl -ne 'print "c[",++$c,"]=$1\n" if(m!"(\w+) ink!i);')

# get max ink level per cartridge
eval $(snmpwalk -v1 -Ov -OQ -c public ${host} ${base}.8.${ofs} |
perl -ne 'print "max[",++$c,"]=$1\n" if(m!(\d+)!i);')

snmpwalk -v1 -Ov -OQ -c public ${host} ${base}.9.${ofs} |
perl -ne '
    my @c=("","'${c[1]}'","'${c[2]}'","'${c[3]}'","'${c[4]}'");
    my @max=("","'${max[1]}'","'${max[2]}'","'${max[3]}'","'${max[4]}'");
    my $v=$c[++$c];
    printf"# $v=$1 (%.0f)\n",$1/$max[$c]*100 if(m!(\d+)!i);'
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top