Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Duda al leer el puerto serie (https://www.clubdelphi.com/foros/showthread.php?t=36533)

alloger 16-10-2006 01:48:07

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

Crandel 16-10-2006 12:55:29

lo que te falta es convertir a su valor numerico

por ejemplo:

Código Delphi [-]
Label8->Caption = IntToStr(Ord(a[1]));

alloger 16-10-2006 13:03:28

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.

Crandel 16-10-2006 15:20:20

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.

OSKR 16-10-2006 15:57:03

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)
o muy semejante y necesites el valor numérico del primer caracter->
Código:

ComPort1->ReadStr(a,Count); // Leo el puerto serie cargando el valor en 'a'
Label8->Caption = AnsiString((int)(a.c_str()[0]));

aunqe creo q el penúltimo () no es necesario... :rolleyes: pero bueno!!! prueba a ver.

Crandel 16-10-2006 17:05:13

uyy, perdona alloger, te estaba contestando para Delphi y no C++Builder.

Prueba lo que te escribio OSKR

alloger 17-10-2006 01:52:12

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

jhoncacru 15-11-2006 14:01:12

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:


procedure TFTRegistrar.puertoserialRxChar(Sender: TObject; Count: Integer);
var str: String;
begin
  puertoserial.ReadStr(Str, Count);
  Edit1.Text := Edit1.Text + Str;
end;

El problema se presenta cuando quiero leer los codigos de barra, este componente solamente me envia 8 dígitos : 65000101 y quedando el 9 .......

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 13:18:58.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi