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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2021-05-23T19:29:59+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=23789&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2021-05-23T19:29:59+01:00</updated>
<published>2021-05-23T19:29:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232485#p232485</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232485#p232485"/>
<title type="html"><![CDATA[Re: Przekazanie bufora do funkcji mk_multiuart20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232485#p232485"><![CDATA[
<div class="quotetitle">marker82 napisał(a):</div><div class="quotecontent"><br />A gdybym chciał zapisać ten bufor do jakiejś zmiennej,<br /></div><br />Ale pomyśl sobie sam chwilę, jak można bufor zapisać do zmiennej ? <br /><br />Bufor jakiś ciąg znaków w tym przypadku - tu konkretnie tzw C-String, tablica danych (bajtów) ...<br /><br />więc jak już to kopiujesz zbiór bajtów z jednego miejsca pamięci do innego - rozumiesz ?<br /><br />Masz do tego różne funkcje w C. Począwszy od takich które operują na stringach strcpy() itp aż po takie które kopiują po prostu wybraną ilość bajtów jak chociażby memcpy()<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 23 maja 2021, o 19:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[marker82]]></name></author>
<updated>2021-05-23T19:21:39+01:00</updated>
<published>2021-05-23T19:21:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232484#p232484</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232484#p232484"/>
<title type="html"><![CDATA[Re: Przekazanie bufora do funkcji mk_multiuart20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232484#p232484"><![CDATA[
A gdybym chciał zapisać ten bufor do jakiejś zmiennej, żebym mógł ją użyć potem, jaka to zmienna powinna być?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21369">marker82</a> — 23 maja 2021, o 19:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2021-05-20T19:08:26+01:00</updated>
<published>2021-05-20T19:08:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232455#p232455</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232455#p232455"/>
<title type="html"><![CDATA[Re: Przekazanie bufora do funkcji mk_multiuart20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232455#p232455"><![CDATA[
dokładnie jak pokazał kolega wyżej, nawet nie trzeba nic kopiować, tylko przekazać wskaźnik jako argument do twojej funkcji send()<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 20 maja 2021, o 19:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mario17]]></name></author>
<updated>2021-05-20T18:45:47+01:00</updated>
<published>2021-05-20T18:45:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232454#p232454</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232454#p232454"/>
<title type="html"><![CDATA[Re: Przekazanie bufora do funkcji mk_multiuart20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232454#p232454"><![CDATA[
send<br />[syntax=c]void send(char * buf) { <br />    uart_puts(0,buf);<br />}[/syntax]<br /><br />parsuj_uart<br />[syntax=c]void parsuj_uart( void * buf, uint8_t size ) {<br /><br />    if ( !strcasecmp_P( buf, PSTR( &quot;ala&quot; ) ) ) {<br />            uart_puts_P( 0, PSTR( &quot;* cos MkMultiUART UART0 *\r\n&quot; ) );<br />    }<br /> <br /> <br />    char * wsk = buf;<br />    wsk&#91;size&#93; = 0;<br /><br />    lcd_cls();<br />    lcd_str( &quot;cmd: &quot;);<br />    lcd_str( buf );<br />    <br />    send((char*)buf);  ///tutaj wysyła bufor<br />    <br />    lcd_locate(1,0);<br />    lcd_str( &quot;len: &quot;);<br />    lcd_int(size);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3695">Mario17</a> — 20 maja 2021, o 18:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[marker82]]></name></author>
<updated>2021-05-20T17:05:07+01:00</updated>
<published>2021-05-20T17:05:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232453#p232453</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232453#p232453"/>
<title type="html"><![CDATA[Re: Przekazanie bufora do funkcji mk_multiuart20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232453#p232453"><![CDATA[
na dole kodu<br /><br />[syntax=c]void send() {<br /> <br />        uart_puts(0,buf);<br />}[/syntax]<br /><br />W moim przykładzie chcę pobrać bufor (buf) z funkcji parsuj_uart(), przekazać ją do funkcji send() i wysłać uartem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21369">marker82</a> — 20 maja 2021, o 17:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2021-05-20T16:56:36+01:00</updated>
<published>2021-05-20T16:56:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232452#p232452</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232452#p232452"/>
<title type="html"><![CDATA[Re: Przekazanie bufora do funkcji mk_multiuart20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232452#p232452"><![CDATA[
<div class="quotetitle">marker82 napisał(a):</div><div class="quotecontent"><br />problem powstaję gdy chcę ten bufor wysłać z funkcji send.<br /></div><br />No a gdzie ty masz kod tej funkcji send()? przecież pokazałeś tylko jej nagłówek - więc ciężko się domyśleć co ty chcesz tam w niej zrobić.<br /><br />Postaraj się dobrze opisać problem i skoncentrować tylko na jednym pytaniu zagadnieniu opisując problem, i tylko odnośnie tego problemu pokaż swoje fragmenty kodu - wtedy będzie można tobie łatwo i szybko pomóc ....<br /><br />A kopiowanie buforów można w C robić na milard sposobów, tylko czasem warto wybrać ten najkorzystniejszy do swoich rozwiązań ... więc jak mówię - opisz nieco lepiej problem dobrze ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 20 maja 2021, o 16:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[marker82]]></name></author>
<updated>2021-05-20T16:15:52+01:00</updated>
<published>2021-05-20T16:15:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232451#p232451</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232451#p232451"/>
<title type="html"><![CDATA[Re: Przekazanie bufora do funkcji mk_multiuart20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232451#p232451"><![CDATA[
W funkcji send nie jest zadeklarowana żadna zmienna.<br />Chce użyć zmiennej buf która jest wykorzystana w funkcji parsuj_uart<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21369">marker82</a> — 20 maja 2021, o 16:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mario17]]></name></author>
<updated>2021-05-20T15:38:25+01:00</updated>
<published>2021-05-20T15:38:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232450#p232450</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232450#p232450"/>
<title type="html"><![CDATA[Re: Przekazanie bufora do funkcji mk_multiuart20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232450#p232450"><![CDATA[
W przypadku parsuj_uart buf jest zmienną lokalną (argument funkcji) wskazującą na bufor uart_rxbuf, który zawiera odebrane przez UART dane i uart_puts wysyła je spoworotem na terminal. W przypadku send, buf jest jakąś zmienna globalną, którą ucięło w pokazanym kodzie??? Jeśli jest to char buf[10]; i jest to zmienna globalna to buf będzie zainicjalizowany samymi zerami, przez co uart_puts nic nie wyśle, bo nie ma co wysłać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3695">Mario17</a> — 20 maja 2021, o 15:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[marker82]]></name></author>
<updated>2021-05-20T15:16:51+01:00</updated>
<published>2021-05-20T15:16:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232449#p232449</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232449#p232449"/>
<title type="html"><![CDATA[Przekazanie bufora do funkcji mk_multiuart20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23789&amp;p=232449#p232449"><![CDATA[
Witam Wszystkich.<br /><br />Chciałbym uzyskać pomoc jak rozwiązać mój problem.<br /><br />W trakcie zabawy z biblioteką UART Mirka, natknąłem się na dwa pytania początkującego.<br /><br />1. Jak przekazać bufor do funkcji?<br />2. Jak przepisać bufor do innej zmiennej i ją wyświetlić, wysłać?<br /><br />W programie mam 2 funkcję, parsuj_uart i send, jeśli wysyłam bufor z funkcji parsuj_uart to wszystko działa, problem powstaję gdy chcę ten bufor wysłać z funkcji send.<br /><br />Proszę o pomoc w rozwiązaniu problemu.<br /><br />Poniżej fragment programu<br /><br />[syntax=c]char uart_rxbuf&#91;10&#93;;<br /><br />uint8_t czujniki_cnt;        /* ilość czujników na magistrali */<br />volatile uint8_t s1_flag;    /* flaga tyknięcia timera co 1 sekundę */<br />volatile uint8_t sekundy;    /* licznik sekund 0-59 */<br />volatile uint16_t flag_on;    /* flaga */<br /><br /><br />void send();<br />void parsuj_uart( void * buf, uint8_t size ) {<br /><br /><br />    if ( !strcasecmp_P( buf, PSTR( &quot;ala&quot; ) ) ) {<br />            uart_puts_P( 0, PSTR( &quot;* cos MkMultiUART UART0 *\r\n&quot; ) );<br />        }<br /><br /><br />char * wsk = buf;<br />wsk&#91;size&#93; = 0;<br /><br />lcd_cls();<br />lcd_str( &quot;cmd: &quot;);<br />lcd_str( buf );<br />uart_puts(0,buf);  ///tutaj wysyła bufor<br />lcd_locate(1,0);<br />lcd_str( &quot;len: &quot;);<br />lcd_int(size);<br />}<br />int main( void ) {<br /><br />lcd_init();<br />lcd_LED(1);<br />lcd_str_P( PSTR(&quot;MKMultiUART2.0AT&quot;) );<br />lcd_locate(1,0);<br />lcd_str( &quot;AT CMD Generator&quot;);<br /><br />uart_init();<br />uart_reg_callback( 0, uart_rxbuf, parsuj_uart );<br />uart_echo( 0, 0 );<br />sei();<br /><br />  /* ustawienie TIMER0 dla F_CPU=11,0592MHz */<br />    TCCR0A |= ( 1 &lt;&lt; WGM01 );            /* tryb CTC */<br />    TCCR0B |= ( 1 &lt;&lt; CS02 ) | ( 1 &lt;&lt; CS00 );        /* preskaler = 1024 */<br />    OCR0A = 249;                            /* dodatkowy podział przez 108 (rej. przepełnienia) */<br />    TIMSK0 |= ( 1 &lt;&lt; OCIE0A );            /* zezwolenie na przerwanie CompareMatch */<br />    /* przerwanie wykonywane z częstotliwością ok 10ms (100 razy na sekundę) */<br />    /* do naszych celów nie musi być to bardzo dokładne 10ms */<br /><br /><br />uart_puts( 0, &quot;\r\nStart...\r\n&quot; );<br /><br />   <br />while(1) {<br />UART_RX_EVENT();<br /><br /> if ( flag_on == 60 ) {  /* sprawdzanie flagi tyknięć timera programowego co 1 sekundę */<br /><br />// uart_puts_P( 0, PSTR( &quot;AT\r\n&quot; ) );<br /><br />      send();<br />            flag_on= 0;  /* zerujemy flagę aby tylko jeden raz w ciągu sekundy wykonać operacje */<br />        } /* koniec sprawdzania flagi */<br />}<br /><br />}<br /><br /><br />ISR( TIMER0_COMPA_vect ) {<br />    static uint8_t cnt = 0;<br /><br />    if ( ++cnt &gt; 60 ) {<br />        s1_flag = 1;<br />        sekundy++; <br />        flag_on++;<br />        if ( sekundy &gt; 59 ) sekundy = 0; <br />        cnt = 0; <br />    }<br />}<br />void send() {<br /><br />uart_puts(0,buf);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21369">marker82</a> — 20 maja 2021, o 15:16</p><hr />
]]></content>
</entry>
</feed>