Pokrewne
menu      BIG BIG problema
menu      problem z wyświetlaniem strony, wyświetla się skrypt zamiast strony
menu      Problem z serwerem RPS, serwer nie odpowiada
menu      MS Vista Business: Ubuntu Desktop 8.04 RPS przez NX Client Desktop Edition [Problem]
menu      Problem z instalacją Quick.Cms/Quick.Cart na 60gp
menu      głośniki 7.1 i Vista problem - brak dźwieku w bocznych głośnikach
menu      problem wyboru zasilania dla laptopa DELL (zasilacz samochodowy)
menu      Problem z mysql ERROR 2002 (HY000): Can't connect to local MySQL server through...
menu      Problem z FTP 530 Sorry, the maximum number of allowed clients (16) are already conne
menu      Samsung DVD-VR350 problem z kolorami, wszystko czarno-biale nawet MENU :(
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • maciasek19.opx.pl
  • mspgcc problem z napisem jako parametr funkcji





    Grzegorz Latocha - 16-08-2006 08:45
    mspgcc problem z napisem jako parametr funkcji
      Hej!
    Mam problem z przekazaniem do funkcji parametru w postaci tablicy
    znaków. Mam to zrobione ak niżej.
    Chcę po prostu funkcję, która mi wyrzuci na LCD napis. To poniżej
    kompiluje się z Warningami odnoście typów wskaźników i niby napisy
    wyświetla, ale cały program jakoś głupieje :( Książki mi niewiele
    pomogły, więc mam nadzieję, że grupa podpowie mi jak to zrobić.

    Z góry dziękuję
    pozdrawiam

    const unsigned char LCD_M_1[] = "1. POMIAR 2. USTAW SKALE3. USTAW
    JEDN.";
    ....
    void WYSW_MENU(unsigned int menu,unsigned char *co,unsigned int ile,
    unsigned int linia);
    ....
    WYSW_MENU(menu,LCD_M_1,14,0);
    ....
    void WYSW_MENU(unsigned int menu,unsigned char *co,unsigned int ile,
    unsigned int linia)
    {
    SEND_CMD(0x80+linia*0x40);
    for(i=(menu-1)*ile;i!=menu*ile;i++) //wyswietlenie napisu
    {
    SEND_CHAR(*(co+i));
    }
    }





    Miller Artur - 16-08-2006 08:45

     
    Użytkownik "Grzegorz Latocha" <glatocha@poczta.onet.pl> napisał w wiadomości
    news:ebuefj$mjj$1@news.onet.pl...
    > Hej!
    > Mam problem z przekazaniem do funkcji parametru w postaci tablicy
    > znaków. Mam to zrobione ak niżej.
    > Chcę po prostu funkcję, która mi wyrzuci na LCD napis. To poniżej
    > kompiluje się z Warningami odnoście typów wskaźników i niby napisy
    > wyświetla, ale cały program jakoś głupieje :( Książki mi niewiele
    > pomogły, więc mam nadzieję, że grupa podpowie mi jak to zrobić.
    >
    > Z góry dziękuję
    > pozdrawiam
    >
    > const unsigned char LCD_M_1[] = "1. POMIAR 2. USTAW SKALE3. USTAW
    > JEDN.";
    > ...
    > void WYSW_MENU(unsigned int menu,unsigned char *co,unsigned int ile,
    > unsigned int linia);
    > ...
    > WYSW_MENU(menu,LCD_M_1,14,0);
    > ...
    > void WYSW_MENU(unsigned int menu,unsigned char *co,unsigned int ile,
    > unsigned int linia)
    > {
    > SEND_CMD(0x80+linia*0x40);
    > for(i=(menu-1)*ile;i!=menu*ile;i++) //wyswietlenie napisu
    > {
    > SEND_CHAR(*(co+i));
    > }
    > }

    a zrob tak

    while (*co)
    {
    SEND_CHAR(*co);
    co++;
    }

    SOA#1




    Sirtap - 16-08-2006 09:45

     
    >> Chcę po prostu funkcję, która mi wyrzuci na LCD napis.

    Tu masz moją funkcję. Reaguje poprawnie na znak '\n', czyli przejście do
    drugiej linii w wyświetlaczy 2x16. W kodzie piszesz LCD_Text("napis\ninny
    napis");
    lub LCD_Text(LCD_M_1);

    void LCD_Text(const unsigned char* text)
    {
    int i;
    for(i=0; *text != 0; i++)
    {
    if (*text == '\n')
    {
    LCD_Ln();
    *text++;
    }
    else LCD_Send(data, *text++);
    }
    }

    U mnie działa.




    Sirtap - 16-08-2006 09:45

     

    > void LCD_Text(const unsigned char* text)
    > {
    > int i;
    > for(i=0; *text != 0; i++)
    > {
    > if (*text == '\n')
    > {
    > LCD_Ln();
    > *text++;
    > }
    > else LCD_Send(data, *text++);
    > }
    > }

    Mała poprawka. * przy *text++; jest nie potrzebny. Czyli:

    void LCD_Text(const unsigned char* text)
    {
    int i;
    for(i=0; *text != 0; i++)
    {
    if (*text == '\n')
    {
    LCD_Ln();
    text++;
    }
    else LCD_Send(data, *text++);
    }
    }

    Pozdrawiam





    AK - 16-08-2006 23:45

      Sirtap napisał(a):

    >
    > void LCD_Text(const unsigned char* text)
    > {
    > int i;
    > for(i=0; *text != 0; i++)
    > {
    > if (*text == '\n')
    > {
    > LCD_Ln();
    > text++;
    > }
    > else LCD_Send(data, *text++);
    > }
    > }
    Tu chyba lepiej petla while pasuje:
    void LCD_Text(const unsigned char* text)
    {
    while(*text)
    {
    if (*text == '\n')
    {
    LCD_Ln();
    text++;
    }
    else LCD_Send(data, *text++);
    }
    }

    Pozdr
    AK

    A odnosnie do pytania z pierwszego postu, to warningi sa,
    poniewaz tekst jest definiowany jak 'const' natomiast funcja wymaga
    parametru bez atrybutu 'const', czyli powinno byc tak:

    const unsigned char LCD_M_1[] = "1. POMIAR 2. USTAW SKALE3. USTAW
    JEDN.";
    ....
    void WYSW_MENU(unsigned int menu, const unsigned char *co,unsigned int
    ile, unsigned int linia);
    ....
    WYSW_MENU(menu,LCD_M_1,14,0);
    ....
    void WYSW_MENU(unsigned int menu,const unsigned char *co,unsigned int
    ile, unsigned int linia)
    {
    SEND_CMD(0x80+linia*0x40);
    for(i=(menu-1)*ile;i!=menu*ile;i++) //wyswietlenie napisu
    {
    SEND_CHAR(*(co+i));
    }
    }

    Pozdr
    AK
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • konstruktor.keep.pl
  • Design by flankerds.com