[C#] Stampare scontrino

venerdì 08 ottobre 2010 - 15.08

K1kk0z90 Profilo | Newbie

Ciao a tutti! :)
Ho fatto un piccolo programma di base per la gestione dei pagamenti di un negozio. Non ho usato nessuna API particolare per POS, vorrei solo stampare uno scontrino con una stampante fiscale, usando (sempre che sia possibile) le normali funzioni di stampa, come se si trattasse di una normale stampante.
Sto iniziando a scrivere il codice, finora vorrei solo stampare l'intestazione, in grassetto, allineata al centro. Il problema è che viene stampato un foglio bianco.
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Dove sbaglio? Inoltre, è giusto l'approccio che sto mettendo per la stampa di uno scontrino con stampante fiscale?
Vi ringrazio in anticipo per il vostro aiuto! :)

alexmed Profilo | Guru

Ciao
Premesso che non sò niente di scontrini fiscale e che io utilizzo VB.
Volevo, prima di dire cose sbagliate, chiederti:

Hai impostato le dimesioni del foglio?
Il foglio bianco esce da una normale stampante A4?

Ciao

alexmed

K1kk0z90 Profilo | Newbie

>Ciao
>Premesso che non sò niente di scontrini fiscale e che io utilizzo
>VB.
>Volevo, prima di dire cose sbagliate, chiederti:
>
>Hai impostato le dimesioni del foglio?
>Il foglio bianco esce da una normale stampante A4?
>
>Ciao
>
>alexmed

Ciao!
Sì le dimensioni del foglio le ho impostate. In realtà l'altezza del foglio è provvisoria, poi dovrò trovare un modo di calcolare l'altezza a seconda di quanti articoli sono stati acquistati, dato che le stampanti fiscali so che stampano su un rullino lunghissimo e che la stampa termina quando sono stati stampati tutti i prodotti. Il metodo che imposta il foglio è il seguente:
PaperSize ps = new PaperSize(); ps.PaperName = "Scontrino"; ps.RawKind = (int)PaperKind.Custom; ps.Width = 224; //57 mm (se ho fatto bene la conversione in centesimi di pollice) ps.Height = 254; //provvisorio printDocument1.DefaultPageSettings.PaperSize = ps;

Non sto usando una vera stampante, ma la Microsoft XPS Document Writer, per provare a vedere come verrebbe il risultato senza sprecare inchiostro (anche se per ora non vedo nessuna scritta sullo scontrino "virtuale" :D ).

Grazie ancora! :)

alexmed Profilo | Guru

Ok
Allora come prima cosa, per non sprecare, giustamente , carta ed inchiostro, postresti utilizzare un PrintPreviewDialog
http://msdn.microsoft.com/it-it/library/system.windows.forms.printpreviewdialog.aspx
In questo modo verifichi che il tuo PrintDocument abbia caricato le dimensioni del foglio, perchè, adesso non ricodo bene, ma dovresti passargliele come parametro, ovvero:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Ciao

alexmed

K1kk0z90 Profilo | Newbie

Le dimensioni gliele ho passate invocando il metodo CreaScontrino() prima di invocare il metodo printDocument1.Print():
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Però non stampa niente :(

alexmed Profilo | Guru

Ciao
se nel frattempo non hai risolto qui di seguito trovi una possibile soluzione scritta in VB:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Qui puoi tradurla in C#: http://www.carlosag.net/Tools/CodeTranslator/
Non lo traduco io perchè non saprei correggere eventuali errori.

Ciao


alexmed

diegoooo82 Profilo | Junior Member

Ciao,
io per lavoro ho interfacciato diversi tipi di registratori di cassa quello che posso dirti è che ogni registratore ha il suo protocollo di comunicazione proprietario, nel 99% dei casi avviene tutto tramite seriale quindi devi sparare il dato direttamente in seriale senza usare altri oggetti

cmq il consiglio che ti ho è reperire la documentazione della cassa prima che gli mandi qualche valore strano e la blocchi... sono molto delicate sotto questo punto di vista...

Buon Lavoro

gammash Profilo | Newbie

Interfaccio ai miei applicativi molti registratori di cassa diversi, ed ognuno ha un suo protocollo di comunicazione e una sua sintassi
Non potendo e volendo clonare il programma per ogni diverso registratore di cassa a cui mi sono intefacciato ho risolto con un file txt di scambio.
con una mia sintassi creo questo txt ( scontrino.txt) ad ogni fine transazione.
nel frattempo ho il programma di interfacciamento al registratore di cassa che è attivo e controlla se nella cartella deputata viene scritto qualcosa.
Appena trova il file scontrino.txt lo legge e manda il flusso di stampa al registratore di cassa, quindi cancella scontrino.txt e si rimette in attesa.

Per quanto riguarda il programma di collegamento al registratore di cassa, dicevo sopra che in linea di massima ogni casa ha il suo protocollo e sintassi.
Raramente ho trovato a corredo della documentazone standard materiale utile e di solito mi sono dovuto rivolgere ai rivenditori se non direttamente ai distributori per avere materiale più esaustivo.
Mi hanno sempre risposto in maniera adeguata e completa e spesso mi hanno anche madato del codice di esempio.

K1kk0z90 Profilo | Newbie

Grazie a tutti per il vostro aiuto! :D
E' un po' di giorni che non guardavo il forum perchè sono stato molto impegnato con l'università, e ho letto solo ora le vostre risposte.
Quindi mi sembra di capire che il modo più usato sia inviare le istruzioni specifiche della stampante fiscale tramite seriale...
Cercherò di imparare a inviare dati in seriale.
Grazie ancora! :)

diegoooo82 Profilo | Junior Member

non è che è il modo piu usato... è praticamnte l'unico tranne rarissimi casi...

l'oggetto da usare è il SerialPort che trovi negli oggetti del framework

K1kk0z90 Profilo | Newbie

Perfetto, grazie ancora!

mondoc Profilo | Newbie

Vi scrivo in merito a una sua possibile collaborazione con noi.
Cerco collaborazione per poter stampare gli scontrini fiscali per i principali registratori di cassa delle principali marche Epson, Olivetti...etc.
A noi ci occorre un modulo/programma indipendente che si posizioni tra il nostro gestionale e le casse, mandi in stampa nei misuratori e stampanti fiscali gli scontrini.
Noi dal nostro gestionale passiamo un file CSV o txt contenente le righe sontrino. Il modulo deve prenderlo in carico, processarlo e mandarlo in stampa.

E-Mail: vidcs@tiscali.it

mondoc Profilo | Newbie

Vi scrivo in merito a una sua possibile collaborazione con noi.
Cerco collaborazione per poter stampare gli scontrini fiscali per i principali registratori di cassa delle principali marche Epson, Olivetti...etc.
A noi ci occorre un modulo/programma indipendente che si posizioni tra il nostro gestionale e le casse, mandi in stampa nei misuratori e stampanti fiscali gli scontrini.
Noi dal nostro gestionale passiamo un file CSV o txt contenente le righe sontrino. Il modulo deve prenderlo in carico, processarlo e mandarlo in stampa.

E-Mail: vidcs@tiscali.it

gammash Profilo | Newbie

e' la soluzione che gia' adotto io

ho moduli per interfacciarmi a diversi registratori di cassa

puoi contattarmi a

info@gammash.com

mondoc Profilo | Newbie

Salve le ho mandato una e-mail al suo indirizzo info@gammash.com. Ho provato a contattarla diverse volte al suo numero 081- ma mi risponde sempre una segreteria telefonica.

Mi faccia sapere il mio indirizzo e-mail è vidcs@tiscali.it. Il mio cell lo trova nella mail che le ho spedito.

Saluti

ioshimura Profilo | Newbie

In merito alla collaborazione, se non ha gia' provveduto, puo' contattarmi tranquillamente e ne parliamo.

mondoc Profilo | Newbie

Ok mi mandi una sua E-Mail o un suo recapito al mio indirizzo, la contattero'.
mondoc@tiscali.it

sanghino Profilo | Junior Member

Solitamente sul sito del produttore del registratore fiscale esistono manuali, componenti ecc ecc per sviluppare quel tipo di applicazione.

Ciao
Sanghino
--------------------------
www.extrageek.com

Stampey74 Profilo | Newbie

Salve io ho un italiana macchi s-850 qualcuno di voi ha gentilmente il set di comandi ed un piccolo esempio in vb.net di come connettersi!?!?! Grazieee
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5