¿Cómo envío texto ASCII a la impresora (a través de USB)?

Tengo una impresora térmica (china barata) con conexión USB con drivers Windows y Linux. Probé la instalación del controlador PPD de Linux con Gutenprint y usbtb al principio sin suerte.

Así que me gustaría poder enviar solo texto directamente a la impresora. No puedo ver ningún dispositivo virtual en /dev/ que parezca corresponder a la impresora.

La salida de Información del sistema se ve así:

Generic Bulk Device:

  Product ID:   0x5011
  Vendor ID:    0x0416  (Winbond Electronics Corp.)
  Version:   3.00
  Serial Number:    1234567890
  Speed:    Up to 12 Mb/sec
  Manufacturer: Generic
  Location ID:  0x14100000 / 1
  Current Available (mA):   500
  Current Required (mA):    100
  1284 Device ID:   print00

¿Hay alguna forma de enviar texto (ASCII) a la impresora?

Cuando Mac OS X intenta identificar la impresora, logra enviar un código PostScript que la impresora genera textualmente, por lo que al menos algunas partes de la comunicación con la impresora funcionan. Si pudiera evitar enviar código PostScript y en su lugar enviar texto ordinario.

Recibo con código PostScript impreso

¿Utiliza Terminal?
@Buscar웃 Bueno, yo uso iTerm2 pero un problema es que lp no me da acceso directo a la impresora o usbtb sino que solo usa los controladores de impresora existentes. Supongo que un controlador de impresora de solo texto sería suficiente para mis necesidades, pero no he encontrado uno.
Si no puede configurar una impresora a través de la interfaz habitual de Finder, puede intentar acceder a la interfaz web de CUPS en: http://localhost:631/

Respuestas (2)

Logré instalar un controlador de impresora sin formato e imprimirlo desde la línea de comandos.

Usando la interfaz web de CUPS/Gutenprint en http://localhost:631/Agregué una impresora con URI de dispositivo

usbtb://Generic%00%00%06/Generic%20Bulk%20Device?serial=1234567890

y seleccionó "Raw" como marca para la impresora. (¡Tenga en cuenta que el parámetro URI de serie corresponde al número de serie del dispositivo USB que se indica en la pregunta!)

Ahora puedo ver la impresora en la lista al emitir el comandolpstat -p -d

la impresora Generic_usbtb está inactiva. habilitado desde el mar 16 jul 23:04:11 2013

Para imprimir el archivo de texto text.txtescribolp -d Generic_usbtb test.txt

¡Esto funcionó para mí! Puede encontrar usbtb aquí (no se requiere Gutenprint, solo usbtb): sourceforge.net/projects/gimp-print/files - increíblemente, funciona en OS X Yosemite, a pesar de que el último lanzamiento de usbtb fue de hace 7 años.
No olvide ejecutar $ cupsctl WebInterface=yesprimero, para activar la interfaz web de CUPS

Teoría

Estamos hablando de una impresora de línea . Este tipo de impresora acepta texto sin formato y lo imprime. Por lo general, admiten 255 caracteres y deben configurarse en algunos conjuntos de caracteres admitidos, como ASCII o CP437.

Estas impresoras aceptan entrada "en bruto", es decir, caracteres, espacios, saltos de línea, etc. A veces también admiten imágenes.

Básicamente necesitarás

  1. Agregue una impresora sin procesar a través de CUPS (interfaz de impresión común de Unix)
  2. Envíe texto sin formato, PDF o PS a la impresora

Pasos

1) Activar la administración web de CUPS

  1. abrir una terminal
  2. Ingrese el comando$ sudo cupsctl WebInterface=yes

Eso habilitará una función que le permite agregar y eliminar impresoras del sitio de administración web de CUPS localhost.

2) Encuentra la dirección de la impresora

Si es una impresora local:

  1. Ejecute el comando$ lpinfo -v | grep usb

Obtendrás una respuesta que se parece a:

direct usb:///80Series%20Receipt%20Printer%20200DPI?location=14200000

La usb:///<printer name>?location=<locationID>es la dirección de su impresora en el concentrador USB. Copia ese texto.

Si es una impresora de red, querrá la dirección IP y el puerto de esa impresora. La dirección completa será:

socket://<ip address>:<port>

Por ejemplo:

socket://192.168.1.12:9100

3) Agregar impresora

  1. Vaya a su página de administración de CUPS ( http://localhost:631 )

  2. Haga clic en Administración

  3. Haga clic en Agregar impresora

  4. Haga clic en AppSocket/HP JetDirect (no haga clic en su impresora existente si aparece), haga clic en Continuar

  5. Pegue la dirección de su impresora del Paso 2 en la entrada de Conexión , haga clic en Continuar

  6. Asigne un nombre y una descripción a la impresora, haga clic en Continuar

  7. Seleccione Raw en Hacer selección y haga clic en Continuar . Si tiene mucha suerte, puede ver a su fabricante aquí. Buena suerte.

  8. Seleccione Raw Queue (en) en la selección de Modelo y haga clic en Agregar impresora

  9. Seleccione las opciones de la impresora. Para Raw Queue (en) , verá un Banner inicial y un Banner final . Probablemente querrá seleccionar Ninguno para ambos.

4) Conecte la nueva impresora a las preferencias del sistema MacOS

  1. Haga clic en Administración
  2. Haga clic en Agregar clase
  3. Rellenar el formulario. El campo Nombre será el nombre legible por humanos que desea que aparezca en la sección Impresoras y escáneres de Preferencias del sistema .
  4. Seleccione la impresora que acaba de agregar de Miembros y haga clic en Agregar clase
  5. Su impresora debería aparecer ahora en sus Impresoras y escáneres
  6. (opcional) - apague la administración web de CUPS emitiendo el comando $ sudo sudo cupsctl WebInterface=noen su Terminal

5) Encuentra tu impresora

  1. En su Terminal, emita el comando $ lpstat -p. Esto listará sus impresoras
printer HP_LaserJet_200_color_M251nw__0200B9_ is idle.  enabled since Tue Jan 15 00:24:06 2019
printer PDF_Printer is idle.  enabled since Sat Jan 11 14:00:23 2020
printer rongta is idle.  enabled since Sun Jan 10 14:37:44 2021
printer Rongta_80mm_Thermal_Printer is idle.  enabled since Sun Jan 10 14:42:19 2021

En mi caso tengo unRongta_80mm_Thermal_Printer

6) Imprimir

Ok, entonces aquí su millaje puede variar.

  1. Desde su Terminal, emita el comando $ lp -d <printer_name> file.txtpara imprimir file.txten la impresora <printer_name>y obtendrá una ID de trabajo de impresión como respuesta.

En mi caso, emití:

$ echo "hello" > file.txt
$ lp -d Rongta_80mm_Thermal_Printer file.txt
request id is rongta-61 (1 file(s))

Aparentemente , también puede imprimir archivos PDF y PostScript de esta manera, ya que se supone que el sistema de impresión de MacOS administra la traducción entre el sistema y la impresora.

Así que instalé una impresora como usted describió en Mac OS 10.14.6 (una PC hermano P-Touch 1230). Y luego en el paso 6 no pasa mucho. CUPS recibe el trabajo de impresión e incluso lo completa para archivos txt y pdf. Se atasca para archivos ps. Pero la impresora no se mueve en absoluto, se apaga o comienza a parpadear su LED de estado. De cualquier manera, todas las respuestas no muy deseables. ¿Ideas?
Supongo que su impresora no es compatible con PostScript. Es posible que se quede atascado con los archivos TXT. ¿Quizás pueda exportar el PS a PDF y luego imprimir el PDF?
Lo siento, fui ridículamente confuso en mi comentario anterior. Nunca imprime ninguno de esos formatos. Es solo que el trabajo de impresión sale de la cola como completado para PDF o TXT. Se atasca para PS. En cualquier caso, la impresora muestra signos de datos recibidos (apagado, LED parpadeante) pero nunca imprime