<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=58&amp;t=6756&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-04-15T09:36:09+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=6756&amp;mode</id>
<entry>
<author><name><![CDATA[czarusgg]]></name></author>
<updated>2014-04-15T09:36:09+01:00</updated>
<published>2014-04-15T09:36:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78105#p78105</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78105#p78105"/>
<title type="html"><![CDATA[Re: Nie ma to jak łańcuchy znaków w C :(]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78105#p78105"><![CDATA[
<img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> OK, Wrócę do BB zanim Mirek to zobaczy  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /><br />Jeszcze raz dziękuję wszystkim za odpowiedzi, wskazówki i wyjaśnienia.<br /><br />PS. To jak do ciężkiej anielki działają moje dotychczasowe urządzenia  <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1942">czarusgg</a> — 15 kwi 2014, o 09:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2014-04-15T07:37:15+01:00</updated>
<published>2014-04-15T07:37:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78094#p78094</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78094#p78094"/>
<title type="html"><![CDATA[Re: Nie ma to jak łańcuchy znaków w C :(]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78094#p78094"><![CDATA[
Zasada wskaźników to jest bardzo dobrze wytłumaczona w BB oraz w &quot;Szkoła Programowania C&quot; Praty<p>Statystyki: Napisane przez Gość — 15 kwi 2014, o 07:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[czarusgg]]></name></author>
<updated>2014-04-15T00:00:47+01:00</updated>
<published>2014-04-15T00:00:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78083#p78083</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78083#p78083"/>
<title type="html"><![CDATA[Re: Nie ma to jak łańcuchy znaków w C :(]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78083#p78083"><![CDATA[
Dziękuję, pomogło. Zrozumiałem to w ten sposób...<br /><br />Skoro przekazuję do funkcji wskaźnik <strong>char* B</strong>, To tak naprawdę owszem, przekazuję w tym wskaźniku adres na pamięć z moimi spacjami, ale operacji dokonuję na samym wskaźniku a nie tej pamięci. Stąd, jeśli przypisałem <strong>B = &quot;ZERO&quot;</strong>, to defacto, <strong>'Z'</strong> oraz <strong>'E'</strong> stało się adresem wskazującym na coś tam (<strong>'Z' * 256 + 'E'</strong>), <strong>'R'</strong>, <strong>'0'</strong>, <strong>\0</strong> zaś mazało po pamięci za tym wskaźnikiem niszcząc inne zmienne bądź co bardziej prawdopodobne mazało po stosie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Gdy zacząłem się do tego obszaru odwoływać poprzez wskazanie <strong>*B</strong>, zaczęło działać. No i do funkcji przekazywałem nie sam wskaźnik a faktyczny adres (w nim) moich inicjalizacyjnych spacji poprzez operator pobrania adresu <strong>&amp;</strong>. Czy dobrze to zrozumiałem. Generalnie dziękuję, działa jak trzeba <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1942">czarusgg</a> — 15 kwi 2014, o 00:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[nixie]]></name></author>
<updated>2014-04-14T20:01:08+01:00</updated>
<published>2014-04-14T20:01:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78056#p78056</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78056#p78056"/>
<title type="html"><![CDATA[Re: Nie ma to jak łańcuchy znaków w C :(]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78056#p78056"><![CDATA[
Jak dasz<br /><div class="quotetitle">czarusgg napisał(a):</div><div class="quotecontent"><br />Voltage (&amp;BFR);<br /></div><br /><br />to funkcja Voltage<br /><br />[syntax=c]void Voltage (char** B) {[/syntax]<br /><br />a dalej tak jak xor napisał<br /><br />[syntax=c]*B = &quot;ZERO&quot;;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=358">nixie</a> — 14 kwi 2014, o 20:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kurnachatka]]></name></author>
<updated>2014-04-14T19:41:06+01:00</updated>
<published>2014-04-14T19:41:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78052#p78052</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78052#p78052"/>
<title type="html"><![CDATA[Re: Nie ma to jak łańcuchy znaków w C :(]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78052#p78052"><![CDATA[
A nie powinieneś zainicjować bufor w ten sposób:<br /><br /><br />char BFR[25];<br /><br />Ale mogę się mylić.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=930">kurnachatka</a> — 14 kwi 2014, o 19:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2014-04-14T19:36:35+01:00</updated>
<published>2014-04-14T19:36:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78050#p78050</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78050#p78050"/>
<title type="html"><![CDATA[Re: Nie ma to jak łańcuchy znaków w C :(]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78050#p78050"><![CDATA[
<div class="quotetitle">czarusgg napisał(a):</div><div class="quotecontent"><br />I teraz w takim razie zapytanie, czy char* BFR nie powoduje zadeklarowanie wskaźnika na znak (bajt) identycznego jak wskaźnik na tablicę bajtów? Samo to powoduje, że BFR tak de facto jest wskaźnikiem. Także w tym wypadku do funkcji trafia wskaźnik...<br /></div><br /><br />Owszem, wszystko się zgadza...prawie...do funkcji trafia <span style="text-decoration: underline">kopia </span>wskaźnika. Przy wyjściu z funkcji kopia jest niszczona. Musisz albo przekazać zmienną przez referencję albo przerobić funkcję na zwracającą wartość.<br /><br /><div class="quotetitle">czarusgg napisał(a):</div><div class="quotecontent"><br />Tak też próbowałem...<br /><br />Voltage (&amp;BFR);<br /><br />I też kiszka <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> Poza tym, że wtedy na pierwszym znaku mam śmieci <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div><br />A w funkcji przypisanie wyglądało tak?<br />[syntax=c]*B = &quot;ZERO&quot;;[/syntax]<br /><br />Jest pewien problem w Twoim kodzie, mianowicie jak już uda Ci się przypisać nowy ciąg do zmiennej BFR to tym samym stracisz dostęp do inicjalnego ciągu spacji. Powinieneś mieć jakąś zmienną typu const, która zawsze będzie przechowywać adres ciągu i drugą zmienną, roboczą do której przypisywać można biążący ciąg.<br /><br />A tak w ogóle w mikroklockach stałe ciągi znaków definiuje się w pamięci flash, ale może na razie to zostawmy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 14 kwi 2014, o 19:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[czarusgg]]></name></author>
<updated>2014-04-14T19:03:13+01:00</updated>
<published>2014-04-14T19:03:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78042#p78042</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78042#p78042"/>
<title type="html"><![CDATA[Re: Nie ma to jak łańcuchy znaków w C :(]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78042#p78042"><![CDATA[
Tak też próbowałem...<br /><br />Voltage (&amp;BFR);<br /><br />I też kiszka <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> Poza tym, że wtedy na pierwszym znaku mam śmieci <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />I teraz w takim razie zapytanie, czy char* BFR nie powoduje zadeklarowanie wskaźnika na znak (bajt) identycznego jak wskaźnik na tablicę bajtów? Samo to powoduje, że BFR tak de facto jest wskaźnikiem. Także w tym wypadku do funkcji trafia wskaźnik...<br /><br />Ale pokombinuje w tym kierunku...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1942">czarusgg</a> — 14 kwi 2014, o 19:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2014-04-14T18:10:42+01:00</updated>
<published>2014-04-14T18:10:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78028#p78028</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78028#p78028"/>
<title type="html"><![CDATA[Re: Nie ma to jak łańcuchy znaków w C :(]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78028#p78028"><![CDATA[
<div class="quotetitle">czarusgg napisał(a):</div><div class="quotecontent"><br />Voltage (BFR);<br /></div><br /><br />Zmienna jest przekazywana do funkcji &quot;przez wartość&quot;, nieprawdaż? A więc...pewnie już wiesz co <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 14 kwi 2014, o 18:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[nixie]]></name></author>
<updated>2014-04-14T17:55:28+01:00</updated>
<published>2014-04-14T17:55:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78023#p78023</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78023#p78023"/>
<title type="html"><![CDATA[Re: Nie ma to jak łańcuchy znaków w C :(]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78023#p78023"><![CDATA[
Użyj funkcji strcpy<br /><br />[syntax=c]strcpy(B, &quot;ZERO&quot;);[/syntax]<br /><br />Oczywiście wcześniej<br /><br />[syntax=c]#include &lt;string.h&gt;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=358">nixie</a> — 14 kwi 2014, o 17:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[czarusgg]]></name></author>
<updated>2014-04-14T17:10:10+01:00</updated>
<published>2014-04-14T17:10:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78019#p78019</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78019#p78019"/>
<title type="html"><![CDATA[Nie ma to jak łańcuchy znaków w C :(]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6756&amp;p=78019#p78019"><![CDATA[
Witam wszystkich. Straciłem już wszystkie włosy na głowie i nadal nie mogę dojść do ładu z pewnym &quot;nienormalnym&quot; zachowaniem aplikacji <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />Domyślam się, że problemem jest moja nie wiedza, a nie &quot;głupi&quot; kompilator, czy uC <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Ale do żeczy:<br /><br />Mam kod jak poniżej...<br /><br />[syntax=c]volatile uint8_t ADCValue = 0;<br /><br />void Voltage (char* B) {<br />if (ADCValue == 0) {<br />B = &quot;ZERO&quot;;<br />} else {<br />if (ADCValue == 255) {<br />B = &quot;MAX&quot;;<br />} else {<br />B = &quot;POSR.&quot;;<br />}<br />}<br />}<br /><br />int main () {<br /><br />     char* BFR = &quot;                       &quot;;<br /><br />     while (1) {<br />          ...A...<br />          Voltage (BFR);<br />          ...B...<br />     }<br /><br />}[/syntax]<br /><br />Problemem jest to, że w miejscu programu oznaczonym jako <strong>...A...</strong> pozyskuję wartość do zmiennej <strong>ADCValue</strong>. Wartość ta jest z zakresu 0..255. Następnie spodziewałbym się że po wywołaniu funkcji Voltage, będę miał zapisany w pamięci (wskazywanej przez *BFR) ciąg znaków zgodnie z ciałem funkcji Voltage... To znaczy dla wartości <strong>0</strong> pamięć powinna wyglądać tak: <strong>'Z', 'E', 'R', 'O', \0</strong>, dla wartości 255 tak: <strong>'M', 'A', 'X', \0</strong>, a dla wartości pośrednich tak: <strong>'P', 'O', 'S', 'R', \0</strong><br /><br />W miejscu programu <strong>...B...</strong> &quot;wyświetlam&quot; zawartość pamięci spod adresu wskazywanego przez: <strong>BFR</strong>. I niestety mam cały czas spacje, te z inicjalizacji zmiennej <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />Nie pomaga już nawet na sztywno przypisywanie wartości do zmiennej ADCValue tuż przed wywołaniem Voltage. Ani też nie pomogłą wykomentowanie ciała funkcji Voltage i na sztywno wstawienie kodu:<br /><br />[syntax=c]void Voltage (char* B) {<br />        B = &quot;CO ZA...&quot;;<br />/*if (ADCValue == 0) {<br />B = &quot;ZERO&quot;;<br />} else {<br />if (ADCValue == 255) {<br />B = &quot;MAX&quot;;<br />} else {<br />B = &quot;POSR.&quot;;<br />}<br />} */<br />}[/syntax]<br /><br />Potrafi ktoś to wytłumaczyć i pokazać mi, co jest nie tak?<br /><br />Z góry dziękuję i pozdrawiam...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1942">czarusgg</a> — 14 kwi 2014, o 17:10</p><hr />
]]></content>
</entry>
</feed>