Dot Matrix Rapor

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Dot Matrix Rapor

Mesaj gönderen kadirkurtoglu »

s.a.

arkadaşlar dotmatrix tarzda raporlar türetmek için alternatif fikirler aramaktayım.

forumda arama yaptım ancak net bir neticeye ulaşamadım. aşağıdaki linkte arkadaşlar konuşmuşlar

viewtopic.php?t=12150&highlight=dot+matrix

ben bir ticari programı incelediğimde QRep. kullandığını gördüm. + yazıcı tanımları bölümünde dışardan Normal.esc isimli bir yazıcı konrtol kod dosyasını kullandığını. bu dosyayı açtığımda 15 18 şeklinde rakamlara ulaştım. aynı dosyayı programla açtığımda genel başlangıç 15 genel bitiş 18 şeklinde aynı rakamları bu alanlara getiriyor. bu tanımlarla QRep. ta hazırlanan raporu önizleme ekranındaki ile aynı şekilde dotmatrix basıyor. burda anlamaya çalıştığım 15 ve 18 değerlerini yazdırılacak belgeye parametre olarakmı gönderiyor. yazıcı da bu parametreleri dikkate alarak raporu dot matrix tarzda basıyor. bu değerleri rapora ya da yazıcıya nasıl gönderebiliriz.. bu konuda çalışma yapan arkadaşlardan fikirlerini bekliyorum...
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.

Mevlana

OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

diğer dosyalar ise

Compress için

Başlangıç 27 67 66 15
Bitiş 27 67 66 18

Büyük fontlar için

Başlangıç 18
Bitiş 18

bu kodların dotmatrix e etkisi muhakkak var ancak nasıl?
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.

Mevlana

OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

arşatırmalarım sonucunda 15 ve 18 in Ascii değerler olduğunu yazdırılacak raporun başına Ascii karekterlerinin yerleştirildiğini gördüm.

15 ile ilgili ascii karekteri başa
18 ile ilgili asci karekteri sona

tabi burda 27 ESC nin karekteride gelebiliyor sona. sanırım bu raporun sonu anlamına geliyor. Compress de rakam fazlalılığı ise Ascii kodların yan yana eklenmesi Ctrl + O kod dizimin ortaya çıkması. bunların dışında sayfa başı ascii karekteri ile de işlem sonlanıyor. bende bu tip bir kullanım yapacam. başka çare görünmüyor.. yalnız buda ascii değerler rakam olarak değil kareketer olarak eklenecek. rakamlar text format gibi algılanıyor karekterler ise dotmatrix raporu ortaya çıkarıyor...
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.

Mevlana

OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
Mysterio
Üye
Mesajlar: 44
Kayıt: 18 Eki 2006 01:42

Mesaj gönderen Mysterio »

DOS programlarında Dot Matrix printer larda yazdırma işlemi yapılırken koyu, geniş veya printer'in tanıdığı fontları kullanmak için ESC kodları kullanılmakta idi. Bu kodları kullanmaz iseniz programın çıktısı aynı karakterle yazılmakta idi.

ESC kodları her printer la birlikte manuel'inden bulunabilmekte.

Bahsettiğiniz kodlar ESC kodları olsa gerek.

koyu yazdırmak için bir kod,
wide yazdırma için başka bir kod,
normal dönmek için başka bir kod gibi
Karsilastiginiz sorunlari, o sorunlari yarattiginiz düsünce düzleminde kalarak çözemezsiniz.
Einstein.
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

evet bahsettiğim Escape Ascii kodları. yalnız bu kodları ascii karekter değerlerini girmek gerek. aşağıda bu kodlamaya ilişkin bilgi var

Resim
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.

Mevlana

OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Herşeyi baştan alalım...

- QuickReport ile çıktı alınan yerler vardır o muhakkak ama grafik baskı yaptığından bu kodlar devreye giremez...

- Biliyorsunuz bir projede dilediğiniz ölçüde istediğiniz kadar raporlama aracını aynı anda barındırabilirsiniz ama baskı için birini seçmelisiniz. Sizin irdelediğiniz projede de durum bundan ibaret.

- Yazıcıya Escape Karakterleri gönderebileceğini imkan aşağıdaki gibidir.

Kod: Tümünü seç

var 
  Dosya : Textfile; 
begin
  AssignFile(Dosya, 'LPT1');
  ReWrite(Dosya);
  WriteLn(Dosya, StringOfChar('-', 80) );
  Write(Dosya, #27#80#1 );
  WriteLn(Dosya, 'Satır 2');
  Write(Dosya, #27#80#2 );
  WriteLn(Dosya, 'Satır 3');
  CloseFile(Dosya);
end;
- Örnekte görüleceği üzere #27#80#1 koyu yazmayı aktifleştiren escape koddur, #27#80#2 ise eski haline döndüren escape kod.

- Bu aşamada size lazım olan şey bu kodların listesi ki zaten bulmuşsunuz. Uygulama şekli de #27#asc şeklindedir.

- Çıktılarınızı yaparken yazıcınızı iyi tanımanız gerekir. Normalde feed'de A4 bir sürekli form / kağıt 66 satırdır ve standarttır. Yazı aralıklarıyla MicroFeed yaparak oynayabilirsiniz bu rakam o zaman değişir.

- İleri ve geri sardırma işlemi yapabilirsiniz. Forumda daha önce konuşuldu.

Kod: Tümünü seç

  Write(Dosya, #27#106#49);// geri sardırmak   ESC+"j"+"1"
  Write(Dosya, #27#74#49); // ileri sardırmak  ESC+"J"+"1"
- Vs.vs. Şimdi uygulamanızı yapın, takıldığınız yer olursa örneklerinizle birlikte sorun...
En son mrmarman tarafından 15 Ara 2006 11:33 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Resim
Resim ....Resim
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

mrmarman yazdı:Normalde feed'de A4 bir sürekli form / kağıt 66 satırdır ve standarttır. Yazı aralıklarıyla MicroFeed yaparak oynayabilirsiniz bu rakam o zaman değişir.
Burayı biraz açabilir miyiz mümkünse...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@aLonE CoDeR

- Severek...

- DotMatix yazıcıları yapısal olarak incelersek, kağıt besleyici çarklar ve/veya tambur dönüşlerinin standart adımlarda olduğunu görürüz.

- Bunun amacı şudur, sürekli form diye tabir edilen onlarca hatta yüzlerce metre birbirine yapışık kağıt için satır kayması riskini ortadan kaldırmaktır.

- Siz bu adımlara dilediğiniz zaman MicroFeed komutları ile 1/nnn kadar ileri veya geri satır atlatma ile etki etmiş olursunuz. Bunu bilinçli bir şekilde yaparsanız bir sonraki adım için eski haline döndürebilir, tabiri doğru ise "kullanıcının saçını başını yolmasını" engellmiş olursunuz.. :lol: :lol:
Resim
Resim ....Resim
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Açıklama için teşekkürler.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Bir de ben sorayım bu başlığı okuyanlar için de önemli..

-LPT1 değil de USB olan nokta vuruşlu yazıcılar gören oldu mu ?

Ref : http://www.superwarehouse.com/Okidata_M ... /ps/249584

- Bu yazıcı için Parallel and USB Port diyor..

- Acaba bunlara nasıl yollarız. Sanal LPT portu mu tanımlanmıştır sizce.. :?:
Resim
Resim ....Resim
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

USB Nokta vuruşlu yazıcı hiç görmedim ancak USB Lazer yazıcılara DOS dotmatrix gönderim için sanal port tanımlanıyor. Yazıcının DOS desteği yoksa sanal destek programı kuruluyor.
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.

Mevlana

OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

çalışma sonuçlandı..

kodlar

Dsoyadan yazdırmak için Procedur

Kod: Tümünü seç

procedure PrintFile(AFileToPrint: string);
var
  Port, FileToPrint: TextFile;
  ALine: string;
begin
  AssignFile(FileToPrint, AFileToPrint);
  Reset(FileToprint);
  AssignFile(Port, 'LPT1');
  Rewrite(Port);
  while not Eof(FileToPrint) do
    begin
      Readln(FileToPrint, ALine);
      Writeln(Port, ALine);
    end;
  CloseFile(Port);
  CloseFile(FileToPrint);
end;
Fastreport Dotmatrix Export Kodları

Kod: Tümünü seç

Dosya := ExtractFilePath(Application.ExeName) + 'dosya.prn';
  if FileExists(dosya) then
    Begin
      DeleteFile(dosya);
    end;
  frxReport1.ShowReport(false);
  frxTXTExport1.PageBreaks := true;
  frxTXTExport1.EmptyLines := false;
  frxTXTExport1.OEMCodepage := true;
  frxTXTExport1.LeadSpaces := true;
  frxTXTExport1.FileName := dosya;
  frxPreview1.Export(frxTXTExport1);
normal punto için Escape kodlarının dosyaya eklenmesi

Kod: Tümünü seç

Dosya := ExtractFilePath(Application.ExeName) + 'dosya.prn';
listbox1.Items.LoadFromFile(dosya);
listbox1.Items.Strings[0] :=  '';
listbox1.Items.Add('');
ListBox1.Items.SaveToFile(dosya);

ve hazır olan dosyayı yazdırma

Kod: Tümünü seç

PrintFile(Dosya);
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.

Mevlana

OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
Cevapla