<?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=UDPREAD%2Fde</id>
		<title>UDPREAD/de - 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=UDPREAD%2Fde"/>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/index.php?title=UDPREAD/de&amp;action=history"/>
		<updated>2026-05-06T15:49:43Z</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=UDPREAD/de&amp;diff=2783&amp;oldid=prev</id>
		<title>Admin: 1 revision</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/index.php?title=UDPREAD/de&amp;diff=2783&amp;oldid=prev"/>
				<updated>2013-02-15T19:16:27Z</updated>
		
		<summary type="html">&lt;p&gt;1 revision&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 19:16, 15 February 2013&lt;/td&gt;
		&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/index.php?title=UDPREAD/de&amp;diff=2782&amp;oldid=prev</id>
		<title>Admin: Created page with &quot;= &lt;span class=&quot;f_Header&quot;&gt;Action&lt;/span&gt; =  Reads data via UDP protocol.  &lt;span style=&quot;font-family: Arial;&quot;&gt;&amp;nbsp;&lt;/span&gt;  &lt;span style=&quot;font-family: Arial;&quot;&gt;&amp;nbsp;&lt;/span&gt;  = &lt;sp...&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/index.php?title=UDPREAD/de&amp;diff=2782&amp;oldid=prev"/>
				<updated>2013-02-12T18:41:15Z</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; =  Reads data via UDP protocol.  &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-family: Arial;&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;  = &amp;lt;sp...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== (**COPIED FROM ENGLISH PAGE**) === &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Action&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Reads data via UDP protocol.&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;
Result =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;UDPREAD&amp;lt;/span&amp;gt;( socket , var, bytes)&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;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;609&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; style=&amp;quot;width: 82px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Result&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;108%&amp;quot; style=&amp;quot;width: 518px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
A byte variable that will be assigned with&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;, when no errors occurred.&lt;br /&gt;
&lt;br /&gt;
When an error occurs, the value will be set to&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;1&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;
When there are not enough bytes in the reception buffer, the routine will wait until there is enough data or the socket is closed.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; style=&amp;quot;width: 82px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
socket&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;108%&amp;quot; style=&amp;quot;width: 518px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
The socket number you want to read data from (0-3). Or 0-7 for W5200/W5300&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; style=&amp;quot;width: 82px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;108%&amp;quot; style=&amp;quot;width: 518px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
The name of the variable that will be assigned with the data from the socket.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; style=&amp;quot;width: 82px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Bytes&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;108%&amp;quot; style=&amp;quot;width: 518px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
The number of bytes to read.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;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;
Reading strings is not supported for UDP.&lt;br /&gt;
&lt;br /&gt;
When you need to read a string you can use the OVERLAY option of DIM.&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;
There will be no check on the length so specifying to receive 2 bytes for a byte will overwrite the memory location after the memory location of the byte.&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;W3100&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The socketstat function will return a length of the number of bytes + 8 for UDP. This because UDP also includes an 8 byte header. It contains the length of the data, the IP number of the peer and the port number.&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;
The UDPread function will fill the following variables with this header data:&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;
Peersize, PeerAddress, PeerPort&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
These variables are dimensioned automatically when you use CONFIG TCPIP.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;W5100,W5200,W5300&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The peersize, peerport and peeraddress have a different order in the W5x00. To avoid mistakes, the compiler will create these variables automatic in the proper order. The NOUDP=1 option can disable this feature if you do not use UDP.&lt;br /&gt;
&lt;br /&gt;
When reading UDP, you need to use the&amp;amp;nbsp;[[UDPREADHEADER]]&amp;amp;nbsp;statement to read the UDP header. After reading the header, the peersize, peerport and peeraddress variables are set.&lt;br /&gt;
&lt;br /&gt;
You then should use the&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;peersize&amp;lt;/span&amp;gt;&amp;amp;nbsp;variable to determine the number of bytes to retrieve. You must read all these bytes.&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;
[[CONFIG TCPIP]], [[GETSOCKET]] , [[SOCKETCONNECT]], [[SOCKETSTAT]] , [[TCPWRITE]], [[TCPWRITESTR]], [[CLOSESOCKET]] ,[[SOCKETLISTEN]] , [[UDPWRITE]], [[UDPWRITESTR]] , [[UDPREADHEADER]] , [[IP2STR]]&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 W3100&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.bas&lt;br /&gt;
'copyright : (c) 1995-2005, 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 : Mega161&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;m161def.dat&amp;quot; ' specify the used micro&lt;br /&gt;
$crystal = 4000000 ' used crystal frequency&lt;br /&gt;
$baud = 19200 ' use baud rate&lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 ' default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 ' default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;Init , set IP to 192.168.0.8&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 = Int0 , Mac = 12.128.12.34.56.78 , Ip = 192.168.0.8 , Submask = 255.255.255.0 , Gateway = 0.0.0.0 , Localport = 1000 , Tx = $55 , Rx = $55&lt;br /&gt;
 &lt;br /&gt;
'Use the line below if you have a gate way&lt;br /&gt;
'Config Tcpip = Int0 , Mac = 12.128.12.34.56.78 , Ip = 192.168.0.8 , Submask = 255.255.255.0 , Gateway = 192.168.0.1 , Localport = 1000 , Tx = $55 , Rx = $55&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(80) As Byte&lt;br /&gt;
Dim Sstr As String * 20&lt;br /&gt;
Dim Temp As Byte , Temp2 As Byte ' temp bytes&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
'When you use UDP, you need to dimension the following variables in exactly the same order !&lt;br /&gt;
Dim Peersize As Integer , Peeraddress As Long , Peerport As Word&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
Declare Function Ipnum(ip As Long) As String ' a handy function&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(192.168.0.3 , 5000 , Idx , Sstr , 255)&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;
 Temp2 = Result - 8 'the first 8 bytes are always the UDP header which consist of the length, IP number and port address&lt;br /&gt;
 Temp = Udpread(idx , S(1) , Result) ' read the result&lt;br /&gt;
 For Temp = 1 To Temp2&lt;br /&gt;
 Print S(temp) ; &amp;quot; &amp;quot; ; ' print result&lt;br /&gt;
 Next&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 Ipnum(peeraddress) ' print IP in usual format&lt;br /&gt;
 Result = Udpwrite(192.168.0.3 , Peerport , Idx , S(1) , Temp2) ' write the received data back&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;
'this function can be used to display an IP number in normal format&lt;br /&gt;
Function Ipnum(ip As Long) As String&lt;br /&gt;
 Local T As Byte , J As Byte&lt;br /&gt;
 Ipnum = &amp;quot;&amp;quot;&lt;br /&gt;
 For J = 1 To 4&lt;br /&gt;
 T = Ip And 255&lt;br /&gt;
 Ipnum = Ipnum + Str(t)&lt;br /&gt;
 If J &amp;lt; 4 Then Ipnum = Ipnum + &amp;quot;.&amp;quot;&lt;br /&gt;
 Shift Ip , Right , 8&lt;br /&gt;
 Next&lt;br /&gt;
End Function&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/de]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>