c++ - libusb 传输字符串,但打印机不打印

标签 c++ c printing libusb

我正在使用此教程 link发送一个字符串以将其打印出来。然而,即使打印机显示“正在接收数据”,数据也不会被打印。在代码本身中,libusb_bulk_transfer 返回我想要打印的字符串中的字符数。

有人知道我可能做错了什么吗?也许我应该指出,我正在使用 OsX,当我尝试按照常规程序打印文件时,打印机工作正常。

谢谢!

最佳答案

将字符串发送到现代光栅图像或打印机不太可能达到预期的效果(即它不会打印字符串) - 打印机将尝试将其解释为命令或图像数据。任何特定打印机的控制都是特定于该打印机型号的,并且在现代打印机上相当复杂。例如,大多数喷墨打印机,主机 PC 生成光栅图像并发送图像数据。对于 PostScript 打印机,会生成 PostScript 语言的页面描述(类似于 PDF 文档)并将其发送到打印机。

操作系统通过打印机驱动进行打印;操作系统以其自己的格式构建页面描述,打印机驱动程序将其转换为打印机专有格式。

如果您想打印文本,通常必须通过操作系统服务(除非您正在编写打印机驱动程序本身),而不是通过 USB 直接传输数据。唯一的异常(exception)可能是当您有 PostScript 文件和 PostScript 打印机时 - 那么该文件已经采用打印机的语言。

此外,在USB中,打印设备已经被定义device class 。这允许您获取有关打印机及其功能的信息,以便您可以适本地访问它(同样是打印机驱动程序和操作系统的工作)

关于c++ - libusb 传输字符串,但打印机不打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43961274/

相关文章:

c++ - 将常量 cstring append 到我自己的 String 类对象

c++ - 类内中断

c++ - 如何正确设置 void* userData 字段?

c - 代码运行时输出错误链接列表问题?

c - 为什么这个函数序言中没有 "sub rsp"指令,为什么函数参数存储在负 rbp 偏移处?

创建convert_line_endings函数

r - 打印没有行和列索引的矩阵

c++ - 用于检测 Ajax 调用的 Internet Explorer 插件

java - 向 Zebra 打印机发送 SGD 命令并使用 Java 接收响应

Python:函数 print() 中的语法无效