c++ - LPT POS printer alternate feed -
i have ancient pos printer axhiohm a470 link. windows 7 64bit doesn't detect printer , drivers don't exist. way print (text mode only) send print job directly lpt. after digging found it's pretty easy. thing have correctly create file lpt1 , write it.
#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 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 write data " << getlasterror() << std::endl; _getch(); }
now take 1 step further , send print job second feeder. first 1 roll of paper inside printer (prints receipt). 1 prints code above. second 1 slit used put in receipt. don't know how send print job there.
as found out not programming problem printer control problem. accomplish form validation on axiohm a470 receipt/form validation printer, have send appropriate escape sequences. link website described how validate form printing on pos slip , receipt validation printer . also, if don't have useful drivers printer , it's connected lpt/com port there's easier way send print job printer in code above. don't have install windows generic/text drivers. how send line feed printer:
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");
you can bypass creating , copying file lpt1 , open lpt1 file directly.
Comments
Post a Comment