Newsgroup: it.comp.lang.visual-basic
Titolo: Comunicare con una stampante fiscale tramite MSComm e una seriale Virtuale

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

 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.

 presumo sarà None), e soprattutto i Threshold?
Ecco forse il mio problema stava proprio nelle impostazioni
Ora controllo meglio...
Grazie :-)


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

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
?


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

 
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 :-)



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"


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