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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-03-31T19:36:49+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=20498&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-03-31T19:36:49+01:00</updated>
<published>2018-03-31T19:36:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206358#p206358</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206358#p206358"/>
<title type="html"><![CDATA[Re: Dostęp do pól struktury nieokreślonego typu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206358#p206358"><![CDATA[
<div class="quotetitle">zubik napisał(a):</div><div class="quotecontent"><br />struktura jest ogólnie dostępna, widoczna wszędzie tam gdzie dołącze plik common.h<br /></div><br />jeśli koniecznie potrzebujesz jej jako globalnej dla całego projektu to ok ... ale po co ?<br /><br />można do niej dostęp robić właśnie poprzez wskaźniki w argumentach funkcji. Przynajmniej sprawdź sobie jak to działa - zamiast jak sam mówiłeś unikać wciąż tego sposobu - i zabawy przez cały czas tylko ze zmiennymi globalnymi<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 31 mar 2018, o 19:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-03-31T19:28:11+01:00</updated>
<published>2018-03-31T19:28:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206354#p206354</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206354#p206354"/>
<title type="html"><![CDATA[Re: Dostęp do pól struktury nieokreślonego typu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206354#p206354"><![CDATA[
<div class="quotetitle">zubik napisał(a):</div><div class="quotecontent"><br />tylko jedna zmienna ze struktury będzie mogła być zmieniana przez użytkownika, zaś te z tablicy są tylko do odczytu bo przecież nie możemy zmienić tego co przychodzi z czujników,<br /></div><br />No ale jeśli tablicę masz w strukturze to czemu się upierasz aby nie przesyłać wskaźnika do struktury i wtedy masz PEŁNY DOSTĘP do każdego poka struktury w jednej funkcji ... niezależnie czy masz tam pola tylko do odczytu czy do zapisu i odczytu ?<br /><br />Pomysł na trzymanie danych w strukturze zawsze jest i będzie bardzo dobrym pomysłem ... więc idziesz dobrą drogą .... tylko no właśnie - coś nie do końca potrafisz wyjaśnić co chcesz zrobić ...<br /><br />zamiast więc pisać o słupach wody, procentach i temperaturach które musisz tam przekazywać ... podaj lepiej przykład<br /><br />1. swojego typu struktury <br />2. do jakiej funkcji chcesz ją przekazywać żeby odczytywać z niej niektóre pola a niektóre zapisywać<br /><br />a pomożemy ci w tym jak programowo do tego podejść ... <br /><br />przy czym nie musi to być zaraz jakaś mega wielka konstrukcja ... zobacz jeszcze raz mały przykład<br /><br /><br />jakiś plik *.h<br /><br />[syntax=c]typedef {<br />   uint8_t tablica&#91;10&#93;;<br />   uint16_t temperatura1;<br />   uint16_t temperatura2;<br />   uint8_t sila_wiatru;<br />   uint8_t zawor;<br />} TMOJASTRUKTURA;[/syntax]<br /><br /><br />jakiś plik *.c<br /><br />[syntax=c]TMOJASTRUKTURA * mojastr;<br /><br /><br />void super_funkcja( TMOJASTRUKTURA * tms ) {<br /><br />    // a tu masz dostęp w każdą stronę do KAŻDEGO pola struktury<br />    uint8_t wynik = (tms-&gt;sila_wiatru * 16) / tms-&gt;zawor);<br /><br />    tms-tablica&#91;0&#93; = wynik;<br /><br />}<br /><br /><br />int main( void ) {<br /><br />    super_funkcja(  &amp;mojastr );   // tu przekazujesz ślicznie wskaźnik struktury do funkcji   <br /><br />    while(1) {<br />    }<br /><br /><br />}[/syntax]<br /><br />czy o to tobie mniej więcej chodzi ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br /><div class="quotetitle">zubik napisał(a):</div><div class="quotecontent"><br />Szczerze mówiąc to czasem aż mi głupio że wypytuję o rzeczy które Mirek przedstawił tutaj na forum,<br /></div><br />ale co ty opowiadasz .... głupio to może być jak czegoś nie możesz zaskoczyć i nie skorzystasz z okazji żeby dopytać <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> bo dopiero jak się zaczyna samemu w kodzie stosować pewne techniki - to dopiero wtedy zaczyna porządnie do głowy to wchodzić ... Nie obejrzysz się a za kilka miesięcy przy takim treningu będziesz się uśmiechał patrząc wstecz na swoje zmagania ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 31 mar 2018, o 19:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-03-31T18:40:42+01:00</updated>
<published>2018-03-31T18:40:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206351#p206351</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206351#p206351"/>
<title type="html"><![CDATA[Re: Dostęp do pól struktury nieokreślonego typu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206351#p206351"><![CDATA[
<div class="quotetitle">andrews napisał(a):</div><div class="quotecontent"><br />Moim zdaniem nie potrzebujesz void *, ani żadnego rzutowania i kombinowania,<br /></div><br />Też mi się tak wydaje - bo na początku myślałem że kolega zubik chce przesyłać np do tej samej funkcji różne struktury tzn wskaźniki do nich <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> wtedy typ void by się przydał ... ale jeśli mają to być konkretne wartości czyli pola struktur to po co void ?<br /><br />Jeśli zaś potrzebujesz w jednej funkcji dobierać się do różnych pól struktury to też wystarczy ot jawny wskaźnik na konkretny typ - no ale tu już ładnie przykłady podał kolega andrews wyżej<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 31 mar 2018, o 18:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-03-31T18:05:36+01:00</updated>
<published>2018-03-31T18:05:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206350#p206350</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206350#p206350"/>
<title type="html"><![CDATA[Re: Dostęp do pól struktury nieokreślonego typu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206350#p206350"><![CDATA[
Moim zdaniem nie potrzebujesz <strong><em>void *</em></strong>, ani żadnego rzutowania i kombinowania, tylko musisz sprecyzować co funkcja <strong><em>przelicz()</em></strong> konkretnie ma robić, do jakich danych ma mieć dostęp i jakiego rodzaju dostęp (zapis/odczyt), gdzie i w jaki sposób ma być wywoływana, bo tak to tylko &quot;zgaduj zgadula&quot;...<br /><br />Sądząc po opisie funkcji (&quot;//przelicza wartosci z czujnikow na centymetry lub wartosc zasuwy na procenty&quot;) mam wrażenie, że próbujesz zastosować przeciążanie funkcji, które w języku C jest niedostępne. W C każda funkcja musi mieć inną nazwę, jeśli przyjmuje inne parametry i wykonuje inne zadania. Takie kombinowanie z wykorzystaniem jednej funkcji do wielu zadań nie ma w C większego sensu, bo komplikuje tylko niepotrzebnie zarówno samo wywołanie funkcji, jak i sam kod w ciele funkcji.<br /><br />To co zrobiłeś można zrobić równie dobrze tak:[syntax=c]// wywołanie funkcji<br />przelicz_wynik(&amp;wsk-&gt;filtr&#91;pole_bitowe.licznik&#93;,0);<br /><br />// definicja<br />void przelicz_wynik(int8_t * wsk, uint16_t wspolczynnik){         //przelicza wartosci z czujnikow na centymetry lub wartosc zasuwy na procenty<br />    *wsk=4; // przy założeniu, że tablica filtr jest typu int8_t<br />}[/syntax]<br />lub tak:[syntax=c]// wywołanie funkcji<br />przelicz_wynik(wsk, pole_bitowe.licznik, 0); // gdzie wsk jest wskaźnikiem na strukturę (TADC *)<br />                                             // a pole_bitowe.licznik określa indeks elementu tablicy<br /><br />// definicja<br />// id jest identyfikatorem elementu tablicy filtr&#91;&#93;<br />void przelicz_wynik(TADC * wsk, int8_t id, uint16_t wspolczynnik){         //przelicza wartości z czujników na centymetry lub wartość zasuwy na procenty<br />    wsk-&gt;filtr&#91;id&#93;=4;<br />}[/syntax]<br /><br />Po prostu trzeba wiedzieć dobrze, co się chce osiągnąć. Większość da się osiągnąć (i nawet trzeba, aby zachować kontrolę typów) bez <strong><em>void*</em></strong> i rzutowania.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 31 mar 2018, o 18:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-03-31T17:10:49+01:00</updated>
<published>2018-03-31T17:10:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206346#p206346</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206346#p206346"/>
<title type="html"><![CDATA[Re: Dostęp do pól struktury nieokreślonego typu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206346#p206346"><![CDATA[
No to skoro musisz przekazać wskaźnik na całą strukturę i deklarujesz funkcję:<div class="quotetitle">zubik napisał(a):</div><div class="quotecontent"><br />[syntax=c]void przelicz_wynik(TADC * , uint16_t);[/syntax]<br /></div><br />to później przekaż do niej faktycznie wskaźnik na całą strukturę, a nie na element tablicy:[syntax=c]przelicz_wynik(wsk, ((2.56/256)*10000));[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 31 mar 2018, o 17:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-03-31T16:48:09+01:00</updated>
<published>2018-03-31T16:48:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206342#p206342</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206342#p206342"/>
<title type="html"><![CDATA[Re: Dostęp do pól struktury nieokreślonego typu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206342#p206342"><![CDATA[
Skoro do funkcji chcesz przekazać wskaźnik do jednego z elementów tablicy <strong><em>filtr</em></strong>, która to tablica jest typu <strong><em>int8_t</em></strong>:<div class="quotetitle">zubik napisał(a):</div><div class="quotecontent"><br />[syntax=c]przelicz_wynik(&amp;wsk-&gt;filtr&#91;pole_bitowe.licznik&#93;,((2.56/256)*10000));[/syntax]<br /></div><br />to deklaracja takiej funkcji powinna wyglądać tak:<div class="quotetitle">zubik napisał(a):</div><div class="quotecontent"><br />[syntax=c]void przelicz_wynik(int8_t * , uint16_t);[/syntax]<br /></div><br />a <strong>NIE</strong> tak:<br /><div class="quotetitle">zubik napisał(a):</div><div class="quotecontent"><br />[syntax=c]void przelicz_wynik(TADC * , uint16_t);[/syntax]<br /></div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 31 mar 2018, o 16:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-03-31T15:42:33+01:00</updated>
<published>2018-03-31T15:42:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206336#p206336</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206336#p206336"/>
<title type="html"><![CDATA[Re: Dostęp do pól struktury nieokreślonego typu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206336#p206336"><![CDATA[
można i adres pola w czym problem ? ale to po co ci typ void wskaźnika w argumencie ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 31 mar 2018, o 15:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-03-31T15:14:47+01:00</updated>
<published>2018-03-31T15:14:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206332#p206332</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206332#p206332"/>
<title type="html"><![CDATA[Re: Dostęp do pól struktury nieokreślonego typu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206332#p206332"><![CDATA[
<div class="quotetitle">zubik napisał(a):</div><div class="quotecontent"><br />zależnie od wybranego pola struktury ma albo obliczać stan wody z czujników albo procent otwarcia zasuwy.<br /></div><br />ale nie o to pytam i to jest jakby zupełnie nieistotne z punktu widzenia omawiania problemu programistycznego ...<br /><br />*wsk = 4;<br /><br />podczas gdy *wsk jest typu void czyli nieokreślony - jest czystą abstrakcją<br /><br />dlatego pokazałem ci jak można podejść - wyżej ... czyli przypisujesz wskaźnik typu void do innego wskaźnika, który już posiada typ jakiejś struktury np tej twojej TADC - dzięki czemu już po chwili możesz odwoływać się poprzez przekazany wsk jako argument funkcji ponieważ z void'a zrobiłeś z niego już typ np TADC<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 31 mar 2018, o 15:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-03-31T14:51:24+01:00</updated>
<published>2018-03-31T14:51:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206328#p206328</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206328#p206328"/>
<title type="html"><![CDATA[Re: Dostęp do pól struktury nieokreślonego typu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206328#p206328"><![CDATA[
<div class="quotetitle">zubik napisał(a):</div><div class="quotecontent"><br />void przelicz_wynik(void * wsk, uint16_t wspolczynnik){         //przelicza wartosci z czujnikow na centymetry lub wartosc zasuwy na procenty<br /> <br /> *wsk = 4;<br /></div><br /><br />a co ty tutaj chcesz zrobić ?<br /><br />[syntax=c]TADC * myadc = (TADC*)wsk;[/syntax]<br /><br />i od tej pory masz myadc do którego możesz zapisywać coś ale z użyciem pól struktury<br /><br />[syntax=c]myadc-&gt;jakies_pole = 4;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 31 mar 2018, o 14:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-03-31T14:37:29+01:00</updated>
<published>2018-03-31T14:37:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206325#p206325</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206325#p206325"/>
<title type="html"><![CDATA[Re: Dostęp do pól struktury nieokreślonego typu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206325#p206325"><![CDATA[
jak ja widzę, że ktoś robi TYPEDEF'a nie dość że w pliku *.c a jeszcze do tego wewnątrz ciała jakiejś funkcji to mnie normalnie w kościach aż coś gruchocze a kręgosłup zwija się jak struna ... brrrrr <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />gdzie tu sens? gdzie logika - robić typedefa w funkcji żeby po chwili powoływać zmienną tego typu - zamiast jak już to zdefiniować normalną strukturę ... tyle że wtedy to już w żaden sposób nie uwidocznisz tego typu struktury na zewnątrz funkcji<br /><br />Panie ... panie ... typedef w pliku *.h<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br />albo jeśli nie w *.h to przynajmniej na górze pliku *.c poza ciałami funkcji<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 31 mar 2018, o 14:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-03-26T22:44:52+01:00</updated>
<published>2018-03-26T22:44:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206111#p206111</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206111#p206111"/>
<title type="html"><![CDATA[Re: Dostęp do pól struktury nieokreślonego typu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206111#p206111"><![CDATA[
[syntax=c]#include &quot;../common.h&quot;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 26 mar 2018, o 22:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-03-26T20:28:04+01:00</updated>
<published>2018-03-26T20:28:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206106#p206106</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206106#p206106"/>
<title type="html"><![CDATA[Re: Dostęp do pól struktury nieokreślonego typu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20498&amp;p=206106#p206106"><![CDATA[
<div class="quotetitle">zubik napisał(a):</div><div class="quotecontent"><br />To o co pytam według mnie jest nielogiczne<br /></div><br />a dlaczego niby nielogiczne ?<br /><br /><div class="quotetitle">zubik napisał(a):</div><div class="quotecontent"><br />i nie wykonalne ale<br /></div><br />nie dość, że wykonalne to jeszcze często stosowane w C <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><br />[syntax=c]void odczyt_adc(void*wsk){<br />    TADC * g_odczyty_adc_local = wsk;<br /><br />    g_odczyty_adc_local-&gt;filtr&#91;1&#93; = 2;    // tutaj przykład zapisu do struktury<br />    int a = g_odczyty_adc_local-&gt;naplyw;   // tutaj przykładowy odczyt ze struktury<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 26 mar 2018, o 20:28</p><hr />
]]></content>
</entry>
</feed>