Programación General > C++ Builder

 Leer El Puerto Serie

<< < (2/6) > >>

Eternal Idol:

--- Cita de: "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;
--- Fin de la cita ---
Lamentablemente no, ya que casi todo lo que usas no es standard. Tal vez esa clase AnsiString tenga un metodo tipo c_str() pero no lo se ... el codigo que te deje es MUY simple, lo que hace es pasar un numero contenido en una variable de tipo int/long o lo que fuera a una cadena.

Empeza probando lo simple: inicializa la variable a manualmente (supongo que AnsiString a("hola"); funcionara) y asignando como hasta ahora (Label8->Caption =a;) tal vez ahi este el error incluso ... si eso no va proba con Label8->Caption = a.c_str(); y deberia funcionar.

alloger:
Ya casi lo tengo, hasta ahora este es el codigo que empleo y funciona casi bien:

//---------------------------------------------------------------------------

void __fastcall TForm1::ComPort1RxChar(TObject *Sender, int Count)
{

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

Lo voy a pulir un poco mas y si no lo consigo ya os preguntaré

Un saludo

Drache:
Hola, estoy muy interesado en programar usando el puerto serial....

hasta ahora ya he realizado programas usando el puerto paralelo, pero lo ideal es que sepa usar cualquiera de los dos.

bueno, si tu no sabes usar el paralelo yo te enseño como y tu me cuentas lo que sabes del serial xD

yo uso el C++ Builder 5 para programar, ¿cual usas tu?

Un saludo

alloger:
Mi aplicacion la estoy desarrollando con C++ builder 6. Pero para usar el puerto serie de una forma sencilla y con poca programacion necesiats instalar un componente comercial que no sale con el builder, se llama CPorLib y en este enlace tienes el archivo para descargar.

http://comport.sourceforge.net

En este otro como se usa:

https://www.upv.es/bin2/caches/miw/visfit?id=328179&idioma=C

De momento no necesito usar el puerto paralelo pero si me das algun enlace que me lo explique lo guardaré por si acaso

Un saludo

alloger:
Hasta ahora tengo esto para tratar los datos del puerto serie:

        int dato3;
        char string[10];
        AnsiString b, dato2;

        ComPort1->ReadStr(b,Count);
        dato2 = AnsiString((int)(b.c_str()[0]));
        dato3=StrToInt(dato2);
       
        itoa(dato3, string, 10);

        Label10->Caption = "";
        Label10->Caption = string;

Con esto si que a veces me representa bien el dato ya que estoy enviando 0x25 y me representa en la Label10 el valor de 25. Lo que ocurre es que no siempre lo hace, si que en ocasiones representa 25 pero en otras el valor representado es otro. Con estas instrucciones creo que le estoy dando muchas vueltas a la variable capturada hasta obtenerla en el formato deseado.

Existe otra instruccion para la lectura del puerto COM pero no me representa bien el valor:

       char buffer [10];
        char cadena[10];
        int valor;
        valor=ComPort1->Read(buffer,8);
   
        itoa(valor, cadena, 10);
        Label10->Caption = "";
        Label10->Caption = cadena;

De esta forma aparentemente la variable no es tratada tantas veces pero el valor representado no es el esperado.

Sabe alguien (Eternal Idol) como solucionar esto?

Un saludo

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa