2012-07-10 30 views
5

Tôi cần gửi nội dung tới máy in trong C# .NET theo cách tương tự như lệnh PRINT.Notepad làm gì khác biệt dưới mui xe so với lệnh IN?

Tôi có máy in nhiệt Godex với QLabel gói phần mềm. Bây giờ nó có tùy chọn để lưu nhãn như là một lệnh mà bạn có thể chuyển đến máy in với dấu nhắc lệnh PRINT lệnh. Các tập tin trông như thế này:

^Q80,3 
^W100 
^H10 
^P1 
^S3 
^AD 
^C1 
^R2 
~Q+0 
^O0 
^D0 
^E35 
~R200 
^L 
Dy2-me-dd 
Th:m:s 
AH,0,0,1,1,0,0,X 
AH,744,0,1,1,0,0,X 
AH,746,560,1,1,0,0,X 
AH,0,550,1,1,0,0,X 
AG,160,208,1,1,0,0, 
AA,234,283,1,1,0,0,Haloo 
E 

đó làm việc khi tôi làm điều gì đó như thế này:

net use LPT2 \\localhost\godexUsbPrinter /yes 
print /D:LPT2 label.cmd 

Và nó in nhãn của tôi ra độc đáo.

Bây giờ, nếu tôi mở nó trong notepad và in, nó chỉ in cho tôi văn bản này.

Tôi tự hỏi những gì hiện PRINT lệnh làm theo mui xe và làm thế nào tôi có thể chương trình C# của tôi dựa trên chương trình để nhân rộng hành vi? Bởi vì khi tôi thực hiện in ấn logic, nó chỉ in cho tôi những văn bản đơn giản như notepad.

Tôi biết tôi có thể gọi lệnh PRINT bằng Process.Start từ C#, nhưng tôi cần thay thế một số giá trị giữ chỗ trong mẫu nhãn mọi lúc. Tôi có thể tạo một tập tin tạm thời trên đĩa và in đó, nhưng tôi muốn tránh một kịch bản như vậy.

+0

tôi đoán nó dịch^Q và như vậy thành các ký tự điều khiển tương ứng –

+0

in không làm bất cứ điều gì dưới mui xe trong vấn đề đó, đó là sự khác biệt. notepad cố gắng hết sức để hiển thị bất kỳ ký tự nào bạn có trong tệp nhưng có thể loại bỏ một số ký tự không thể in trong tiến trình. –

Trả lời

4

Thành thật mà nói, tiêu đề câu hỏi là sai đường. PRINT không làm bất kỳ điều gì về quang phổ, nó chỉ xóa tất cả đầu vào của nó cho máy in. Đó là Notepad, thông qua hệ thống in của Windows, gửi các lệnh khác nhau để phân trang và kết thúc dòng và không có thứ gì và cuối cùng là dữ liệu bạn muốn in. Mã bạn hiển thị là dữ liệu máy in thô, vì vậy, bạn sẽ phải gửi dữ liệu 'thô' và không phải là văn bản. Vì vậy, về mặt kỹ thuật, nó trùng lặp với this question.

Cách giải thích như vậy được giải thích here. Nó đang sử dụng P/Invokes đến winspool.Drv.

+0

Cảm ơn bạn đã làm rõ. Những công việc này. Tôi có lẽ nên thay đổi tiêu đề câu hỏi? –

+0

@JanisVeinbergs Tôi đã cố gắng làm rõ nó một chút. :) – CodeCaster

Các vấn đề liên quan