Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Comunicare con una stampante fiscale tramite MSComm e una seriale Virtuale

71 views
Skip to first unread message

Daniele Pinna (Ufficio)

unread,
Nov 25, 2008, 5:37:50 AM11/25/08
to
Salve a tutti :-)

Mi hanno incaricato di creare un piccolo programma in VB6 per
"interfacciare" un software creato con Servoy (un database credo) da un
altro programmatore, con una Stampante Fiscale Epson FP81.

Dato che Servoy, a quanto pare, non è in grado di aprire una porta
seriale e gestire la relativa , l'unica soluzione che ho trovato è stata
questa:

1) Servoy genera un file di testo da inviare alla stampante
2) Servoy esegue un comando per avviare il mio programma
3) Il mio programma apre il file di testo e invia i dati alla stampante.

Fin qui dovrebbe essere tutto chiaro... ma la stampante non risponde ai
miei comandi... ho provato ad inviare i file di esempio che ho trovato
nella documentazione, sia in formato .txt che .xml ma la stampante è
come se non ricevesse nulla.

Naturalmente la stampante funziona ed è collegata correttamente, dato
che il programmino di diagnostica stampa correttamente gli scontrini di
prova etc.

Per la comunicazione con la seriale ho aggiunto il componente MSComm

Quindi imposto il componente:

Il codice che uso, in sintesi è questo:

MSComm1.CommPort = 5
MSComm1.Settings = "9600,n,8,1"

'Apro la porta
MSComm1.PortOpen = True

'Invio i dati
MSComm1.Output = "... dati da inviare..."

'chiudo la porta
MSComm1.PortOpen = False


La porta seriale è una porta virtuale creata con il driver della
stampante FP81 (nel mio caso è 5) con una connessione USB.

I dati da inviare secondo alcuni esempio sono in un formato... secondo
il protocollo di comunicazione sono degli altri...

Un esempio, trovato nella documentazione, è questo:

printerFiscalReceipt
Printer|1
printRecMessage|1|1|1|1|Prima Riga Aggiuntiva Tipo 1
printRecMessage|1|1|2|1|Seconda Riga Aggiuntiva Tipo 1
printRecMessage|1|4|1|1|Prima Riga Aggiuntiva Tipo 4
printRecItem|1|Vendita Reparto Iva 10%|1|100,0|15|1
printRecMessage|1|4|1|1|Seconda Riga Aggiuntiva Tipo 4
printRecItem|1|Vendita Reparto Iva 20%|1,234|100,0|15|1
printRecVoidItem|1|Vendita Reparto Iva 20%|1,234|100,0|15|1
printRecItem|1|Vendita Reparto Iva 4%|2,5|100,17|3|2
printRecMessage|1|4|1|1|Terza Riga Aggiuntiva Tipo 4
printRecRefund|2|Restituzione Imballo|10,000|5,0|15|1
printRecItem|3|Vendita Reparto Esente Iva|12,13|216,17|3|2
printRecItemAdjustment|3|Sconto su singolo prodotto|0|123,45|1|2
printRecMessage|1|2|1|1|Prima Riga Aggiuntiva Tipo 2
printRecMessage|1|2|2|1|Seconda Riga Aggiuntiva Tipo 2
printRecMessage|1|3|1|1|Prima Riga Aggiuntiva Tipo 3
printRecMessage|1|3|2|1|Seconda Riga Aggiuntiva Tipo 3
printRecItem|3|Vendita Reparto esente IVA|12,13|216,17|3|2
printRecSubtotalAdjustment|3|Sconto sul subtotal|1|300,12|3|2
printRecSubtotal|3|1
printBarCode|1|10|2|66|TWICE|FontA|CODE39|01234567ABCDEF
printRecTotal|4|Pagamento con carta di credito|6000,0|0|0|2
displayText|1|Customer Display Printed Fisc Receipt


Sapete dirmi se il componente MSComm ha problemi con le porte seriali
virtuali? Oppure, qualcuno che ha usato quella stampante fiscale o altre
stampanti simili, se il mio problema è dovuto al formato in cui invio i
dati?

Ringrazio anticipatamente per le risposte. :-)


--
Daniele Pinna
DAPINNA.COM
(leva oops per rispondere)
www.dapinna.com
www.ildocfainpillole.it

Albe V°

unread,
Nov 25, 2008, 5:43:10 AM11/25/08
to
Daniele Pinna (Ufficio) ci ha detto :

> Sapete dirmi se il componente MSComm ha problemi con le porte seriali
> virtuali?

No, funzionano benissimo.

Però i tuoi settings del MSComm sono veramente miseri.
Possibile che non serva impostare l'handshaking (che su una virtuale
usb presumo sarà None), e soprattutto i Threshold?

Alberto

--
Ho spiegato a mio nipote cos'è il compromesso: se per le vacanze tua
madre vuole andare al mare e tuo padre invece in montagna, il
compromesso è che si va al mare, ma il papà può portarsi gli sci.


Daniele Pinna (Ufficio)

unread,
Nov 25, 2008, 6:27:51 AM11/25/08
to
Albe V° ha scritto:

> Daniele Pinna (Ufficio) ci ha detto :
>> Sapete dirmi se il componente MSComm ha problemi con le porte seriali
>> virtuali?
>
> No, funzionano benissimo.

OK


> Però i tuoi settings del MSComm sono veramente miseri.
> Possibile che non serva impostare l'handshaking (che su una virtuale usb
> presumo sarà None), e soprattutto i Threshold?

Ecco forse il mio problema stava proprio nelle impostazioni
Ora controllo meglio...

Grazie :-)

Franz_aRTiglio

unread,
Nov 25, 2008, 6:49:22 AM11/25/08
to
Daniele Pinna (Ufficio) wrote:

> Sapete dirmi se il componente MSComm ha problemi con le porte seriali
> virtuali?

Ocio: MScomm di VB6 NON gestisce porte comm dalla 16 in su'.

Daniele Pinna (Ufficio)

unread,
Nov 25, 2008, 7:08:13 AM11/25/08
to
Franz_aRTiglio ha scritto:

Grazie per la segnalazione...
In effetti l'esigenza del cliente è per ora di "testare" la stampa e poi
di collegare ben 16 stampanti fiscali che poi possono diventare 20/24

Eventualmente il problema si risolverebbe come? VB.NET?

Franz_aRTiglio

unread,
Nov 25, 2008, 10:08:18 AM11/25/08
to
Daniele Pinna (Ufficio) wrote:

>>> Sapete dirmi se il componente MSComm ha problemi con le porte
>>> seriali virtuali?
>> Ocio: MScomm di VB6 NON gestisce porte comm dalla 16 in su'.

> In effetti l'esigenza del cliente è per ora di "testare" la stampa e
> poi di collegare ben 16 stampanti fiscali che poi possono diventare
> 20/24 Eventualmente il problema si risolverebbe come?

Un hack dell'MSCOMM32.OCX (ma io nn ho mai provato)
<http://www.codenewsgroups.net/group/microsoft.public.vb.general.discussion/topic10158.aspx>

verso la fine, post di "opa" del 25 apr 2006 7:02 AM

Alternativamente, vedi se puoi gestire 2 porte com (16 + 16)...

> VB.NET?

In .net non ho mai maneggiato COM , non so dirti nulla...

Daniele Pinna (Ufficio)

unread,
Nov 25, 2008, 10:12:45 AM11/25/08
to
Franz_aRTiglio ha scritto:

> Daniele Pinna (Ufficio) wrote:
>
>>>> Sapete dirmi se il componente MSComm ha problemi con le porte
>>>> seriali virtuali?
>>> Ocio: MScomm di VB6 NON gestisce porte comm dalla 16 in su'.
>> In effetti l'esigenza del cliente è per ora di "testare" la stampa e
>> poi di collegare ben 16 stampanti fiscali che poi possono diventare
>> 20/24 Eventualmente il problema si risolverebbe come?
>
> Un hack dell'MSCOMM32.OCX (ma io nn ho mai provato)
> <http://www.codenewsgroups.net/group/microsoft.public.vb.general.discussion/topic10158.aspx>

OK nel caso do uno sguardo li :-)

Cmq forse ho risolto... usando l'OCX fornito con la stampante (mi era
sfuggito fra tutto il materiale che avevo scaricato) e ovviamente un
programma di esempio per usarlo...

Sono riuscito a creare uno scontrino di prova anche se non ho
minimamente capito cosa perché e come :-)))

Intanto ho capito che posso usare VB6
Ora inizio a studiare il codice per cercare di capirlo

Grazie :-)

Daniele Pinna

unread,
Nov 25, 2008, 7:37:30 PM11/25/08
to
Daniele Pinna (Ufficio) ha scritto:

Ok... l'hack funziona e la modifica si ripercuote anche sull'OCX della
Epson... prima se impostavo una porta come superiore a 16, anche nel
semplice IDE di VB mi dava un errore che disabilitava l'OCX.
Ora posso impostare anche una porta 255. Con 256 ovviamente mi da l'errore.

Questa modifica però pare che sia illegale... :-/


--
Daniele Pinna (leva oops. per rispondere)
Utente Skype: dapinna
Sito Web: http://www.dapinna.com <-- Nuovo Sito... ora in Joomla
Il Docfa in Pillole: http://www.ildocfainpillole.it
-----
Now Powered by Linux KUbuntu 8.04 "Hardy Heron"

SB

unread,
Nov 26, 2008, 5:24:52 AM11/26/08
to
Il giorno Tue, 25 Nov 2008 16:08:18 +0100, "Franz_aRTiglio"
<fran...@N0SPAMtin.it> ha scritto:


1. Obtain a HEX editor.
2. Open de file MSCOMM32.OCX
3. Find the string "3D 10 00"
4. There should be only one. This string is unique.
5. Change the string to "3D FF 00"
6. Save the file.

Molto interessante, grazie

--
ciao
Stefano

0 new messages