none
Problemas con impresoras

    Question

  • Buen dia primero que todo agradesco de antemano su colaboracion, mi problema es el siguiente primero nesecite establecer conexion con unas impresoras que son especificamente la epson tmt884 y la otra es bixolon srp-350 estas impresoras son termicas aunque no se siimporte mucho, con las dos nesecito conectarme mediante medio serial rs232 y tambien por TCP, ya lo he logrado por los dos medio, pero hasta hay todo perfecto resulta que ellas manejan un lenguaje de programacion propio que en su mayoria de comandos comienzan con ESC, ya he logrado imprimir bueno la accion de imprimir pero me imprime pura basura imprime caracteres raros e ilegibles, no se que estoy haciendo mal si la unica forma que conosco de escribirle al puerto de manera serial es con el metodo SerialPort.Write() que me pide un arreglo de bytes, y lo mismo con TCP mediante el metodo Stream.Write(), para lograr convertir mis strings y mis ints a bytes hago lo siguiente Encoding.ASCII.GetBytes(loqueneseciteextraer); espero halla sido lo suficientemente claro, creo que mi error no es de codigo ya que la impresora imprime; cosas raras pero imprime, nesecito urgente alguien que conosca sobre la programacion de impresoras que me de un ejemplo o algo de codigo ya que llevo bastante estancado con este inconveniente

    gracias
    Monday, December 07, 2009 9:48 PM

Answers

  • Les cuento que resolvi el problema no era de programacion "jejej casi dejo este trabajo" resulta que las impresoras termicas tienen la opcion de sacar un tiquete de prueba con la configuracion de la misma como se hace ? aca les doy la respúesta se hace de la siguiente manera:(funciono en la bixolon srp 350 y en la epson tmt884)
    se apaga la impresora y antes de prenderla de nuevo se mantiene presionado el boton feed, con este boton presionado se enciende y ella genera el tiquete de prueba con su configuracion, cuando salio el tiquete me di cuenta que la tasa de baudrate de la impresora estaba configurada para 19200 y yo estaba enviando los datos por el puerto a 9600, gracias a pep Lluis por su valiosisisima ayuda, entocnes me toco cojer la impresora y ella tiene unos dip switches de configuracion y configurar la baudrate a 9600

    espero esto sirva de ayuda para muchos

    hasta una proxima oportunidad
    • Marked as answer by ORsanchez Thursday, December 17, 2009 3:22 PM
    Thursday, December 17, 2009 3:21 PM

All replies

  • Hola ORSanchez,

    Por lo que explicas parece ser un problema de 'settings'. En comunicaciones serie y sobre todo en dispositivos como impresoras, necesitas ajustar los parametros de comunicaciones o adaptarte a los prefijados por el fabricante. Mira en los manuales de las impresoras cuales son esos ajustes y emparejalos antes de abrir el puerto con algo similar a esto :

        Sub ejemplodeSerialPortSettings()

            Dim serialPort As New IO.Ports.SerialPort

            serialPort.BaudRate = 9600

            serialPort.DataBits = 8

            serialPort.Parity = IO.Ports.Parity.None

            serialPort.StopBits = IO.Ports.StopBits.One

            '... Open
       
    End Sub

    Entendiendo que la impresora esta configurada para trabajar a 9600,N,8,1 por poner un ejemplo.

    En caso de que en ambos lados dispongamos de la misma configuracion lo mas probable es que estes realizando alguna conversión erronea.

    Intenta enviar un simple 'serialPort.WriteLine("Hola Impresora")... entonces deberias verlo impreso sin problemas.

    Saludos,
    Pep Lluis,


    MVP - Visual Developer
    Friday, December 11, 2009 7:36 AM
    Moderator
  • he tratado enviando datos de todas las formas posibles y codificaciones posibles voy a colocar lo de los bits de paridad y klos bits de parada y te aviso ok muchas gracias por la preocupacion, he intentado hacerlo no solo con comunicacion serial sino tambien con tcp por medio de streams y pasa lo mismo me escribe pero me salen solo monachitos jejejje seran mensajes del mas alla...... jejje, voy a intentar colcando las lineas que me dijiste gracias.
    Friday, December 11, 2009 1:39 PM
  • mira no se si he sido lo suficientemente claro de tal modo disculpame, lo que no se es enviar los comandos a la impresora si los envio como char, como strings,cono enteros, si al fin y al cabo todo lo tengo que convertir a un arreglo de bytes para poder utilizar el metodo write.
    Monday, December 14, 2009 1:56 PM
  • Hola ORsanchez,

    Simplemente tal y como te decia en mi respuesta, si tienes la velocidad, paridad..etc acordes con la impresora un simple :

    serialPort.WriteLine("Hola Impresora")

    Deberia imprimirse sin problemas. Entendiendo que tu impresora no es de sistema, si no que esta directamente conectada al puerto serie.
    Si en tal situacion no funciona, se nos escapa algun detalle que desconozco.

    Por lo que explicas en tu primera exposicion, por intuicion diria que es un problema con la configuracion de la impresora.
    Saludos,
    Pep Lluis,
    MVP - Visual Developer
    Monday, December 14, 2009 4:35 PM
    Moderator
  • gracias por la preocupacion seguire intentando cuando tenga tiempo actualmente tengo medio abandonado lo de la impresoara pero tarde que temprano lo tendre que ahcer jeje gracias
    Monday, December 14, 2009 11:49 PM
  • Les cuento que resolvi el problema no era de programacion "jejej casi dejo este trabajo" resulta que las impresoras termicas tienen la opcion de sacar un tiquete de prueba con la configuracion de la misma como se hace ? aca les doy la respúesta se hace de la siguiente manera:(funciono en la bixolon srp 350 y en la epson tmt884)
    se apaga la impresora y antes de prenderla de nuevo se mantiene presionado el boton feed, con este boton presionado se enciende y ella genera el tiquete de prueba con su configuracion, cuando salio el tiquete me di cuenta que la tasa de baudrate de la impresora estaba configurada para 19200 y yo estaba enviando los datos por el puerto a 9600, gracias a pep Lluis por su valiosisisima ayuda, entocnes me toco cojer la impresora y ella tiene unos dip switches de configuracion y configurar la baudrate a 9600

    espero esto sirva de ayuda para muchos

    hasta una proxima oportunidad
    • Marked as answer by ORsanchez Thursday, December 17, 2009 3:22 PM
    Thursday, December 17, 2009 3:21 PM
  • saludos  ya que eres un afectado por este tipo de impresoras talves me puedas ayudar no soy un tecnico pero ni los tecnicos me han podido ayudar espero que alguien lo haga tengo una red con 5 pc y 4 impresoras bixolon srp350plus
    en diferentes pc uso un programa para negocios  llamado aasasoft e imprimo en ambas  al mismo tiempo diferentes articulos funcionan muy bien en ratos pero de repente me harojan pura basura como gerogrificos  me dirijo a propiedades de impresora y me aparese abilitada la opcion de travajar sin conexion repentinamente  muy seguido sin que yo lo haga la pongo en usar en linea y aveses funciona pero aveses  no aunque la habilite y me aparesca la leyenda de listo debajo del icono de la impresora no me imprime nada.lo que hago es habilitarla elimino todo lo que este en cola por imprimir la seleciono y avese funciona y aveses no me funciona que sera?pd :por lo general me sucede en la impresora del servidor
     
    Thursday, February 11, 2010 5:40 AM
  • Hola Alejandro,

    Este tipo de problemas suele suceder cuando desbordamos los 'buffers' de recepción de la impresora, normalmente la impresora dispone de una pequeña memoria tampón para almacenar la información que posteriormente debe imprimir y prevenir la perdida de la misma si esta llega a una mayor velocidad de lo que es capaz de imprimir a nivel de mecanismo. Si el tamaño del trabajo es muy grande y lo enviamos a la impresora a tal velocidad que desbordamos el buffer... probablemente este se pierde y empieza a tener reacciones extrañas.

    Si este es el caso, puedes solucionarlo configurando adecuadamente el 'spooler' o de otra forma debes verificar que el cable de unión entre la impresora y el pc sea el correcto según la especificación del fabricante. Normalmente las impresoras de este tipo disponen de una señal de salida que indica que el 'buffer' esta a punto de desbordarse para que de esa forma puedas pausar el envío del trabajo, hasta que la señal vuelva a indicar que el buffer esta ok.

    También creo recordar que algunas impresoras podían configurarse para que lanzaran Xon/Xoff por ‘software’ si no disponían de una señal física, precisamente para evitar esto.

    Saludos,
    Pep Lluis,

    PD. Es aconsejable abrir un nuevo post para cada pregunta, en vez de utilizar uno viejo... pues esto ayudara a los que busquen problemas similares al tuyo.


    MVP - Visual Developer
    Thursday, February 11, 2010 8:14 AM
    Moderator