基于手机遥控的远程打印

来源:互联网 发布:网络打印机 snmp mib 编辑:程序博客网 时间:2024/05/16 00:30
2009/11/19 | 23:23 |
from http://blog.linjian.org/articles/phone-remote-print/
标签:AHKGtalkPythonXMPP手机

  场景:假设实验室的打印机距离你的工位比较远,现需要打印一些文章,但不知道打印机里有没有放纸、是不是合适的纸(A4/B5;新纸/旧纸反面)。贸然打印有可能造成浪费,而如果把合适的纸拿过去放进打印机再回来发送打印命令则需要跑两个来回,中途别人还有可能发送打印命令把你的纸给用了。懒人有懒道,要是能在打印机旁遥控电脑就好了!想想用什么做遥控器呢?身边最好找的远程通信器件应该是手机了。于是,我们来实现基于手机遥控的远程打印(以 Windows 环境为例)——
  我的手机可以使用语音、短信、红外、蓝牙、GPRS 等通信手段,软件支持 Email、MSN、Gtalk、Fetion 等应用。考虑到成本,排除语音和短信;考虑到距离,排除红外和蓝牙;Email 没有实时性,也排除;剩下三个 IM,其中基于 Jabber 的 Gtalk 由于其简单性和开放性,成为了我的首选。
  接着考虑如何操作应用程序进行打印。对于 Windows GUI 的自动化操作,AutoHotkey (AHK) 大神当然是不二之选。
  现在可以动手了。首先建立一个 Jabber Message Handler 来接收手机 Gtalk 客户端发来的消息。如果收到事先定义好的某个消息,则通知特定的应用程序执行打印操作。这种简易的 Handler 用 Python + xmpppy 实现即可,代码如下(gthandler.py):

  这段代码很好理解。Handler 端使用“yyy@linjian.org”账号登录 Gtalk,如果收到来自手机端联系人“xxx@linjian.org”发来的“p”消息,则执行 doprint.ahk 脚本。该 AHK 脚本负责向应用程序发出打印命令(这里是以 Microsoft Word 为例的,向 Word 发送 Ctrl-P 并回车,即可使用默认打印机来打印文档),内容如下:

  好了,现在打开 MyDoc.doc,再运行 gthandler.py,然后在手机上登录 Gtalk,从“xxx@linjian.org”向“yyy@linjian.org”发送一个“p”,看看有没有效果?当然,实验时可以先用 Ctrl-G 之类不浪费纸的命令做测试。
  这就是程序员,本来可以通过内线电话或免费的 VPMN、利用社会工程学手段解决的问题,也要设法把它程序化了。这到底是折腾呢,还是不折腾呢?但至少有一点是肯定的:脚本的优点是一劳永逸。

原创粉丝点击