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

ispis računa...

[es] :: .NET :: ispis računa...

[ Pregleda: 1705 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

w3bl0rd
Varaždin, Hrvatska

Član broj: 82659
Poruke: 380
213.147.114.*



+26 Profil

icon ispis računa...11.01.2010. u 08:38 - pre 173 meseci
dobio sam neku ponudu da izradim program, sve mi je jasno unaprijed i znam kako napraviti sve osim jedne stavke pa me zanima mišljenje iskusnijih jer to još nisam radio...
Naime zanima me ispis standardnog računa kakav se dobije u dučanu, birtiji, ne znam...
znači to je u večini slučajeva onaj stari matrični printer. Moje pitanje je dali tu treba nešt posebno postavljati ispis ili je postupak potpuno jednak ko i za normalni printer samo bi trebalo prilagoditi dimenzije?
Nemogu probat jer nemam matrični printer :)
projekt ću raditi u .NET-u

@mods:
sorry nisam znao kamo da stavim pa sam puknuo tu...
there's no place like 127.0.0.1
 
Odgovor na temu

Igor Gajic

Član broj: 93194
Poruke: 747
93.86.87.*



+987 Profil

icon Re: ispis računa...11.01.2010. u 17:35 - pre 173 meseci
Ovo je klasa za rad sa klasicnim matricnim stampacem:

Code:

    public class StampaMatricni
    {
        public struct SpecijalniKarakteri
        {
            public static byte[] NormalScript = new byte[] { 27, 18 };
            public static byte[] SuperScript = new byte[] { 27, 83,0 };
            public static byte[] SubScript = new byte[] { 27, 83, 1 };
            public static byte[] NormalHeight = new byte[] { 27, 119, 0 };
            public static byte[] Condensed = new byte[] { 27, 15 };
            public static byte[] NoviRed = new byte[] { 13, 10 };
            public static byte[] NovaStrana = new byte[] { 13, 12 };
            public static byte[] UnderlineON = new byte[] { 27, 80, 5 };
            public static byte[] UnderlineOFF = new byte[] { 27, 80, 6 };
            public static byte[] BoldON = new byte[] { 27, 80, 1 };
            public static byte[] BoldOFF = new byte[] { 27, 80, 2 };
            public static byte[] ItalicsON = new byte[] { 27, 80, 3 };
            public static byte[] ItalicsOFF = new byte[] { 27, 80, 4 };
        }

        public static FileStream Printer;
        public string LPTPort;

        [DllImport("Kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
        static extern SafeFileHandle CreateFile(
            string fileName,
            [MarshalAs(UnmanagedType.U4)] FileAccess fileAccess,
            [MarshalAs(UnmanagedType.U4)] FileShare fileShare,
            IntPtr securityAttributes,
            [MarshalAs(UnmanagedType.U4)] FileMode creationDisposition,
            [MarshalAs(UnmanagedType.U4)] FileAttributes flags,
            IntPtr template);


        /// <summary>
        /// 
        /// Konstruktor klase
        /// </summary>
        /// <param name="LPTPort">LPT port na kome se nalazi stampac</param>
        public StampaMatricni(string LPTPort)
        {
            this.LPTPort = LPTPort;
        }

        /// <summary>
        /// 
        /// Default konstruktor, podrazumeva da je port LPT1
        /// </summary>
        public StampaMatricni()
        {
            this.LPTPort = "LPT1";
        }

        /// <summary>
        /// Kreira fajl za upis tj. zapocinje stampu na stampacu...
        /// 
        /// Posle zavrsene stampe MORA se pozvati f-ja
        /// 
        /// ZavrsiStampu()
        /// </summary>
        public void ZapocniStampu()
        {
            SafeFileHandle ptr = CreateFile(LPTPort,       //lpt name
                                    FileAccess.ReadWrite, //za stampac bi bilo normalno da se koristi samo GENERIC_WRITE, ali zbog mogucnosti koriscenja preko mreze mora i GENERIC_READ
                                    0,             //Share Mode              
                                    IntPtr.Zero,   //Security attributes
                                    FileMode.Open, //Creation disposition
                                    0,             //flags&attributes
                                    IntPtr.Zero);  //template

            if (ptr.IsInvalid) //Ako je doslo do greske
                Marshal.ThrowExceptionForHR(Marshal.GetHRForLastWin32Error()); //Prosledi Win32 gresku pri otvaranju u C# Exception
            else
                Printer = new FileStream(ptr, FileAccess.ReadWrite);
        }

        /// <summary>
        /// Stampa text na stampac
        /// </summary>
        /// <param name="str">String za stampu</param>
        public void OdstampajString(string str)
        {
            byte[] Buff = Encoding.ASCII.GetBytes(str);
            Printer.Write(Buff, 0, Buff.Length);
            Printer.Flush();
        }


        /// <summary>
        /// Stampa text na stampac i prelazi u novi red
        /// </summary>
        /// <param name="str">String za stampu</param>
        public void OdstampajLiniju(string str)
        {
            byte[] Buff = Encoding.ASCII.GetBytes(str);
            Printer.Write(Buff, 0, Buff.Length);
            this.OdstampajSpecijalneKaraktere(SpecijalniKarakteri.NoviRed);
            Printer.Flush();
        }
        /// <summary>
        /// Stampanje specijalnog niza karaktera, za formatiranje izlaza stampaca
        /// </summary>
        /// <param name="niz">niz bajtova(karaktera) za formatiranje</param>
        public void OdstampajSpecijalneKaraktere(byte[] niz)
        {
            Printer.Write(niz, 0, niz.Length);
        }

        /// <summary>
        /// Zatvara LPT port...
        /// </summary>
        public void ZavrsiStampu()
        {
            Printer.Close();
        }
    }


Npr http://www.superwarehouse.com/...x_Printer/C11C640001/p/1488975

E sad ako mislis na fiskalne racune, tu su stvari komplikovanije posto to zavisi od modela do modela fiskalne kase, mada za svaku bi trebao da postoji drajver , odnosto third party program preko kog ide komunikacija sa kasom...
 
Odgovor na temu

w3bl0rd
Varaždin, Hrvatska

Član broj: 82659
Poruke: 380
213.147.114.*



+26 Profil

icon Re: ispis računa...12.01.2010. u 06:51 - pre 173 meseci
puno hvala!!! budem kasnije pogledao to malo, nek zanima me ima li možda i koji emulator il nešt da to puca u pdf il neku sliku da ja vidim kak će to opće izgledati bez printanja?
there's no place like 127.0.0.1
 
Odgovor na temu

Igor Gajic

Član broj: 93194
Poruke: 747
93.86.87.*



+987 Profil

icon Re: ispis računa...12.01.2010. u 07:20 - pre 173 meseci
Mozes pozvati konstruktor klase sa:

StampaMatricni("c:\\testPrint.txt");


i onda ce sva stampa ici u taj fajl a ne na LPT port.

Iako deluje da ti ovo resava sve probleme, ne preporucujem ti pravljenje programa bez da odstampas nekoliko stranica na pravom matricnom stampacu.
 
Odgovor na temu

w3bl0rd
Varaždin, Hrvatska

Član broj: 82659
Poruke: 380
213.147.114.*



+26 Profil

icon Re: ispis računa...12.01.2010. u 08:14 - pre 173 meseci
naravno :) ok zahvaljujem još jednom
there's no place like 127.0.0.1
 
Odgovor na temu

[es] :: .NET :: ispis računa...

[ Pregleda: 1705 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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