Pages: [1]   Go Down
Author Topic: Re: Problemas con char y char*  (Read 666 times)
0 Members and 1 Guest are viewing this topic.
Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 721
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si se trata de un puntero a cadena char (declarada, por ejemplo, como char *texto), se puede recorrer así:

while(*texto != '\0')
   Serial.print(*texto++);

Logged

Orduña- Bizkaia
Offline Offline
Sr. Member
****
Karma: 0
Posts: 317
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Aupi, el problema esque con Serial.print(buf) va perfecto en el serial monitor pero buf es un char y al lcd le tengo que pasar en char *string y no se como hacerlo.
SAludos.
Logged

Albacete
Offline Offline
Full Member
***
Karma: 0
Posts: 140
Arduino mola que te pasas
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Serial.print(buf);

En un array de caracteres (buf[]) buf se refiere al puntero a la primera posicion.
Logged

Orduña- Bizkaia
Offline Offline
Sr. Member
****
Karma: 0
Posts: 317
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pofenas no te he entendido muy bien lo que querias decir, el problema lo tengo con

lcd.LCD_3310_write_string(0, 0,buf, MENU_NORMAL);

que me suelta esto:
 error: invalid conversion from 'char' to 'char*'
 error: initializing argument 3 of 'void LCD_3310_write_string(unsigned char, unsigned char, char*, char)'

En la consola me va bien Serial.print(buf); pero buf en el lcd no.

He probao con
Code:
int16_t c;
  while ((c = file.read()) > 0){
    Serial.print((char)c);
    lcd.LCD_3310_write_string(0, 0,(char)c, MENU_NORMAL);
  }

pero me sale el mismo error
error: invalid conversion from 'char' to 'char*'

Me esta trayendo de cabeza.
Logged

Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 721
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Estás pasando un carácter cada vez, y la función necesita una cadena entera acabada en '\0'. Creo que primero debes llenar el string completo con el while() , y luego pasarle a lcd.LCD_3310_write_string() el puntero a ese string.

Code:
 char texto[33]  // suponiendo que no habrá mensaje más largo
  int n;

  int16_t c;

  n = 0;
  while ((c = file.read()) > 0)
  {
      texto[n++] = c;
  }
  texto[n] = '\0';
  
  // y ahora puedes pasar el puntero char a la función
    lcd.LCD_3310_write_string(0, 0, &texto[0], MENU_NORMAL);
  }



Logged

Orduña- Bizkaia
Offline Offline
Sr. Member
****
Karma: 0
Posts: 317
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

curro92 eso era si señor, por eso me salian caracteres raros cuando probe algo parecido.

Ahora el problema esque me imprime todo y los saltos de linea de forma rara, me gustaria que me separase cada linea y convertir las cadenas de texto en array para manejarlos con un joystick a trves de los punteros, pero no se como separar el texto en cada salto o "/n", seria lago como explode en php pero en c ni idea.
Logged

Orduña- Bizkaia
Offline Offline
Sr. Member
****
Karma: 0
Posts: 317
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ya he conseguido cortar por cada salto de linea la primera palabra, vamos progresando, si tengo mas problemas os digo.
« Last Edit: October 14, 2010, 04:26:34 pm by riscking » Logged

Pages: [1]   Go Up
Jump to: