He estado trabajado ultimamente sobre todo el código (otra vez) y ya logré algo. Como al inicio, todo me lleva de regreso al módulo de impresión. Lo he modificado y quedo de la siguiente manera:
Módulo de impresión:
Código:
Public Sub MandarAminiPrinter(texto As String, Optional Preview As Boolean = True)
Dim tempstr As String
Dim b() As Byte
Dim n As Integer
On Local Error Resume Next
If Preview Then
Dim f As New frmTicketPreview
Load f
f.texto = texto
f.Show vbModal
Exit Sub
End If
'If pref("ImprimirDOS") Then
b = LoadResData(101, "CUSTOM")
n = FreeFile
If Dir(App.Path & "\bat.bat.pif") <> "" Then
FileCopy App.Path & "\bat.bat.pif", App.Path & "\b.pif"
Else
Kill "b.pif"
If Err Then Err.Clear
Open App.Path & "\b.pif" For Binary As n
Put #n, , b
Close
If Err Then Err.Clear
End If
Debug.Print "len del texto a imprimir: "; Len(texto)
CrearArchivoTextoImpresion texto
Kill "C:\bat.bat"
If Err Then Err.Clear
Open "C:\bat.bat" For Binary As n
Put #n, , "copy """ & App.Path & "\temp.tmp"" lpt1:"
Close
If Err Then
MsgBox "Hipocaja no pudo escribir un archivo temporal de impresión. Cierre los archivos que esté utilizando, y si el problema persiste, reinicie su computadora. Hipocaja intentará mandar la impresión correctamente.", vbCritical, Titulo_Largo
Err.Clear
End If
Shell App.Path & "\b.pif", vbHide
End Sub
Módulo para crear archivo de texto:
Código:
Private Sub CrearArchivoTextoImpresion(texto As String)
Dim n As Integer
On Local Error Resume Next
Kill App.Path & "\temp.tmp"
If Err Then Err.Clear
n = FreeFile
Open App.Path & "\temp.tmp" For Binary As n
Put #n, , texto
Close
If Err Then
Debug.Print Err.Number, Err.Description
MsgBox "Hipocaja no pudo escribir un archivo temporal de impresión. Cierre los archivos que esté utilizando, y si el problema persiste, reinicie su computadora. Hipocaja intentará mandar la impresión correctamente.", vbCritical, Titulo_Largo
Err.Clear
End If
End Sub
Ahora les explicó como funcionó y que falta:
1. Al ejecutar el programa y mandar una impresión, abre una ventana de vista previa del ticket,
2. Se genera un archivo de texto temporal, el cual se guarda en una carpeta (Si lo hace, si funciona),
3. En la vista previa hay un botón de impresión, se le da click,
4. Abre un enlace a MS-DOS y lo cierra inmediatamente (el archivo queda cargado)
5. La impresión queda cargada en un archivo por lotes *.bat
Aquí emíeza lo interesante: Al parecer no se imprime el ticket, no lo manda directamente a la impresora, pero queda cargado en el archivo *.bat, si yo le doy doble click a ese archivo, manda la impresión como debe ser, pero esto sólo desde la carpeta donde esta guardado.
El problema que veo es que no se imprime directamente, solo queda cargado, viendo el código, alguien sabe que me está fallando todavía, ¿alguién podría ayudarme con esto?
De antemano les agradezco su ayuda. Saludos.