5
Làm cách nào để gửi lệnh văn bản đến máy in được kết nối trong cổng USB bằng Delphi?Gửi dữ liệu đến máy in USB ở Delphi
Tôi có máy in Zebra TLP2844 và muốn lập trình liên lạc trực tiếp với máy in.
Làm cách nào để gửi lệnh văn bản đến máy in được kết nối trong cổng USB bằng Delphi?Gửi dữ liệu đến máy in USB ở Delphi
Tôi có máy in Zebra TLP2844 và muốn lập trình liên lạc trực tiếp với máy in.
Bạn sử dụng hàm WinAPI Escape
, chuyển số Printer.Canvas.Handle
làm thông số đầu tiên và PASSTHROUGH
làm thông số nEscape
.
var
YourCommand: String;
begin
YourComamnd := 'Your command here';
if Escape(Printer.Canvas.Handle,
PASSTHROUGH,
Length(YourCommand),
PChar(YourCommand),
nil) <> 0 then
// Handle return value (listed in docs link above)
else
// send next command
Escape
được xác định trong đơn vị Windows
. Lưu ý rằng bạn phải gọi Printer.StartPage
trước khi sử dụng chức năng này để chuẩn bị trình điều khiển máy in nhận nội dung.
Trong máy in Delphi XE3.Canvas.Handle sẽ là Printer.Canvas.BufferHandle? –
Trong VCL.Printers, đó là 'Printer.Canvas.Handle', là 'HDC' của máy in. Tôi không thấy 'Canvas.BufferHandle' trong tài liệu ở bất cứ đâu. Nếu bạn không sử dụng VCL, bạn nên nói như vậy và thêm thẻ FireMonkey thích hợp vào câu hỏi của bạn. :-) Chỉ tìm thấy 'BufferHandle', và không có; đó là một 'THANDLE', và' Escape' đang tìm kiếm một xử lý cho một bối cảnh thiết bị ('HDC'). –
Nhìn vào nguồn của 'FMX.Printer.Win.pas', có' Canvas' được định nghĩa cho 'TPrinter'. Tôi không biết nếu nó có một HDC tương thích với Windows (tôi nghi ngờ nó), nhưng bạn có thể sử dụng 'Printer.Handle', mà nó nói là một HDC. Tôi không biết liệu nó có hoạt động với 'Thoát' hay không, bởi vì tôi chưa thử nó. –