logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[AVR][C] Flash, zmiana języka programu.

qw3r 13 Lis 2009 12:34 1890 11
REKLAMA
  • #1 7254439
    qw3r
    Poziom 10  
    mam problem, a mianowicie nie wiem jak usunąć błąd, aby program dobrze działał. Program ma wybierać język w którym będziemy się dalej posługiwać. Dziękuję z góry za pomoc.
    W kodzie ( na samym dole w komentarzach ) jest napisane jaki błąd wyskakuje przy const char *phrase = pgm_read_word(¤t_language[string_id]); .
    
    prog_char NEWLINE[] = {'\n','\r',0}; // tablica zawiarajaca znaki nowejlinii
    char text[] PROGMEM = "Wybierz język programu(choose your language)";
    char jezyki[] PROGMEM = "1. Polish\n2. English\n ";
    //char VERSION[] PROGMEM = __DATE__" "__TIME__; 
    
    const char **current_language = languages[POLISH_ID]; 
    
    void _UART_putstr_P(const char *s)
    {
    register c;
    register u08=c;
    while ((c = pgm_read_byte(s++)))
    {
    UART_putchar(c);
    }
    }
    int main( void ) // program główny
    {
    char res; // deklaracja zmiennej
    UART_init(); // inicjalizacja portu szeregowego
    
    _UART_putstr_P(text); // wyslij tekst zdefiniowanywszczesniej w tablicy text2
    _UART_putstr_P(NEWLINE); // wyslij na port szeregowyznak nowej linii
    _UART_putstr_P(jezyki);
    UART_getchar(); // czekaj na znak z portuszeregowego
    
    
    typedef enum
    {
     HELLO_ID,
     GOODBYE_ID,
    } string_id_t; 
    
    typedef enum
    {
     ENGLISH_ID,
     POLISH_ID,
    } language_id_t; 
    
    char hello_en[] PROGMEM = "Hello";
    char goodbye_en[] PROGMEM = "Bye";
    
    char hello_pl[] PROGMEM = "Czesc";
    char goodbye_pl[] PROGMEM = "Na razie";
    
    
    const char *languages[const char N_LANGUAGES][const char N_WORDS] PROGMEM = {  // BŁĄD ../test.c:54: error: expected expression before 'char'
    
     {
      hello_en,
      goodbye_en,
     },{
      hello_pl,
      goodbye_pl,
     }
    }; 
    
    const char *phrase = pgm_read_word(¤t_language[string_id]);
     // BŁĄD  ../test.c:65: error: 'string_id' undeclared (first use in this function)
    //  ../test.c:65: error: (Each undeclared identifier is reported only once
    //../test.c:65: error: for each function it appears in.)
    
    
    while(1); // petla nieskonczona
    }
    
    
  • REKLAMA
  • #2 7254695
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #4 7255139
    Konto nie istnieje
    Konto nie istnieje  
  • #5 7255265
    qw3r
    Poziom 10  
    jak biore :
    
    _UART_putstr_P(languages[1][2]);
    


    wyskakuje mi "kropka", nie wiem gdzie teraz jest błąd.. z typami? czy z czym? :C sorki ale nie ogarniam troszkę ( :
  • REKLAMA
  • #6 7255390
    MODI
    Poziom 17  
    indeksowanie tabliczy jest od 0 czyli [0,1]
    _UART_putstr_P(languages[0][0]);
    albo
    _UART_putstr_P(languages[1][1]);
    Pozdrawaim
  • REKLAMA
  • Pomocny post
    #7 7255402
    Konto nie istnieje
    Konto nie istnieje  
  • #8 7255409
    qw3r
    Poziom 10  
    dalej nie działa..
  • #9 7255418
    Konto nie istnieje
    Konto nie istnieje  
  • #10 7255477
    qw3r
    Poziom 10  
    tak właśnie to nie działa.. nie wiem dlaczego ..
  • #12 7268431
    Konto nie istnieje
    Konto nie istnieje  
REKLAMA