2015-08-18 14 views
6

Sto sviluppando un'applicazione Point of Sale e una delle funzionalità è stampare la ricevuta in una stampante termica/per ricevute. Attualmente ho una stampante Datecs DPP-255.Stampa ricevuta con stampante ricevuta

Non ho idea di dove iniziare la mia ricerca.

Ho provato la ricerca tramite Internet, ho scoperto che JavaPOS/UnifiedPOS esiste ma non ho trovato la documentazione sufficiente per iniziare. Per favore, fai un po 'di luce.

risposta

1

Quindi sembra che questa stampante supporti qualcosa chiamato ESC/POS, che è come un set di comandi che consente di stampare e formattare i dati. Ci sono alcune guide disponibili online, questa è una che ho usato prima: http://www.starmicronics.com/support/mannualfolder/escpos_cm_en.pdf

Si noti che le stampanti a volte differiscono leggermente in quali set di comandi da ESC/POS supportano, quindi si potrebbe avere un po 'di tentativi ed errori su le tue mani.

In termini di invio di tali dati alla stampante, dipende dal tipo di connessione che è. Per la seriale, dovresti solo essere in grado di aprire e scrivere su quella porta, usando il set di comandi ESC/POS.

Non tutti i dati che invierai saranno codificati ASCII o UTF, molti di essi sono valori binari che devi inviare. Ad esempio, per comunicare alla stampante di scrivere una nuova riga, il valore esadecimale è 0A. Quindi, in Java si avrebbe bisogno di specificare che come String s = "\u000A"; ecc

per Java è necessario scaricare l'API Java Comm da http://java.sun.com/products/javacomm/

C'è un tutorial su questo qui: http://www.java-samples.com/showtutorial.php?tutorialid=214

Speriamo che questo aiuta .

+0

Nota l'installazione di Java Comm è davvero dolorosa. Include la copia di dll direttamente nell'installazione di jvm. Un'alternativa è semplicemente l'uso di plink (da putty) che è appena iniziato come un processo da java e read/write con stdio. –

+0

Inoltre ho avuto alcuni problemi di stabilità con java comm ultima volta che l'ho usato. Se si utilizza plink, il processo di plink può essere solo ucciso e riavviato in caso di errore e quindi rilascerà tutte le risorse sul sistema operativo. –

+0

'" \ u000A "' è anche conosciuto come '" \ n "', cioè newline. E "\ u000A" non funzionerà come il compilatore Java interpreterà quello come una interruzione di riga letterale tra virgolette. Vedi http://stackoverflow.com/questions/3866187/why-cant-i-use-u000d-and-u000a-as-cr-and-lf-in-java –

4

Qui è un progetto open source per la prova, che può essere utilizzato anche come un riferimento come programmare usando JavaPOS (codice sorgente disponibile):

qui sono anche alcuni progetti ospitati su GitHub (vedere il codice sorgente per ottenere l'idea e di giocare con):


Link correlati:


NOTA:
al fine di utilizzare JavaPOS (che ora è una parte della UnifiedPOS specification, vedere Appendice B), il produttore del dispositivo Datecs DPP-255 deve fornire e i relativi driver. Sono forniti? JavaPOS - è una , quindi di conseguenza ci deve essere qualche implementazione di esso.

+0

creo un progetto per sopra POStest, il seguente errore ho trovato jpos/res/jpos.properties file non trovato jpos/res/jpos.properties file non trovato Eccezione nel thread "main" java.lang.NoClassDefFoundError: org/apache/xerces/parsers/DOMParser –

+0

@YunusEinsteinium Sembra che la libreria Apache Xerces non sia disponibile sul classpath. Ho aggiornato un collegamento al progetto POSTest (il primo link), la pagina iniziale sembra essere superata, quindi c'è una versione 2 di questo progetto che è più aggiornata (più correzioni di bug). Scarica da lì, che il file ZIP contiene sicuramente _xerces, jar_ file. – informatik01

+0

E il * jpos.properties * non si trova anche nel classpath. Btw il nuovo progetto POSTest 2 è basato su Maven, quindi ha la dipendenza richiesta (* Apache Xerces *) definita nel file POM. Il binario (ovvero il POSTest compilato) ha * xerces.jar *. – informatik01