<?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=4&amp;t=5958&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-02-12T11:15:12+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=5958&amp;mode</id>
<entry>
<author><name><![CDATA[min]]></name></author>
<updated>2014-02-12T11:15:12+01:00</updated>
<published>2014-02-12T11:15:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5958&amp;p=70074#p70074</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5958&amp;p=70074#p70074"/>
<title type="html"><![CDATA[przekazywanie wartości zmiennych do innej zmiennej...]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5958&amp;p=70074#p70074"><![CDATA[
Dzień dobry.<br /><br />Potrzebuję przesłać odebrany kod z pilota na wyświetlacz GLCD, który pracuje na procku będącym Slave I2C. Slave czeka na następujący (przykładowy) ciąg znaków:  &quot;t&quot;, pierwszy znak, drugi znak (ew. trzeci i następne).<br />[syntax=c]switch(Buf&#91;0&#93;)<br />{<br />......<br />                ...... <br />case 't':GLCD_Puts(&amp;Buf&#91;1&#93;); break;<br />.....<br />}[/syntax]<br />Po stronie nadajnika jest Atxmega. Funkcja wysyłająca ciąg znaków po I2C(TWI) wygląda następująco:<br />[syntax=c]bool TWI_MasterWrite(TWI_Master_t *twi,<br />                     uint8_t address,<br />                     uint8_t *writeData,<br />                     uint8_t bytesToWrite)<br />{<br />bool twi_status = TWI_MasterWriteRead(twi, address, writeData, bytesToWrite, 0);<br />return twi_status;<br />}[/syntax]<br /><br />&quot;*writeData&quot; jest wskaźnikiem na ciąg znaków do wysłania. Instrukcja wysyłająca te znaki wygląda u mnie tak:<br />[syntax=c]TWI_MasterWrite(&amp;twiMaster,<br />SLAVE_ADDRESS_GLCD,<br />&amp;tekst,<br />4);  //ilość znaków w tekście plus 1 na &quot;0&quot;<br />while (twiMaster.status != TWIM_STATUS_READY); // wait for transaction to complete[/syntax]<br /><br />Jeśli tworzę zmienną  <em>uint8_t test[] = {'t', 0, 15};</em>, jest dobrze. Teraz zamiast &quot;0&quot; i &quot;15&quot; chcę zamieścić te kody z pilota. Próbowałem tak:<br />[syntax=c]... tutaj jest jakaś funkcja pobierająca kod do zmiennej cmd....         <br /> <br />a następnie:<br /><br />           char bufor&#91;10&#93;;<br />  itoa(cmd,bufor,10);<br /> <br />  uint8_t tekst&#91;&#93; = {'t', bufor&#91;0&#93;, bufor&#91;1&#93;};[/syntax]<br />Wynik był kiepski - wyświetlacz wariował. Poczytałem trochę i dowiedziałem się, że nie można inicjować zmiennej zmiennymi. Zrobiłem tak:<br />[syntax=c]uint8_t tekst&#91;4&#93;;   <br /><br />          tekst&#91;0&#93;= 't';<br />  tekst&#91;1&#93;= buf&#91;0&#93;;<br />  tekst&#91;2&#93;= buf&#91;1&#93;;[/syntax]<br /><br />Teraz działa dobrze, ale nie jestem pewien, czy to jest zgodne z dobrymi praktykami programistycznymi, czy tylko taka proteza... Czy zmienną &quot;tekst&quot; powinienem deklarować jako globalną, czy może to być zmienna lokalna?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1317">min</a> — 12 lut 2014, o 11:15</p><hr />
]]></content>
</entry>
</feed>