home *** CD-ROM | disk | FTP | other *** search
/ PC World 2004 April / PCWorld_2004-04_cd.bin / Novinky / Interval / clanek04.htm < prev    next >
Encoding:
Extensible Markup Language  |  2004-03-16  |  19.6 KB  |  219 lines

  1. <?xml version='1.0' encoding='windows-1250'?>
  2. <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
  3. <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='cs' lang='cs'>
  4. <head>
  5. <meta http-equiv='Content-Type' content='text/html; charset=windows-1250' />
  6. <meta http-equiv='Content-language' content='cs' />
  7. <meta http-equiv='Cache-control' content='no-cache' />
  8. <meta http-equiv='Pragma' content='no-cache' />
  9. <meta http-equiv='Expires' content='0' />
  10. <meta name='robots' content='index, follow' />
  11. <meta name='googlebot' content='index, follow, noarchive' />
  12. <meta name='description' content='Interval.cz - Internetov² magazφn o webdesignu, v²voji webov²ch aplikacφ a e-komerci. VÜe podstatnΘ o technologiφch XHTML, HTML, CSS, DHTML, JavaScript, XML, .NET, ASP, PHP, Java, J2ME, SQL, WAP...' />
  13. <meta name='keywords' content='Interval' />
  14. <meta http-equiv='imagetoolbar' content='no' />
  15. <meta http-equiv='MSThemeCompatible' content='no' />
  16. <meta name='MSSmartTagsPreventParsing' content='true' />
  17. <meta name='ICBM' content='49.1915, 16.626' />
  18. <meta name='DC.Title' content='Interval.cz' />
  19. <meta name='DC.Identifier' content='http://interval.cz' />
  20. <meta name='DC.Language' content='cs' />
  21. <link rel='alternate' type='text/xml' title='RSS' href='http://interval.cz/__rss/rss.asp' />
  22. <link rel='shortcut icon' href='favicon.ico' />
  23. <link rel='first' href='http://interval.cz/clanek.asp?article=2561' />
  24. <link rel='prev' href='http://interval.cz/clanek.asp?article=2848' />
  25. <link rel='up' href='http://interval.cz/serial.asp?serial=27' />
  26. <link rel='home' href='http://interval.cz' />
  27. <link rel='search' href='http://interval.cz/search_ex.asp' />
  28. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/html4.css' />
  29. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/basic_all.css' />
  30. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/homepage_all.css' />
  31. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/articles_all.css' />
  32. <link rel='stylesheet' type='text/css' media='print' href='__services/styles/articles_print.css' />
  33. <title>Interval.cz - denn∞ o tvorb∞ webu a e-komerci</title>
  34. </head>
  35. <body class='interval interval-articles'>
  36. <div id='page-header'><div id='interval-logo'><h1 title='Interval.cz - denn∞ o tvorb∞ webu a e-komerci (logo & index link)'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Interval.cz<span></span></a></h1></div><div id='advertising-page-header'></div><div class='page-maker'> </div></div>
  37. <div id='page-topmenu'><h2 class='textversion'>Navigace</h2><div id='page-mainmenu'><h3 class='textversion'>Hlavnφ menu</h3><ul><li class='first selected'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Titulnφ strana</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=14'>Webdesign</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=15'>V²voj aplikacφ</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=18'>E-komerce</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=17'>Nßstroje</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=16'>Magazφn</a></li><li class='right selected'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.inshop.cz'>Knihkupectvφ</a></li><li class='right'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interforum.interval.cz'>Interforum</a></li></ul></div><div id='page-mainmenu-maker'> </div></div>
  38. <div id='page-body'><div id='page-left'><div id='article'>
  39.  
  40.  
  41.  
  42. <h2>Komunikujeme p°es sΘriovΘ rozhranφ v ASP.NET</h2>
  43. <p id='prepend'>Pomocφ .NET m∙₧eme snadno vytvo°it °adu zajφmav²ch aplikacφ, komunikujφcφch p°es rozhranφ systΘmu. V tomto Φlßnku si ukß₧eme, jak pracovat se sΘriov²m portem serveru i prost°ednictvφ ASP.NET strßnky - jednoduchß aplikace tak m∙₧e p°es internet ukßzat, zda jsme nap°φklad nezapomn∞li zapnut² spot°ebiΦ.</p>
  44.  
  45.  
  46. <h3>Zapojenφ konektoru rozhranφ RS2323</h3>
  47. <p>Rozhranφ RS232 je v poΦφtaΦφch typu PC realizovßno jako takzvan² sΘriov² port. Setkßvßme se nejΦast∞ji se dv∞ma variantami konektor∙, 9-ti pinov² (mal²) a 25-ti pinov² (velk²). Vyjdeme z tabulky zapojenφ devφtipinovΘho konektoru, kterΘ nßm zßrove≥ poskytne obrßzek o signßlech, se kter²mi budeme mφt dßle co do Φin∞nφ:</p>
  48.  
  49. <div class='table'>
  50. <table cellspacing='0'>
  51. <tr><th>Pin</th><th>Signßl</th><th>Popis</th><th>Sm∞r</th></tr>
  52. <tr><td>1</td><td>DCD</td><td>Data Carrier Detect</td><td>vstup</td></tr>
  53. <tr><td>2</td><td>RxD</td><td>Receive Data</td><td>vstup</td></tr>
  54. <tr><td>3</td><td>TxD</td><td>Transmit Data</td><td>v²stup</td></tr>
  55. <tr><td>4</td><td>DTR</td><td>Data Terminal Ready</td><td>v²stup</td></tr>
  56. <tr><td>5</td><td>GND</td><td>Ground</td><td> </td></tr>
  57. <tr><td>6</td><td>DSR</td><td>Data Set Ready</td><td>vstup</td></tr>
  58. <tr><td>7</td><td>RTS</td><td>Request To Send</td><td>v²stup</td></tr>
  59. <tr><td>8</td><td>CTS</td><td>Clear To Send</td><td>vstup</td></tr>
  60. <tr><td>9</td><td>RI</td><td>Ring Indicator</td><td>vstup</td></tr>
  61. </table>
  62. </div>
  63.  
  64. <p>Takzvan² velk² 25-ti pinov² konektor ukazuje obrßzek:</p>
  65.  
  66. <div class='image'><img src='podklady/ruzicka/742/rs232.png' alt='Zapojenφ konektoru RS 232' title='Zapojenφ konektoru RS 232' /></div>
  67.  
  68. <p>Jak vidφme, pro jednoduchΘ Φtenφ stavu (vypnuto/zapnuto) m∙₧eme pou₧φt celkem 4 linky (CTS, DSR, DCD, RI) a pro zßpis (nastavenφ) dva v²stupy (DTR, RTS), p°φpadn∞ jeÜt∞ v²stup TxD p°i nastavenφ stavu Break (popφÜeme si pozd∞ji).</p>
  69. <p>Pro <a href='http://www.hw.cz/projects/rs232/'>kompletnφ popis a zapojenφ konektor∙ rozhranφ RS 232</a> a ukßzky pou₧iteln²ch zapojenφ (nap°φklad <a href='http://www.hw.cz/constrc/teplomer_rs232c/teplomer_rs232c.html#4'>teplom∞r</a>) vßs odkazuji na server <a href='http://hw.cz'>hw.cz</a>, spoustu dalÜφch aplikacφ lze nalΘzt i t°eba pomocφ vyhledßvaΦ∙ a klφΦov²ch slov <em>rs232</em> a <em>serial port</em>. My si v ukßzce k tomuto Φlßnku vytvo°φme aplikaci, kterß p°eΦte a zobrazφ stav linky CTS.</p>
  70. <p>P°φstup k sΘriovΘmu rozhranφ je ve Windows standardizovßn pomocφ <a href='http://msdn.microsoft.com/library/default.asp?url=/library/en-us/devio/base/communications_functions.asp'>komunikaΦnφch funkcφ</a>, implementovan²ch jako API v knihovn∞ Kernel32.dll. V naÜφ aplikaci si <a href='http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/html/csharp09192002.asp'>funkce Kernel32.dll jednoduÜe zp°φstupnφme</a> s vyu₧itφm prostoru nßzv∙ <a href='http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemruntimeinteropservices.asp'>System.Runtime.InteropServices</a>, kter² nabφzφ podporu pro prßci s takzvan²m unmanaged code, jak jsme ji₧ popsali v Φlßnku o vyu₧itφ funkcφ <a href='http://interval.cz/clanek.asp?article=2349' title='R∙₧iΦka, Pavel: Zprßvy v intranetu pomocφ NetApi32.dll v ASP.NET'>NetApi32.dll</a>.</p>
  71.  
  72. <h3>Knihovna pro prßci s rozhranφm RS232</h3>
  73. <p>Prßce se sΘriov²m rozhranφm nenφ ·pln∞ trivißlnφ, ovÜem na strßnkßch MSDN lze nalΘzt nejen dostatek materißl∙ popisujφcφch principy komunikace, ale najdeme tam takΘ robustnφ a celkem komplexnφ <a href='http://msdn.microsoft.com/msdnmag/issues/02/10/NETSerialComm/default.aspx'>Base Class Library</a> - v tΘ nalezneme prakticky vÜechny pot°ebnΘ funkce a vlastnosti pro pou₧itφ v .NET aplikaci. Jeliko₧ se mi ale pro zaΦßtek, kdy chceme opravdu jen naΦφst stav jednΘ linky, zdßla tato knihovna p°φliÜ nabub°elß, zkusil jsem hledat dßl a nakonec jsem naÜel inspiraci na strßnce Corrada Cavalliho <a href='http://www.codeworks.it/net/VBNetRs232.htm'>o komunikaci p°es RS232 ve VB.NET</a>, jφm vytvo°enß knihovna je o poznßnφ kratÜφ, nepodporuje vÜechny mo₧nosti jako knihovna ze strßnek MSDN, nicmΘn∞ pro naÜi aplikaci pln∞ postaΦφ a hlavn∞ je dφky jednoduchosti snadno pochopitelnΘ, jak to vlastn∞ funguje. JedinΘ, co je pot°eba do tΘto knihovny dopsat, jsou vlastnosti, kterΘ zp°φstupnφ vstupnφ linky portu, v²stupnφ linky v knihovn∞ ji₧ napsßny jsou.</p>
  74. <p>Ukßzka dopsanΘ vlastnosti pro Φtenφ linky CTS (knihovna je psßna v jazyce VB.NET):</p>
  75.  
  76. <div class='sample'>
  77. Const MS_CTS_ON As Int32 = &H10
  78. <br />
  79. <br />Public ReadOnly Property Cts() As Boolean
  80. <br />  Get
  81. <br />    If Not mhRS = -1 Then
  82. <br />      Dim inputLine As Int32
  83. <br />      If GetCommModemStatus (mhRS, inputLine) Then
  84. <br />        Return inputLine And MS_CTS_ON
  85. <br />      Else
  86. <br />        Return False
  87. <br />      End If
  88. <br />    Else
  89. <br />      Return False
  90. <br />    End If
  91. <br />  End Get
  92. <br />End Property
  93. </div>
  94.  
  95. <p>Knihovnu prost∞ zkompilujeme a ulo₧φme do slo₧ky <em>Bin</em> v ko°eni virtußlnφ aplikace na serveru. Kompilaci m∙₧eme provΘst i z p°φkazovΘho °ßdku zadßnφm jednoduchΘho povelu:</p>
  96.  
  97. <div class='sample'>
  98. vbc.exe /t:library RS232.vb
  99. </div>
  100.  
  101. <p>P°ed popisem aplikace si vysv∞tlφme princip prßce se sΘriov²m rozhranφm. Knihovna RS232.dll nabφzφ pro prßci s rozhranφm t°φdu CMediaRs232 (nenφ mi jasnΘ, proΦ Corrado Cavalli volil tento nßzev, ale budi₧). V aplikaci si tedy vytvo°φme jejφ instanci, dßle nastavφme pot°ebnΘ vlastnosti (zejmΘna Φφslo portu) i komunikaΦnφ vlastnosti, jako nap°φklad rychlost. Nßsledn∞ metodou <em>Open()</em> otev°eme port rozhranφ. Pokud nedojde k chyb∞, mßme vyhrßno, za°φzenφ je nynφ jen naÜe a m∙₧eme s nφm komunikovat jak je libo. Pokud dojde k chyb∞, port je obsazen jin²m za°φzenφm nebo v systΘmu v∙bec nenφ.</p>
  102. <p>P°i ukonΦenφ aplikace je naprosto nezbytnΘ provedenφm metody <em>Close()</em> uvolnit rozhranφ, jinak z∙stane otev°en² port "viset" p°id∞len² ke zprost°edkovßvajφcφmu IIS a nic s nφm ji₧ nebude mo₧nΘ d∞lat. Stejn∞ tak se m∙₧e stßt, ₧e dojde k chyb∞ v naÜφ aplikaci, port pak bude nadßle v "zajetφ" procesu, kter² zpracovßvß naÜi webovou aplikaci. V²chodiskem z tΘto situace je pouze restart IIS, aby se proces <em>aspnet_wp.exe</em> portu "pustil", co₧ nenφ zrovna moc koÜer (jak to obejφt si ukß₧eme dßle).</p>
  103.  
  104. <h3>Ukßzkovß aplikace</h3>
  105. <p>Ukßzkov² formulß° se zatrhßvacφm polφΦkem, kterΘ vyu₧ijeme pro zobrazenφ stavu linky CTS:</p>
  106.  
  107. <div class='sample'>
  108.  <body>
  109. <br />  <form runat="server">
  110. <br />    <asp:CheckBox id="chkCts" Enabled="False" runat="server" Text="CTS" />
  111. <br />    <br /><br />
  112. <br />    <asp:Label Id="lblError" RunAt="server" />
  113. <br />  </form>
  114. <br /></body>
  115. </div>
  116.  
  117. <p>A obslu₧n² skript:</p>
  118.  
  119. <div class='sample'>
  120. <%@ Page Language="C#" Trace="False" Debug="False" %>
  121. <br /><%@ Assembly Name="RS232" %>
  122. <br /><script language="C#" runat="server">
  123. <br />void Page_Load(object sender, System.EventArgs e)
  124. <br />{
  125. <br />  CMediaRs232 moRS232 = new CMediaRs232();
  126. <br />  moRS232.Port = 2; // COM2
  127. <br />  try
  128. <br />  {
  129. <br />    moRS232.Open();
  130. <br />    chkCts.Checked = moRS232.Cts;
  131. <br />    moRS232.Close();
  132. <br />    chkCts.Visible = true;
  133. <br />    lblError.Visible = false;
  134. <br />  }
  135. <br />  catch (Exception eX)
  136. <br />  {
  137. <br />    chkCts.Visible = false;
  138. <br />    lblError.Text = "Chyba p°i prßci se sΘriov²m portem..." + eX.ToString();
  139. <br />    lblError.Visible = true;
  140. <br />  }
  141. <br />}
  142. <br /></script>
  143. </div>
  144.  
  145. <p>V direktiv∞ vidφme zavedenou knihovnu RS232. V obsluze udßlosti naΦtenφ strßnky pak jednoduÜe vytvo°φme instanci zmφn∞nΘ CMediaRs232. Proto₧e portem de facto nebudeme ₧ßdnß sΘriovß data p°enßÜet, krom Φφsla portu (v naÜφ ukßzce COM2) nenφ t°eba ₧ßdnΘ dalÜφ vlastnosti nastavovat. V sekci <em>try-catch</em> se potom pokouÜφme otev°φt port a stav zatrhßvacφho polφΦka ve formulß°i nastavit na stav signßlovΘ linky CTS. Nßsleduje zav°enφ portu, nastavenφ viditelnosti zatrhßvacφho polφΦka a skrytφ labelu chybovΘho hlßÜenφ. Pokud dojde k chyb∞, zatrhßvacφ polφΦko skryjeme, nastavφme text chybovΘho hlßÜenφ (p°idßvßme zde i text zachycenΘ v²jimky) a hlßÜenφ zviditelnφme.</p>
  146. <p>NaΦφst stav portu a tedy i naÜeho za°φzenφ je mo₧nΘ kdykoli - otev°eme port, p°eΦteme hodnotu a port m∙₧eme op∞t zav°φt. Pokud bychom cht∞li k ovlßdßnφ vyu₧φt v²stupnφ linky (DTR, RTS, TxD), je t°eba si uv∞domit, ₧e uzav°enφm portu (uvoln∞nφm obsazen²ch prost°edk∙) se ztratφ i ·daje zapsanΘ do rozhranφ - znamenß to, ₧e nenφ mo₧nΘ jednoduÜe nap°φklad v ASP.NET strßnce zatrhnout polφΦko formulß°e a nßsledn∞ otev°φt port, zapsat stav a port zav°φt, zapsanΘ hodnoty se zav°enφm vyresetujφ. Nenφ mo₧nΘ ani nechat port neuzav°en² a ukonΦit zpracovßnφ ASP.NET aplikace - ·daje sice na v²stupnφm za°φzenφ setrvajφ, nicmΘn∞ za°φzenφ sΘriov² port v tomto stavu mß "p°i°knut" proces zpracovßvajφcφ ASP.NET strßnky a tak z∙stane sΘriov² port ji₧ trvale obsazen a do restartu slu₧eb IIS s nφm nebude mo₧no pracovat.</p>
  147.  
  148. <h3>Jak ov∞°it funkci prakticky</h3>
  149. <p>P°ed zapoΦetφm pokus∙ s porty PC chci jen zd∙raznit, ₧e prßce s HW poΦφtaΦe vy₧aduje alespo≥ zßkladnφ znalost elektrotechniky a pßjenφ, pokud tomu nerozumφte, neÜ¥ourejte se v tom, nevhodn² zßsah m∙₧e skonΦit nejen poÜkozenφm port∙ PC, ale i t°eba zßkladnφ desky a zdroje!</p>
  150. <p>Pro reßlnΘ testovßnφ je dobrΘ zakoupit si v <a href='http://adresar.hw.cz/hw/directory/branch.html?branchid=300001'>prodejnßch s radiosouΦßstkami</a> konektor CANON s krytem (samec, 25 nebo 9 pin, podle toho, jak² konektor mß sΘriov² port vaÜeho PC), p°φpadn∞ redukci "velkΘho na mal²" nebo obrßcen∞.</p>
  151. <p>Pokud tedy na lince CTS bude oproti GND signßl logickΘ nuly (co₧ je pro <a href='http://www.hw.cz/projects/rs232/'>rozranφ RS232</a> nap∞tφ v rozmezφ +3 V a₧ +25 V), checkbox z∙stane nezatr₧en². Takto bude vyhodnocen i stav linky, ke kterΘ nenφ p°ipojeno ₧ßdnΘ za°φzenφ (jde o klidov² stav, tzv. marking state). Logickß jedniΦka je tedy indikovßna zßpornou ·rovnφ (tzv. space state), pokud bychom cht∞li v naÜφ aplikaci docφlit zatr₧enφ checkboxu, bylo by pot°eba linku CTS p°ivΘst nap∞tφ v rozmezφ -3 V a₧ -25 V. Dalo by se vzφt z n∞jakΘ v²stupnφ linky - kdo chce experimentovat, m∙₧e vodiΦem p°φmo propojit linky CTS a t°eba DTR - t∞sn∞ p°ed Φtenφm stavu linky CTS je v aplikaci pot°eba nastavit linku DTR pomocφ <samp>moRS232.Dtr = true;</samp>. DalÜφm °eÜenφm m∙₧e b²t zapojenφ baterie o pat°iΦnΘm nap∞tφ mezi GND a CTS.</p>
  152. <p>Ukßzkovou aplikaci vΦetn∞ zdroje knihovny RS232.dll si m∙₧ete stßhnout (<a href='podklady/ruzicka/742/readserial.zip'>zdrojov² k≤d</a>).</p>
  153.  
  154.  
  155.  
  156. <div id='article-author'>
  157. <a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/autor.asp?author=72'>R∙₧iΦka, Pavel</a> (5. 2. 2004)
  158. <div id='article-about-author'>odborn² redaktor Interval.cz</div>
  159. </div>
  160.  
  161.  
  162.  
  163. </div></div>
  164. <div id='page-right'><h2 class='textversion'>Prav² sloupek</h2>
  165. <div id='search'><h3 class='textversion'>Vyhledßvßnφ</h3><form method='get' action='http://interval.cz/search.asp'><div><input type='text' name='hledej' class='text' /><input type='submit' class='submit' value='Najdi!' /></div></form><div><a href='http://interval.cz/search_ex.asp'>RozÜφ°enΘ vyhledßvßnφ</a></div></div>
  166.  
  167.  
  168.  
  169. <div class='page-right-box book'>
  170.     <h3>Kni₧nφ novinka</h3>
  171.     <div class='page-right-box-in'>
  172.         <div class='book-top'>
  173.             <h4><a href='http://interval.cz/__redirect/redirect.asp?what=interval_booknews&url=http://interval.inshop.cz/inshop/scripts/detail.asp?ItemID=240'>Praktick² JavaScript</a></h4>
  174.         </div>
  175.     </div>
  176.     <div class='image'>
  177.         <a href='http://interval.cz/__redirect/redirect.asp?what=interval_booknews&url=http://interval.inshop.cz/inshop/scripts/detail.asp?ItemID=240'><img src='podklady/knihy/image.jpg' alt='obßlka' title='obßlka' /></a>
  178.     </div>
  179.     <div class='book-bottom'>Cena: <span class='book-price-old'>200,00 KΦ</span> <span class='book-price-new'>180,00 KΦ</span></div>
  180. </div>
  181.  
  182.  
  183.  
  184. <div class='page-right-box reading'>
  185.     <h3>NejΦten∞jÜφ</h3>
  186.     <div class='page-right-box-in'>
  187.         <ul>
  188. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3176'>E-mailov² klient pre webmail v PHP - odosielanie, Φφtanie a s¥ahovanie</a></li>
  189. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3174'>Strßnkovßnφ v ovlßdacφm prvku DataGrid</a></li>
  190. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=1312'>Statistika p°φstup∙ v PHP - vyhledßvacφ frßze</a></li>
  191. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3178'>Praktick² Javascript</a></li>
  192. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3175'>Java Servlets - generovanie grafiky</a></li>
  193.         </ul>
  194.     </div>
  195. </div>
  196.  
  197.  
  198.  
  199. <div class='page-right-box cauldron'>
  200.     <h3>Diskuznφ kotel</h3>
  201.     <div class='page-right-box-in'>
  202.         <ul>
  203. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3160' title='(126 komentß°∙)'>Tvorba layoutu webu - teoretick² ·vod</a></li>
  204. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3165' title='(34 komentß°∙)'>Nßh╛ady k obrßzkom generovanΘ v PHP</a></li>
  205. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3166' title='(25 komentß°∙)'>Maguma Studio - freeware editor PHP skriptov</a></li>
  206. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3156' title='(23 komentß°∙)'>Search Engine Visibility</a></li>
  207. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3137' title='(18 komentß°∙)'>ImplementaΦnφ chyby v prohlφ₧eΦφch II.</a></li>
  208.         </ul>
  209.     </div>
  210. </div>
  211.  
  212.  
  213.  
  214. <div class='page-right-box emailserv'><h3>Email servis</h3><div class='page-right-box-in'><form action='prihlaseni.asp' method='post'><div class='shell'><input class='text' type='text' name='adresa' /></div><div class='shell'><input class='radio' type='radio' value='1' name='co' checked='checked' />T²dennφ p°ehled Φlßnk∙</div><div class='shell'><input class='radio' type='radio' value='2' name='co' />HELP konference</div><div class='shell'><input class='submit' type='submit' value='P°ihlßsit' /></div></form></div></div>
  215. </div>
  216. <div class='page-maker'> </div><div class='page-maker-white'> </div></div>
  217. <div id='page-foot'><div id='page-foot-menu'><a href='http://interval.cz/reklama.asp'>Inzerce na Interval.cz</a> | <a href='http://interval.cz/redakce.asp'>Redakce Interval.cz</a> | <a href='http://interval.cz/autori.asp'>Hledßme novΘ autory</a></div><div id='issn'>ISSN 1212-8651</div><div id='page-foot-zoner'>© Zoner software, s.r.o., vÜechna prßva vyhrazena, tento server dodr₧uje <a href='http://interval.cz/privacy.asp'>prßvnφ p°edpisy</a>o ochran∞ osobnφch ·daj∙.</div></div>
  218. </body>
  219. </html>