<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="cs">
	<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?action=history&amp;feed=atom&amp;title=FULL-C%3A_udp_functions</id>
	<title>FULL-C: udp functions - Historie editací</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?action=history&amp;feed=atom&amp;title=FULL-C%3A_udp_functions"/>
	<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_udp_functions&amp;action=history"/>
	<updated>2026-06-13T17:59:26Z</updated>
	<subtitle>Historie editací této stránky</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_udp_functions&amp;diff=290&amp;oldid=prev</id>
		<title>Adamn: Založena nová stránka s textem „ Tato stránka popisuje programovací jazyk '''FULL-C''', který je dostupný na vybraných zařízeních SDS.   Některá zařízení používají SDS-C,…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_udp_functions&amp;diff=290&amp;oldid=prev"/>
		<updated>2021-06-27T09:07:41Z</updated>

		<summary type="html">&lt;p&gt;Založena nová stránka s textem „ Tato stránka popisuje programovací jazyk &amp;#039;&amp;#039;&amp;#039;FULL-C&amp;#039;&amp;#039;&amp;#039;, který je dostupný na vybraných zařízeních SDS.   Některá zařízení používají SDS-C,…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt; Tato stránka popisuje programovací jazyk '''FULL-C''', který je dostupný na vybraných zařízeních SDS. &lt;br /&gt;
 Některá zařízení používají SDS-C, pro který máme návody jinde na této WiKi.&lt;br /&gt;
&lt;br /&gt;
== Síťové funkce: odeslání UDP paketu ==&lt;br /&gt;
&lt;br /&gt;
Zařízení SDS umožňuje odeslat UDP paket, vytvořený z parametrů předaných FULL-C programem.&lt;br /&gt;
&lt;br /&gt;
Za tímto účelem jsou k dispozici tyto dvě funkce:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         void udp_send(unsigned int IP0, unsigned int IP1, unsigned int IP2, unsigned int IP3, unsigned int Port, void * PayloadData, unsigned int PayloadLength);&lt;br /&gt;
 unsigned int udp_send_status(void);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Princip ==&lt;br /&gt;
&lt;br /&gt;
SDS po zavolání funkce '''udp_send()''' vytvoří jeden úplný UDP paket, a ten odešla na zadanou IP adresu.&lt;br /&gt;
&lt;br /&gt;
Pro kontrolu průběhu a úspěchu či chyby, je k dispozici funkce '''udp_send_status()'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Příklad ==&lt;br /&gt;
&lt;br /&gt;
V tomto příkladu odesílá SDS jeden UDP paket, na cílový stroj s adresou 192.168.1.110 na UDP port 1234.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 unsigned int status;&lt;br /&gt;
 unsigned int payloadLength;&lt;br /&gt;
 unsigned char * payload;&lt;br /&gt;
&lt;br /&gt;
 printf(&amp;quot;START \n&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 // nejprve si vytvorime obsah paketu&lt;br /&gt;
 // - toto je priklad, vyuzijeme zde kousek heap pameti, lze to i jinak&lt;br /&gt;
&lt;br /&gt;
 // bude to rekneme 64 bajtu&lt;br /&gt;
 payloadLength = 64;&lt;br /&gt;
&lt;br /&gt;
 // ziskame docasnou pamet pro uchovani obsahu&lt;br /&gt;
 payload = (unsigned char *)malloc(payloadLength);&lt;br /&gt;
&lt;br /&gt;
 // a pokud jsme obdrzeli pamet...&lt;br /&gt;
 if (payload != 0)&lt;br /&gt;
 {&lt;br /&gt;
   // nejak vyplnime payload . . .&lt;br /&gt;
   sprintf((char *)payload, &amp;quot;Hello World&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
   // go&lt;br /&gt;
&lt;br /&gt;
   printf(&amp;quot;sending UDP packet...\n&amp;quot;);&lt;br /&gt;
   udp_send(192,168,1,110, 1234, (void *)payload, payloadLength);&lt;br /&gt;
&lt;br /&gt;
   // docasnou pamet uz nepotrebujeme&lt;br /&gt;
   free(payload); payload = 0;&lt;br /&gt;
&lt;br /&gt;
   // pockame na dokonceni odesilani UDP paketu&lt;br /&gt;
   status = udp_send_status();&lt;br /&gt;
   while (status == 1)&lt;br /&gt;
   {&lt;br /&gt;
     status = udp_send_status();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   // zpracujeme vysledek&lt;br /&gt;
   if (status == 2)&lt;br /&gt;
   {&lt;br /&gt;
     // uspech&lt;br /&gt;
     printf(&amp;quot;DONE OK \n&amp;quot;);&lt;br /&gt;
   } else&lt;br /&gt;
   {&lt;br /&gt;
     // UDP paket nebyl odeslan, chyba&lt;br /&gt;
     printf(&amp;quot;ERROR: %u \n&amp;quot;, status);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
 } else&lt;br /&gt;
 {&lt;br /&gt;
   // malloc() se nepovedl...&lt;br /&gt;
   printf(&amp;quot; out of memory \n&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stavové hodnoty ==&lt;br /&gt;
&lt;br /&gt;
Program musí použít volání funkce '''udp_send_status()''' pro zjištění okamžitého stavu.&lt;br /&gt;
&lt;br /&gt;
  udp_send_status()         význam&lt;br /&gt;
 -------------------------+-----------------------------------------------------------------------&lt;br /&gt;
  0                       |  klid, žádná akce nebyla zahájena&lt;br /&gt;
  1                       |  právě probíhá odesílání, čekejte&lt;br /&gt;
  2                       |  úspěch, UDP paket byl odeslán na cílový stroj&lt;br /&gt;
  3                       |  místo UDP paketu byl odeslán ARP paket (protože SDS zatím neví MAC adresu cílového stroje) (zopakujte odesílání UDP později) (UDP paket nebyl teď odeslán)&lt;br /&gt;
  4                       |  nebylo dokončeno předchozí odesílání (nový požadavek přišel dříve, než se dokončil předchozí) (nový požadavek na odeslání UDP není proveden)&lt;br /&gt;
  5                       |  funkce byla zavolána s neplatnými parametry (UDP paket nebyl odeslán)&lt;br /&gt;
  6                       |  není k dispozici dostatek paměti (UDP paket nebyl odeslán)&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
</feed>