Yazıcının step motoruna hükmetmek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Misafir

Yazıcının step motoruna hükmetmek

Mesaj gönderen Misafir »

Yapmak istediğim şu, yazıcımın içindeki step motora hükmetmek istiyorum. Örneğin 5mm kağıt alacak sonra 1sn duracak sonra yine 5mm kağıt alacak... sayfa sonuna kadar devam edecek. Bu işlemi doğrudan paralel porta bilgi göndererek yapmak mümkünmü? Şöyle bir şey olsa, satır sonu karakterini gödererek bir satır aşağı inilebilir mi? Yapılabilir belki ama satır benim istediğim 5mm yi karşılar mı? Windows'a yüklenen sürücüler içinde bu bilgiler mevcut mudur? Yani satır boyutu şu bu kadar aşağı git yani step motoru çevir gibi. yoksa yazıcı içindeki devre gelen yazıya göre satır genişliğini hesaplayıp motora dön mü diyor? Bu konuda her türlü bilgiye açım :twisted: Yardım eden arkadaşlarıma şimdiden kucak dolusu teşekkürler.


İyi çalışmalar. Kandiliniz mübarek olsun.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

Kod: Tümünü seç

var
  port: TextFile;
begin
  AssignFile(port, 'LPT1');
  Rewrite(port);
  Writeln(port');
  CloseFile(port);
bir satır asagı ilerletmesi lazım.Yazı boyutu Yazıcıdaki ayarlara gore ve sadece paralel printerlar icin calısır.
ÜŞENME,ERTELEME,VAZGEÇME
sair
Kıdemli Üye
Mesajlar: 288
Kayıt: 16 Haz 2003 04:41
Konum: Kastamonu
İletişim:

Mesaj gönderen sair »

Yazıcıya bu şekilde müdahelelerde bulunmak için yazıcınızın el kitabına bakmanız gerekiyor öncelikle. El kitabı diyorum çünkü her yazıcının kendine has kodlamaları olabiliyor. Çoğu standarttır. Ancak mesela IBM uyumlu yazıcılar la Epson uyumlu yazıcıların ESC kodları birbirinden farklı olabiliyor. Öncelikle yazıcının el kitabından bu kodları inceleyip daha sonra Write(CHR$+10) veya satır başı yapacaksanız Writeln(chr$+10) gibi kodlarla yazıcınıza istediğiniz müdahele de bulunabilirsiniz...
Mesela write(CHR$+10) yazıcıya satır atlatır hatırladığım kadarıyla.. Eh pascal ve foxpro ile program yazmayalı 8 yıl oldu.. Unutmuşum valla...
Write(CHR$+27+71) NLQ moda geçirir Write(CHR$+27+72) NLQ modu bitirir. Bi sürü şey var...
Üff Geçmiş günleri hatırladım. Ne uğraşırdık ya.. Bir rapor dökünceye kadar saçlarımız ağarırdı.. Yeni nesil çok şanslı çoook...

Sevgiler...
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
Misafir

Süper Abilerim

Mesaj gönderen Misafir »

Delphi gibi bir dil ve sizler gibi süper abilerim :lol: olduktan sonra kim korkar kod yazmaktan. gkimirti abi senin verdiğin kodu kullandım ve tam istediğim koddu Allah razı olsun senden, işimi çok iyi gördü. Dün akşam girmediğim site kalmamıştı. :cry:
Yalnız
Writeln(port');
kodunda ' işareti fazladan konmuş kullanmak isteyen olursa diye belirteyim dedim.
neden ihtiyaç duydum bu koda? :?:

Bu kodu eski bir canon yazıcıda kullanıyoruz. ve pic ile uğraşan arkadaşlarım bu yazıcı içine alıcı devreler yerleştirecekler amacımız oluşacak tümleşik devre ile optik okuyucu yapıp dershane kağıtları okumak. umarım başarılı oluruz. :)

gkimirti abime ve ayrıca sair kardeşime teşekkür ederim.
herkese mutlu sağlıklı bir gün diliyorum.

:!: Dikkat:soru sorma=01:51 cevap alma=07:57 toplam süre=6 saat 6 dakika

Yer:tabiki DelphiTurkiye.com/forum

Böyle bir hizmeti sunan sunmada en ufak bir emeği geçen tüm arkadaşlarıma sonsuz teşekkür ederim. çözüm için sadece ve sadece bu forum yeter. :wink:
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

sorunun cozuldugune sevindim
bende bir zamanlar satır satır printera yazdırma icin aramadıgım yer kalmamıstı
denem yanılma ile biraz baska seylerden esinlenerek yapmıstım

Writeln(port,'DENEME YAZISI'); idi kodun aslı silerken gozden kacmıs :)
ÜŞENME,ERTELEME,VAZGEÇME
Misafir

Abi küçük bir soru daha

Mesaj gönderen Misafir »

Abi kodu kullandım güzel birşey tekrar Allah razı olsun. Şimdi bir döngü içinde

Kod: Tümünü seç

procedure adimat(adimsayisi:integer);
var
  port: TextFile;
  i:integer;
begin
    AssignFile(port, 'LPT1');
    Rewrite(port);
    for i:=1 to adimsayisi do
        Writeln(port);
    CloseFile(port);
end;
kodu çalıştırıyorum. ve 67 kez dönerse döngü A4 kağıt dışarı çıkıyor. ancak ben daha fazla bir döngüde çıkarmak istiyorum. bunun için deetim masasından yzıcı ayarları ile uğraştım ancak fontun size özelliğini default olarak atayamadım. bende forma Dialogs sekmesinden FontDialog nesnesi koydum ve bunun size'ını küçültüm. ancak olmadı. yani bunu şu kod ile forma bağladım diye düşündüm. :P

Kod: Tümünü seç

Form1.Font:=FontDialog1.Font;
ancak bağlayamamışım :cry:
nasıl bir yol önerirsiniz. Teşekkür ederim.
sair
Kıdemli Üye
Mesajlar: 288
Kayıt: 16 Haz 2003 04:41
Konum: Kastamonu
İletişim:

Mesaj gönderen sair »

Senin gönderdiğin write(Port) komutu windowsun yazıcı driver ını kullanmıyor ki boş yere yazıcı ayarları ile uğraşmışsın. Direk Porta yazıyor. Bu şekilde bunu yazdırman da mümkün değil gibi gözüküyor. Çünkü dos ta yazıcının adım motoru sabittir. Yani belli bir ölçüde alt satıra geçer. Bunun değişebileceğini hiç duymadım da okumadım da şimdiye kadar. Anca yazıcıya windowstan komuta edersen o zaman belli ölçüleri yakalayabilirsin... Windows un çıktısı ile dos un çıktısı birbirlerinden tamamen farklı şeyler. Tıpkı Dos ekranı ile windows ekranı gibi.. Birisinde satır sayısı 80x25 dir diğerinde 1024x768 gibi veya daha yukarıdır. Yani bu işlemi dos komutları ile yapmak imkansız gibi. (Gerçi hiç bir şey imkansız değildir de) Tabi benim bilmediğim bir metot da olabilir..

Sevgiler..
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
Cevapla