Öyle Bir Printer Yapmak İstiyorum Ki ?

Başlatan bymrz, 24 Haziran 2013, 14:16:46

bymrz

Merhaba arkadaşlar,

Daha önceden farklı arayüzlerle haberleşen(seri port/485, usb port, vs) çeşitli Printer(Thermal) Kartları tasarladım. Fakat bu printerları kontrol eden PC yazılımları kendi yaptığımız yazılımlardı ve direk bu programlar aracılığı ile kendi belirlediğimiz protokole göre haberleşiyordu. USB tipindekinde, printer HID Class cihaz olarak tanınıyor ve yine kendi protokolümüzle bu HID Class cihaz üzerinden haberleşme yapıyorduk. Yani bu işlemlerde herhangi bir Windows  Driver yüklenmiyor ve "Windows" ta "Yazıcılar" kısmında cihazımızla ilgili bir şey çıkmıyordu.

Ben şimdi istiyorum ki, kullanıcı; benim USB Printer cihazımla, herhangi bir program yüklemeden, notepad'dan Windows'a Yazdır diyerek çıktısını alabilsin. Yani cihazım Windows'ta "Yazıcılar" kısmında bulunsun...

Bunun bilinen bir yolu Windows için bir driver yazmak. Bu iş te nasıl olur ne ile olur, zor mudur kolay mıdır bilmiyorum.(Windows Driver Kit'i duymuştum sadece)

Bunun yanında diğer bir yöntem var mıdır daha düşünüyorum? Yani windows için daha önceden belirlenen bir protokol ile USB üzerinden haberleşerek, cihazı bir printer olarak tanımlatıp; çıktı alabilir miyim. Yani ekstra hiç bir program/driver yüklemeden... ? (USB Class türünü değiştirerek vs..)


Edit: Anahtar kelimelerden ikisi "1284.4" ve "Dot4" sanırım. Bu arada elimdeki USB Printer kartında USB parametrelerinde Class türünü değiştirerek Bilgisayarda 1284.4 Device olarak tanıtmıştım. Fakat " Yazıcılar " kısmında yine bir şey çıkmamıştı...

Mr.Java

Anladığım kadarıysa sanırım kendi yazıcı driverinizi yazmak istiyorsunuz.
Buyrun http://www.colorpilot.com/emfprinterpilot.html iş görebilir.

! : Ayrıca altta tutorial kısmında C# java delphi v.s. dillerde source code bulunmaktadır.

bymrz

Alıntı yapılan: Fkarizmatik - 24 Haziran 2013, 15:50:40
Anladığım kadarıysa sanırım kendi yazıcı driverinizi yazmak istiyorsunuz.
Buyrun http://www.colorpilot.com/emfprinterpilot.html iş görebilir.

! : Ayrıca altta tutorial kısmında C# java delphi v.s. dillerde source code bulunmaktadır.

Hocam buna benzer sanal printerlar kullanarak dediğiniz şeyleri yaptık, fakat pek verimli olmadı. Hem bizim printer'ın bazı özel parametreleri var. Eğer bir driver olacaksa, bu parametreler de olmalı driverda...

MC_Skywalker

Windows Driver Kit (WDK) sizin işinizi çözecektir. Donanıma da fazla yaklaşmak sanırım biraz zor (PC tarafı) windos API sini kullanmak zorunluğunuz var.

http://msdn.microsoft.com/en-us/library/windows/hardware/gg487428.aspx


bymrz

Alıntı yapılan: ErsinErce - 24 Haziran 2013, 21:41:51
https://www.picproje.org/index.php/topic,44035.msg322708.html#msg322708

Hocam o konuda bahsedilen, bir işlemci ile varolan standart bir printerı kontrol edilmesi sanırım.

Şimdiye kadar bulabildiğim bilgiler genelde yüzeysel...

Mesela 1284.4 'ün detayları nedir. Bmp şeklinde, yani nokta nokta printera veri aktarımı nasıl olur. Daha doğrusu böyle bir şey mümkün mü? Öyle vektörel bilgiler aktaran protokoller benim için uygun değil. İşlemci o kadar güçlü değil çünkü...

"Dot4Print" Bu nedir, detayları nedir...

Bir sürü soru işaretleri var  :(

ErsinErce

#6
konu dediğiniz gibi hazır yazıcıyı kontrol etmek ama hazır yazıcı gibi çalıştırmak içinde bu protokolü tanıyan bir yapı kurmanız gerekiyor.
aynı arama sözcükleriyle protokolü öğrenip bu protokolü destekleyen yazıcı yapmanız gerekiyor.

http://www.usb.org/developers/devclass_docs/usbprint11.pdf

içeriğine bakarsanız;
Alıntı YapThis specification does not define Page Description Languages (PDL) or Printer Control Protocols (PCP).

hangi protokolleri de ayrıca araştırmanız gerektiğini görebilirsiniz

MC_Skywalker

Öncelikle PS ve PCL yazdırma sürücüleri hakkında bir inceleme yapmanız faydalı olur


PS (post script) çok kullanılan bir yazıcı dili diyeyim. http://en.wikipedia.org/wiki/PostScript 

bymrz

http://ftp.ktug.org/obsolete/info/adobe/devtechnotes/pdffiles/ps2013.supplement.pdf

Bu kadar karmaşık bir şey olacağını sanmıyordum. :(  dediğim gibi bitmap haritasını nokta nokta gönderebileceğim basit bir protokol standartı yok mu?(windows uyumlu)