2012-07-10 14 views
5

C# .NET'te yazıcıya içerik göndermem gerekiyor, PRINT komutunda olduğu gibi.Not Defteri, kapağın altında, PRINT komutundan farklı bir şekilde ne yapar?

Paketli QLabel yazılımına sahip Godex termal yazıcım var. Şimdi bu etiketi, yazıcıya komut istemi PRINT komutuyla iletebileceğiniz bir komut olarak kaydetme seçeneğine sahiptir. ben böyle bir şey yaptığım zaman

^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 

Yani işler:: Dosya şöyle

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

Ve güzel benim etiketini yazdırır.

Şimdi, bunu not defterinde açıp yazdırırsam, yalnızca bu metni yazdırır.

PRINT komutu kaputun altında ne yapar ve C# tabanlı programımı davranışları çoğaltmak için nasıl programlayabilirim acaba? Çünkü yazdırma mantığını uyguladığımda, sadece düz metni not defteri olarak yazdırıyor.

C# 'dan Process.Start ile PRINT komutunu çağırabilirim ancak etiket şablonunda yer tutucu değerlerini her zaman değiştirmem gerekiyor. Diskte geçici bir dosya oluşturabilir ve yazdırabilirim, ancak böyle bir senaryodan kaçınmayı tercih ederim.

+0

^Q ve benzeri karşılık gelen kontrol karakterlerine dönüştürdüğünü tahmin ediyorum –

+0

print bu konuda başlık altında hiçbir şey yapmıyor, fark bu. Not Defteri, dosyada sahip olduğunuz karakterleri görüntülemek için elinden gelenin en iyisini yapar, ancak muhtemelen işlemdeki bazı yazdırılamayan karakterleri kaldırır. –

cevap

4

Dürüst olmak gerekirse, soru başlığı, yanlış bir yoldur. PRINT hiçbir şey göze çarpan hiçbir şey yapmaz, sadece yazıcıya tüm girişini temizler. Windows 'yazdırma sistemi aracılığıyla, sayfalama ve satır sonları için çeşitli komutlar ve yazdırmak istediğiniz neyi ve nihayetinde verileri gönderen bir not defteridür. Gösterdiğiniz kod, işlenmemiş yazıcı verileridir, bu yüzden metin olarak değil, 'raw' göndermeniz gerekir. Teknik olarak bu bir this question kopyasıdır.

Nasıl yapılacağı açıklanır here. P/Invokes winspool.Drv kullanıyor.

+0

Açıklama için teşekkür ederiz. Bu çalışıyor. Muhtemelen soru unvanını değiştirmeliyim? –

+0

@JanisVeinbergs Biraz açıklığa kavuşturmaya çalıştım. :) – CodeCaster