Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Delphi LX-300 duzina papira x 2

[es] :: Pascal / Delphi / Kylix :: Delphi LX-300 duzina papira x 2

[ Pregleda: 2841 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

codeb.s

Član broj: 67549
Poruke: 157
87.250.102.*



+1 Profil

icon Delphi LX-300 duzina papira x 216.12.2006. u 11:32 - pre 211 meseci
Molim pomozite mi oko "zavrsavanja" ovog posla. Napravio sam neku malu PCKasicu , sada dobio sam zadatak da kao POS stamopac koristim Epson LX 300. Posto radim sa Delphi 5 , obicni quickreport sam snimio kao tekst
Code:

Racun.ExportToFilter(TQRAsciiExportFilter.Create('racun.txt')) ;

te ga kopirao na LPT1 uz pomoc
Code:

CopyFile(pchar('racun.txt'),pchar('LPT1'),False) ;


Sam sam kreirao i duzinu papira koju sam nazvao Racun sa dimenzijama 9,4x15,2 cm (mali preforirani papiri za
LX-300 , traktor) posto LX 300 nema Custom size u Windowsu XP
i to sve radi OK , ALI !!!! ispis stane nakon ispisa zadnje linije, tj nedostaje mu da "zavrsi" dokument
(ono da se na stampac posalje #12)
Kad saljem #12 opet radim na drugi nacin kao : kreiram text file samo sa tim znakom i posaljem na stamapac.
I to radi , ali mi povlaci tacno dve duzine (duzina papira x 2), znaci odstampa zadnju liniju na prvom listu ,
stampac dodje dokraja tog lista i pusti jos jedan cist list?
 
Odgovor na temu

badam

Član broj: 78553
Poruke: 97
62.108.111.*



+2 Profil

icon Re: Delphi LX-300 duzina papira x 216.12.2006. u 12:03 - pre 211 meseci
nisam siguran u ESC okdove, ali nasao sam nesto sto sam radio pre 5 godina.
pravio sam StringList, pa je snimao u txt fajl.
ovako nekako:
Code:

StrRacun.Append(chr(27)+'M'+chr(13)+chr(27)+'C'+chr(24));

//text racuna

StrRacun.Append(chr(12))


To mi je radilo sa standardnim perforiranim papirom za racune (1/3 od A4 po duzini i 1/2 po sirini)

Najbolje da nadjes uputstvo za lx300, pa se upoznas sa ESC kodovima
 
Odgovor na temu

codeb.s

Član broj: 67549
Poruke: 157
87.250.102.*



+1 Profil

icon Re: Delphi LX-300 duzina papira x 216.12.2006. u 13:22 - pre 211 meseci
Prvo, hvala na odgovoru.
Pronasao sam neki support za LX 300 i pronasao nekolicinu ESC codova :

Reset (27, 64);
Set page length in lines (27, 67, n - where n is a number from 1 to 127);
Carriage return (13);
Line feed (10);
Form feed (12); - milsim da je to ono sto mi treba
Select 1/8-inch line spacing (27, 48);
10 cpi (27, 80);
12 cpi (27, 77);
Select bold font (27, 69);
Cancel bold font (27, 70);
Select italic font (27, 52);
Cancel italic font (27, 53);
Turn underline on/off (27, 45, n - where n equals 49=ON or 48=OFF);
Select condensed print (15);
Cancel condensed print (18).

Znaci vec pokusano...

Jos jedna stvar, badam nisam te bas najbolje razumeo kako si ti to odradio (mislim ako je tebi radilo posao, extramno mi je hitno)

Napravio si StringList cega?
Da li si i ti najpre snimao Report u txt file ili sta? (Radim na D5 i koristim QuickRep i ExportToFilter)
Da li si radio sa formatom papira koja ja imam papir dim. 9.4x15.2 (one rupice za traktor nisam racunao u papir)
Mozes li mi malo vise objasniti tvoj sistem rada, trebam samo da uradim da mi stampa POS racuncice LX 300?
 
Odgovor na temu

badam

Član broj: 78553
Poruke: 97
62.108.111.*



+2 Profil

icon Re: Delphi LX-300 duzina papira x 216.12.2006. u 14:07 - pre 211 meseci
da, radilo mi je posao na papirima tih dimenzija.
napravio sam STringList stringova.
uopste nisam koristio report. evo, otprilike:


Code:

StrRacun:=TStringList.Create;
try
  StrRacun.Append(chr(27)+'M'+chr(13)+chr(27)+'C'+chr(24));
  StrRacun.Append('Naziv firme');
  StrRacun.Append('Adresa');
  StrRacun.Append('telefon');
  StrRacun.Append('Broj racuna: '+RacunTablebroj.AsString);
  StrRacun.Append('Naziv  JM  Kolicina  Cena  Ukupno');
  StrRacun.Append('--------------------------------');
  StavRacun.First;
  while not StavRacun eof do
  begin
    StrRacun.Append(StavRacunNaziv.Value);
    StrRacun.Append(StavRacunJM.Value);
    StrRacun.Append(StavRacunKolicina.AsString);
    StrRacun.Append(StavRacunCena.AsString);
    StavRacun.Next
  end;
// da ne davim dalje, ovde ti treba jos ukupno za racun i Hvala sto pazarite kod nas

  StrRacun.Append(chr(12));
  StrRacun.SaveToFile('c:\aa.txt')
finaly
  StrRacun.free
end


preostaje ti samo da formatiras sve linije radi poravnanja. da bi racun bio lep. ovo sam sada kucao direktno u ff, ali to je otprilike to.
 
Odgovor na temu

codeb.s

Član broj: 67549
Poruke: 157
87.250.102.*



+1 Profil

icon Re: Delphi LX-300 duzina papira x 216.12.2006. u 17:14 - pre 211 meseci
Bandam poslusao sam tvoj savet i pokusao namestiti tako da nekoristim report vec da uradim isto kao i ti.

Prvo dva pitanja
1. Da li si i ti koristio stamapac drivere (Genetic / Text only ili sa Epson LX 300 ) ili si direktno kopirao
na LPT1 kao i ja, posto se mani uveliko razlikuje kad stampam na Genetic / Text only , nego na Epson LX 300 ,
odnosno kad su jedan od njih default printer
2. Da li si namestao velicine papira kod ovih stampaca kao A4 ili Letter ili .....

Iako sam radio sa skracenom verziom podataka, evo mojih rezutata:

1. Slova su premalena tako da mi pola papira ostaje prazno i previse je "nabijeno" u levo - No mislim da se to moze resiti brzo
definisanjem velicine slova
2. Poravnavanje je STRAVA (nikako to nisam uspeo uraditi iako sam se mucio par casova) uvek nesto pravi problem,
molio bi ako je moguce malo pojasnjenje.
3. Najbitnije : Papir sada , nakon zadnje linije izlazi manje ali opet ne koliko treba tj. Kad stamapac
zavrsi zadnju liniju sa tekstom, izvuce papir ali ne do kraja listica (mislim do perforacije) ostane oko 1/3 papira
odnosno kao da pomeri sa par redova

Molim pomoc
 
Odgovor na temu

badam

Član broj: 78553
Poruke: 97
62.108.111.*



+2 Profil

icon Re: Delphi LX-300 duzina papira x 216.12.2006. u 17:42 - pre 211 meseci
kopirao sam fajl na lpt1.
sto se poravnanja tice, mali savet:
Code:

....
while not xx.eof do
begin
  a:=StavRacunNaziv.Value;  
  for i:=length(a) to 25 do
    a:=a+' ';
  a:=a+StavRacunJM.Value;
  for i:=length(a) to 35 do
    a:=a+' ';
  ...
  ...
  StrRacun.Append(a);
end

sto se tice izbacivanja papira, verovatno ti izbaci do pocetka sledece strane, a tebi treba do mesta na kome se cepa.
nesto od koda ispod bi trebalo da radi posao:
Code:

StrRacun.Append(chr(10)+chr(13)+chr(10)+chr(32)+chr(32)+chr(12)+chr(13))
 
Odgovor na temu

codeb.s

Član broj: 67549
Poruke: 157
87.250.102.*



+1 Profil

icon Re: Delphi LX-300 duzina papira x 216.12.2006. u 18:34 - pre 211 meseci
Hvala badam jos jednom.

Bandam,uradio sam kako si mi rekao.
Poravnanje radi do zadnjeg dela tj Ukupno , ali na kraju Cenu "nabije" na Ukupno.
Ja mislim da sa smanjivanjem broj od 25 ili 35 mogu to resiti , ali ne nisam uspeo.
Bez obzira na novu liniju koda koju sam dobio odstampa sve ali izvuce istu velicinu papira kao i sa prethodnim(cini mi se da se pomjeri tacno za duzinu ispisa i da bas puno negleda da zadanu velicinu ).
I ne znam sto mi sada stampa i preko ovih rupica za traktor (no mislim da je to vec do podesavanja traktora - hardware problem). Sada je namesten tako da je leva strana privucena do metalnog dela na sipci po kojoj klize delovi za pricvrscivanje papira ,a desna naravno prema sirini papira. Vise ne znam ni da li sam to dobro napravio.
I badam nisi mi rekao na koji stampac da saljem na Epson ili Genetic.

Pomozite


[Ovu poruku je menjao codeb.s dana 16.12.2006. u 20:10 GMT+1]
 
Odgovor na temu

badam

Član broj: 78553
Poruke: 97
62.108.111.*



+2 Profil

icon Re: Delphi LX-300 duzina papira x 216.12.2006. u 20:17 - pre 211 meseci
rekao sam ti da kopiras na lpt1. tako sam ja radio.
sto se tice stampe preko valjka treba da vidis koliko karaktera moze da stane na sirinu papira, pa da tako formatiras txt.
evo ti original kod koji mi je radio 100%:
Code:

        if false then
        begin
          Strings.Append(chr(27)+'M'+chr(13)+chr(27)+'C'+chr(24));
          IF Registered THEN
          begin
            if gl.imef<>'' then
              Strings.Append(gl.imef);
            if gl.adresaf<>'' then
              Strings.Append(gl.adresaf);
            if gl.telf<>'' then
              Strings.Append(gl.telf);
          end
          else
            Strings.Append('neregistrovan program!');
          Strings.Append(DateTimeToStr(DT));
          Strings.Append('Broj Racuna: '+Label8.Caption);
          if Tipp='N' then
            Strings.Append('Kupac: '+imeduz);
          Strings.Append('---------------------------------------');
          Strings.Append('Artikal           | Cena  | Kol | Iznos');
          Strings.Append('---------------------------------------');
          i:=1;
          while StringGrid1.Cells[0,i]<>'' do
          begin
            if StringGrid1.Cells[0,i]<>'' then
            begin
              a:=LeftStr(StringGrid1.Rows[i][1],18);
              if Length(a)<19 then
                for j:=Length(a) to 18 do
                  a:=a+' ';
              Strings.Append(a);
              a:=StringGrid1.Rows[i][2];
              if Pos(',',a)=0 then
                a:=a+',00'
              else
                if Pos(',',a)=Length(a)-1 then
                  a:=a+'0';
              if Length(Strings[Strings.Count-1])+Length(a)<25 then
                for j:=Length(Strings[Strings.Count-1])+Length(a) to 24 do
                  Strings[Strings.Count-1]:=Strings[Strings.Count-1]+' ';
              Strings[Strings.Count-1]:=Strings[Strings.Count-1]+a;
              a:=StringGrid1.Rows[i][3];
              if Pos(',',a)=0 then
                a:=a+',00'
              else
                if Pos(',',a)=Length(a)-1 then
                  a:=a+'0';
              if Length(Strings[Strings.Count-1])+Length(a)<31 then
                for j:=Length(Strings[Strings.Count-1])+Length(a) to 30 do
                  Strings[Strings.Count-1]:=Strings[Strings.Count-1]+' ';
              Strings[Strings.Count-1]:=Strings[Strings.Count-1]+a;
              a:=StringGrid1.Rows[i][4];
              if Pos(',',a)=0 then
                a:=a+',00'
              else
                if Pos(',',a)=Length(a)-1 then
                  a:=a+'0';
              if Length(Strings[Strings.Count-1])+Length(a)<39 then
                for j:=Length(Strings[Strings.Count-1])+Length(a) to 38 do
                  Strings[Strings.Count-1]:=Strings[Strings.Count-1]+' ';
              Strings[Strings.Count-1]:=Strings[Strings.Count-1]+a
            end;
            i:=i+1
          end;
          Strings.Append('=======================================');
          Strings.Append('Ukupan iznos:                   '+Label3.Caption);
          Strings.Append('Prodavac: '+gl.Radnik);
          Strings.Append('         HVALA NA POVERENJU');
          Strings.Append('             KOSZONJUK');
          Strings.Append(chr(10)+chr(13)+chr(10)+chr(32)+chr(32)+chr(12)+chr(13));
          AssignFile(x,'c:\aa.txt');
          Rewrite(x);
          for i:=0 to Strings.Count-1 do
          begin
            for j:=1 to Length(Strings[i]) do
            begin
              z:=ord(Strings[i][j]);
              Write(x,z);
            end;
            if i<Strings.Count-1 then
            begin
              z:=13;
              Write(x,z);
              z:=10;
              Write(x,z);
            end
          end;
          CloseFile(x);
          CopyFile(pchar('c:\aa.txt'),pchar('LPT1'),False)
        end;


jako davno sam ga pisao, pa me pomalo i stid (nemoj da me neko proziva zbog ovoga). ne snalazim se ni ja najbolje u njemu. ono if false na pocetku je zato sto se preslo na fiskalnu kasu, pa nije trebao ovaj deo da se izvrsi.

moguce da je potrebno stampac podesit tako da izbacuje papir do granice za cepanje.
 
Odgovor na temu

codeb.s

Član broj: 67549
Poruke: 157
87.250.102.*



+1 Profil

icon Re: Delphi LX-300 duzina papira x 216.12.2006. u 21:31 - pre 211 meseci
Ganjao sam po tvom kodu , nesto skontao nasto ne ali nisam uspeo. Sa ovim izmenama dobio sam stampa kako sam vec pisao znaci odstampa racun do zadje linije, izvuce taj listic i stane i izvuce jos jedan cist kompletan i glava stampaca stane tacno za ispis na recimo 3 listic po redu.
Ni to nije strasno , ali bojim se da tipu necu moci objasniti da za svaki racun treba da trosi dva listica. Probao sam i sa
Code:

StrRacun.Append(chr(12));

i sa novom linijom koda
Code:

StrRacun.Append(chr(10)+chr(13)+chr(10)+chr(32)+chr(32)+chr(12)+chr(13))

ali nista opet isto izvlaci.

badam ,molim te reci mi kako si ti postavio velicinu papira, mozda je to fora, inace volio bih ako mi zelis pomoci i imas kakav messenger da kazes koji pa da se chat-amo.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Delphi LX-300 duzina papira x 217.12.2006. u 09:08 - pre 211 meseci
> Poravnanje radi do zadnjeg dela tj Ukupno , ali na kraju Cenu "nabije" na Ukupno.
> Ja mislim da sa smanjivanjem broj od 25 ili 35 mogu to resiti , ali ne nisam uspeo.

Najčistiji i najlakši način za pravljenje redova iste dužine je format funkcija. Na primer nešto ovako:
Format('%10d %-15s %3s %10d', [1, 'Artikal1', 'kom', 10]);

> Bez obzira na novu liniju koda koju sam dobio odstampa sve ali izvuce istu velicinu papira kao i sa prethodnim(cini mi se da se pomjeri tacno za
> duzinu ispisa i da bas puno negleda da zadanu velicinu ).

Evo par stvari koje ti mogu pomoći.

----------
Setovanje duéine strane u redovima LX300

Komanda je <27>C<n>, gde je n broj redova.
--------------
Kontinualni se papir se posle svake strane pomera po malo

[tos je da se osim pode{avanja du`ine strane podesi i koliko se posle FF
uvla~i papir. AKo je ovo preveliko, {tampa }e se sve vi{e i vi{e pomerati
na dole i posle nekoliko strana }e skroz "proma{iti" stranu.

Zto se koristi procedura za pode{avanje koliko }e se uvla~iti papir. Na
primer, za Eposn LX 300 je slede}a procedura:

- Pritisni PAUSE dok ne bipne jednom i led FONT ne pocne da blinka
- LF/FF gura papir napred, a FONT nazad. Podesi koliko treba da se uvla~i
papir.
- Pritisni PAUSE
 
Odgovor na temu

codeb.s

Član broj: 67549
Poruke: 157
87.250.102.*



+1 Profil

icon Re: Delphi LX-300 duzina papira x 217.12.2006. u 11:12 - pre 211 meseci
Hvala svima koji su mi pomogli i badamu i savkicu, problem sa stranicom tj. izbacivanjem sam resio.
Celi problem je bio u tome sto stampac nije ni znao s kolikim papirom radi. Na kod koji mi je badam
napisao, tacnije pre linije
Code:
  Strings.Append(chr(27)+'M'+chr(13)+chr(27)+'C'+chr(24)); 

dodao sam jos jednu liniju
Code:
 StrRacun.Append(chr(27)+chr(67)+chr(34)); 

sa ovom linijom sam rekao stamapcu da radi sa 34 linije po listicu (do toga sam dosao nekim,
ni sam ne znam kojim, matematickim putem nesto velicna font pixel duzina stranice cm-pix.....)
Tako da sad kad se stampa , u mom slucaju, racun glava stampaca staje na pocetku prvog
praznog listica, tako kad korisnik odcepa papiric ostaje da krece od sledeceg ili u prevodu
ono kako sam kontao.

Sto se tice poravnavanja primjer koji mi je savkic napisao resava problem , ali ja sam se
borio sa poravnavanje "na desno".

bandam mi je dao ok sistem i radi ali sam ga morao malo podesiti i izmeniti od onog koda
koji mi je napisao, no sada radi.

Jos samo jedno pitanje i molba za pomoc kako da stamapa i da li moze da stampa "nasa" slova ono čćšđ.....

[Ovu poruku je menjao codeb.s dana 17.12.2006. u 12:33 GMT+1]
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Delphi LX-300 duzina papira x 217.12.2006. u 12:59 - pre 211 meseci
> ali ja sam se borio sa poravnavanje "na desno".

Levo/Desno uravnanje se kontroliše pomoću '-' karaktera, imaš u primeru Format funkcije i jedno i drugo, takođe pogledaj i help.

> Jos samo jedno pitanje i molba za pomoc kako da stamapa i da li moze da stampa "nasa" slova ono čćšđ.....

Može, moraš selektovati adekvatnu kodnu stranu. Ne sećam se da li se to radi direktno na štampaču ili postoji neka escape sekvenca.
 
Odgovor na temu

codeb.s

Član broj: 67549
Poruke: 157
87.250.102.*



+1 Profil

icon Re: Delphi LX-300 duzina papira x 217.12.2006. u 16:18 - pre 211 meseci
Hvala savkicu,

Sto se tice nasih slova jeste rijec je o ESC sekvenci ali kad se posalje na stampac on "zabudali" i
dok se ne resetuje nece da stampa vise nista.
Sekvenca ide nesto kao

Code:

ESC(t30330 - to je PC850 Multilingual table 3 


Ima li ko resenje?

 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Delphi LX-300 duzina papira x 2

[ Pregleda: 2841 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.