2012-07-18 11 views
5

Mac OS X'te bir yazıcıya (USB veya ağ) göndermem gereken bir dizi yazıcı çıkış dizisi (ESC/P) var. Bunu nasıl yapabilirim? CUPS'yi doğrudan en iyi şekilde kullanıyor mu? "Üst düzey" bir yolu var mı?OS X'de bir yazıcıya düşük düzeyli çıkış sıraları nasıl gönderilir?

Ve sizden önce: Kaçış dizileri göndermem gerekiyor ve sadece üst düzey baskı sistemini kullanamıyorum.

Düzenleme: Bu Java gibi diğer dillerde benzer işlevsellik sağlamak bazı projeler ve kaynaklar şunlardır:

+0

Kaçış dizisine ihtiyacınız olduğunu nereden biliyorsunuz? Epson sürücüsünde bir hatayla uğraşıyor musunuz? – NoBugs

+0

Az ya da çok. Bu bir müşteri gereksinimi ve ne yazık ki daha fazla ayrıntıya giremiyorum. –

cevap

3

Bunu hayal ediyorum Bunu yapmanın en iyi yolu sadece CUPS/lp:

echo "ctrl_char" | cat file_to_print - | lp [...flags...] 
+0

Teşekkürler, ama maalesef o kadar kolay değil: sadece dosyaları yazdırmamız gerekmiyor. Yazıcıya göndermek istediğimiz çıkış sıraları, basılması gereken tüm (görüntü) verileri içerir. –

+0

Ayrıca, bir harici CLI komutunu çağırmadan bir Cocoa/Foundation/C API kullanmak istiyorum. Mümkünse :) –

3

Sen çağıran unix sistemini kullanarak C kontrol karakterleri gönderebilir:

char escp_seq[BYTES_FOR_SEQUENCE]; 

// ...initialize the ESC/P sequence. 

int printer_fd = open("/dev/lp0", O_WRONLY); 
ssize_t bytes_written = write(printer_fd, escp_seq, sizeof(escp_seq)); 
close(printer_fd); 

yazdırılabilir verilerin kendisi gelince, kullanabilirsiniz.

Bu kütüphaneyi kullanarak, verilerle bir CGDataProviderRef inşa etmenizi gerektirecek bir ya

OSStatus PMPrinterPrintWithProvider (
    PMPrinter printer, 
    PMPrintSettings settings, 
    PMPageFormat format, 
    CFStringRef mimeType, 
    CGDataProviderRef provider 
); 

kullanabilirsiniz.

Alternatif olarak, bir dosyayı kullanabilirsiniz:

OSStatus PMPrinterPrintWithFile (
    PMPrinter printer, 
    PMPrintSettings settings, 
    PMPageFormat format, 
    CFStringRef mimeType, 
    CFURLRef fileURL 
); 

Ben somut bir kod örnek vermek mümkün olmadığı için özür dilerim, ama gerçekten Göndermek istediğiniz verileri inşa etmek niyetinde nasıl emin değilim yazıcıya. Bu, en azından etrafta hack yapmaya başlamak için bir temel sağlamalıdır. Yukarıda belirtilen Apple belgelerinde görevinizi yerine getirecek kadar fazla şey olduğundan eminim.

İyi şanslar!

+0

Yardımlarınız ve işiniz için çok teşekkür ederim, Michael! Hala aradığım şey% 100 olmayabilir, ama bu bir başlangıç, teşekkürler! –

1

Mac bash kabuğundan, komut dosyası kullanarak (profesyonel otomatik End Of Line ürün test cihazında) baskı yapıyoruz. Böyle

Çok basitleştirilmiş "Merhaba" etiketi baskılar:

data="\x1Bia\x00" 
data="${data}\[email protected]" 
data="${data}\x1BX\x32" 
data="${data}Hello" 
data="${data}\x0C" 

# Check your own binary for debugging: 
echo -ne $data | hexdump -C 

# print the actual label 
echo -ne $data | lp -d Brother_PT_P900W 

Not, kendi yazıcı adıyla yazıcı adını değiştirmek gerektiğini söyledi.

+0

Bu çok yararlı! Gönderebileceğiniz farklı komutlar için referans bağlantınız var mı? –

+0

'Komutlar' ile ne demek istediğinizden emin değil misiniz: a) bash kabuk komutu; veya b) ESC/P komutları? b) Eğer PDF belgelerini yazıcı üreticisinden yükledim, benim durumumda Brother PT-P900W – EmbeddedGuy

İlgili konular