Autor Tema: Necesito ayuda con un proyecto urgente!.  (Leído 2591 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado estucarracuda1

  • PIC10
  • *
  • Mensajes: 18
Necesito ayuda con un proyecto urgente!.
« en: 20 de Enero de 2005, 06:49:00 »
Colisteros:


Les explico:

TEngo un dispositivo que se comunica con un C8 que es mi placa.Este dispositivo hace calculos con decimales pero me entrega la informacion en formato ASCII.El problema que tengo es que hice una rutina qie toma esos numero que va tirando el dispositivo y hago un calculo para que el micro me tire el resultado pero tengo el problema que me esta calculando mal el resultado.Los valores son con decimales por lo tanto el tipo de variable que uso el es LONG.

Lo que no se es que estoy haciendo mal por lo cual mi rutina esta calculando mal:

Es un problema de tipo de variable?

Es un problema de restos o de carry?

O este micro no puede generar estos calculos porque no es el adecuado?.


Esta es basicamente la rutina a la que me refiero:


void SumarItem(char i)
{
char j;

    j=i+1;
    subtotal=0;
    subtotal0=0;
    subtotal1=0;
    subtotal2=0;
    subtotal3=0;
    subtotal4=0;

    subtotal0= (long) ( ((long)(buff_485[j]-0x30)) * 10000);
    subtotal1= (long) ( ((long)(buff_485[j+1]-0x30)) * 1000);
    subtotal2= (long) ( ((long)(buff_485[j+2]-0x30)) * 100);
    subtotal3= (long) ( ((long)(buff_485[j+3]-0x30)) * 10);
    subtotal4= (long) ( ((long)(buff_485[j+4]-0x30)) * 1);
    subtotal = subtotal0 + subtotal1 + subtotal2 + subtotal3 + subtotal4 ;


    total = total + subtotal;


Agradecere mucho que alguien me pueda tirar una punta en esto porque a mi me esta volviendo loco.


MUchas gracias a todos


Estucarracuda1

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Necesito ayuda con un proyecto urgente!.
« Respuesta #1 en: 20 de Enero de 2005, 09:57:00 »
Lo que me resulta chocante es que nada más comenzar haces esto:
j=i+1

Si "i" es el índice de la matriz buff_485, ¿porqué lo vuelcas a "j" incrementado en una unidad?

Desconectado estucarracuda1

  • PIC10
  • *
  • Mensajes: 18
RE: Necesito ayuda con un proyecto urgente!.
« Respuesta #2 en: 21 de Enero de 2005, 14:56:00 »
Hola Nocturno66!:

Gracias por responderme.

Vos decis que "J= i + 1" estaría mal escrito y por eso no funciona?Esto haria que no me este sumando bien las cantidades la rutina o es el micro que udo que no trabaja bien (68HC705C8).
ese detalle es el que me estara volviendo loco?.COmo deberia ir segun vos?.


EL problema que tengo es el siguiente:

El micro recibe esta informacion de un dispositivo y aparece en la pantalla de PC asi:


por ejemplo:


3 Kg de naranjas           $123,34
1 kg de bananas           $  23,54
1/2 kg de uvas              $    1.50
                                    ---------------
                                      $148 ,38 -----> este seria el valor correcto


Pero el micro me lo suma mal y siempre para abajo.Nunca hacia arriba.Parecería  que no estoy haciendo la suma de los arrastres de derecha a izquierda correctamente o algo así.


   Un saludo desde Argentina.


Estucarracuda1

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Necesito ayuda con un proyecto urgente!.
« Respuesta #3 en: 22 de Enero de 2005, 00:24:00 »
Como te he comentado en el mail privado, sospecho que estás ignorando el primer caracter recibido, puesto que nada más comenzar haces j=i+1

El programa se puede hacer más corto, pero para comprobar si ese es el problema, prueba a eliminar la suma, dejando sólo j=i

Ya me contarás

Desconectado etolocka

  • PIC12
  • **
  • Mensajes: 51
RE: Necesito ayuda con un proyecto urgente!.
« Respuesta #4 en: 15 de Marzo de 2005, 12:29:00 »
Hola

Me imagino que habrás encontrado ya alguna solución, porque el mensaje es viejo, pero una pregunta: qué compilador usas? long es para numeros reales? No deberías usar float?

Prueba poniendo 10000.0, tal vez está forzando el tipo a entero, a pesar del typecasting.

Saludos,
Ernesto.
www.mundomicro.com.ar