<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.mcselec.com/bavr/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.mcselec.com/bavr/index.php?action=history&amp;feed=atom&amp;title=UDPREADHEADER</id>
		<title>UDPREADHEADER - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.mcselec.com/bavr/index.php?action=history&amp;feed=atom&amp;title=UDPREADHEADER"/>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/index.php?title=UDPREADHEADER&amp;action=history"/>
		<updated>2026-04-07T15:51:58Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.18.6</generator>

	<entry>
		<id>http://wiki.mcselec.com/bavr/index.php?title=UDPREADHEADER&amp;diff=890&amp;oldid=prev</id>
		<title>Admin: Created page with &quot;= &lt;span class=&quot;f_Header&quot;&gt;Action&lt;/span&gt; =  This statement reads the UDP header from the specified socket.  &lt;span style=&quot;font-family: Arial;&quot;&gt;&amp;nbsp;&lt;/span&gt;  &lt;span style=&quot;font-fa...&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/index.php?title=UDPREADHEADER&amp;diff=890&amp;oldid=prev"/>
				<updated>2013-02-12T18:44:31Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Action&amp;lt;/span&amp;gt; =  This statement reads the UDP header from the specified socket.  &amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;font-fa...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Action&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
This statement reads the UDP header from the specified socket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;UDPREADHEADER&amp;amp;nbsp;&amp;lt;/span&amp;gt;socket&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Remarks&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
UDP packets start with a 8 byte header. This header contains the peer address, port and packet size. The UDPREADHEADER reads the header and places the information into the variables PEERADDRESS, PEERPORT and PEERSIZE.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
After you have read the UDP header, you can use PEERSIZE to read the number of bytes available in the packet.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Socket is a constant or variable in the range from 0-3. And 0-7 for the W5200/W5300.&lt;br /&gt;
&lt;br /&gt;
UDPREADHEADER is only available for the W5x00.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;[[UDPREAD]],&amp;amp;nbsp;[[CONFIG TCPIP|CONFIG TCPIP]]&amp;amp;nbsp;,&amp;amp;nbsp;[[TCPREADHEADER]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'-----------------------------------------------------------------------------------------&lt;br /&gt;
'name : udptest_SPI.bas&lt;br /&gt;
'copyright : (c) 1995-2012, MCS Electronics&lt;br /&gt;
'purpose : start the easytcp.exe program after the chip is programmed and&lt;br /&gt;
' press UDP button&lt;br /&gt;
'micro : Mega88&lt;br /&gt;
'suited for demo : no&lt;br /&gt;
'commercial addon needed : yes&lt;br /&gt;
'-----------------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
$regfile = &amp;quot;m88def.dat&amp;quot; ' specify the used micro&lt;br /&gt;
 &lt;br /&gt;
$crystal = 8000000 ' used crystal frequency&lt;br /&gt;
$baud = 19200 ' use baud rate&lt;br /&gt;
$hwstack = 64 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 64 ' default use 10 for the SW stack&lt;br /&gt;
$framesize = 50 ' default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 4 , Noss = 0&lt;br /&gt;
'Init the spi pins&lt;br /&gt;
Spiinit&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;Init , set IP to 192.168.1.70&amp;quot; ' display a message&lt;br /&gt;
Enable Interrupts ' before we use config tcpip , we need to enable the interrupts&lt;br /&gt;
Config Tcpip = Int1 , Mac = 12.128.12.34.56.78 , Ip = 192.168.1.70 , Submask = 255.255.255.0 , Gateway = 192.168.1.1 , Localport = 5000 , Tx = $55 , Rx = $55 , Chip = W5100 , Spi = 1&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Dim Idx As Byte ' socket number&lt;br /&gt;
Dim Result As Word ' result&lt;br /&gt;
Dim S(255) As Byte&lt;br /&gt;
Dim Sstr As String * 255&lt;br /&gt;
Dim Temp As Byte , Temp2 As Byte ' temp bytes&lt;br /&gt;
 &lt;br /&gt;
Const Showresult = 1&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;UDP demo&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
Dim Ip As Long&lt;br /&gt;
Ip = Maketcp(192.168.1.3) 'assign IP num&lt;br /&gt;
 &lt;br /&gt;
'like with TCP, we need to get a socket first&lt;br /&gt;
'note that for UDP we specify sock_dgram&lt;br /&gt;
Idx = Getsocket(idx , Sock_dgram , 5000 , 0) ' get socket for UDP mode, specify port 5000&lt;br /&gt;
Print &amp;quot;Socket &amp;quot; ; Idx ; &amp;quot; &amp;quot; ; Idx&lt;br /&gt;
 &lt;br /&gt;
'UDP is a connection less protocol which means that you can not listen, connect or can get the status&lt;br /&gt;
'You can just use send and receive the same way as for TCP/IP.&lt;br /&gt;
'But since there is no connection protocol, you need to specify the destination IP address and port&lt;br /&gt;
'So compare to TCP/IP you send exactly the same, but with the addition of the IP and PORT&lt;br /&gt;
Do&lt;br /&gt;
 Temp = Inkey() ' wait for terminal input&lt;br /&gt;
 If Temp = 27 Then ' ESC pressed&lt;br /&gt;
 Sstr = &amp;quot;Hello&amp;quot;&lt;br /&gt;
 Result = Udpwritestr(ip , 5000 , Idx , Sstr , 255)&lt;br /&gt;
 Elseif Temp = 32 Then 'space&lt;br /&gt;
 Do&lt;br /&gt;
 Waitms 200&lt;br /&gt;
 Dim Tel As Long : Incr Tel&lt;br /&gt;
 Sstr = &amp;quot;0000000000111111111122222222223333333333 &amp;quot; + Str(tel)&lt;br /&gt;
 Result = Udpwritestr(ip , 5000 , Idx , Sstr , 255)&lt;br /&gt;
 Loop&lt;br /&gt;
 End If&lt;br /&gt;
 Result = Socketstat(idx , Sel_recv) ' get number of bytes waiting&lt;br /&gt;
 If Result &amp;gt; 0 Then&lt;br /&gt;
 Print &amp;quot;Bytes waiting : &amp;quot; ; Result&lt;br /&gt;
 &lt;br /&gt;
 Udpreadheader Idx ' read the udp header&lt;br /&gt;
 &lt;br /&gt;
 #if Showresult&lt;br /&gt;
 Print&lt;br /&gt;
 Print Peersize ; &amp;quot; &amp;quot; ; Peeraddress ; &amp;quot; &amp;quot; ; Peerport ' these are assigned when you use UDPREAD&lt;br /&gt;
 Print Ip2str(peeraddress) ' print IP in usual format&lt;br /&gt;
 #endif&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 If Peersize &amp;gt; 0 Then ' the actual number of bytes&lt;br /&gt;
 Print &amp;quot;read&amp;quot; ; Peersize&lt;br /&gt;
 Temp = Udpread(idx , S(1) , Peersize) ' read the result&lt;br /&gt;
 &lt;br /&gt;
 #if Showresult&lt;br /&gt;
 For Temp = 1 To Peersize&lt;br /&gt;
 Print S(temp) ; &amp;quot; &amp;quot; ; ' print result&lt;br /&gt;
 Next&lt;br /&gt;
 Print &amp;quot;done&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
 Result = Udpwrite(ip , Peerport , Idx , S(1) , Peersize) ' write the received data back&lt;br /&gt;
 End If&lt;br /&gt;
 End If&lt;br /&gt;
Loop&lt;br /&gt;
'the sample above waits for data and send the data back for that reason temp2 is subtracted with 8, the header size&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>