Communicate with Storyboard on target from desktop using TCPIP and SBIO
Hi,
I had a customer contact us who is looking to communicate with a Linux target board running Storyboard from the desktop Designer environment so that the UI on the board can be tested remotely.
A new feature added to the Storyboard IO API in Storyboard 6.2 is to offer a TCPIP transport alongside the traditional (local) memory queue. This allows you to setup an SBIO channel over a network link between the board and PC, even from say Windows desktop to Linux target.
Note: Both the desktop and the target board must be running Storyboard 6.2 or later for this to work as the libgreio-tcp library must be present in the runtime 'lib' folder on both ends:
The configuration to enable this remote channel link is as simple as adjusting some command line launch options for Storyboard as outlined in the documentation:
https://support.cranksoftware.com/hc/en-us/articles/360040459572-Storyboard-IO-Over-TCP
By way of example a typical launcher script might be as below, in this case for a RaspberryPi running ClusterIO sample using the OpenGL Linux runtime engine:
#!/bin/bash
killall sbengine
#export TSLIB_TSDEVICE=/dev/input/touchscreen0
#export TSLIB_CALIBFILE=/run/media/mmcblk0p1/pointercal
export CRANK_ROOT=~/Crank
export ENGINE=$CRANK_ROOT/runtimes/linux-raspberry-armle-opengles_2.0-GST01-obj
export SB_PLUGINS=$CRANK_ROOT/runtimes/linux-raspberry-armle-opengles_2.0-GST01-obj/plugins
export LD_LIBRARY_PATH=$CRANK_ROOT/runtimes/linux-raspberry-armle-opengles_2.0-GST01-obj/lib
$ENGINE/bin/sbengine -vvv -ogreio,channel=cluster -oscreen_mgr,swcursor -omtdev,device=/dev/input/event0 -orender_mgr,scale,multisample=0 $1
You will note in my launcher script above that I set the SBIO channel option which in this instance is the 'cluster' channel and will use the default (local) message queue transport which is a SysV queue object:
-ogreio,channel=cluster
If you want to test the target IO using our new TCPIP transport (I chose port 55555) then you can replace this with:
-ogreio,channel=tcp://55555
The target will listen on port 55555 and you can drive simulation input from the desktop directly via the IP address and socket in the remote channel option of IO Connector:
This feature can be used with any applications which use the Storyboard IO API including the utilities iogen and iorcv by simply replacing the channel name with the tcp alternative:
https://support.cranksoftware.com/hc/en-us/articles/360039999432-Storyboard-IO-Utilities
Comments
One important thing to note is that if you are connecting to the Storyboard app from say a console window or external application under Windows using the StoryboardIO library then it must have access to and be configured to search for the the greio-tcp.dll which is found is in <runtime>/lib folder.
In some instances a firewall rule may need authorisation for the process to access the network port.
The TCP library is loaded at runtime using dlopen calls which cannot find the library unless it is in the PATH for Windows eg:.
The same considerations are necessary for applications loading the greio library on other platforms such as Linux.
sbio_socket_test.zip
Please sign in to leave a comment.