Hola
Por lo poco que he podido leer, son valores de referencia que se traducen con el manual, debería de llegar valores ascii sin problema, lo que yo normalmente hacía (hace mucho que no toco interfaces seriales) era utilizar hiperterminal la cual se configura automáticamente con los parámetros que se requieren.
Aunque en versiones actuales de Windows ya no está disponible, puedes buscarla en internet y descargar la que venía en XP me parece.
Saludos
Buenas noches.
Te entiendo amigo. Pero es que la respuesta es SI y NO.
De que se puede leer el ascii sin problemas, seguro. En eso no discuto. Lo que digo es que es muy probable, de que justamente el contenido que espera leer look no venga "formato ascii" a lo pelo. Es decir, ¡no se hagan a la idea de que necesariamente la balanza va a devolver la cadena "1KG" y eso debería mirarse asi en el memo.
Existe una buena posibilidad de que el contenido esté codificado/formateado entre los bytes. Porque no es lo mismo leer esperar que el dato esté justo en bytes sino en el "medio".
A lo mejor se me entiende mejor con un ejemplo:
Supongamos que el comando recibido por la balanza es de dos bytes. El componente lee lo que hay en el COM y lo interpreta como una cadena o texto.
Perfecto, hasta ahí todo bien. Ahora entra el juego el protocolo que establece la balanza. Hemos dicho que son 2 bytes. Pero no lo que hay internamente.
Si el protocolo está hecho así:
[ byte1 ][ byte0 ] = <Peso><Var.Control>
Y si se lee un objeto de un kilo, lo de esperar es que el componente pueda interpretar ese byte1 como el '1'. El asci para '1' es 0011 0001 y como no nos interesa lo que hay en byte0 lo descartamos. Listo. El contenido hipotetico que recibe el ComPort sería 1x (siendo x la incognita)
Ahora, si en cambio, el protocolo dice que en lugar de esa cosa bonita y que encaja en bytes, es algo asi:
[ byte1 ][ byte0 ] = <Var.Control1><Peso><Var.Control2>
¡El famoso '1' está codificado entre los dos bytes! La lectura no es inmediata. En realidad debemos leer todo entero y reinterpretar nosotros lo que recibimos. Supongamos que lo que recibimos es esto:
0110 0011 | 0001 1010
Si miramos la tabla ASCI esto se traduce en la cadena 'c' seguida de un carácter "raro" ya que el byte0 en formato asci se corresponde a un elemento de control llamado sustitución.
¿Donde está tu 1? Claro. Existe... pero no como cadena, sino como un flujo de bits en el "medio".
Eso es lo que muy posiblemente esté pasado acá, pero a una escala mayor.
Ha... y ¿quien te dice que la balanza envia las cosas como asci? La balanza envia bits... pero no necesariamente van a ser entendibles para asci. Que el componente interpete ese flujo de bits como cadenas no necesariamente es lo que es. Porque no es lo mismo '1' que 1. Y no es lo mismo que ese '1' o 1 esté "bien acomodado" en sys bytes que esté "desplazado".
¿Y si lo que viene es justamente la interpretación binaria del peso? Porque eso justamente pareciera significar lo que dice en la página 15, si se utiliza la dichosa balanza en "modo Discreto". Lo que viene en el word1 (16bits) es un integer y ahí esta el valor del peso. Y justamente aqui rige eso último que dije: no es lo mismo '1' que 1. Si efectivamente viene el numero binariamente es lógico que el componente va a leer cualquier cosa. Podría arreglarse con hacer un casteo a integer de los caracteres en cuestión. No se puede usar StrToInt porque no va por ahí. Digo casteo.
Pero no termina ahí la cosa porque también depende de lo que hay en el campo Weight format y el Bit Shift. Dependiendo de eso se tiene que hacer una serie de corrimientos de bits, etc.
Asi que no queda otra que leerse bien la documentación de como es que funciona.
Porque claro que la cosa (el componente) nos presenta cadenas ¿Pero es en realidad su significado?... el tema es realmente interpretarlo. ¡quien te dice supongamos que si viene la cadena 'wq3#' y eso quiere decir intermante que hay 1,2 kg! Al 1, y al 2 ni lo vemos... (y puede que ni el separador decimal venga) pero el peso de que está ahí escondido seguro.
Es muy fácil decir que "son caracteres raros" y que la balanza no anda.
Saludos,