Xprinter 80C manuel kesme yapma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Bay_Y
Üye
Mesajlar: 87
Kayıt: 10 Mar 2014 11:12
Konum: İstanbul

Xprinter 80C manuel kesme yapma

Mesaj gönderen Bay_Y » 20 Ara 2017 08:24

Herkese merhabalar ,

Xprinter 80C network üzerinden (ethernet) çalışan adisyon yazıcısı normalde otomatik kesme yapıyor dip switch ile bu şekilde ayarlı , gayet güzel kesiyor ama şöyle bir sıkıntı oluyor , Quickreport da bir fiş tasarımı yaptım , Detail ve summary kısmında ödeme kısımları yapılan alışverişe göre değiştiği için tam olarak fiş boyutunu kestirmek mümkün değil biraz boyut olarak büyük bıraktığında da birkaç fiş kestikten sonra fişi ortadan kesiyor anlayacağın kayma yapıyor her seferinde fiş boyutunu 600px ayarlamama rağmen 3-5 fiş sonra yine aynı şeyi yapıyor. (Windows üzerinden yazdırıyorum.)

Bunu aşmanın bir yolu var mı ? yok ise printer i dip switchden manuel kısma aldım şu anda fişi kesmiyor ama bu seferde fişi nasıl keseceğimi bulamadım.

bu konuda yardımcı olabilecek arkadaşlara şimdiden teşekkürler.

herkese kolay gelsin.

ertank
Üye
Mesajlar: 964
Kayıt: 11 Eyl 2015 11:45

Re: Xprinter 80C manuel kesme yapma

Mesaj gönderen ertank » 20 Ara 2017 11:19

Merhaba,

Yazıcı model kodu biraz daha farklı olsa gerek. Anladığım kadarıya 80mm genişlikteki kağıtlara yazdırma yapıyorsunuz. XPrinter resmi sitesinde 80C kodunda bir yazcı göremedim.
http://poskeytech.com/html/80mm-Series/

Bilgim dahilinde POS yazıcılar yazdırma görevi bittikten sonra kağıdı otomatik keserler. Benim kullandığım bütün hepsi bu şekilde idi. Belirli bir uzunluk sınırı var mı emin değilim.

Şunu deneyebilirsiniz ki benim kullanım şeklim öyle idi. Rapor aracı kullanmadan Printer nesnesini direk kullanarak yazıcıya yazdırma yapmayı deneyin. Normal koşullarda Printer.EndDoc() komutunu gönderdikten sonra pozisyon nerede kaldı ise o noktada kesme yapıyor olmasını beklerim bu durumda.

Basit bir uygulama geliştirerek (gerçek bilgiler yazmadan sadece farklı satır adedi yazdırarak gibi) test etmeniz yarım saat vaktinizi alır en fazla diye düşünüyorum. Belki aşağıdaki test edilmemiş kodu test için kullanabilirsiniz:

Kod: Tümünü seç

uses
  Printers;

procedure TForm1.Button1Click(Sender: TObject);
var
  X: Integer;
  Y: Integer;
  TextHeight: Integer;
  I: Integer;
begin
  Y := 0;
  X := 0;

  Printer.BeginDoc();
  Printer.Canvas.Font.Name := 'Courier New';
  Printer.Canvas.Font.Size := 12;
  TextHeight := Printer.Canvas.TextHeight('İĞŞ');

  for I := 1 to StrToInt(Edit1.Text) do
  begin
    Printer.Canvas.TextOut(X, Y, I.ToString());
    Inc(Y, TextHeight);
  end;

  Printer.EndDoc();
end;
Form üzerindeki TEdit bileşenine misal 10 yazdıktan sonra 3-5 defa yazdırın. Ardından 15 ile deneyin. 20 ile deneyin. Tekrar 10'a geri dönün vb. Bu şekilde doğru yerden kesiyor olursa kodunuzu Printer nesnesin direk kullanacak şekilde düzenlersiniz.

NOT: Örnek kod dialog ile yazıcı seçimi istemeden sistemde tanımlı default Printer'a yazdırma yapar.
NOT2: Eğer örnek kod içindeki font yazıcıda tanımlı değil ise desteklediği font isimlerini Printer.Fonts (TStrings) içinden okuyup uygun bir font isimi kullanmanız gerekir.

Bay_Y
Üye
Mesajlar: 87
Kayıt: 10 Mar 2014 11:12
Konum: İstanbul

Re: Xprinter 80C manuel kesme yapma

Mesaj gönderen Bay_Y » 20 Ara 2017 12:58

Teşekkür ederim Ertan Bey , ben QuickReport kullanıyorum orda tasarlanmış bir form var ve bu sıkıntıları da orda yaşıyorum , sanırım ordaki form uzunluğundan dolayı , bu söylediğinizi de deneyeceğim. Ama bu quickreport da tasarım da yapılması gerektiği için devamında onu kullanmam gerekecek sanırım.

Bay_Y
Üye
Mesajlar: 87
Kayıt: 10 Mar 2014 11:12
Konum: İstanbul

Re: Xprinter 80C manuel kesme yapma

Mesaj gönderen Bay_Y » 20 Ara 2017 04:51

Çok teşekkür ederim şimdilik işimi gördüm , sonrasına sonra bakarız , tekrar çok teşekkür ederim.

Cevapla