![]() |
Duda al leer el puerto serie
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 cargando el valor en 'a' Label8->Caption = a; // Represento el valor leido puerto en 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 |
lo que te falta es convertir a su valor numerico
por ejemplo:
|
Gracias por la contestacion, pero hay una cosa que me da error.
Al compilar me dice que esta indefinada la funcion 'Ord'. Hay que definirla de alguna forma especial o solo es una variable normal. |
Ord no es una variable, es una función definida en la unit System, debes agregarla en la clausula uses.
para saber mas funciones de este tipo puedes encontrarlo en la ayuda que es bastante completa. apreta F1 teniendo el cursor sobre la palabra ord y te aparecera una explicación, la unit a la que pertenece y funciones similares. |
Hola foro!, tiempo sin poder aparecerme x-aqi.
Suponiendo q el método ReadStr sea de la forma Código:
void ReadStr(AnsiString &Str, unsigned int Count) Código:
ComPort1->ReadStr(a,Count); // Leo el puerto serie cargando el valor en 'a' |
uyy, perdona alloger, te estaba contestando para Delphi y no C++Builder.
Prueba lo que te escribio OSKR |
Funcionando
Muchas gracias por vuastra ayuda, por fin lo he conseguido, tengo un pequeño error de baud-rate pero ese es otro tema. Este es el codigo con el cual leo el puerto serie:
//----------------------------------------------------------------------- void __fastcall TForm1::ComPort1RxChar(TObject *Sender, int Count) { if(x==0) { AnsiString a, dato1; ComPort1->ReadStr(a,Count); dato1 = AnsiString((int)(a.c_str()[0])); Label8->Caption = ""; Label8->Caption =dato1; temperatura= StrToInt(dato1); x=1; } } Gracias de nuevo, si sale alguna otra duda os la comento Un saludo |
Tengo un problema con el componente CPortLib
tengo un problema al leer el puerto com1 desde DELPHI, utilizo este componente porque mi interfaz electrónica lee codigos de barra que son de 9 dígitos por ejemplo:
650001019 y todos los credenciales se han impreso de esa manera. ya logré instalar correctamente el componente, y este es el codigo fuente para capturar los datos: Código:
Aún no entiendo muy bien como realiza la lectura por eso te pido una orientacion sobre como podría solucionar mi problema. |
La franja horaria es GMT +2. Ahora son las 04:51:01. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi