我正在尝试通过Delphi 7中的Star Micronics TSP100 printer使用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.
答案 0 :(得分:0)
您可以使用CapRecBarCode
方法检查打印机是否支持条形码打印。
您将条形码大小设置为1000高(RecLineWidth * 0.8)宽。如果条形码对于纸张来说太大或者您指定的空间对于条形码字符串的长度而言是两个小的,则往往不会打印。
1000的高度可能很大,因此未打印,如果是这种情况,PrintBarcode
的返回值将为106 - Illegal
。尝试使用60
或96
作为身高的数字小得多。
答案 1 :(得分:0)
我测试了autor代码并发现问题。 你必须设置MapMode = 4; (默认MapMode = 1) 在您打印Code 39,EAN后,代码打印。
procedure TForm1.PrintBCbtnClick(Sender: TObject);
begin
POSPrinter1.MapMode := 4;
POSPrinter1.PrintBarCode(2, '1234567890', 108, 1000, trunc(POSPrinter1.RecLineWidth * 0.8), -2, -13);
end;