Programación General > C++ Builder

 Leer El Puerto Serie

(1/6) > >>

alloger:
Hola, estoy realizando una aplicacion con el puerto serie. Desde un módulo externo envio por radiofrecuencia a traves de una UART un dato en binario. Este dato por ejemplo es 0010 0101 (el nº25) y lo quiero representar en una Label. Si yo he enviado 25, tengo que representar 25 pero me representa caracteres del codigo ASCII.
Para capturar por el puerto serie estoy usando el componente CPortLib y este es el codigo con el que leo el puerto:

AnsiString a;                           // Declaro una variable
ComPort1->ReadStr(a,Count); // Leo el puerto serie cargandose el valor en 'a'
Label8->Caption = a;              // Represento el valor leido del puerto en la Label8

Creo que como la variable 'a' es de tipo String se representa como un caracter, pero no se como tratarla para que aparezcan 2 caracteres que formen 25 y se represente el valor que he enviado desde el exterior.

Un saludo y gracias

salomon_ve:
el numero 25 se representa de la siguiente manera en codigo Ascii

50=2

53=5

osea que en binario seria:


0011 0010 =2 ascii ->32 hex  -> 50 dec
0011 0101 =5 ascii  ->35 hex  -> 53 dec


0010 0101 = % que en HEX es igual a 25 osea que no estas enviando 25 decimal, sino 37 decimal y 25 hexadecimal



espero haberte ayudado, ya el problema esta mas facil de solucionar


salu2

alloger:
Gracias por contestar.
No me habia dado cuenta de eso, pero la mayor duda que tengo es como tratar la variable para que represente en este caso entonces 37 en decimal.
Me has comentado que si envio 0010 0101 equivale a 37 decimal, estoy de acuerdo, pero si tengo en la variable capturada por el puerto serie el valor 37 decimal como la trato para que cuando la represente en la Label me aparezca el propio 37 y no aparezca el simbolo %.
La aplicacion que estoy realizando se basa en enviar desde un micro el valor capturado por el conversor analogico/digital de la temperatura, si el micro envia 37 tengo que representar 37.
Un saludo y gracias de nuevo

Eternal Idol:
Usa ltoa:

ltoa(long integer, char *string, int radix);


--- Código: Text --- char str_num[10];ZeroMemory(str_num, sizeof(str_num));ltoa(numero, num, 10);  

alloger:
Perdona, pero me lo puedes explicar con mas detalle?
Hasta ahora yo tengo esto, primero me defino la variable tipo string, luego leo el COM y lo cargo en 'a'. Antes de representarlo tego que tratar la variable 'a' de la forma que me dices pero no lo entiendo bien.

AnsiString a;
ComPort1->ReadStr(a,Count);
.
.
.
.
Label8->Caption =a;

Un saludo

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa