Re: Mikro C PIC - string - problém

Martin Persich persich na transcon.cz
Úterý Leden 14 11:49:08 CET 2014


Přiznávám, možnosti knihoven v Mikro C vůbec neznám, PIC neprogramuji. Délka bufferu lze sice zjistit pomocí "sizeof()", ale to si musíte "ručně" pohlídat, tj. nejdříve zjistit velikost a pak případně provést další akci. Nic automatizovaného a navíc obvykle je velikost bufefru v těchto případech konstantní a postrádá to smysl.
Ale měl jsem na mysli vytvoření svých speciálních funkcí, které toto budou zohledňovat a např. pro obsluhu LCD displeje známé velikosti vystačí pouze s bufferem o délce tohoto displeje. Jinak standardně toto řeší objekty CString (nebo tak nějak v "C++"), ale to je jiná kategorie a asi se to nedá rozumně použít na malé MCU, osobně také zůstávám pouze u "C".
Martin. persich na transcon.cz
  ----- Original Message ----- 
  From: Jan Půhoný 
  To: HW-news 
  Sent: Tuesday, January 14, 2014 10:48 AM
  Subject: Re: Mikro C PIC - string - problém


  A těmi nestandardními funkcemi, máte na mysli co? Je něco takového v Mikro C PIC možné využít?


  H.


  Dne 14. ledna 2014 10:35 Martin Persich <persich na transcon.cz> napsal(a):

    Pokud používáte standardní funkce "str...()", tak si bohužel délku bufferů musíte v programu hlídat sám. A hodně důsledně! Stačí chvilka nepozornosti a i po několika letech se objevují v programu chyby... To je bohužel jeden z velkých nedostatků (a zárověň výhod .-) ) jazykä "C".
    Martin

      ----- Original Message ----- 
      From: Jan Půhoný 
      To: HW-news 
      Sent: Tuesday, January 14, 2014 10:25 AM
      Subject: Re: Mikro C PIC - string - problém


      Díky moc - bylo to tou špatnou deklarací v druhém souboru, proto mi to rozhazovalo displej a občas se to i kouslo. 


      Teď se to chová korektně.


      Je tedy potřeba hlídat, aby délka toho bufferu byla vždy 16+1 znaků? Není na to nějaká funkce která by to zajistila?


      Ještě jednou díky všem, nemohl jsem na to dlouho přijít.



      Honza Půhoný




      S pozdravem Ing. Jan Půhoný

      www.puhy.cz
      puhy na puhy.cz

      Navštivte nás na Facebooku:
      http://www.facebook.com/puhy.cz 


      Následujte nás na Twitteru:
      https://twitter.com/puhycz

      Náš kanál na YouTube:
      http://www.youtube.com/user/puhyeu


      Připojení k internetu a VoIP telefonování
      http://www.puhy.net



      Dne 14. ledna 2014 10:01 Martin Persich <persich na transcon.cz> napsal(a):

        V druhém souboru by měla být jen deklarace:
        extern unsigned char prvni_r[];
        extern unsigned char druhy_r[];

        Počet prvků (délku bufferu) si musí program v "C" bohužel hlídat sám, není problém téměř cokoliv, kdekoliv přepsat mimo tento buffer ... :-( 
        Jinak ten uvedený zápis jednotlivých prvků do bufferu v druhém souboru je dle mého v pořádku a v rámci možností (tj. jazyka "C") korektní.

        Martin. persich na transcon.cz

          ----- Original Message ----- 
          From: Jan Půhoný 
          To: HW-news 
          Sent: Tuesday, January 14, 2014 9:37 AM
          Subject: Re: Mikro C PIC - string - problém


          Díky všem za odpovědi. 


          Zdá se, te strcpy funguje stejně jak s & tak bez &. Ještě to ale trochu zlobí, když do prvni_r a druhy_r šahám přes takovýto zápis


          extern unsigned char prvni_r[17]="                ";
          extern unsigned char druhy_r[17]="                ";


          prvni_r[8]=jednotky;
          prvni_r[9]=desitky;
          prvni_r[10]=':';


          z jiného c souboru stejného projektu.


          V hlavním c souboru s main void mám definici takto:


          unsigned char prvni_r[17]="                ";
          unsigned char druhy_r[17]="                ";


          Jak korektně přistupovat ke stejným proměnným z různých c souborů projektu?


          Díky.


          Honza Půhoný





          Dne 13. ledna 2014 22:13 Martin Persich <persich na transcon.cz> napsal(a):

            A ještě jeden postřeh. Pokud se jedná o buffer pro 16-ti znakový LCD displej, tak pro použití funkce "strcpy()" je nezbytné, aby tento buffer měl délku 17 znaků (pro uložení ukončující "nuly" - '\0' ). Jinak dojde k nedefinovanému přepsání "následující" proměnné.
            Martin. persich na transcon.cz

              ----- Original Message ----- 
              From: Aleš Novák 
              To: HW-news 
              Sent: Monday, January 13, 2014 9:32 PM
              Subject: Re: Mikro C PIC - string - problém


              Nemelo by to byt spise takhle:
              stcrpy(prvni_r,"testovaci napis");

              Jmeno pole je samo o sobe pointer na jeho prvni polozku.

              Ales


              13. ledna 2014, 20:31:59, napsal jste:


                   Zkuste stcrpy(&prvni_r,"testovaci napis");



                    LK


                    Dne 13.1.2014 19:53, Jan Půhoný napsal(a):
                    Zdravím konferenci,

                    mám tady takový lama problém v C (Mikro C pro PIC řady 16).

                    V proměnné prvni_r mám znaky pro první řádek LCD displeje (pak to vypisuji přes Lcd_Out(1,1prvni_r); - to funguje.

                    //definice

                    unsigned char prvni_r[16];

                    //editace znaků

                    prvni_r[5] = 223;
                    prvni_r[6] = 'C';
                    prvni_r[7] ='  ';

                    Lcd_Out(1,1prvni_r); //na pozici 5,6,7 mi to vypíše °C
                    to funguje ok

                    Proč ale nefunguje toto:

                    prvni_r="testovaci napis"; 

                    na tomto řádku to hází error: Assigning to non-lvalue

                    Co s tím, abych tam mohl dávat jak celé řetězce a zároveň editovat jednotlivé znaky?

                    Díky,

                    Honza Půhoný


                    _______________________________________________
                    HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz http://list.hw.cz/mailman/listinfo/hw-list  





              -- 
              S pozdravem,
               Aleš
               alesh.novak na email.cz 


------------------------------------------------------------------








------------------------------------------------------------------------------


  _______________________________________________
  HW-list mailing list  -  sponsored by www.HW.cz
  Hw-list na list.hw.cz
  http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20140114/da9bae7b/attachment-0001.html>


Další informace o konferenci Hw-list