Imprimir para USB

445 views
Skip to first unread message

Will

unread,
Oct 29, 2010, 11:05:58 AM10/29/10
to VB6 Brasil
Boa tarde,
Estou com um problema em imprimir (Epson LX300) em porta USB,
simplesmente me aparece a seguinte mensagem "Bad File name or Number",
vou postar o codigo que estou usando:

Private Sub Form_Load()
Dim i As Integer
Dim Impressoras As Printer
cboImpressora.Clear
For i = 0 To Printers.Count - 1
cboImpressora.AddItem Printers(i).DeviceName
Next
If cboImpressora.ListCount > 0 Then cboImpressora.ListIndex = 0
End Sub

Private Sub OKButton_Click()
Dim Impressoras As Printer
Dim porta As String
porta = Printer.Port
Open porta For Output As #1 ' Jan tentei assim também "Open
Printer.Port For Output As #1"
Print #1, "Teste"
Close #1
Unload Me
Exit Sub
End Sub

Se alguem puder me dar um help, ficarei muito agradecido.
Vi que muitas pessoas tem o mesmo problema mas não achei solução!!!

Obrigado,
Wilson Nogueira

Gustavo Almeida

unread,
Oct 29, 2010, 4:35:47 PM10/29/10
to vb6b...@googlegroups.com
Bem vindo ao clube.......
 
É foda mas o OPEN numa porta USB pra enviar texto direto para a impressora SIMPLESMENTE NÃO FUNCIONA!
 
Já estou há uns 2 anos rodando na internet e já achei várias dicas mas nenhuma funcionou...
--
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
E-mail do grupo:
vb6b...@googlegroups.com

Cancelamento:
vb6brasil+...@googlegroups.com

Página do grupo:
http://groups.google.com.br/group/vb6brasil?hl=pt-BR

Rômulo Nadler

unread,
Oct 30, 2010, 2:57:03 PM10/30/10
to vb6b...@googlegroups.com
Não funcoina que quando você dá um Open ele abre a porta LPT1 do computador ignorando o driver por isso não funciona, há uma solução que uso tanto nesse caso da usb quanto impressora compartilhada, crio um arquivo txt e executo esse comando via shell "type arquivo >ltp1", esse comando printa o arquivo texto usando o driver, os comandos usados no OPEN LPT1 para comprimir, negritar e etc funcionarão. Qualquer dúvida me add no msn romulo...@yahoo.com.br.

[]s

Gustavo Almeida

unread,
Nov 1, 2010, 8:58:23 AM11/1/10
to vb6b...@googlegroups.com
Amigo... Fiz um teste simples aqui e continua não funcionando...
 
Criei um arquivo "C:\Teste.txt"
 
No prompt de comando do Windows dei  um
 
type C:\Teste.txt LPT1    - Não imprimiu nada
type C:\Teste.txt USB001 (que é a porta que a minha impressora usa) e também não deu nada...
 
Nada funcionou!
 
Fiz algo errado? Alguma dica?

Rômulo Nadler

unread,
Nov 3, 2010, 11:35:43 AM11/3/10
to vb6b...@googlegroups.com

Me desculpe faltou o sinal ">".
Type arquivo.txt > prn ou lpt1

Gustavo Almeida

unread,
Nov 3, 2010, 12:36:31 PM11/3/10
to vb6b...@googlegroups.com
Pois é...
 
Depois eu até enviei um e-mail corrigindo...
Eu que esqueci de digitar o ">" aqui no e-mail... Mas nos testes eu coloquei... E não funcionou...
 
type C:\Teste.txt > LPT1
type C:\Teste.txt > LPT
type C:\Teste.txt > USB001
 
Tudo isso aí, não funciona...

Rômulo Nadler

unread,
Nov 3, 2010, 8:27:51 PM11/3/10
to vb6b...@googlegroups.com

Gustavo,

Verifica se a impressora esta configurada para capturar as impressoes via dos e troca o lpt1 por prn.

Gustavo Almeida

unread,
Nov 4, 2010, 7:39:45 AM11/4/10
to vb6b...@googlegroups.com
PRN eu já tinha tentado, e nada.....
 
Quanto a verificar se a impressora captura impressões do DOS, como exatamente eu vejo isso?

Will

unread,
Nov 10, 2010, 5:00:19 AM11/10/10
to VB6 Brasil
Bom dia,

Pessoal achei um codigo que pelo menos comigo funcionou, mas estou com
um problema, quem sabe alguem possa me dar um help, vou postar o
codigo e em baixo vou explicar o que se passa.

Option Explicit
Private Type DOCINFO
pDocName As String
pOutputFile As String
pDatatype As String
End Type
Private Declare Function OpenPrinter Lib "winspool.drv" _
Alias "OpenPrinterA" (ByVal pPrinterName As String, _
phPrinter As Long, ByVal pDefault As Long) As Long
Private Declare Function StartDocPrinter Lib "winspool.drv" _
Alias "StartDocPrinterA" (ByVal hPrinter As Long, _
ByVal Level As Long, pDocInfo As DOCINFO) As Long
Private Declare Function StartPagePrinter Lib "winspool.drv" _
(ByVal hPrinter As Long) As Long
Private Declare Function WritePrinter Lib "winspool.drv" _
(ByVal hPrinter As Long, pBuf As Any, _
ByVal cdBuf As Long, pcWritten As Long) As Long
Private Declare Function ClosePrinter Lib "winspool.drv" _
(ByVal hPrinter As Long) As Long
Private Declare Function EndDocPrinter Lib "winspool.drv" _
(ByVal hPrinter As Long) As Long
Private Declare Function EndPagePrinter Lib "winspool.drv" _
(ByVal hPrinter As Long) As Long

Private Sub CancelButton_Click()
Exit Sub
Unload Me
End Sub

Private Sub Form_Load()
Dim i As Integer
Dim Impressoras As Printer
cboImpressora.Clear
For i = 0 To Printers.Count - 1
cboImpressora.AddItem Printers(i).DeviceName
Next
If cboImpressora.ListCount > 0 Then cboImpressora.ListIndex = 0
End Sub

Private Sub OKButton_Click()
Dim Impressoras As Printer
Dim lhPrinter As Long, retVal As Long
Dim lpcWritten As Long, lDoc As Long
Dim sWrittenData As String, MyDocInfo As DOCINFO
Dim i As Integer
Dim x As Integer


For Each Impressoras In Printers
Set Printer = Impressoras
If Impressoras.DeviceName = cboImpressora.Text Then Exit For
Next

retVal = OpenPrinter(Printer.DeviceName, lhPrinter, 0)
If retVal = 0 Then
MsgBox "Printer Not found"
Exit Sub
End If
MyDocInfo.pDocName = "teste.txt"
MyDocInfo.pOutputFile = vbNullString
MyDocInfo.pDatatype = vbNullString
lDoc = StartDocPrinter(lhPrinter, 1, MyDocInfo)
Dim fs, a
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("c:\teste.txt", True)
a.Close
Open "c:\teste.txt" For Output As #1
Print #1, Chr(27) & Chr(64); 'Inicializa impressora
Print #1, Chr(27) & Chr(120) & "1"; 'Definir fontes LQF
Print #1, Chr(27) & Chr(107) & "0"; 'Definir fontes Roman
Print #1, Chr(27) & Chr(80); 'Espaçamento 12CPI linha
Print #1, Chr(27) & Chr(48); 'Espaçamento entre linhas
Print #1,
Print #1,
Print #1,
Print #1, Tab(133); Limpa_Texto("PRESTAÇÃO DE SERV."); Tab(153);
Trim(frmCTRC.txtCFOP.Text)
Print #1, Tab(131); Trim(frmCTRC.txtData.Text)
Close #1

Call StartPagePrinter(lhPrinter)
Open "c:\teste.txt" For Input As #2
sWrittenData = Input(LOF(2), #2) 'imprimindo
Close #2
retVal = WritePrinter(lhPrinter, ByVal sWrittenData,
Len(sWrittenData), lpcWritten)
retVal = EndPagePrinter(lhPrinter)
retVal = EndDocPrinter(lhPrinter)
retVal = ClosePrinter(lhPrinter)



Problema: Qdo mando imprimir o txt ele pula uma linha entre os
comandos abaixo:
Print #1, Tab(133); Limpa_Texto("PRESTAÇÃO DE SERV."); Tab(153);
Trim(frmCTRC.txtCFOP.Text)
Print #1, Tab(131); Trim(frmCTRC.txtData.Text)
mas no txt qdo abro, ele esta normal, ou seja, uma linha abaixo da
outra......, não estou entendo o porque esta acontecendo isso, fora
isso, ele esta imprimindo normal para a Epson LX-300, e não esta dando
o salto de pagina.


Obrigado,



Rômulo Nadler

unread,
Nov 10, 2010, 1:05:24 PM11/10/10
to vb6b...@googlegroups.com
Wilson,

As impressoras matriciais têm configuração para salto de linha CRLF+LF, desabilita o salto automático de linha e para saltar a página usa esse comando: Print #1, Chr(12)

Att.,


Reply all
Reply to author
Forward
0 new messages