字符串由libusb传输,但打印机不会打印

时间:2017-05-14 07:05:46

标签: c++ c printing libusb

我正在使用此link的教程发送一个字符串来打印它。但是,即使打印机说“接收数据"数据无法打印。在代码本身中,libusb_bulk_transfer返回我想要打印的字符串中的字符数。

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

如果要打印文本,通常必须通过操作系统服务(除非您自己编写打印机驱动程序),而不是通过USB直接数据传输。唯一的例外是当你有一个PostScript文件和一个PostScript打印机时 - 那个文件已经是打印机的语言。

此外,在USB中,打印设备已经定义为device class。这使您可以获取有关打印机及其功能的信息,以便您可以正确访问它(再次是打印机驱动程序和操作系统的工作)