我有一个Star Micronics TSP100 printer,我正试图通过Delphi7的OPOS使用它,但我似乎不能让它打印条形码。
我可以打开、声明和启用、打印文本和剪切,但不能打印条形码。
我尝试了许多导入Active X控件来处理打印机的方法,就像我对Bixolon Samsung POS打印机所做的那样,它工作得很好。
欢迎任何指导者。
代码:
procedure TForm1.OpenbtnClick(Sender: TObject);
begin
showmessage(inttostr( posprinter1.Open('StarTSP100')));
end;
procedure TForm1.ClaimbtnClick(Sender: TObject);
begin
showmessage(inttostr( posprinter1.ClaimDevice(0)));
end;
procedure TForm1.EnablebtnClick(Sender: TObject);
begin
POSPrinter1.DeviceEnabled := True;
end;
procedure TForm1.PrintbtnClick(Sender: TObject);
begin
POSPrinter1.PrintNormal(2,'A Test' + #10);
end;
procedure TForm1.PrintBCbtnClick(Sender: TObject);
begin
POSPrinter1.PrintBarCode(2, '1234567890', 108, 1000, trunc(POSPrinter1.RecLineWidth * 0.8), -2, -13);
end;
procedure TForm1.CutbtnClick(Sender: TObject);
begin
POSPrinter1.CutPaper(100);
end;
end.发布于 2013-08-05 20:36:55
您可以使用CapRecBarCode方法检查打印机是否支持条形码打印。
您正在将条形码大小设置为1000 x (RecLineWidth * 0.8)宽。如果条形码对于纸张来说太大,或者如果您指定的空间对于条形码字符串的长度来说太小,则通常不会打印条形码。
可能是高度1000太大了,所以没有打印出来,如果是这种情况,PrintBarcode的返回值将是106 - Illegal。尝试一个小得多的数字,我们使用60或96作为高度。
发布于 2014-11-28 02:40:09
我测试了autor代码,发现了问题。在可以打印代码39,EAN,代码打印后,必须设置MapMode = 4;(默认MapMode = 1)。
procedure TForm1.PrintBCbtnClick(Sender: TObject);
begin
POSPrinter1.MapMode := 4;
POSPrinter1.PrintBarCode(2, '1234567890', 108, 1000, trunc(POSPrinter1.RecLineWidth * 0.8), -2, -13);
end;https://stackoverflow.com/questions/18057217
复制相似问题