Difference between revisions of "Component: Network Communications (Comms: Networking)"

From Flowcode Help
Jump to navigationJump to search
 
(27 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
+
{| style="width:50%"
 
 
{| width="50%"
 
 
|-
 
|-
| width="20%" style="color: gray;" | Author
+
| width="20%" style="color:gray;" | Author
 
| Matrix TSL
 
| Matrix TSL
 
|-
 
|-
| width="20%" style="color: gray;" | Version
+
| width="20%" style="color:gray;" | Version
| 1.0 (Release)
+
| 1.5
 
|-
 
|-
| width="20%" style="color: gray;" | Category
+
| width="20%" style="color:gray;" | Category
 
| Comms: Networking
 
| Comms: Networking
 
|}
 
|}
  
  
 +
==Network Communications component==
 +
A component designed to simplify the process of TCP/IP communications. Compatible with most of the Flowcode supported TCP/IP and WIFI components. A useful building block for creating components such as IoT and Modbus TCP.
  
==[[File:Component Icon 91049bf5_2436_42dc_947a_c30c86463d98.png|Image]] Network Communications component==
+
==Component Pack==
A component designed to simplify the process of TCP/IP communications.
 
Compatible with most of the Flowcode supported TCP/IP and WIFI components.
 
A useful building block for creating components such as IoT and Modbus TCP.
 
  
==Examples==
+
FREE
  
 +
==Detailed description==
  
Here are some examples showing the Network Communications component in action.
 
  
By itself the component provides a generic TCP/IP layer to drive the simulation runtime.
 
  
Components such as MQTT and Modbus TCP can control the network comms layer to avoid repeating code and also to allow the embedded hardware bridge that controls connected TCP/IP embedded modules.
 
  
If the Network Communications component is connected to an embedded TCP/IP component then it will allow the TCP/IP communications to work on embedded hardware.
 
  
  
{| class="wikitable"
 
! Embedded Component
 
! Support Status
 
|-
 
|Raspberry Pi 1/2/3
 
|Supported
 
|-
 
|W5500
 
|In Progress
 
|-
 
|ESP8266
 
|In Progress
 
|}
 
  
==Downloadable macro reference==
 
  
===<span style="font-weight: normal;"><u><tt>Connect</tt></u></span>===
 
Connects to an IP address as a client on the specified port.
 
  
Some TCP/IP modules (RPI and ESP8266) will accept a URL instead of an IP address.
 
  
Returns: 0=Fail, 1=OK
 
  
'''Parameters'''
+
''No detailed description exists yet for this component''
  
:[[Variable Types|<- STRING]] ''Address''
+
==Examples==
::IP address as a string e.g. "192.168.1.1" or URL on some TCP/IP modules
 
::''This parameter may be returned back to the caller''
 
  
:[[Variable Types|UINT]] ''Port''
 
  
  
'''Return value'''
 
  
:[[Variable Types|BOOL]] : Returns true if the operation is a success, else false
 
  
  
===<span style="font-weight: normal;"><u><tt>Receive</tt></u></span>===
 
Attempts to receive up to a specified number of bytes from the active connection.
 
  
Returns the number of bytes received.
 
  
'''Parameters'''
 
  
:[[Variable Types|<- STRING]] ''Data''
 
::''This parameter may be returned back to the caller''
 
  
:[[Variable Types|UINT]] ''Count''
 
::Maximum number of bytes to read
 
  
  
'''Return value'''
 
  
:[[Variable Types|UINT]]
 
  
 +
Here are some examples showing the Network Communications component in action.
  
===<span style="font-weight: normal;"><u><tt>Send</tt></u></span>===
+
By itself the component provides a generic TCP/IP layer to drive the simulation runtime.  
Sends the specified number of bytes via the active connection.
 
  
Returns the number of bytes sent, 0=Fail.
+
Here is a simple example showing the component used by itself to request data from a remote server on the internet.
  
'''Parameters'''
+
{{Fcfile|NetworkComms-Client.fcfx|Example Network Comms Client}}
  
:[[Variable Types|<- STRING]] ''Data''
 
::Array containing the data to send
 
::''This parameter may be returned back to the caller''
 
  
:[[Variable Types|UINT]] ''Count''
+
===Library Components===
::Number of bytes to send from the data array
 
  
 +
Components such as [[Component:_Webserver_(GENERIC_ROM_FAT)_(Comms:_Networking)|Webserver (GENERIC)]], [[Component:_MQTT_Client_(Comms:_System)|MQTT]] and [[Component:_Modbus_TCP_Master_(Comms:_System)|Modbus TCP]] can connect to and control the network comms layer.
  
'''Return value'''
+
[[File:NetComms1.jpg]]
  
:[[Variable Types|UINT]]
 
  
 +
Here is a simple example showing the component used with the [[Component:_Webserver_(GENERIC_ROM_FAT)_(Comms:_Networking)|Webserver (GENERIC)]] component.
  
===<span style="font-weight: normal;"><u><tt>Listen</tt></u></span>===
+
{{Fcfile|NetworkComms-Server.fcfx|Example Network Comms Web Server}}
Bind the socket to a port on the local host and set to listen mode.
 
  
Returns: 0=Fail, 1=OK
+
===Embedded Components===
  
'''Parameters'''
+
The Network Communications component can also be connected to embedded TCP/IP and WIFI style modules allowing for the abstraction to work with specific networking hardware modules.
  
:[[Variable Types|UINT]] ''Port''
+
[[File:NetComms2.jpg]]
  
  
'''Return value'''
+
Here is the current status of the Network Communications component with the various embedded modules.
  
:[[Variable Types|BOOL]] : Returns true if the operation is a success, else false
+
{| class="wikitable"
 +
! Embedded Component
 +
! Other Variants of Component
 +
! Support Status
 +
|-
 +
|[[Component:_TCPIP_(Raspberry_Pi)_(Comms:_Networking)|TCP/IP (Raspberry Pi)]]
 +
|N/A
 +
|Fully Supported
 +
|-
 +
|[[Component:_WLAN_(EB069,_ESP8266)_(ESP8266)_(Wireless)|WLAN (ESP8266)]]
 +
|WLAN (ESP-12S), WIFI (BL0136), WIFI (ESP8266)
 +
|Fully Supported
 +
|-
 +
|[[Component:_TCPIP_(W5500)_(Comms:_Networking)|TCP/IP (W5500)]]
 +
|N/A
 +
|Fully Supported
 +
|-
 +
|[[Component:_TCPIP_(ENC28J60)_(Comms:_Networking)|ENC28J60]]
 +
|N/A
 +
|On Hold
 +
|-
 +
|[[Component:_TCPIP_(NM7010A)_(Comms:_Networking)|TCP/IP (NM7010A)]]
 +
|TCP/IP (EB023v1)
 +
|On Hold
 +
|-
 +
|[[Component:_TCPIP_(WIZ810MJ)_(Comms:_Networking)|TCP/IP (W5100)]]
 +
|TCP/IP (EB023v2), TCP/IP (WIZ810MJ)
 +
|On Hold
 +
|-
 +
|[[Component:_WLAN_(EB069,_WIZ610wi)_(Wireless)|WLAN (WIZ610WI)]]
 +
|WIFI (EB069)
 +
|On Hold
 +
|}
  
  
===<span style="font-weight: normal;"><u><tt>SocketOpen</tt></u></span>===
+
We are working through and adding support as and when we get chance so if you have a module that isn't listed or would like to try and prioritise a specific module then you can let us know via the user forums.
Attempts to create a socket on the local device.
 
  
This must be succesful to allow TCP/IP communications with a remote destination.
+
==Downloadable macro reference==
  
Returns: 0=Fail / 1=OK
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Connect'''
 +
|-
 +
| colspan="2" | Connects to an IP address as a client on the specified port. Some TCP/IP modules (RPI and ESP8266) will accept a URL instead of an IP address. Returns: 0=Fail, 1=OK&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-string-icon.png]] - STRING
 +
| width="90%" | Address
 +
|-
 +
| colspan="2" | IP address as a string e.g. "192.168.1.1" or URL on some TCP/IP modules&nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | Port
 +
|-
 +
| colspan="2" | Port number to connect to.&nbsp;
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-bool-icon.png]] - BOOL
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
'''Parameters'''
 
  
:''This macro has no parameters''
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Receive'''
 +
|-
 +
| colspan="2" | Attempts to receive up to a specified number of bytes from the active connection. Returns the number of bytes received.&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-string-icon.png]] - STRING
 +
| width="90%" | Data
 +
|-
 +
| colspan="2" | Data Array to store the data into.&nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | Count
 +
|-
 +
| colspan="2" | Maximum number of bytes to read&nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | Timeout
 +
|-
 +
| colspan="2" | Maximum time to wait in mS (approx)&nbsp;
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
  
'''Return value'''
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Send'''
 +
|-
 +
| colspan="2" | Sends the specified number of bytes via the active connection. Returns the number of bytes sent, 0=Fail.&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-string-icon.png]] - STRING
 +
| width="90%" | Data
 +
|-
 +
| colspan="2" | Array containing the data to send&nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | Count
 +
|-
 +
| colspan="2" | Number of bytes to send from the data array&nbsp;
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
:[[Variable Types|BOOL]] : Returns true if the operation is a success, else false
 
  
 +
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Listen'''
 +
|-
 +
| colspan="2" | Bind the socket to a port on the local host and set to listen mode. First Open a Socket on the local host Returns: 0=Fail, 1=OK&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | Port
 +
|-
 +
| colspan="2" | Port number to listen on.&nbsp;
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-bool-icon.png]] - BOOL
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
===<span style="font-weight: normal;"><u><tt>SocketClose</tt></u></span>===
 
Closes the current socket connection
 
  
'''Parameters'''
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SocketOpen'''
 +
|-
 +
| colspan="2" | Attempts to create a socket on the local device. This must be succesful to allow TCP/IP communications with a remote destination. Returns: 0=Fail / 1=OK&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-bool-icon.png]] - BOOL
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
:''This macro has no parameters''
 
  
 +
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SocketClose'''
 +
|-
 +
| colspan="2" | Closes the current socket connection&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
'''Return value'''
 
  
:''This call does not return a value''
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''AcceptOpen'''
 +
|-
 +
| colspan="2" | Required for systems where there can be multiple incoming threads Returns 1 if there is incoming comms requiring a new thread, else returns 0&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
  
 +
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''AcceptClose'''
 +
|-
 +
| colspan="2" | Goes with the AcceptOpen function to close the new thread handle.&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
==Simulation macro reference==
 
  
''This component does not contain any simulation macros''
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Initialise'''
 +
|-
 +
| colspan="2" | Initialises the network communications component.&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
  
==Property reference==
 
<span style="font-weight: normal;"><u>TCP/IP Component</u></span>
 
  
This property is of type ''Panel object'' and can be referenced with the variable name ''Component''.
 
  
Property to point to the TCP/IP or WIFI component you want to use.
+
==Property reference==
  
If unconnected then default to simulated TCP/IP network communications using the PC network adapter.
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
+
|-
<span style="font-weight: normal;"><u>Status</u></span>
+
| width="10%" align="center" style="background-color:#D8C9D8;" | [[File:Fc9-prop-icon.png]]
 
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Properties'''
This property is of type ''Line of text'' and can be referenced with the variable name ''Status''.
+
|-
 
+
|-
''<span style="color:red;">No additional information</span>''
+
| width="10%" align="center" | [[File:Fc9-type-17-icon.png]]
 +
| width="90%" | TCP/IP Component
 +
|-
 +
| colspan="2" | Property to point to the TCP/IP or WIFI component you want to use. If unconnected then default to simulated TCP/IP network communications using the PC network adapter.&nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
 +
| width="90%" | TCP IP Channel
 +
|-
 +
| colspan="2" | Allows for several parallel TCP/IP communications channels to be active at once by selecting unique TCP IP channels for each Network Comms component. Default 0.&nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-type-10-icon.png]]
 +
| width="90%" | Status
 +
|-
 +
| colspan="2" | &nbsp;
 +
|-
 +
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
 +
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Simulation
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
 +
| width="90%" | Simulation Control
 +
|-
 +
| colspan="2" | Allows the user to decide what happens when simulating. Simulation DLL forces all simulated TCP/IP comms to go directly via the simulation DLL bypassing any additional components. Component simulation forces the attached component to provide the simulation and maybe other aspects such as SPI/I2C communications.&nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
 +
| width="90%" | Network Interface
 +
|-
 +
| colspan="2" | Some computers may have several network interfaces such as ethernet ports and wifi access. Select the correct network interface for the network you wish to connect to. Use the IP address to confirm you are connected to the right network.&nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-type-10-icon.png]]
 +
| width="90%" | IP Address
 +
|-
 +
| colspan="2" | IP Address of the selected network interface.&nbsp;
 +
|}

Latest revision as of 17:21, 9 November 2022

Author Matrix TSL
Version 1.5
Category Comms: Networking


Network Communications component

A component designed to simplify the process of TCP/IP communications. Compatible with most of the Flowcode supported TCP/IP and WIFI components. A useful building block for creating components such as IoT and Modbus TCP.

Component Pack

FREE

Detailed description

No detailed description exists yet for this component

Examples

Here are some examples showing the Network Communications component in action.

By itself the component provides a generic TCP/IP layer to drive the simulation runtime.

Here is a simple example showing the component used by itself to request data from a remote server on the internet.

FC6 Icon.png Example Network Comms Client


Library Components

Components such as Webserver (GENERIC), MQTT and Modbus TCP can connect to and control the network comms layer.

NetComms1.jpg


Here is a simple example showing the component used with the Webserver (GENERIC) component.

FC6 Icon.png Example Network Comms Web Server

Embedded Components

The Network Communications component can also be connected to embedded TCP/IP and WIFI style modules allowing for the abstraction to work with specific networking hardware modules.

NetComms2.jpg


Here is the current status of the Network Communications component with the various embedded modules.

Embedded Component Other Variants of Component Support Status
TCP/IP (Raspberry Pi) N/A Fully Supported
WLAN (ESP8266) WLAN (ESP-12S), WIFI (BL0136), WIFI (ESP8266) Fully Supported
TCP/IP (W5500) N/A Fully Supported
ENC28J60 N/A On Hold
TCP/IP (NM7010A) TCP/IP (EB023v1) On Hold
TCP/IP (W5100) TCP/IP (EB023v2), TCP/IP (WIZ810MJ) On Hold
WLAN (WIZ610WI) WIFI (EB069) On Hold


We are working through and adding support as and when we get chance so if you have a module that isn't listed or would like to try and prioritise a specific module then you can let us know via the user forums.

Downloadable macro reference

Fc9-comp-macro.png Connect
Connects to an IP address as a client on the specified port. Some TCP/IP modules (RPI and ESP8266) will accept a URL instead of an IP address. Returns: 0=Fail, 1=OK 
Fc9-string-icon.png - STRING Address
IP address as a string e.g. "192.168.1.1" or URL on some TCP/IP modules 
Fc9-u16-icon.png - UINT Port
Port number to connect to. 
Fc9-bool-icon.png - BOOL Return


Fc9-comp-macro.png Receive
Attempts to receive up to a specified number of bytes from the active connection. Returns the number of bytes received. 
Fc9-string-icon.png - STRING Data
Data Array to store the data into. 
Fc9-u16-icon.png - UINT Count
Maximum number of bytes to read 
Fc9-u16-icon.png - UINT Timeout
Maximum time to wait in mS (approx) 
Fc9-u16-icon.png - UINT Return


Fc9-comp-macro.png Send
Sends the specified number of bytes via the active connection. Returns the number of bytes sent, 0=Fail. 
Fc9-string-icon.png - STRING Data
Array containing the data to send 
Fc9-u16-icon.png - UINT Count
Number of bytes to send from the data array 
Fc9-u16-icon.png - UINT Return


Fc9-comp-macro.png Listen
Bind the socket to a port on the local host and set to listen mode. First Open a Socket on the local host Returns: 0=Fail, 1=OK 
Fc9-u16-icon.png - UINT Port
Port number to listen on. 
Fc9-bool-icon.png - BOOL Return


Fc9-comp-macro.png SocketOpen
Attempts to create a socket on the local device. This must be succesful to allow TCP/IP communications with a remote destination. Returns: 0=Fail / 1=OK 
Fc9-bool-icon.png - BOOL Return


Fc9-comp-macro.png SocketClose
Closes the current socket connection 
Fc9-void-icon.png - VOID Return


Fc9-comp-macro.png AcceptOpen
Required for systems where there can be multiple incoming threads Returns 1 if there is incoming comms requiring a new thread, else returns 0 
Fc9-u8-icon.png - BYTE Return


Fc9-comp-macro.png AcceptClose
Goes with the AcceptOpen function to close the new thread handle. 
Fc9-void-icon.png - VOID Return


Fc9-comp-macro.png Initialise
Initialises the network communications component. 
Fc9-void-icon.png - VOID Return



Property reference

Fc9-prop-icon.png Properties
Fc9-type-17-icon.png TCP/IP Component
Property to point to the TCP/IP or WIFI component you want to use. If unconnected then default to simulated TCP/IP network communications using the PC network adapter. 
Fc9-type-16-icon.png TCP IP Channel
Allows for several parallel TCP/IP communications channels to be active at once by selecting unique TCP IP channels for each Network Comms component. Default 0. 
Fc9-type-10-icon.png Status
 
Fc9-conn-icon.png Simulation
Fc9-type-16-icon.png Simulation Control
Allows the user to decide what happens when simulating. Simulation DLL forces all simulated TCP/IP comms to go directly via the simulation DLL bypassing any additional components. Component simulation forces the attached component to provide the simulation and maybe other aspects such as SPI/I2C communications. 
Fc9-type-16-icon.png Network Interface
Some computers may have several network interfaces such as ethernet ports and wifi access. Select the correct network interface for the network you wish to connect to. Use the IP address to confirm you are connected to the right network. 
Fc9-type-10-icon.png IP Address
IP Address of the selected network interface.