Newsgroup: it.comp.lang.visual-basic
Titolo: [??] Routine di stampa

Sono in una situazione di crisi ASSOLUTA, non ci capisco + un cazzo !!
Ho due sitazioni e un programma.
Situazione 1:
Programma da installare su portatile senza parallela ma con cavo adattatore
(e software di gestione installato) a stampante ad aghi parallela.
Necessità di stampa in modo testo non grafico
Situazione 2:
Stesso programma da installare su un pc qualunque con stampante ad aghi (per
le prove sempre la stessa) collegata ad una LPT
Necessità di stampa in modo testo non grafico
Ho installato il software che gestisce l'adattatore USB anche sul PC che uso
per programmare.
Risultati della situazione 1:
Non va una mazza ......... la stampante dorme e non dà nessun cenno
Risultati della situazione 2:
La stampa parte ma ad un certo punto mi manda in crash il programma che devo
chiudere forzandolo con un bel CTRL+CANC
Una cosa che ho notato in questa situazione è che se eseguo la routine di
stampa passo passo la stampa viene eseguita correttamente.
Qualcuno mi può dare una mano per togliermi dal precipizio davanti al quale
sono ??
Le ho provate tutte:
Installato stampante con driver solo testo usando la printer.print
Altre decine di prove modificando il driver di controllo della stampante
La routine di stampa è questa:
        Open Printer.Port For Output As #1
        'IMPOSTO IL NUMERO DI RIGHE PER FOGLIO
        Print #1, Chr$(27); "C"; Chr$(71)
        'SPAZIATURA INTESTAZIONE FOGLIO
        Print #1, Chr$(13)
        Print #1, Chr$(13)
        Print #1, Chr$(13)
        Print #1, Chr$(13)
        Print #1, Chr$(13)
        Print #1, Chr$(13)
        Print #1, Chr$(13)
        'CONDENSATO
            Print #1, Chr$(15)
        'DATI FOGLIO DI LAVORO
                Print #1, Tab(5); "Foglio di lavoro N.: "; rsFlav!flav_num;
" del "; Date
        Print #1, Chr$(13)
        Print #1, Chr$(13)
                Print #1, Tab(5); " Data chiamata: "; rsFlav!flav_datachiam;
        Print #1, Chr$(13)
        Print #1, Chr$(13)
        'DATI CLIENTE
                Print #1, Tab(5); rsFlav!cli_nome; Tab(70); "TELEFONO ";
rsFlav!cli_tel
                Print #1, Tab(5); rsFlav!cli_indirizzo; Tab(70); "CELLULARE
"; rsFlav!cli_cel
                Print #1, Tab(5); rsFlav!cli_cap; "  "; rsFlav!cli_comune;
Tab(70); "FAX "; rsFlav!cli_fax
        'LAVORO ESEGUITO
        Print #1, Chr$(13)
        Print #1, Chr$(13)
                Print #1, Tab(5); "Intervento su impianto: ";
rsFlav!imp_desc;
                Print #1, " presso: "; rsFlav!imp_ind;
                Print #1, Tab(70); "Impianto acceso il: "; rsFlav![imp-avv]
        Print #1, Chr$(13)
        Print #1, Chr$(13)
                'LISTA MACCHINE SELEZIONATE
                Print #1, Tab(5); "MACCHINE IN CONTROLLO:"
                Print #1, Tab(5); "Macchina"; Tab(25); "Descrizione";
Tab(55); "Ubicazione"; Tab(80); "Lista pezzi"; Tab(95); "Matricola";
Tab(110); "Mnt"; Tab(120); "Gar"
                Print #1, Tab(5); String(123, "-")
                Do While Not rsFlavApp.EOF
                    Print #1, Tab(5); rsFlavApp!lpz_cod;
'MACCHINA
                    Print #1, Tab(23); Trim(rsFlavApp!lpz_desc);
'DESCRIZIONE
                    Print #1, Tab(50); rsFlavApp!dimp_macubi;    'UBICAZIONE
                    Print #1, Tab(82); rsFlavApp!lpz_lpcode;        'LISTA
PEZZI
                    Print #1, Tab(96); rsFlavApp!dimp_macmatr;  'MATRICOLA
                    If rsFlavApp!dimp_mnt = "Falso" Then
'MANUTENZIONE
                        Print #1, Tab(111); "NO";
                    Else
                        Print #1, Tab(111); "SI";
                    End If
                    If rsFlavApp!dimp_gar = "Falso" Then
'GARANZIA
                        Print #1, Tab(121); "NO"
                    Else
                        Print #1, Tab(121); "SI"
                    End If
                    rsFlavApp.MoveNext
                Loop
                rsFlavApp.Close
'                Print #1, Tab(5); String(123, "-")
        Print #1, Chr$(13)
        Print #1, Chr$(13)
                    'MOTIVI DELLA CHIAMATA
                    Print #1, Tab(5); "MOTIVO DELLA CHIAMATA:"
                    Print #1, Tab(5); String(123, "-")
                    Do While Not rsFlavMot.EOF
                        Print #1, Tab(5); rsFlavMot!mot_desc
                        rsFlavMot.MoveNext
                    Loop
                    rsFlavMot.Close
                    'SALTO FINE PAGINA
                    Print #1, Chr$(12);
                    'BEEP
                    Print #1, Chr$(7);
                    'POSIZIONAMENTO NUOVA STAMPA
                    Print #1, Chr$(13)
                rsFlav.MoveNext
                strFlavCorrente = ""
        Loop
        Print #1, Chr$(13)
        Print #1, Chr$(13)
        Print #1, Chr$(13)
        Print #1, Chr$(13)
        Print #1, Chr$(13)
        Print #1, Chr$(13); Chr$(7); Chr$(7); Chr$(7)
    Close #1
    rsFlav.Close
Exit Sub
Errman:
'    MsgBox Err.Number & Err.Description
    Resume Next
End Sub
--
Grazie, Alberto (alias ALCAU)
--
Grazie, Alberto (alias ALCAU)

Ho provato a visualizzare sul portatile il nome
della porta di stampa    = Ne00:
il nome della stampante = Epson LX-100
il nome del driver          = winspool

         Open Printer.Port For Output As #1
Qui diventa:
         Open "C:\MioFileTemp.txt" For Output As #1
Poi usi l'altra routine:
_____________________________________
Sub StampaUnFile(NomeFile As String, DeviceStampante As String)
    Dim lhPrinter As Long
    Dim lReturn As Long
    Dim lpcWritten As Long
    Dim lDoc As Long
    Dim sWrittenData As String
    Dim MyDocInfo As DOCINFO
    Dim FileLibero As Integer
    Dim Nomedelfile As String
    Dim DatiDelFile As String
    lReturn = OpenPrinter(DeviceStampante, lhPrinter, 0)
    If lReturn = 0 Then
        Messaggio "Nome stampante non riconosciuto !"
        Exit Sub
    End If
    MyDocInfo.pDocName = NomeFile
    MyDocInfo.pOutputFile = vbNullString
    MyDocInfo.pDatatype = vbNullString
    lDoc = StartDocPrinter(lhPrinter, 1, MyDocInfo)
    Call StartPagePrinter(lhPrinter)
    FileLibero = FreeFile
    Open NomeFile For Input As FileLibero
    Do While Not EOF(FileLibero)
        Line Input #FileLibero, DatiDelFile
        sWrittenData = DatiDelFile
        lReturn = WritePrinter(lhPrinter, ByVal sWrittenData, _
                                            Len(sWrittenData), lpcWritten)
    Loop
    Close FileLibero
    lReturn = EndPagePrinter(lhPrinter)
    lReturn = EndDocPrinter(lhPrinter)
    lReturn = ClosePrinter(lhPrinter)
End Sub
__________________________
La chiami, ovviamente, con "C:\MioFileTemp.txt" come primo parametro, e il nome
del device di stampa come secondo. Funziona perfino su stampanti condivise di rete !
Basta usare come secondo parametro \\NomeDelServer\NomeDellaStampante.
Bye, G.

ok. ci provo.
Grazie per avermi seguito in tutti i vari 3d :-))

Ho provato tutto !!
Su una connessione di rete o una stampante collegata alla LPT funziona.
Sul portatile con l'adattatore da USB a parallela mi dice porta non
riconosciuta !! :-((((((((((((
E moh ???
Sono desperadooooooo

 Sono desperadooooooo
No, non mi rovinare gli Eagles... sei stonato ! ;-)
Bye, G.

 No, non mi rovinare gli Eagles... sei stonato ! ;-)
    eh eh eh

     il nome del driver winspool
Sto per dire una cosa che se l'avesse detta un altro, mi avrebbe fatto
schifo...
Hai pensato di abilitare la condivisione della stampante in rete e poi
accedere come \\NomeDelPCLocale\NomeStampante ?
Su una stampante "normale" (cioè connessa alla LPT1) funzia, mi pare.
Non so se l'accrocc^M adattatore che usi accetti una redirezione in
questo modo...
Bye, G.

Può essere un'idea ...... adesso ci provo.

Non funzia :-(((
Sono nella merdaccia
Mi trovo nella condizione di avere un programma finito ma per sta cazzo di
un portatile con le sole usb non posso consegnarlo.
Fate un pò voi .........