首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LPT POS打印机交替进给

LPT POS打印机交替进给
EN

Stack Overflow用户
提问于 2014-05-29 15:53:18
回答 1查看 814关注 0票数 1

我有一台古老的POS打印机Axhiohm A470 链接。Windows 7 64位无法检测到这台打印机,驱动程序也不存在。打印(仅文本模式)的唯一方法是将打印作业直接发送到LPT。经过一番挖掘,我发现这很容易。唯一需要做的就是正确地创建文件LPT1并写入它。

代码语言:javascript
复制
#include <iostream>
#include <conio.h>
#include <windows.h>

int main(int argc, char* argv[])
{
    HANDLE hComm = CreateFileA("LPT1", GENERIC_READ | GENERIC_WRITE,
                       0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

    if (hComm == INVALID_HANDLE_VALUE)
        return 1;

    char str[] = { "   Hello from your printer\n" };

    DWORD bytesWritten;
    unsigned char data;

    BOOL nError = WriteFile(hComm, str, sizeof(str), &bytesWritten, NULL);

    if (nError)
        std::cout << "Data sent" << std::endl;
    else
        std::cout << "Failed to write data " << GetLastError() << std::endl;

    _getch();
}

现在我想再走一步,把印刷工作寄给第二支线。第一种是打印机内的纸卷(打印收据)。这个用上面的代码打印出来。第二个是用来放另一张收据的狭缝。我不知道怎么把打印作业寄到那里。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-01 14:03:59

正如我所发现的,这不是编程问题,而是打印机控制问题。要在Axiohm A470收据/表单验证打印机上完成表单验证,您必须发送适当的转义序列。这是我描述了如何验证表单POS卡打印和收据验证打印机的网站的链接。此外,如果您没有任何有用的驱动程序到您的打印机,并且它连接到lpt/com端口,那么向打印机发送打印作业的方法要比我上面的代码中的更简单。您甚至不必安装Windows通用/文本驱动程序。这就是我如何向打印机发送行提要的方式:

代码语言:javascript
复制
FILE * pFile;
char buffer[] = { (char)0x0a };
pFile = fopen ("c:\\test.txt", "wb");
fwrite (buffer , sizeof(char), sizeof(buffer), pFile);
fclose (pFile);
system("copy c:\\test.txt lpt1");

您可能可以绕过创建文件并将文件复制到lpt1并直接打开lpt1文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23937521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档