17611538698
webmaster@21cto.com

开发者开发出GitHub问题票打印机

作者 万能的大雄 分类 资讯 04月01日

最近开发者Andrew Schmelyun 在Twitter上宣布,为了方便解决问题,他将GitHub上的每个issue问题单,连接到票据打印机以单张方式打印出来,方便大家浏览展示:


图片



大量程序员与开发者跟帖,称赞其太酷了,简直是太优秀


图片

大家的一部分评论


Andrew Schmelyun 倒是很谦逊,他说是在吃外卖时得到的灵感,那袋子上的小票让他联想,为什么不能把GitHub上的问题票(Issue Ticket)也用小票方式打印出来?


于是他用PHP连接到USB连接树莓派RPi Zero上,发送原始指令给打印机,并成功实现。



require __DIR__ . '/vendor/autoload.php';
use Mike42\Escpos\PrintConnectors\FilePrintConnector;use Mike42\Escpos\Printer;
$connector = new FilePrintConnector('/dev/usb/lp0');$printer = new Printer($connector);
$printer->text('Hello, world!');$printer->feed(2);$printer->cut();


原材料是一台老旧的EPSON票据打印机,GitHub webhooks、PHP、ngrok 和一台Raspberry Pi,此君还开发了一个完整的作业系统。


据作者Schmelyun 所说,他花了大约八个小时才让奇迹发生。“最长的部分是试图将打印机连接到 Raspberry Pi 并将数据发送给它。最初我在 Linux 中使用 CUPS,但它没有给出我想要的结果。”


使用 Pi Zero W ,是因为 Schmelyun 有一个这样一个东西扔在那吃灰。他认为基于 RP2040 的 Pi Pico 也可以完成这项工作。他还考虑过使用 ESP8266 开发板(如 NodeMCU),这些都可以搞定此事。


之所以选择 PHP,是因为 Schmelyun 是使用该语言的开发人员(Node 或 Python 也是选项),并且所以使用的打印机可以理解 ESC/POS 命令。最后监听 repos 上的事件是通过 GitHub 的 webhook 实现的。


GitHub在限制 webhook方面并不严格,Schmelyun 并不认为他会遇到很多问题。“我的项目遇到的大多数问题都不是严重的错误,”他解释说,“而且我每天最多会遇到几个问题。”


“最坏的情况我可能会将它迁移到使用 GitHub API 来代替。”


展望未来,Schmelyun 正在考虑添加一个直接链接到该问题的二维Q码:“打印库具有内置的本机二维码打印功能,添加此功能将是分分钟的事。”


更多关于票据信息会很方便,新的 PR、成功合并或问题票关闭通知也会很方便。“有人还建议他在打印开始之前添加一个轻小的通知,因为这件事对于一些人可能有点刺耳,但这会非常有用。”


这是一个有趣的项目,也很实用,这需要更多开发者的创新加入。然而这位作者也不否认,上周末的大部分时间都花在考虑如何从当地二手办公用品店购买旧 Epson TM-T88IV 打印机上了。


评论