Buenas tardes, les cuento que estoy desarrollando un programa que de acuerdo a un valor de tensión que leo en una entrada analógica mando un carácter por el pin Tx del puerto serie a otro dispositivo para que el mismo muestre el estado de carga actual de una batería, uno de los inconvenientes que estoy teniendo es que en el display solo me muestra "LcdPrint(1,0,"Bateria 100%")" cuando también debería mostrarme en la otra fila de dicho display el valor de tensión que esta leyendo en la entrada analógica "LcdPrintf(0,1,"VIN1=%02.2f",Voltaje) ", además de tildarse el microcontrolador no pudiendo sobrescribir otro programa y debiendo resetear la placa volviendo a los valores de fábrica .Luego de la instrucción LcdPrint(1,0,"Bateria 100%") sigue esta función SerialSendByte('A'), el otro dispositivo al cual está conectada la placa plc interpreta que la batería esta al 100%, por ejemplo, si el carácter es B la batería esta al 90% y así sucesivamente .Cuando comento la funcion "//SerialSendByte('A')" el programa anda perfecto.Mi pregunta es, la placa espera una respuesta de parte del dispositivo como un acknowledgement para que esta continúe con la ejecución del programa?.
A continuación les paso el programa.
PlcMain()
{
// Aqui puede escribir codigo PAWN y llamar a otras funciones.
new Float: Voltaje=0
LcdClear()
VinJumper5UnSet()
RelayClose(RELAY8)
RelayClose(RELAY7)
RelayClose(RELAY6)
RelayClose(RELAY5)
RelayClose(RELAY4)
LcdPrint(1,0,"Bateria 100%") //en el display me mostraba solo este comentario y no la tensión de entrada luego de poner la siguiente linea
//SerialSendByte('A') // de envío de un caracter
for(;;)
{ Voltaje= Float: VinReadVolt(1)
LcdPrintf(0,1,"VIN1=%02.2f",Voltaje) //este comentario también debería mostrarme
DelayMS(300)
if((Voltaje<=9) && (Voltaje>8))
{ RelayOpen(RELAY8)
LcdClear()
LcdPrint(1,0,"Bateria 90%")
DelayMS(300)
//SerialSendByte('B')
}
if((Voltaje<=8) && (Voltaje>7))
{ RelayOpen(RELAY7)
LcdClear()
LcdPrint(1,0,"Bateria 80%")
DelayMS(300)
//SerialSendByte('C')
}
if((Voltaje<=7) && (Voltaje>6))
{// RelayOpen(RELAY7)
LcdClear()
LcdPrint(1,0,"Bateria 70%")
DelayMS(300)
//SerialSendByte('D')
}
if((Voltaje<=6) && (Voltaje>5))
{ //RelayOpen(RELAY7)
LcdClear()
LcdPrint(1,0,"Bateria 60%")
DelayMS(300)
//SerialSendByte('E')
}
if((Voltaje<=5) && (Voltaje>4))
{ //RelayOpen(RELAY7)
LcdClear()
LcdPrint(1,0,"Bateria 50%")
DelayMS(300)
//SerialSendByte('F')
}
if((Voltaje<=4) && (Voltaje>3))
{ //RelayOpen(RELAY7)
LcdClear()
LcdPrint(1,0,"Bateria 40%")
DelayMS(300)
//SerialSendByte('G')
}
if((Voltaje<=3) && (Voltaje>2))
{ //RelayOpen(RELAY7)
LcdClear()
LcdPrint(1,0,"Bateria 30%")
DelayMS(300)
//SerialSendByte('H')
}
if((Voltaje<=2) && (Voltaje>1))
{ //RelayOpen(RELAY7)
LcdClear()
LcdPrint(1,0,"Bateria 20%")
DelayMS(300)
//SerialSendByte('I')
}
if((Voltaje<=1) && (Voltaje>0.5))
{ //RelayOpen(RELAY7)
LcdClear()
LcdPrint(1,0,"Bateria 10%")
DelayMS(300)
//SerialSendByte('J')
}
if(Voltaje<=0.5)
{ //RelayOpen(RELAY7)
LcdClear()
LcdPrint(1,0,"Bateria 00%")
DelayMS(300)
//SerialSendByte('K')
}
// Loop principal.
}
// Retorno.
return 0
}
Muchas Gracias.
Saludos.
Mariano Campos.