I need a solution (unit?) to access printer (matricial like LX80, LX300 and so on) in raw mode throught USB port directly from FPC program build in mode win32 or win64.
apreciate any ideia
thanks
Philippe

Mailing lists / fpc-pascal / 2014-12
8 messages · 4 people · –
Reply by email Subscribe to this list Your subscription
Read-only archive. Use j and k to move between messages.
I need a solution (unit?) to access printer (matricial like LX80, LX300 and so on) in raw mode throught USB port directly from FPC program build in mode win32 or win64.
apreciate any ideia
thanks
Philippe
You can use:
Printer.RawMode := True;
Printer.BeginDoc;
....
Printer.EndDoc;
-Laco.LacaK wroteYou can use:
Printer.RawMode := True;Printer.BeginDoc; .... Printer.EndDoc;
-Laco.
Thank you, but that the part I already knew (saw it searching
in Google).
The question is how to select the USB port and create Printer ( win32/win64 ).
Links:
------
[1]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Is the printer already known to Windows (can you print to that printer from others windows applications) ?
If yes, then you can use:
Printer.SetPrinter('Printer name');-Laco.
good! ... I'll try that ... simple!!!
thank you!
LacaK wroteIs the printer already known to Windows (can
you print to that printer from others windows applications) ?
If yes,
then you can use:
Printer.SetPrinter('Printer name'); -Laco. >
LacaK wrote> >> You can use: >>
Printer.RawMode := True;>> Printer.BeginDoc; >> .... >>
Printer.EndDoc;>> -Laco. > >> Thank you, but that the part I
already knew (saw it searching in Google).
> The question is how to
select the USB port and create Printer ( win32/win
> >> 5px; width:
100%;">
> px; margin-left: 5px; width: 100%;"> > > I need a
solution (unit?) to access printer (matricial li
-------------------------
>> >>
Is the printer already known to Windows (can you print to that printer from others…
I have been busy with other stuff ... back to this topic!
First: could anyone tell me I have the possibility to access USB printer in raw mode with the "basic" FPC package (not using Lazarus packages/components)?
_______________________________________________ fpc-pascal maillist - http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal [1]
Links:
------
[1] http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
If you have USB printer installed , then winunits-base package has winspool unit. Following sample is with string beeing ansisstring and Char AnsiChar.
procedure PrintCodesToPrinter(const APrinterName, APrintData: string);
type
TDoc_Info_1 = record
DocName,
OutputFile,
Datatype: PChar;
end;
var
Written: DWORD;
DocInfo: TDoc_Info_1;
PHandle: THandle;
begin
if APrintData = '' then //nothing to print
exit;
DocInfo.DocName := 'POS';
DocInfo.OutputFile := nil;
DocInfo.Datatype := 'RAW';
if not OpenPrinter(PChar(APrinterName), PHandle, nil) then
raise Exception.CreateFmt('Error opening printer "%s"',
[APrinterName]);
try
StartDocPrinter(PHandle, 1, @DocInfo);
StartPagePrinter(PHandle);
WritePrinter(PHandle, @APrintData[1], Length(APrintData), Written);
EndPagePrinter(PHandle);
EndDocPrinter(PHandle);
finally
ClosePrinter(PHandle);
end;
end;Hi,
map the USB Port to a Virtual Serial Port and open the Port as File using CreateFile using name "\\.\COMxxx"
Then write to the port with the usual API file commands
Even better wrap this to a Stream (or FileStream) descendant and use Stream.Write commands
Read and Seek should do nothing
I hope this helps
Chriss