Envio de un array por rs232 en ccs

#1
hola todos, e estado aprendiendo un poco de C utilizando el complador de la casa CCS, pero no e encontrado infomacion acerca de envciar un array de 10 bytes por rs232.

estoy haciendo un control que depende de un convertidor analogico digital que lee 8 sensores los alamcena en un array, estableci la conexion pero no puedo enviar los datos del array por RS232
 
#3
hola CARLOS0907 gracias funciona y muy bien, sin embargo me surge una duda no es posible enviar un caracter tipo 0x00 o 0xff ya que algunos de ellos los toma como control o funciones esciales, existe alguna forma que ello no suceda
 
#5
para evitar caracteres o funciones especiales ademas por conveniencia divido el valor en 1.4 y a ese nuevo resultado le sume 30, teniendo un vector (int8 v[5];) ahora el problema es que al transmitir ese valor me ocupa demasiado tiempo y la recepcion muestra datos q no tengo idea de donde salen utilizo la funcion puts(v); con tiempo superior a los 36 ms ademas genera unos datos que no tengo idea donde salen, pero si envio el mismo vector sin modificacion (division-suma) no supera los 8 ms, pero no tengo idea donde me genera los demas caracteres q salen en la transmision
 
Última edición:
#6
estas seguro de tener bien configurada la velocidad de transmisión tanto en el receptor como en el transmisor. por si las moscas verifica tener configurado el adc a 8bits y fíjate que la tierra este bien conectada
 
#7
hola, estoy intentando envia un verctor por rs232, use el comando puts, pero me sale un error.
esto es lo que hago:
puts("%c%c%c \r",bomba[0],bomba[1],bomba[2],SERIAL_SIM900);

y el error es este:
"stream must be a constant in the valid range" y lo marca en el corchete de bomba[
que es lo que estoy haciendo mal?
 
#9
Habría que ver como esta definida la variable bomba
Hola chclau, gracias por responder. La variable si está definida, de hecho puedo enviar la cadena de caracteres por el puerto, pero no puedo compilar cuando quiero leer el estado del vector y enviarlo.
Te adjunto el código.

Código:
int i=0;
char bomba[3];
void main()
{ while (true)               // bucle infinito
   { 
     if(cbuff[0]=='E' && cbuff[1]=='s' && cbuff[2]=='t'&& cbuff[3]=='a'&&cbuff[4]=='d'&&cbuff[5]=='o') 
     {
         cbuff[0]=0;
         for (i=0;i<5;i++)
         {
         PIN_ON(LED1);
         PIN_ON(RELAY1);
         delay_ms(300);
         PIN_OFF(LED1);
         PIN_OFF(RELAY1);
         delay_ms(300);
         }
         if(input(PULSADOR1)==0)
         {
            bomba[0]="0";
            bomba[1]="N";
            bomba[2]=" ";
         }
         else 
         {
            bomba[0]="O";
            bomba[1]="F";
            bomba[2]="F";
         }
         
         
         fprintf(SERIAL_SIM900,"AT+CMGS=\"3804xxxxxx\"\r"); // aca poner el numero de celular que recibe el SMS
         delay_ms(300);
         puts("el estado de la bomba es: \r",SERIAL_SIM900);
         puts("%c%c%c \r",bomba[0],bomba[1],bomba[2],SERIAL_SIM900);
         delay_ms(300);
         fprintf(SERIAL_SIM900,"%c",0x1a);
         
         
         }
  
   }
}
 
Última edición por un moderador:
#10
Te digo un atajo, quiza no el mejor. Definir el valor de una variable "test" en el if que verifica pulsador1, y despues escribir

if(input(PULSADOR1)==0)
test = 0;
else
test = 1;

if (test==0)
puts("ON ", SERIAL_SIM900);
else
puts("OFF", SERIAL_SIM900);


Y te obvias los problemas que pudieras tener por manejar matrices de caracteres.

Podes hacerlo incluso mas corto asi
if(input(PULSADOR1)==0)
puts("ON ", SERIAL_SIM900);
else
puts("OFF", SERIAL_SIM900);
 
Última edición:
Arriba