<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Receive UDP Packets via Port.Receive</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/5e79bc8245/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Engineering/thread/5e79bc8245/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Engineering/thread/5e79bc8245/</id><updated>2020-02-27T13:47:58.387000Z</updated><subtitle>Recent posts to Receive UDP Packets via Port.Receive</subtitle><entry><title>Receive UDP Packets via Port.Receive</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/5e79bc8245/?limit=25#f6f4" rel="alternate"/><published>2020-02-27T13:47:58.387000Z</published><updated>2020-02-27T13:47:58.387000Z</updated><author><name>jago85</name><uri>https://forge.codesys.com/u/jago85/</uri></author><id>https://forge.codesys.com4c216bec3cbe076a3aeafb45297e11d93be3b64b</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Didn't try your code, but I had good luck with the following FBs of Net Base Services:&lt;/p&gt;
&lt;p&gt;NBS.UDP_Peer&lt;br/&gt;
NBS.UDP_Send&lt;br/&gt;
NBS.UDP_Receive&lt;/p&gt;
&lt;p&gt;I think Net Base Services is build around on the UDP library. Don't know if you are supposed to use UDP directly. NBS was quite straight forward for me.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Receive UDP Packets via Port.Receive</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/5e79bc8245/?limit=25#c97b" rel="alternate"/><published>2020-02-27T13:47:58.242000Z</published><updated>2020-02-27T13:47:58.242000Z</updated><author><name>alex-j</name><uri>https://forge.codesys.com/u/alex-j/</uri></author><id>https://forge.codesys.com0ab45f9f3140b82b2e97b2f9602b171b78a7e506</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hey there,&lt;/p&gt;
&lt;p&gt;I've been trying to receive UDP packets with the UDP library (can be found in CAA Net Base Services) for quiet a while now, but I don't seem to get to a result. First of all, here's the code I'm working with. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;PROGRAM&lt;/span&gt; &lt;span class="nv"&gt;PLC_PRG&lt;/span&gt;
&lt;span class="nv"&gt;VAR&lt;/span&gt;
   &lt;span class="nv"&gt;state&lt;/span&gt; :&lt;span class="nv"&gt;INT&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="c1"&gt;;                        // State of the SM&lt;/span&gt;
   &lt;span class="nv"&gt;driver&lt;/span&gt; : &lt;span class="nv"&gt;UDP&lt;/span&gt;.&lt;span class="nv"&gt;UDPDriver&lt;/span&gt;&lt;span class="c1"&gt;;                     // UDP Driver&lt;/span&gt;
   &lt;span class="nv"&gt;port&lt;/span&gt; : &lt;span class="nv"&gt;UDP&lt;/span&gt;.&lt;span class="nv"&gt;Port&lt;/span&gt;&lt;span class="c1"&gt;;                           // UDP Port&lt;/span&gt;
   
   &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;The&lt;/span&gt; &lt;span class="nv"&gt;following&lt;/span&gt; &lt;span class="nv"&gt;parameters&lt;/span&gt; &lt;span class="nv"&gt;describe&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;socket&lt;/span&gt; &lt;span class="nv"&gt;on&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;SPS&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
   &lt;span class="nv"&gt;src_ipAddr_ud&lt;/span&gt; : &lt;span class="nv"&gt;UDINT&lt;/span&gt;&lt;span class="c1"&gt;;                     // Source IP-Address as UDINT&lt;/span&gt;
   &lt;span class="nv"&gt;src_ipAddr_st&lt;/span&gt; : &lt;span class="nv"&gt;STRING&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;192.168.200.99&lt;/span&gt;&lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="c1"&gt;;         // Source IP-Address readable&lt;/span&gt;
   &lt;span class="nv"&gt;src_Port&lt;/span&gt; : &lt;span class="nv"&gt;UINT&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5005&lt;/span&gt;&lt;span class="c1"&gt;;                     // Source Port&lt;/span&gt;
   
   &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;The&lt;/span&gt; &lt;span class="nv"&gt;following&lt;/span&gt; &lt;span class="nv"&gt;parameters&lt;/span&gt; &lt;span class="nv"&gt;describe&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;destination&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nv"&gt;outgoing&lt;/span&gt; &lt;span class="nv"&gt;packets&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
   &lt;span class="nv"&gt;dest_ipAddr_ud&lt;/span&gt; : &lt;span class="nv"&gt;UDINT&lt;/span&gt;&lt;span class="c1"&gt;;                     // Destination IP-Address as UDINT&lt;/span&gt;
   &lt;span class="nv"&gt;dest_ipAddr_st&lt;/span&gt; : &lt;span class="nv"&gt;STRING&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;192.168.200.165&lt;/span&gt;&lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="c1"&gt;;         // Destination IP-Address readable&lt;/span&gt;
   &lt;span class="nv"&gt;dest_Port&lt;/span&gt; : &lt;span class="nv"&gt;UINT&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5005&lt;/span&gt;&lt;span class="c1"&gt;;                     // Destination Port&lt;/span&gt;
   
   &lt;span class="nb"&gt;result&lt;/span&gt; : &lt;span class="nv"&gt;SysTypes&lt;/span&gt;.&lt;span class="nv"&gt;RTS_IEC_RESULT&lt;/span&gt;&lt;span class="c1"&gt;;               // Result of receive function &lt;/span&gt;
   &lt;span class="nv"&gt;bind&lt;/span&gt; : &lt;span class="nv"&gt;UDINT&lt;/span&gt;&lt;span class="c1"&gt;;                           // Result of binding&lt;/span&gt;
   &lt;span class="nv"&gt;resultCreate&lt;/span&gt; : &lt;span class="nv"&gt;SysTypes&lt;/span&gt;.&lt;span class="nv"&gt;RTS_IEC_RESULT&lt;/span&gt;&lt;span class="c1"&gt;;            // Result of creating the port&lt;/span&gt;
   &lt;span class="nv"&gt;rcvData&lt;/span&gt; : &lt;span class="nv"&gt;ARRAY&lt;/span&gt;[&lt;span class="mi"&gt;0&lt;/span&gt;..&lt;span class="mi"&gt;99&lt;/span&gt;] &lt;span class="nv"&gt;OF&lt;/span&gt; &lt;span class="nv"&gt;BYTE&lt;/span&gt;&lt;span class="c1"&gt;;               // Data which was received &lt;/span&gt;
   &lt;span class="nv"&gt;sendData&lt;/span&gt; : &lt;span class="nv"&gt;STRING&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Hello World&lt;/span&gt;&lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="c1"&gt;;               // Data to be sent&lt;/span&gt;
   
   &lt;span class="nv"&gt;END_VAR&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;CASE&lt;/span&gt; &lt;span class="nv"&gt;state&lt;/span&gt; &lt;span class="nv"&gt;OF&lt;/span&gt;
   &lt;span class="mi"&gt;0&lt;/span&gt;:   &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;Initial&lt;/span&gt; &lt;span class="nv"&gt;State&lt;/span&gt;
      &lt;span class="nv"&gt;resultCreate&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;driver&lt;/span&gt;.&lt;span class="nv"&gt;CreatePort&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;port&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt;&lt;span class="c1"&gt;;      &lt;/span&gt;
      &lt;span class="nv"&gt;state&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="mi"&gt;10&lt;/span&gt;:   &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;Bind&lt;/span&gt; &lt;span class="nv"&gt;Socket&lt;/span&gt;
      &lt;span class="nv"&gt;src_ipAddr_ud&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;UDP&lt;/span&gt;.&lt;span class="nv"&gt;IPSTRING_TO_UDINT&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;sIPAddress&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;src_ipAddr_st&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
      &lt;span class="nv"&gt;port&lt;/span&gt;.&lt;span class="nv"&gt;IPAddress&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;src_ipAddr_ud&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
      &lt;span class="nv"&gt;port&lt;/span&gt;.&lt;span class="nv"&gt;ReceivePort&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;src_Port&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
      &lt;span class="nv"&gt;port&lt;/span&gt;.&lt;span class="nv"&gt;SendPort&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;dest_Port&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
      &lt;span class="nv"&gt;bind&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;port&lt;/span&gt;.&lt;span class="nv"&gt;Bind&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;udiIPAddress&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;src_ipAddr_ud&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
      &lt;span class="nv"&gt;state&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="mi"&gt;20&lt;/span&gt;: &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="k"&gt;Send&lt;/span&gt; &lt;span class="nv"&gt;packet&lt;/span&gt;
      &lt;span class="nv"&gt;dest_ipAddr_ud&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;UDP&lt;/span&gt;.&lt;span class="nv"&gt;IPSTRING_TO_UDINT&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;sIPAddress&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;dest_ipAddr_st&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
      &lt;span class="nv"&gt;port&lt;/span&gt;.&lt;span class="k"&gt;Send&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;udiIPTo&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;dest_ipAddr_ud&lt;/span&gt;, &lt;span class="nv"&gt;pbyData&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;sendData&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;, &lt;span class="nv"&gt;diDataSize&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;SIZEOF&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;sendData&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;, &lt;span class="nv"&gt;uiPortTo&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;dest_Port&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
      &lt;span class="nv"&gt;state&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="mi"&gt;30&lt;/span&gt;:
      &lt;span class="nb"&gt;result&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;port&lt;/span&gt;.&lt;span class="nv"&gt;Receive&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;pbyData&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;rcvData&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;, &lt;span class="nv"&gt;diDataSize&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;SIZEOF&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;rcvData&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
      &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nb"&gt;result&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt;&lt;span class="nv"&gt;ERRORS&lt;/span&gt;.&lt;span class="nv"&gt;ERR_PENDING&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
         &lt;span class="nv"&gt;state&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="c1"&gt;;   &lt;/span&gt;
      &lt;span class="nv"&gt;END_IF&lt;/span&gt;
      
   &lt;span class="mi"&gt;40&lt;/span&gt;: &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;Placeholder&lt;/span&gt;
   
&lt;span class="nv"&gt;END_CASE&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Sending a packet works perfectly fine with that code. Using a python script on the receiver side (the IP participant with the IP Address 192.168.200.165 - let's call him 165 from here on) I receive the string "Hello World". However, the receive function on Codesys doesn't really seem to work. &lt;br/&gt;
With a python script I was able to send a simple byte from 165 to my machine. Tracking it with Wireshark was successfull, so it definitely arrived at my computer. The ressource monitor of Windows also lists IP 192.168.200.99, Port 5005 as reserved port for Codesys with no constraint from the firewall. When I use a python script on my computer which simply receives UDP packets, I even receive the packet with this. Still, the Codesys Receive-Function returns with ERR_PENDING.&lt;/p&gt;
&lt;p&gt;Does anybody have any idea what I could have possibly missed?&lt;/p&gt;
&lt;p&gt;By the way, I have been trying this with the SysSocket library as well and I again got all the way to the point where I want to receive a packet - with that library one can even check whether binding a socket was succesfull and according to Codesys it was - but I just don't receive it. &lt;/p&gt;
&lt;p&gt;Grateful for your help,&lt;br/&gt;
Alex&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>