Programación General > C++ Builder

 Leer El Puerto Serie

<< < (5/6) > >>

alloger:
Creo que voy a desistir ya de este tema.

Me quedo con este codigo:

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

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

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


Creo que trata la variable demasiadas veces, pero es el codigo con el cual obtengo el resultado mas proximo al deseado. Con este codigo recibo 1 valor bueno de cada 3 enviados, pero siempre se repite que de esos 2 valores erroneos son los 2 negativos, asi que la forzaré el valor con algun tipo de condicional.

Con este otro codigo:

        int valor;
        valor = ComPort1->Read(&valor, sizeof(valor));

        Label8->Caption = "";
        Label8->Caption = valor;

Tambien he probado a colocar 'itoa'  y el resultado obtenido siempre es el mismo, envie lo que envie solo obtengo '1' en la Label

Si se te ocurre algo mas para probar estaré agradecido si me lo comentas.

Un saludo

Eternal Idol:
La primera manera me parece erronea ... sigo estando borracho parece ... la segunda te da siempre 1 por una razon, Read() devuelve true y el codigo que puse estaba pesimo ...


--- Código: Text --- int valor = 0;bool ret = false; &#60;&#60; supongo que sera bool y sino sera int, da lo mismoret = ComPort1-&#62;Read(&valor, sizeof(valor));  

alloger:
Nos vamos acercando al resultado, el porcentaje de valores buenos representados es mas alto con este nuevo codigo 6 de cada 10 datos enviados aprox. se corresponden con el resultado, pero todavia sigo sin comprender esos errores.

He colocado este codigo:

        int valor = 0;
        bool ret =false;
        ret = ComPort1->Read(&valor, sizeof(valor));

        Label8->Caption = "";
        Label8->Caption = valor;

Yo pensaba en representar 'ret' en lugar de 'valor' pero me da errores de compilacion. Supongo que estaba equivacado. Colocando 'itoa' los resultados son similares.

En estos momentos estoy enviando (0000 1111) y en la Label me representa varios valores prodominando el 15, pero tambien valores como 248 ó 135.

Eternal Idol:

--- Cita de: "alloger" --- Yo pensaba en representar 'ret' en lugar de 'valor' pero me da errores de compilacion. Supongo que estaba equivacado. Colocando 'itoa' los resultados son similares.
--- Fin de la cita ---
ret es el resultado, verdadero o falso dependiendo de si logro leer o no. En valor esta el valor leido justamente.

Eternal Idol:

--- Cita de: "alloger" --- En estos momentos estoy enviando (0000 1111) y en la Label me representa varios valores prodominando el 15, pero tambien valores como 248 ó 135.
--- Fin de la cita ---
Comproba que estes configurando bien el puerto, velocidad incluida y que no la estes sobrepasando.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa