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

1

Comments

1 comment
  • Official comment

    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:.

    set PATH=%PATH%;C:\Program Files\Crank_Software\Storyboard_Engine\6.2.202003112125.36502\win32-x86-opengles_2.0-obj\lib

    The same considerations are necessary for applications loading the greio library on other platforms such as Linux.

    export LD_LIBRARY_PATH=<runtime path>/lib
    In the sample app (see below) I set the inbound 'listen' channel to tcp://55556 on the greio plugin and the outbound 'send' channel for the Storyboard IO button action to be  tcp://55555, both defaulting to localhost.
    C:\Users\garry>set PATH=%PATH%;C:\Program Files\Crank_Software\Storyboard_Engine\6.2.202003112125.36502\win32-x86-opengles_2.0-obj\lib
    C:\Program Files\Crank_Software\Storyboard_Engine\6.2.202003112125.36502\win32-x86-opengles_2.0-obj\bin>iorcv tcp://55555
    Waiting on channel [tcp://55555]
    test_channel,,1u1:value 55
    C:\Program Files\Crank_Software\Storyboard_Engine\6.2.202003112125.36502\win32-x86-opengles_2.0-obj\bin>iogen tcp://55556 - test_channel 1u1:value 55
    Connecting to Storyboard IO channel [tcp://55556]
    You should see iorcv events arriving when you press the button in the UI app (or from the IO Connector dialog)  and the app receiving and printing the event details from the iogen console command.

    sbio_socket_test.zip
     

Please sign in to leave a comment.

Didn't find what you were looking for?

New post