gpt4 book ai didi

delphi - 在哪里可以找到 "ESC/POS"Epson 条码测试程序?

转载 作者:行者123 更新时间:2023-12-03 14:43:44 50 4
gpt4 key购买 nike

我正在努力购买 Epson“ESC/POS”打印机来打印条形码(使用 Delphi),并想测试打印机是否有故障。你知道在哪里可以找到在“ESC/POS”中打印条形码的程序吗?我想作为最后的手段,OPOS 程序也可以。

此外,一个可以运行的演示 Delphi 程序也可以。到目前为止我拥有的所有 Delphi 代码片段都不起作用。

我使用的打印机是 Epson TM-L60II

最佳答案

我有一个用 Delphi 5 为 TMT88 编写的完整测试程序,但这里的源代码有点大,所以这里是条形码位

请注意,由于其来自完整对象的片段,某些变量/函数可能会丢失

获取条形码字符

{**
* @param a ean13 barcode numeric value
* @return the escpos code for the barcode print
* Description uses escpos code, return code needed to print a ean13 barcode
*}
function TPrintEscPosToPort.getBarcodeEscPosCode(l_ean13:String):String;
var
l_return:String;
begin
l_return := CHR(29) + 'k' + CHR(67) + CHR(12);
l_return := l_return + l_ean13; // Print bar code
l_return := l_return + l_ean13; // Print bar code number under thge barcode

Result := l_return
end;

打印到打印机

{**
* @param Printer Name, Item be printed, Cut the papers after the cut, #no of copies to print
* @return boolen, true if it printed
* Description prints a test page to the tysso printer
*}
function TPrintEscPosToPort.escPosPrint(const l_printer, l_textToPrint :String;l_cutPaper:Boolean=true;l_copies:integer=1): Boolean;
var
l_pPort,l_pName,l_tmp:String;
i,x:integer;
PrinterFile: TextFile;
begin
// set result to false so any thing other then a good print will be false
Result:= FALSE;

try
//Find if the printer exists, else set to defult -1
i := Printer.Printers.IndexOf(l_printer);
if (i > -1) then
begin
Printer.PrinterIndex := i;
l_pName := Printer.Printers[i]; //Get the printer name (incase its the defult and not the one passed)
l_pPort := Self.getPrinterPort(l_pName) ; // get the port name from the reg
end;

// If true add headers and footers to the passed text
if (Self.aPrintHeadersFooters) then
begin
l_tmp := Self.getHeader()
+ l_textToPrint + Self.GetFooter();
end
else
begin
l_tmp := l_textToPrint;
end;

//Send the Document To the printer
try
for x:= 1 to l_copies do //Print multi-copies
Begin
//Assign the file to a tmp file in the printer port
if (length(trim(l_pPort)) > 0) then AssignFile(PrinterFile,l_pPort)
else
begin
//only use if we cant get the port
//(may look bad as ctrl codes are still in place)
AssignPrn(PrinterFile);
l_tmp := Self.stripEscPos(l_tmp);
end;

Rewrite(PrinterFile);

try
//Send the passed Text to the printer
WriteLn(PrinterFile,l_tmp);

if (Self.aPrinterReset) then
WriteLn(PrinterFile,escReset); // Reset the printer alignment

if (l_cutPaper) then
WriteLn(PrinterFile,escFeedAndCut); //Cut the paper if needed
finally
CloseFile(PrinterFile);
Result:= true;
end;
end;
except
end;
except
end;

end;

更新

这是上面代码中的失控代码常量,希望这些名称具有足够的描述性。

const
escNewLine = chr(10); // New line (LF line feed)
escUnerlineOn = chr(27) + chr(45) + chr(1); // Unerline On
escUnerlineOnx2 = chr(27) + chr(45) + chr(2); // Unerline On x 2
escUnerlineOff = chr(27) + chr(45) + chr(0); // Unerline Off
escBoldOn = chr(27) + chr(69) + chr(1); // Bold On
escBoldOff = chr(27) + chr(69) + chr(0); // Bold Off
escNegativeOn = chr(29) + chr(66) + chr(1); // White On Black On'
escNegativeOff = chr(29) + chr(66) + chr(0); // White On Black Off
esc8CpiOn = chr(29) + chr(33) + chr(16); // Font Size x2 On
esc8CpiOff = chr(29) + chr(33) + chr(0); // Font Size x2 Off
esc16Cpi = chr(27) + chr(77) + chr(48); // Font A - Normal Font
esc20Cpi = chr(27) + chr(77) + chr(49); // Font B - Small Font
escReset = chr(27) + chr(64); //chr(27) + chr(77) + chr(48); // Reset Printer
escFeedAndCut = chr(29) + chr(86) + chr(65); // Partial Cut and feed

escAlignLeft = chr(27) + chr(97) + chr(48); // Align Text to the Left
escAlignCenter = chr(27) + chr(97) + chr(49); // Align Text to the Center
escAlignRight = chr(27) + chr(97) + chr(50); // Align Text to the Right

关于delphi - 在哪里可以找到 "ESC/POS"Epson 条码测试程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/308588/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com