私は古代のPOSプリンターAxhiohm A470 LINKを持っています。Windows 7 64bit はこのプリンターを検出せず、ドライバーも存在しません。印刷する唯一の方法 (テキスト モードのみ) は、印刷ジョブを LPT に直接送信することです。掘り下げた後、それはかなり簡単であることがわかりました。あなたがしなければならないことは、ファイルLPT1を正しく作成してそれに書き込むことだけです。
#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();
}
ここで、さらに一歩進んで、印刷ジョブを 2 番目のフィーダーに送信します。1つ目は、プリンター内部のロール紙です(レシートを印刷します)。これは上記のコードで印刷されます。2つ目はレシートを入れるスリットです。そこに印刷ジョブを送信する方法がわかりません。