OS: Linux
Python: 3.5-3.7 (tested)
pybluez Needed by operating on the system bluetooth stack
cv2, numpy 图像转换工具需要
BtManager() 参数留空会搜索附近可用的喵喵机并连接
BtManager("AA:BB:CC:DD:EE:FF") 附加指定MAC会跳过搜索过程直接连接设备,更省时间
从API看该机器只能输入二值图像进行打印,所以文本转图片是在客户端完成的。
打印的图像格式为二进制数据,每一位表示黑(1)或白(0),每行384个点。
mmj = BtManager()
mmj.sendImageToBt(img)
mmj.disconnect()registerCrcKeyToBt(key=123456) 更改通信CRC32 KEY(不太懂这么做是为了啥,讲道理监听到这个包就能拿到key的)
sendPaperTypeToBt(paperType=0) 更改纸张类型(疯狂卖纸呢)
sendPowerOffTimeToBt(poweroff_time=0) 更改自动关机时间
sendSelfTestToBt() 打印自检页面
sendDensityToBt(density) 设置打印密度
sendFeedLineToBt(length) 控制打印完后的padding
queryBatteryStatus() 查询剩余电量
queryDensity() 查询打印密度
sendFeedToHeadLineToBt(length) 不太懂和 sendFeedLineToBt 有什么区别,但是看起来都是在打印后调用的。
queryPowerOffTime() 查询自动关机时间
querySNFromBt() 查询设备SN
其实还有挺多操作的,有兴趣的看着const.py猜一猜好了。
ImageConverter.image2bmp(path) 任意图像到可供打印的二进制数据转换
TextConverter.text2bmp(text) 指定文字到可供打印的二进制数据转换
两个小脚本,用来实现发送图片给微信公众号后自动打印。
wechat.php 用于VPS接收腾讯数据,默认只允许指定用户打印。
printer_server.py 放置于树莓派等有蓝牙的靠近喵喵机的机器上运行,可以使用tinc等建立VPN以供VPS直接访问。
这玩意就不能增加一个多次打印的功能吗?以较低温度多次打印再走纸,应该可以实现打印灰度图的。
逆了好久的固件也没搞出来啥东西,真是菜。希望有大佬能告诉我一点人生的经验。
顺便丢两个芯片型号: NUC123LD4BN0, STM32F071CBU6,似乎是Cortex-M0。
PS: 本代码仅供非盈利用途,如用于商业用途请另请高明。
Thanks for all the reverse engineering work done by the original author of this project.