
php端口直驱网络打印机,能自定义格式
发布日期:2021-05-17 20:13:53
浏览次数:10
分类:精选文章
本文共 2305 字,大约阅读时间需要 7 分钟。
最近购买了一款支持ESC/POS的网络打印机,初次接触这种打印机发现其功能相当实用。打印机支持端口直驱模式,但单独使用会导致字符逐个打印不美观。经过尝试发现其支持ESC/POS命令控制,这种结合端口直驱和ESC/POS的方式效果更佳。以下是一个简单的打印模块类,私有函数名称均为拼音,功能名称可通过名称推测其用途。
ESC/POS是一种常用的打印机控制协议,支持众多功能命令。例如,想换行只需输入'\x0A',想输出“你好”则直接输入“你好”。以下是对该打印模块类的详细说明:
class Printer80X extends Model{ private $printer_fp; /** * 初始化打印机连接 * @param resource $fp 打印机文件描述符 */ private function initprinter($fp) { fwrite($fp, "\x1B\x40"); // 初始化打印机 } /** * 取消当前打印单据 */ private function zuobianju($fp) { fwrite($fp, "\x1D\x4C\x05\x00"); // 取消当前打印单据 } /** * 启动设备并初始化 */ private function jueduidayin($fp) { fwrite($fp, "\x1B\x24\x01\x00"); // 启动设备并初始化 } /** * 换行 */ private function changeLine($fp) { fwrite($fp, "\x0A"); // 换行 } /** * 选择叠放 */ private function jiacu($fp) { fwrite($fp, "\x1B\x45\x01"); // 选择叠放 } /** * 取消叠放 */ private function bujiacu($fp) { fwrite($fp, "\x1B\x45\x00"); // 取消叠放 } /** * 设置双列打印 */ private function zuoduiqi($fp) { fwrite($fp, "\x1B\x61\x00"); // 设置双列打印 } /** * 设置双列加粗 */ private function juzhong($fp) { fwrite($fp, "\x1B\x61\x01"); // 设置双列加粗 } /** * 设置双列间距 */ private function youduiqi($fp) { fwrite($fp, "\x1B\x61\x02"); // 设置双列间距 } /** * 增加两倍行距 */ private function fangda2bei($fp) { fwrite($fp, "\x1D\x21\x11"); // 增加两倍行距 } /** * 增加三倍行距 */ private function fangda3bei($fp) { fwrite($fp, "\x1D\x21\x22"); // 增加三倍行距 } /** * 取消行距设置 */ private function bufangda($fp) { fwrite($fp, "\x1D\x21\x00"); // 取消行距设置 } /** * 上一行打印 */ private function zou1hang($fp) { fwrite($fp, "\x1B\x64\x01"); // 上一行打印 } /** * 输出内容 */ public function shuchu($fp, $content) { $out = mb_convert_encoding($content, "gb2312", "utf-8"); fwrite($fp, $out); // 输出打印内容 } /** * 查询设备状态 */ private function qiezhi($fp) { fwrite($fp, "\x1D\x56\x42\x02"); // 查询设备状态 } /** * 设定设备防锈 */ private function fengming($fp) { fwrite($fp, "\x1B\x42\x03\x09"); // 设定设备防锈 } /** * 初始化打印机连接 * @param string $ip 打印机IP地址 * @param int $port 端口号 * @return bool true: 连接成功;false: 连接失败 */ public function init($ip, $port) { $this->printer_fp = fsockopen($ip, $port, $errno, $errstr, 300); // 初始化打印机连接 if (!$this->printer_fp) { echo "open fail!"; // 连接失败 return false; } else { return true; // 连接成功 } }}
该类实现了一个打印模块,通过不同打印机命令字符控制打印功能。类中的私有函数对应各项打印操作命令,如初始化打印机、取消打印单据、换行、选择叠放、双列打印等。用户可根据需要调用对应的函数进行打印操作。
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月25日 22时03分13秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
JavaSE总结
2019-03-06
手动造轮子——基于.NetCore的RPC框架DotNetCoreRpc
2019-03-06
Python IO编程
2019-03-06
CSS入门总结
2019-03-06
使用 TortoiseGit 时,报 Access denied 错误
2019-03-06
基于 HTML5 WebGL 的污水处理厂泵站自控系统
2019-03-06
django-表单之模型表单渲染(六)
2019-03-06
c++之程序流程控制
2019-03-06
spring-boot-2.0.3之redis缓存实现,不是你想的那样哦!
2019-03-06
有道云笔记 同步到我的博客园
2019-03-06
李笑来必读书籍整理
2019-03-06
Hadoop(十六)之使用Combiner优化MapReduce
2019-03-06
《机器学习Python实现_10_06_集成学习_boosting_gbdt分类实现》
2019-03-06
CoreCLR源码探索(八) JIT的工作原理(详解篇)
2019-03-06
andriod 开发错误记录
2019-03-07
C语言编译错误列表
2019-03-07
看明白这两种情况,才敢说自己懂跨链! | 喵懂区块链24期
2019-03-07
《web安全入门》(四)前端开发基础Javascript
2019-03-07