Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-10-2006
alloger alloger is offline
Registrado
 
Registrado: sep 2006
Posts: 8
Poder: 0
alloger Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 16-10-2006
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 22
Crandel Va por buen camino
lo que te falta es convertir a su valor numerico

por ejemplo:

Código Delphi [-]
Label8->Caption = IntToStr(Ord(a[1]));
__________________
[Crandel]
Responder Con Cita
  #3  
Antiguo 16-10-2006
alloger alloger is offline
Registrado
 
Registrado: sep 2006
Posts: 8
Poder: 0
alloger Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 16-10-2006
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 22
Crandel Va por buen camino
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.
__________________
[Crandel]
Responder Con Cita
  #5  
Antiguo 16-10-2006
Avatar de OSKR
OSKR OSKR is offline
Miembro
 
Registrado: nov 2004
Ubicación: San Cristóbal/Táchira/Venezuela
Posts: 389
Poder: 20
OSKR Va por buen camino
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... pero bueno!!! prueba a ver.
__________________
Los Estados Unidos parecen destinados por la Providencia para plagar la América de miserias a nombre de la libertad."
Simón Bolívar
(Carta al Coronel Inglés Patricio Cambell 05/08/1829).
Responder Con Cita
  #6  
Antiguo 16-10-2006
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 22
Crandel Va por buen camino
uyy, perdona alloger, te estaba contestando para Delphi y no C++Builder.

Prueba lo que te escribio OSKR
__________________
[Crandel]
Responder Con Cita
  #7  
Antiguo 17-10-2006
alloger alloger is offline
Registrado
 
Registrado: sep 2006
Posts: 8
Poder: 0
alloger Va por buen camino
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
Responder Con Cita
  #8  
Antiguo 15-11-2006
jhoncacru jhoncacru is offline
Miembro
 
Registrado: oct 2006
Posts: 11
Poder: 0
jhoncacru Va por buen camino
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.

Última edición por jhoncacru fecha: 15-11-2006 a las 14:06:58.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Componente Cportlib (puerto serie) Duda tulio Varios 11 08-03-2011 00:28:17
Usb en puerto serie :p D-MO Humor 10 30-06-2006 06:16:45
Imprimir a puerto serie anduj Impresión 4 25-02-2005 12:18:39
Puerto serie esquerda21 Varios 2 12-05-2004 23:58:52
Puerto serie y tcp mercurio Varios 3 28-10-2003 01:21:59


La franja horaria es GMT +2. Ahora son las 08:02:38.


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
Copyright 1996-2007 Club Delphi