none
Enviar byte en hexadecimal por puerto serie RRS feed

  • Pregunta

  • Hola..

    Estoy tratando leer el peso de una BALANZA que está conectada con la PC. Para que la balanza envíe el peso a la PC hay que enviar un byte para pedir que la Balanza envíe el peso.

    La interrogación se realiza enviando un solo byte en Hexadecimal a la Balanza. El valor en Hexadecimal es " 05 ".

    Como respuesta, la balanza responderá con una secuencia de 9/10 bytes en la cual:
    • El primer byte de datos sirve de cabecera, indicando el inicio de la trama de datos ($02).
    • Los proximos 6/7 bytes representan el peso en formato ASCII, tal como se representa en el visor de la balaza. En caso de que el
    peso sea positivo, se enviarán 6 bytes de datos, de ser negativo, el peso será presedido por el signo “-”, por lo que se enviarán 7
    bytes.
    • El próximo byte ($03) representa el final de la trama de datos.
    • El último byte, representa la verificación de la trama transmitida (XOR de los bytes de la cadena).

    ¿Como envío es byte en hexadecimal? ¿Cómo se hace la conversión?.

    Después tendría que ver cómo hacer la conversión del peso correctamente

    viernes, 11 de mayo de 2012 13:42

Respuestas

  • ¿Alguien sabe a qué se debe esto?.

    has varificado que se cierren de forma correcta los puertos ?

    o sea validas que pasa por el

    SerialPort.Close Method

    y cuando se bloquea validas que no se cerrara el puerto

    podrias validar la disponibilidad usando

    Serial Port – Enumeración & Disponibilidad - Tambien en C#

    si detienes la aplciacion cerrandola de forma abrupta sin pasar por el close podria quedar el puerto tomado, cierra con la implementacion de un boton que realice el close del serialport y el cierre de la aplicacion

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 11 de mayo de 2012 15:35
  • pero si estas conectandote con la aplicacion y despues ya no puedes hacerlo la unica aplicacion que establecio conexion es la que desarrollas, por lo tanto es la que genera el bloqueo del puerto

    distinto seria si nunca has podido conectarte, alli si indicaria que alguna otra aplicacion esta usandolo

    igualmente has validado que algun soft intalado de la balanza no se este conectando al hardware por ese puerto

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 11 de mayo de 2012 16:04

Todas las respuestas

  • Te paso un ejemplo, de como convertir un byte[] a un string

    byte[] p = new byte[] { 49, 50, 51, 52, 53, 54 };  // Simulamos un byte[] con la codificacion ASCII de la cadena 123456
    System.Text.Encoding encoding = System.Text.Encoding.ASCII;
    string texto = encoding.GetString(p); // Tenemos la cade 123456


    Atentamente, Sergio.

    Blog
    Twitter

    viernes, 11 de mayo de 2012 14:01
  • Gracias por sus respuestas.

    En este momento no puedo probar porque tengo problema con el puerto serie "Acceso al puerto COM1 denegado".  Me pasa a menudo, y lo estaba solucionando desinstalando el controlador y reiniciando la máquina pero ahora no se soluciona de esa manera. ¿Alguien sabe a qué se debe esto?. Estoy con windows XP.

    viernes, 11 de mayo de 2012 14:09
  • ¿Alguien sabe a qué se debe esto?.

    has varificado que se cierren de forma correcta los puertos ?

    o sea validas que pasa por el

    SerialPort.Close Method

    y cuando se bloquea validas que no se cerrara el puerto

    podrias validar la disponibilidad usando

    Serial Port – Enumeración & Disponibilidad - Tambien en C#

    si detienes la aplciacion cerrandola de forma abrupta sin pasar por el close podria quedar el puerto tomado, cierra con la implementacion de un boton que realice el close del serialport y el cierre de la aplicacion

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 11 de mayo de 2012 15:35
  • Hola Leandro

    Sí, uso el SeialPort.Close. Pero puede ser que esté tomado el puerto com1 poruqe al modificar al de su configuración salta un carte diciendo que el  puerto está en uso por una aplicación. Lo mismo dice cuando quiero crear una conexión con el Hyperterminal. Lo que tendría que saber qué aplicación es la que está usando el puerto, cosa q no sé. Lo raro q es siga tirando el mismo error luego de reiniciar la máquina.

    viernes, 11 de mayo de 2012 15:53
  • pero si estas conectandote con la aplicacion y despues ya no puedes hacerlo la unica aplicacion que establecio conexion es la que desarrollas, por lo tanto es la que genera el bloqueo del puerto

    distinto seria si nunca has podido conectarte, alli si indicaria que alguna otra aplicacion esta usandolo

    igualmente has validado que algun soft intalado de la balanza no se este conectando al hardware por ese puerto

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 11 de mayo de 2012 16:04