如何在 ubuntu 中使用 python 将原始字符串发送到点阵打印机?

2024-03-27

我有一台点阵打印机 LX-300 通过网络连接到我的计算机。如何在 Python 中将带有 ESCP 字符的原始字符串直接发送到打印机?

该计算机通过另一台计算机连接到打印机。我需要发送原始字符串,因为 LX-300 图像打印结果模糊。


问题

要沿着该路由发送数据:

客户端计算机--->服务器(Windows机器)--->打印机(点阵)

...并not让Windows弄乱数据;而是直接从客户端计算机发送原始数据,包括打印机控制代码。

我的解决方案

以下是我如何解决小型内部数据库应用程序的几乎相同的问题:

步骤 1) 使打印机可通过网络访问,而 Windows 不会插手路由到它的数据。我通过使用“通用/仅文本”驱动程序安装打印机,然后安装来完成此操作原始打印服务器 https://sourceforge.net/projects/rawprintserver/在连接到打印机的 Windows 计算机上。

步骤 2) 通过网络将原始数据发送到设置 RawPrintServer 时指定的 TCP/IP 端口(默认为 9100)。有多种方法可以做到这一点,这就是我所做的:

data = b"\x1B@A String To Print\x1B@" # be sure to use the right codes for your printer
ip_addr = 123.123.123.123 # address of the machine with the printer
port = 9100 # or whatever you set it to
s = socket.socket()
try:
    s.connect((ip_addr, port))
    s.send(data)
except:
    # deal with the error
finally:
    s.close()

背景

我分两部分思考了这个问题:

  1. 客户端计算机:使用打印机的正确格式/控制代码从 Python 吐出我需要的数据,并通过网络发送它
  2. 打印服务器机:将数据传输到本地连接的打印机

第 1 点是简单的部分。其实有这可能对所有打印机代码都有帮助,但我发现它们中的大多数都是针对小型销售点标签打印机,对我来说用处有限。所以我只是将我需要的内容硬编码到我的 Python 程序中。

当然,您选择解决问题 2 的方式将影响您从 Python 发送数据的方式。我选择 TCP/IP 路由是为了避免处理 Samba 和 Windows 打印问题。

您可能已经发现,Windows 通常会非常努力地将您想要打印的任何内容转换为位图并以图形模式运行打印机。我们可以使用通用驱动程序并将数据直接转储到(本地)打印机端口以防止这种情况发生。

那么,缺少的链接是从网络到连接到打印机的计算机上的本地打印机端口。同样,有多种方法可以解决这个问题。您可以尝试以某种方式访问​​ Windows 打印机共享。如果您像我一样采用 TCP/IP 路线,您可以用 Python 编写自己的打印服务器。就我而言,RawPrintServer 程序“刚刚工作”,所以我没有进一步调查。显然,它所做的只是从 TCP 端口 9100 获取传入数据并将其推送到本地打印机端口。显然,您必须确保防火墙没有阻止打印服务器计算机上的传入连接。就 Windows 而言,此方法不需要“共享”打印机。

根据您的情况(如果您使用 DHCP),您可能需要做一些额外的工作才能在 Python 中获取服务器的 IP 地址。就我而言,由于我的应用程序的特殊性,我免费获得了 IP。

这个解决方案似乎对我来说非常有效。我有一台旧的松下打印机,在 Epson ESC/P 兼容模式下运行,连接到 Windows 7 机器,我可以从本地网络上的任何其他计算机进行打印。顺便说一句,无论客户端计算机运行什么操作系统,这个总体想法都应该有效。

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

如何在 ubuntu 中使用 python 将原始字符串发送到点阵打印机? 的相关文章

随机推荐

  • 如何在 CSSResource 中使用非标准 CSS 选择器

    我正在尝试在 webkit 中使用滚动条的样式 CSS 选择器如下所示 webkit scrollbar corner webkit scrollbar track piece disabled 等等 当我在 ClientBundle 中使
  • 如何在 Ubuntu 上将 R 版本 3.2.2 降级到版本 3.1.1

    我使用 apt get 安装了它 现在显示 3 2 2 这是一个有问题的版本 如何降级到 3 1 1 Update install packages c batch bitops boot caTools data table doMC d
  • 使用MediaCodec和MediaExtractor对视频进行解码和编码

    我需要将视频解码为一系列位图 以便我能够修改它们 然后将它们压缩回 android 中的视频文件 我计划通过使用来管理这个getFrameAtTime并将其保存到图像序列中 然后我可以修改序列中的图像并将其编码回电影 但我对此有两个问题 首
  • Spark SQL 和时区 - 如何将 unix 时间戳转换为本地化时间戳

    我需要从 Spark DataFrame 将 epoch unix 时间戳列 例如 1509102527 GMT 星期五 2017 年 10 月 27 日 11 08 47 转换为本地化时间戳 以便获取特定时区的本地小时 是否有 Spark
  • Unix 上具有多个读取器的命名管道 (FIFO)

    我有两个程序 Writer 和 Reader 我有一个从写入器到读取器的 FIFO 因此当我向写入器中的标准输入写入内容时 它会从读取器打印到标准输出 我尝试在打开两个 Reader 的情况下执行此操作 并且仅从两个 Reader 程序之一
  • 更改通知标题的颜色 (Android)

    这是我的代码 一切正常 val builder NotificationCompat Builder this NOTI ID setSmallIcon R drawable ic stat name setContentTitle My
  • 双击标题栏时如何知道窗口是否最小化?

    This image is from SystemPreferences gt Appearance 我想知道如何以编程方式获取该值 我问这个问题是因为我正在绘制一个带有自定义标题栏的窗口 并且我希望它 在行为上 尽可能类似于普通 非自定义
  • 如何进行网站容量规划? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我刚读完书容量规划的艺术 https rads stackoverflow com amzn click com 0596518579 顺便说一句 我
  • 使用 OpenCV 将图像文档转换为黑白

    我是 OpenCV 和图像处理的新手 我不知道如何解决我的问题 我有一张用 iPhone 制作的文档照片 我想将该文档转换为黑白 我尝试使用阈值 但文本不太好 有点模糊且难以阅读 我希望文本看起来与原始图像相同 只有黑色 背景为白色 我能做
  • Azure 表存储 - 可能不存在的列上的 where 子句

    我正在向我的天蓝色表添加一个新列 例如 该表称为 User 新列称为 ComputationDate User 表已存在 其中的行没有此新列 ComputationDate 我对此有一个疑问 如下 var usersDue from use
  • FastAPI 中的返回值[重复]

    这个问题在这里已经有答案了 我试图在 FastAPI 中返回 matplotlib figure Figure 如果我像图像一样保存它 它就可以工作 代码在这里 router get graph id file name Return th
  • SQL SMO 执行批处理 TSQL 脚本

    我正在使用 SMO 执行批处理 SQL 脚本 在 Management Studio 中 该脚本的执行时间约为 2 秒 使用以下代码 大约需要 15 秒 var connectionString GetConnectionString ne
  • 非标准网址格式

    我们在应用程序中向客户发送了邮件 其中有一个链接 在 yahoo 和 Hotmail 中 每当客户单击链接时 它都会显示以下警告 替代文本 http img691 imageshack us img691 5402 warningp jpg
  • Twitter Bootstrap 下拉链接不起作用

    我正在使用引导程序版本2 0 我有以下 html 结构 现在当我点击Filter by Team下拉菜单正确显示 现在 当我点击链接时 我应该被带到该页面 但链接确实not工作 我的意思是 当我单击下拉元素时 它们应该将我带到一个 URL
  • 使用 JS 检查 HTML5

    我有一个页面包含一些 JS 来更新浏览器历史记录 pushState 使用 HTML5 由于 IE8 不支持 HTML5 用户会被告知该页面包含错误 虽然这并没有削弱页面的功能 但它看起来不太专业 所以我想知道在运行此代码之前是否检查用户浏
  • Chrome 在下载的文件中添加“-, 附件”

    我使用 Symfony2 框架并使用以下代码导出 xml 文件 response gt setStatusCode 200 response gt headers gt set Content Type application xml re
  • MSIL 源代码的编译器位于 .NET Framework 中的什么位置?

    我有一个关于 NET Framework 的问题 MSIL 源代码的编译器驻留在哪里 是在 CLR 本身还是任何其他层 另外 请给我提供有关 NET Framework 的非常小 但足够 的插图 这是一个快速流程图 未遵循的符号 可以澄清大
  • 获取退出代码 - Go

    我正在使用的包 os exechttp golang org pkg os exec http golang org pkg os exec 在操作系统中执行命令 但我似乎找不到获取退出代码的方法 我可以读取输出 ie package ma
  • 如何在类之间传递对象

    所以我在这里想做的是传递一个类的相同副本 class A 到另一个班级 class B but class B实例化于class A Using a new中的声明class B不起作用 因为当我希望能够使用第一个实例中的变量时 它会导致无
  • 如何在 ubuntu 中使用 python 将原始字符串发送到点阵打印机?

    我有一台点阵打印机 LX 300 通过网络连接到我的计算机 如何在 Python 中将带有 ESCP 字符的原始字符串直接发送到打印机 该计算机通过另一台计算机连接到打印机 我需要发送原始字符串 因为 LX 300 图像打印结果模糊 问题