1
I am using tsclib.dll to print labels on Bematech LB-1000. In the openport() Procedure it already gives the error Printer Driver is not been specified.
The printer is local, USB port and I am passing its name as parameter in this way:
openport('Bematech');
as explained in the dll instruction manual. But even following the instructions, this error continues. Using the printer’s own commands, it works normally. I believe the problem is actually in dll.
Someone’s been through this trouble and they know how to help me?
code:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Button1: TButton;
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{$R GenericLIB.RES}
procedure openport(PrinterName:pchar);stdcall;far; external 'tsclib.dll';
procedure closeport; external 'tsclib.dll';
procedure sendcommand(Command:pchar);stdcall;far;external 'tsclib.dll';
procedure setup(LabelWidth, LabelHeight, Speed, Density, Sensor, Vertical, Offset:pchar);stdcall; far; external 'tsclib.dll';
procedure downloadpcx(Filename,ImageName:pchar);stdcall;far;external 'tsclib.dll';
procedure barcode(X, Y, CodeType, Height, Readable, Rotation, Narrow, Wide, Code :pchar); stdcall; far; external 'tsclib.dll';
procedure printerfont(X, Y, FontName, Rotation, Xmul, Ymul, Content:pchar);stdcall;far; external 'tsclib.dll';
procedure clearbuffer; external 'tsclib.dll';
procedure printlabel(NumberOfSet, NumberOfCopoy:pchar);stdcall; far;external 'C:\Windows\System32\tsclib.dll';
procedure formfeed;external 'tsclib.dll';
procedure nobackfeed; external 'tsclib.dll';
procedure windowsfont (X, Y, FontHeight, Rotation, FontStyle, FontUnderline : integer; FaceName, TextContect:pchar);stdcall;far;external 'tsclib.dll';
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
openport('Bematech');
for i:=1 to 1 do
begin
clearbuffer;
sendcommand('DIRECTION 1');
windowsfont(10, 10, 30, 0, 2, 0, 'arial', 'Exemplo LB - 1000 Delphi - Bematech');
barcode('10', '100', '128', '100', '1', '0', '2', '2', '1234567- BEMATECH');
printlabel('1', '1');
end;
closeport;
end;
end.
Have you checked in
Painel de Controle > Dispositivos e Impressoras
if the printer appears there with that name you set?– Sorack
You have previously followed this tutorial http://partners.bematech.com.br/bemacast/Paginas/post.aspx?idPost=6112 ?
– Pablo Tondolo de Vargas
Yes @Sorack, she shows up and is under that name.
– Kamila Gomes
Enter the complete code of your procedure that performs the printing, please.
– Sorack
http://stackoverflow.com/a/27979316/2221388 see if you can get help.
– Pablo Tondolo de Vargas
@Pablovargas did follow this tutorial. And I’ve also read this post.
– Kamila Gomes
You can send a test page through the printer settings in Device Manager?
– Pablo Tondolo de Vargas
@Sorack edited the question and put the code.
– Kamila Gomes
@Pablovargas for printer properties? If so, print normally. I believe the problem is even in this precedent, because sending the commands directly to the printer, without using dll, works perfectly.
– Kamila Gomes
Your printer calls it "WELL" anyway?
– Sorack
Kamila, in open port you should put the name of the printer as well as appears in the Device Manager.
– Pablo Tondolo de Vargas
@Sorack switched to Bematech. But even stating the name that is on the devices and printers or putting the port name, that is USB001 the error persists.
– Kamila Gomes