通过 PHP 使用 EPL 打印:存储图像

2024-03-03

背景信息:
Mac OS X Lion 10.7.3 (11D50b)
EPL: http://en.wikipedia.org/wiki/Eltron_Programming_Language http://en.wikipedia.org/wiki/Eltron_Programming_Language
英超手册:http://www.geksagon.ru/i/2/EPL2_Manual.pdf http://www.geksagon.ru/i/2/EPL2_Manual.pdf

我通过 2 端口串行转以太网服务器连接到打印机。

打印机配置读数:

UKQ1935H U UPS V4.14   
S/N: 64A024100181
Serial port:96,N,8,1
Image buffer size:0245K
Fmem:001.0K,059.9K avl
Gmem:000K,0058K avl
Emem:010K,0058K avl
I8,C,001 rY
S4 D10 R000,000 ZT UN
q832 Q609,24
Option:D
oUs,t,u
10 19 29 

Using PHP我能够向 EPL 打印机发送命令。
我能发送条形码和 ASCII线路没有问题。
我可以存储图像,然后使用这些图像。

Problem:

当我将二进制数据与任何其他命令混合时,奇怪的是它会崩溃。

Example:

<?php
    $filename = WWW_ROOT . 'img/labels/mylogo.pcx';
    $handle = fopen( $filename , 'r' );
    $image = fread( $handle , filesize( $filename ) );
    $bytes = strlen( $image );
    fclose( $handle );

    # Store the image.
    # Delete twice when dealing with Printer Flash
    $commands = array(
        'GK"MYLOGO"', # Del
        'GK"MYLOGO"', # Del
        'GM"MYLOGO"' . $image_bytes, # Store
        $image_data # Binary data
    );
?>

这本身就很好用。

这也可以正常工作 - 如果在单独的请求上运行:

<?php
    $commands = array(
        '', # <-- As per the manual, a blank line prior to a new label.
        'N', # Clear Image Buffer, New Label
        'GG30,10,"MYLOGO"', # Get image variable MYLOGO
        'P' # Print
    );
?>

因此,在存储图像后,MYLOGO 将最终打印存储的徽标。

但如果我这样做:

<?php
     $commands = array(
        'GK"MYLOGO"', # Del
        'GK"MYLOGO"', # Del
        'GM"MYLOGO"' . $image_bytes, # Store
        $image_data, # Binary data
        '', # <-- As per the manual, a blank line prior to a new label.
        'N', # Clear Image Buffer, New Label
        'GG30,10,"MYLOGO"', # Get image variable MYLOGO
        'P' # Print

     );
?>

它打印徽标,但随后开始挂断。
如果我有 ASCII 指令,它们将无法按预期完成。

从打印机进行转储显示第一个命令序列运行,但是一旦它进入二进制数据,它就开始接收它,然后在二进制数据的中间和结尾,它开始尝试运行下一组命令( ASCII 命令),然后二进制继续。

这当然意味着它不会打印……因为在图像数据之后没有收到 P 命令。

它为什么要这样做?

所以它是有效的:何时发出 HTTP 请求,单独发出命令集(新的套接字连接)。
当两组命令都在同一个 HTTP 请求中时,它不起作用。

如果二进制数据是用其他命令生成的 - 打印机进入“奇数”状态并且必须重新启动电源才能再次开始接收命令。

End Goal:能够与其他命令传递二进制数据,并且没有任何限制。

示例代码:https://gist.github.com/de3a1ba2f0decc36b6e6 https://gist.github.com/de3a1ba2f0decc36b6e6

Images

进入转储:http://imageshack.us/photo/my-images/193/photo1any.jpg/ http://imageshack.us/photo/my-images/193/photo1any.jpg/

转储顶部:http://imageshack.us/photo/my-images/37/photo2ln.jpg/ http://imageshack.us/photo/my-images/37/photo2ln.jpg/

出现在转储中间:http://imageshack.us/photo/my-images/820/photosaz.jpg/ http://imageshack.us/photo/my-images/820/photosaz.jpg/

它“应该”是什么样子:http://imageshack.us/photo/my-images/832/photo5uc.jpg/ http://imageshack.us/photo/my-images/832/photo5uc.jpg/

仅使用 ASCII 和条形码时会是什么样子:http://imageshack.us/photo/my-images/23/photo4ucf.jpg/ http://imageshack.us/photo/my-images/23/photo4ucf.jpg/

它看起来像什么弄乱: http://imageshack.us/photo/my-images/708/photo3si.jpg/ http://imageshack.us/photo/my-images/708/photo3si.jpg/


更新 1:另一个开发人员尝试了一些方法,它可能有效,需要进行更多测试,但是......出于某种原因......在存储图像后使用 4 个新行似乎有效......这没有记录在手册中。

更新2:经过更多测试,添加新行似乎确实“改善”了情况,但并没有解决问题。

更新3:经过更多测试,我认为问题可以缩小到:

如果您运行一次 STORE 命令,一切都很好。再次运行会导致癫痫发作。

更新 4:这似乎是打印机本身或打印机与应用程序联网方式的问题。打电话给客户并远程打印到他们的,看起来效果很好。


根据更新 #4:这似乎是打印机本身或打印机与应用程序联网方式的问题。打电话给客户并远程打印到他们的,看起来效果很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 PHP 使用 EPL 打印:存储图像 的相关文章

  • 将 mod-rewrite 添加到现有 PHP 网站

    我正在更新一个 php 应用程序 该应用程序当前不使用 url 重写 目的是隐藏文件扩展名 网站总体结构如下 root index php login php page1 php page2 php page3 php page4 php
  • 在数据库中存储差异的最紧凑方式是什么?

    我想实现类似于维基媒体的修订历史的东西 最好使用的 PHP 函数 库 扩展 算法是什么 我希望差异尽可能紧凑 但我很高兴只能显示每个修订版与其同级修订版之间的差异 并且一次只能回滚一个修订版 在某些情况下 只有几个字符可能会发生变化 而在其
  • GhostScript PDF 合并(丢失可编辑字段)

    我正在使用 GhostScript 将 PDF 合并为一个 PDF 其中一份 PDF 具有我在 Adob e Acrobat Pro 9 中创建的文本框字段 可编辑字段 当我使用 GhostScript 合并这两个 PDF 时 我丢失了文本
  • 如何使用 JQuery 提取嵌套 HTML 中的文本?

    我这里有 HTML 代码 div class actResult style border solid table tbody tr td Order Number td td 1 td tr tr td Customer Number t
  • 运行 shell 命令并将输出发送到文件?

    我需要能够通过 php 脚本修改我的 openvpn 身份验证文件 我已将我的 http 用户设置为免通 sudoer 因为这台机器仅在我的家庭网络中可用 我目前有以下命令 echo shell exec sudo echo usernam
  • Php 会话标头已经发送错误[重复]

    这个问题在这里已经有答案了 可能的重复 php 标头已发送错误 https stackoverflow com questions 3319207 php headers already sent error 我已附上我的代码 该代码用于
  • PHP 生成文件供下载然后重定向

    我有一个 PHP 应用程序 它创建一个 CSV 文件 强制使用标头下载该文件 这是代码的相关部分 header Content Type application csv header Content length filesize NewF
  • localhost/test.php 不返回任何内容

    我正在遵循教程构建一个网络应用程序 我创建了一个简单的test php网络空间中的文件 var www html 问题是当我输入localhost test php在浏览器地址窗口中 它返回一个空页面 我试过localhost php in
  • exec()、shell_exec()、curl_exec() 的安全漏洞

    有时 我会使用 exec shell exec 和curl exec 以下是典型用途 假设其中有 PHP 变量 即第一个变量中的 html 用户有可能修改其内容 从安全漏洞的角度来看 我应该关注什么 escapeshellcmd 和 esc
  • 简单 php 脚本找不到对象错误

    每次我点击提交按钮在网页中处理此代码时 它都会转到 未找到对象 404 错误 页面 它发生在我的一些脚本中 我不知道问题的根源是我的本地主机 Xampp 还是我的代码 if isset POST submit require dbc php
  • 通过 PHP CURL 添加 Google 联系人

    我已经成功地通过 Zend Framework 和 PHP 将联系人添加到 google 我也希望能够通过 CURL 来做到这一点 有人有关于如何执行此操作的良好教程吗 我终于能够通过 CURL 和访问令牌来做到这一点 首先 我要说的是OA
  • 如何解码这个 JSON 字符串?

    这是我从 feed finder url 中得到的字符串 JSON 编码 updated 1265787927 id http www google com reader api 0 feed finder q u003dhttp itca
  • drupal 7 将实际内容存储在数据库中的哪里?

    我打开了 drupal 7 的数据库并在表中查找node node revisions and node types并且找不到 drupal 存储实际的位置body节点 内容 的 有人有线索吗 哦 我刚刚找到了 在 D7 中 他们实现了字段
  • 如何在 Symfony 和 Doctrine 中实现 ManyToMany 和 OneToMany?

    我发现该文档在解释实体之间关系的创建方面非常糟糕 因此 我必须向我的 StackExchangers 同胞寻求帮助 所以 我正在尝试构建以下案例 Case 1 A User属于一个或多个Group and a Group可以有很多Permi
  • 带有二进制数据的 Bash echo 命令?

    有人可以解释一下为什么这个脚本有时只返回十六进制字符串表示形式的 15 个字节吗 for i in 1 10 do API IV openssl rand 16 API IV HEX echo n API IV od vt x1 w16 a
  • 如何使用 PHP 通过 JSON 发送 HTML 元素?

    以下功能 try query this gt pdo gt prepare SELECT FROM bookings WHERE TourID AND dTourDate and Status NOT LIKE Cancelled quer
  • 如何在索引视图中打印关联数据

    subjects this gt Subjects gt find all contain gt Users fields gt Users username Users email gt hydrate false gt toArray
  • https 重定向 laravel .htaccess 之后删除 /public

    我有一个 Laravel 页面部署在共享主机中 当我强制 http 请求重定向到 https 时 url 包含 public 我的根 htaccess 是 RewriteEngine on RewriteCond REQUEST URI p
  • 如何从 URL 获取当前的 Web 目录?

    如果我有一个网址http www example com sites dir index html http www example com sites dir index html 我想提取 sites 这个词 我知道我必须使用正则表达式
  • 在桌面应用程序中将发票打印到 USB 打印机

    我正在开发 flutter 桌面应用程序 我需要将发票打印到 USB 打印机 https pub flutter io cn packages printing https pub flutter io cn packages printi

随机推荐