In that case, the best approach would be to build a listener that receives the messages and lets you act on them as needed.
That said, this may be over-engineering the problem. As an alternative, you could hide multiple functions behind labels or buttons with a RossTalk GPI Trigger, and use each of these to drive component changes in Dashboard-assuming there isn't a more complex requirement later on.
Here are three examples using differing methods for controlling VLC Player.
VLC Level 1 - TCP Fire and Forget
<?xml version="1.0" encoding="UTF-8"?><abs contexttype="opengear" gridsize="20" id="_top" keepalive="false" style="">
<meta>
<params>
<param access="1" maxlength="0" name="vlc host" oid="vlchost" type="STRING" value="localhost" widget="default"/>
<param access="1" constrainttype="INT_NULL" name="vlc port" oid="vlcport" precision="0" type="INT16" value="2235" widget="default"/>
<param access="1" constraint="0.0;1000.0;0.0;1000.0;1" constrainttype="INT_STEP_RANGE" name="Goto Number" oid="goto" precision="0" type="INT16" value="7" widget="default"/>
</params>
</meta>
<label height="60" left="40" name="VLC over TCP - Fire and Forget" style="txt-align:west;size:Bigger;" top="40" width="620"/>
<label height="20" left="40" name="This panel sends command over TCP to a VLC player. We do not expect any response from the VLC player." style="txt-align:west" top="100" width="780"/>
<label height="20" left="40" name="VLC Host:" style="txt-align:west;" top="160" width="120"/>
<label height="20" left="40" name="VLC Port:" style="txt-align:west" top="200" width="140"/>
<label height="20" left="40" name="For this to work, VLC has to be started with the following arguments: vlc.exe --extraintf rc --rc-host localhost:2235 " style="txt-align:west;" top="120" width="700"/>
<param expand="true" height="20" left="120" oid="vlchost" showlabel="false" top="160" width="180"/>
<param expand="true" height="20" left="120" oid="vlcport" showlabel="false" top="200" width="180"/>
<button buttontype="push" height="40" left="40" name="Pause" top="260" width="100">
<task tasktype="ogscript">
/*! block id=1013,1014,1015 !*/
rosstalk.sendMessage(params.getValue('vlchost', 0), params.getValue('vlcport', 0), "pause", null);
/*!!
<block id="1013" type="ogscript_sendtcpstring" x="319" y="136" w="318" HOST="ID:1014" PORT="ID:1015" STRING="pause" CALLBACK="null" />
<block id="1014" type="param__top&amp;vlc host (vlchost)[0]" x="10" y="300" w="243" SET="" />
<block id="1015" type="param__top&amp;vlc port (vlcport)[0]" x="10" y="392" w="243" SET="" />
!!*/
/*!!<checksum>f632fa875b5e9483edae9cf7a7aac06d</checksum>!!*/</task>
</button>
<button buttontype="push" height="40" left="160" name="Next" top="260" width="100">
<task tasktype="ogscript">
/*! block id=1013,1014,1015 !*/
rosstalk.sendMessage(params.getValue('vlchost', 0), params.getValue('vlcport', 0), "next", null);
/*!!
<block id="1013" type="ogscript_sendtcpstring" x="319" y="136" w="318" HOST="ID:1014" PORT="ID:1015" STRING="next" CALLBACK="null" />
<block id="1014" type="param__top&amp;vlc host (vlchost)[0]" x="10" y="300" w="243" SET="" />
<block id="1015" type="param__top&amp;vlc port (vlcport)[0]" x="10" y="392" w="243" SET="" />
!!*/
/*!!<checksum>b4f29ef5d42ae87c50ce284b1c494143</checksum>!!*/</task>
</button>
<button buttontype="push" height="40" left="280" name="Prev" top="260" width="100">
<task tasktype="ogscript">
/*! block id=1013,1014,1015 !*/
rosstalk.sendMessage(params.getValue('vlchost', 0), params.getValue('vlcport', 0), "prev", null);
/*!!
<block id="1013" type="ogscript_sendtcpstring" x="319" y="136" w="318" HOST="ID:1014" PORT="ID:1015" STRING="prev" CALLBACK="null" />
<block id="1014" type="param__top&amp;vlc host (vlchost)[0]" x="10" y="300" w="243" SET="" />
<block id="1015" type="param__top&amp;vlc port (vlcport)[0]" x="10" y="392" w="243" SET="" />
!!*/
/*!!<checksum>fbef6284b6b2df0d28c8e371085fee81</checksum>!!*/</task>
</button>
<button buttontype="push" height="40" left="40" name="Goto" top="320" width="100">
<task tasktype="ogscript">
/*! block id=1013,1014,1015,1016,1017 !*/
rosstalk.sendMessage(params.getValue('vlchost', 0), params.getValue('vlcport', 0), ("goto " + params.getValue('goto', 0)), null);
/*!!
<block id="1013" type="ogscript_sendtcpstring" x="556" y="10" w="318" HOST="ID:1014" PORT="ID:1015" STRING="ID:1016" CALLBACK="null" />
<block id="1014" type="param__top&amp;vlc host (vlchost)[0]" x="283" y="10" w="243" SET="" />
<block id="1015" type="param__top&amp;vlc port (vlcport)[0]" x="283" y="72" w="243" SET="" />
<block id="1016" type="math_add" x="283" y="134" VALUE="goto " VAL_1="ID:1017" w="218" VAL_1_1="" />
<block id="1017" type="param__top&amp;Goto Number (goto)[0]" x="10" y="134" w="243" SET="" />
!!*/
/*!!<checksum>863ef5f652ab559b906ea2a151337516</checksum>!!*/</task>
</button>
<param expand="true" height="20" left="160" oid="goto" showlabel="false" top="340" width="80"/>
<label height="20" left="160" name="Clip Number" style="txt-align:west" top="320" width="100"/>
</abs>
VLC Level 2 - TCP Response
<?xml version="1.0" encoding="UTF-8"?><abs contexttype="opengear" gridsize="20" id="_top" keepalive="false">
<meta>
<params>
<param access="1" maxlength="0" name="vlc host" oid="vlchost" type="STRING" value="localhost" widget="default"/>
<param access="1" constrainttype="INT_NULL" name="vlc port" oid="vlcport" precision="0" type="INT16" value="2235" widget="default"/>
<param access="1" constraint="0.0;1000.0;0.0;1000.0;1" constrainttype="INT_STEP_RANGE" name="Goto Number" oid="goto" precision="0" type="INT16" value="13" widget="default"/>
</params>
<api>function vlc_callback(success, sentData, resultString, exception)
{
ogscript.debug("success: " + success);
ogscript.debug("sentData: " + sentData);
ogscript.debug("resultString: " + resultString);
ogscript.debug("exception: " + exception);
ogscript.rename("message", resultString);
}</api>
</meta>
<label height="60" left="40" name="VLC over TCP - Messages with Responses" style="txt-align:west;size:Bigger;" top="40" width="620"/>
<label height="20" left="40" name="This panel sends command over TCP to a VLC player. The VLC player sends a response, which we parse." style="txt-align:west;" top="100" width="780"/>
<label height="20" left="40" name="VLC Host:" style="txt-align:west;" top="160" width="120"/>
<label height="20" left="40" name="VLC Port:" style="txt-align:west" top="200" width="140"/>
<label height="20" left="40" name="For this to work, VLC has to be started with the following arguments: vlc.exe --extraintf rc --rc-host localhost:2235 " style="txt-align:west" top="120" width="700"/>
<param expand="true" height="20" left="120" oid="vlchost" showlabel="false" top="160" width="180"/>
<param expand="true" height="20" left="120" oid="vlcport" showlabel="false" top="200" width="180"/>
<button buttontype="push" height="40" left="40" name="Pause" top="260" width="100">
<task tasktype="ogscript">//callback method is in API
rosstalk.sendMessageWithResponse(params.getValue('vlchost', 0), params.getValue('vlcport', 0), "pause\n", "\n", vlc_callback);</task>
</button>
<button buttontype="push" height="40" left="160" name="Next" top="260" width="100">
<task tasktype="ogscript">/*! block id=1018,1014,1015 !*/
rosstalk.sendMessageWithResponse(params.getValue('vlchost', 0), params.getValue('vlcport', 0), "next\n", "\n", vlc_callback);
/*!!
<block id="1018" type="ogscript_sendtcpstringwresponse" x="317" y="411" w="318" HOST="ID:1014" PORT="ID:1015" STRING="next\n" ENDOFMESSAGE="\n" CALLBACK="vlc_callback" />
<block id="1014" type="param__top&amp;vlc host (vlchost)[0]" x="10" y="300" w="243" SET="" />
<block id="1015" type="param__top&amp;vlc port (vlcport)[0]" x="10" y="392" w="243" SET="" />
!!*/
/*!!<checksum>52ae3026b1170657300e41dd77fa3f4c</checksum>!!*/</task>
</button>
<button buttontype="push" height="40" left="280" name="Prev" top="260" width="100">
<task tasktype="ogscript">
/*! block id=1018,1014,1015 !*/
rosstalk.sendMessageWithResponse(params.getValue('vlchost', 0), params.getValue('vlcport', 0), "prev\n", "\n", vlc_callback);
/*!!
<block id="1018" type="ogscript_sendtcpstringwresponse" x="317" y="411" w="318" HOST="ID:1014" PORT="ID:1015" STRING="prev\n" ENDOFMESSAGE="\n" CALLBACK="vlc_callback" />
<block id="1014" type="param__top&amp;vlc host (vlchost)[0]" x="10" y="300" w="243" SET="" />
<block id="1015" type="param__top&amp;vlc port (vlcport)[0]" x="10" y="392" w="243" SET="" />
!!*/
/*!!<checksum>91f95e38f4586e26a62f6a2aca0b1afe</checksum>!!*/</task>
</button>
<button buttontype="push" height="40" left="400" name="Goto" top="260" width="100">
<task tasktype="ogscript">
/*! block id=1019,1014,1015,1016,1017 !*/
rosstalk.sendMessageWithResponse(params.getValue('vlchost', 0), params.getValue('vlcport', 0), ("goto " + params.getValue('goto', 0) + "\n"), "\n", vlc_callback);
/*!!
<block id="1019" type="ogscript_sendtcpstringwresponse" x="556" y="10" w="318" HOST="ID:1014" PORT="ID:1015" STRING="ID:1016" ENDOFMESSAGE="\n" CALLBACK="vlc_callback" />
<block id="1014" type="param__top&amp;vlc host (vlchost)[0]" x="283" y="10" w="243" SET="" />
<block id="1015" type="param__top&amp;vlc port (vlcport)[0]" x="283" y="72" w="243" SET="" />
<block id="1016" type="math_add" x="283" y="134" VALUE="goto " VAL_1="ID:1017" VAL_1_1="\n" w="218" VAL_1_2="" />
<block id="1017" type="param__top&amp;Goto Number (goto)[0]" x="10" y="134" w="243" SET="" />
!!*/
/*!!<checksum>f4c5181ff4aad5e31051bc479bd981d7</checksum>!!*/</task>
</button>
<param expand="true" height="20" left="520" oid="goto" showlabel="false" top="280" width="80"/>
<label height="20" left="520" name="Clip Number" style="txt-align:west" top="260" width="100"/>
<label height="40" left="40" name="Message from server:" style="txt-align:west" top="400" width="180"/>
<label height="140" id="message" left="40" style="txt-align:west;bg#darkdivider;" top="440" width="780"/>
<button buttontype="push" height="40" left="40" name="Get Title" top="320" width="100">
<task tasktype="ogscript">
/*! block id=1018,1014,1015 !*/
rosstalk.sendMessageWithResponse(params.getValue('vlchost', 0), params.getValue('vlcport', 0), "get_title\n", "\n", vlc_callback);
/*!!
<block id="1018" type="ogscript_sendtcpstringwresponse" x="317" y="411" w="318" HOST="ID:1014" PORT="ID:1015" STRING="get_title\n" ENDOFMESSAGE="\n" CALLBACK="vlc_callback" />
<block id="1014" type="param__top&amp;vlc host (vlchost)[0]" x="10" y="300" w="243" SET="" />
<block id="1015" type="param__top&amp;vlc port (vlcport)[0]" x="10" y="392" w="243" SET="" />
!!*/
/*!!<checksum>d3fc2dabf594cf2665c2e0998f6d153c</checksum>!!*/</task>
</button>
<button buttontype="push" height="40" left="160" name="Get Time" top="320" width="100">
<task tasktype="ogscript">
/*! block id=1018,1014,1015 !*/
rosstalk.sendMessageWithResponse(params.getValue('vlchost', 0), params.getValue('vlcport', 0), "get_time\n", "\n", vlc_callback);
/*!!
<block id="1018" type="ogscript_sendtcpstringwresponse" x="317" y="411" w="318" HOST="ID:1014" PORT="ID:1015" STRING="get_time\n" ENDOFMESSAGE="\n" CALLBACK="vlc_callback" />
<block id="1014" type="param__top&amp;vlc host (vlchost)[0]" x="10" y="300" w="243" SET="" />
<block id="1015" type="param__top&amp;vlc port (vlcport)[0]" x="10" y="392" w="243" SET="" />
!!*/
/*!!<checksum>4de803888b5a183ab544193b6a702794</checksum>!!*/</task>
</button>
<button buttontype="push" height="40" left="280" name="Get Length" top="320" width="100">
<task tasktype="ogscript">
/*! block id=1018,1014,1015 !*/
rosstalk.sendMessageWithResponse(params.getValue('vlchost', 0), params.getValue('vlcport', 0), "get_length\n", "\n", vlc_callback);
/*!!
<block id="1018" type="ogscript_sendtcpstringwresponse" x="317" y="411" w="318" HOST="ID:1014" PORT="ID:1015" STRING="get_length\n" ENDOFMESSAGE="\n" CALLBACK="vlc_callback" />
<block id="1014" type="param__top&amp;vlc host (vlchost)[0]" x="10" y="300" w="243" SET="" />
<block id="1015" type="param__top&amp;vlc port (vlcport)[0]" x="10" y="392" w="243" SET="" />
!!*/
/*!!<checksum>0a47d7786cd31d7b1a9c1838b29be4eb</checksum>!!*/</task>
</button>
</abs>
VLC Level 3 - TCP Listener
<?xml version="1.0" encoding="UTF-8"?><abs contexttype="opengear" gridsize="20" id="_top" keepalive="false">
<label height="20" left="40" name="and update the constraints to show the playlist." style="txt-align:west" top="640" width="540"/>
<timer autostart="false" id="Monitor" pattern="HH:mm:ss" rate="1000" start="00:00:00" stop="00:00:00">
<timertask tasktype="ogscript">
sendCommand("get_title");</timertask>
</timer>
<meta>
<listener/>
<params>
<param access="1" constrainttype="STRUCT" name="message log template" oid="message_log_template" type="STRUCT" widget="table">
<value>
<subparam access="1" maxlength="0" name="Time" suboid="time" type="STRING" value="First" widget="default"/>
<subparam access="1" maxlength="0" name="Message" suboid="message" type="STRING" value="Last" widget="default"/>
</value>
</param>
<param access="1" constrainttype="INT_CHOICE" name="playlist" oid="playlist" precision="0" stateless="true" type="INT16" value="11" widget="list">
<constraint key="0">1. Abstract - 12902.mov</constraint>
<constraint key="1">2. American Football - 5375.mov</constraint>
<constraint key="2">3. Atoms - 13232.mp4</constraint>
<constraint key="3">4. Baboon - 17644.mp4</constraint>
<constraint key="4">5. Baseball - 5077.mov</constraint>
<constraint key="5">6. Baseball - 5614.mov</constraint>
<constraint key="6">7. Basketball - 12609.mov</constraint>
<constraint key="7">8. Basketball - 12610.mov</constraint>
<constraint key="8">9. Basketball - 5064.mov</constraint>
<constraint key="9">10. Basketball - 5083.mov</constraint>
<constraint key="10">11. Basketball - 5368.mov</constraint>
<constraint key="11">12. Casino - 14721.mp4</constraint>
<constraint key="12">13. Countdown - 7374.mp4</constraint>
<constraint key="13">14. Diamonds - 3125.mp4</constraint>
<constraint key="14">15. Dj - 5180.mp4</constraint>
<constraint key="15">16. Earth - 8947.avi</constraint>
<constraint key="16">17. Flying Colored Cubes - 12065.mov</constraint>
<constraint key="17">18. Golf Ball - 5379.mov</constraint>
<constraint key="18">19. Graphic - 11722.mp4</constraint>
<constraint key="19">20. Jellyfish - 10480.mp4</constraint>
<constraint key="20">21. Kaleidoscope - 1155.mov</constraint>
<constraint key="21">22. Montreal - 3149.mp4</constraint>
<constraint key="22">23. Moon - 8897.mp4</constraint>
<constraint key="23">24. Numbers - 10853.avi</constraint>
<constraint key="24">25. Octagon - 5192.mp4</constraint>
<constraint key="25">26. Particles - 7252.mov</constraint>
<constraint key="26">27. Plasma Ball - 11414.avi</constraint>
<constraint key="27">28. Racing Bike - 7251.mov</constraint>
<constraint key="28">29. Snowy Trees - 7328.mp4</constraint>
<constraint key="29">30. Soccer - 5076.mov</constraint>
<constraint key="30">31. Soccer - 5264.mov</constraint>
<constraint key="31">32. Sport - 5062.mov</constraint>
<constraint key="32">33. Sport - 5091.mov</constraint>
<constraint key="33">34. Star - 581.mov</constraint>
<constraint key="34">35. Tennis - 5261.mov</constraint>
<constraint key="35">36. Tennis - 5263.mov</constraint>
<constraint key="36">37. Tennis - 5602.mov</constraint>
<constraint key="37">38. Time - 6358.mp4</constraint>
<constraint key="38">39. World - 1992.mov</constraint>
</param>
<param access="1" constrainttype="STRUCT" name="message log template" oid="message_log" templateoid="message_log_template" type="STRUCT_ARRAY" widget="table">
<value>
<subparam suboid="time" value="0:00"/>
<subparam suboid="message" value="no messages"/>
</value>
<value>
<subparam suboid="time" value="12:12:44"/>
<subparam suboid="message" value="+----[ Playlist ]"/>
</value>
<value>
<subparam suboid="time" value="12:12:44"/>
<subparam suboid="message" value="|- Playlist"/>
</value>
<value>
<subparam suboid="time" value="12:12:44"/>
<subparam suboid="message" value="| - big_buck_bunny_480p_stereo.ogg (09:56)"/>
</value>
<value>
<subparam suboid="time" value="12:12:44"/>
<subparam suboid="message" value="|- Media Library"/>
</value>
<value>
<subparam suboid="time" value="12:12:44"/>
<subparam suboid="message" value="+----[ End of playlist ]"/>
</value>
<value>
<subparam suboid="time" value="12:12:44"/>
<subparam suboid="message" value="playlist: returned 0 (no error)"/>
</value>
<value>
<subparam suboid="time" value="12:12:48"/>
<subparam suboid="message" value="goto: returned 0 (no error)"/>
</value>
<value>
<subparam suboid="time" value="12:12:51"/>
<subparam suboid="message" value="status change: ( new input: file:///C:/Users/rcrutwell/Videos/BBB/big_buck_bunny_480p_stereo.ogg )"/>
</value>
<value>
<subparam suboid="time" value="12:12:51"/>
<subparam suboid="message" value="status change: ( play state: 3 )"/>
</value>
<value>
<subparam suboid="time" value="12:12:51"/>
<subparam suboid="message" value="next: returned 0 (no error)"/>
</value>
<value>
<subparam suboid="time" value="12:14:31"/>
<subparam suboid="message" value="next: returned 0 (no error)"/>
</value>
<value>
<subparam suboid="time" value="12:14:33"/>
<subparam suboid="message" value="status change: ( stop state: 0 )"/>
</value>
<value>
<subparam suboid="time" value="12:14:33"/>
<subparam suboid="message" value="next: returned 0 (no error)"/>
</value>
<value>
<subparam suboid="time" value="12:14:36"/>
<subparam suboid="message" value="status change: ( new input: file:///C:/Users/rcrutwell/Videos/BBB/big_buck_bunny_480p_stereo.ogg )"/>
</value>
<value>
<subparam suboid="time" value="12:14:36"/>
<subparam suboid="message" value="status change: ( play state: 3 )"/>
</value>
<value>
<subparam suboid="time" value="12:14:36"/>
<subparam suboid="message" value="pause: returned 0 (no error)"/>
</value>
<value>
<subparam suboid="time" value="12:14:36"/>
<subparam suboid="message" value="status change: ( pause state: 3 ): Pause"/>
</value>
<value>
<subparam suboid="time" value="12:14:38"/>
<subparam suboid="message" value="status change: ( pause state: 4 )"/>
</value>
<value>
<subparam suboid="time" value="12:14:38"/>
<subparam suboid="message" value="Type 'pause' to continue."/>
</value>
<value>
<subparam suboid="time" value="12:14:38"/>
<subparam suboid="message" value="next: returned 0 (no error)"/>
</value>
<value>
<subparam suboid="time" value="12:14:39"/>
<subparam suboid="message" value="Type 'pause' to continue."/>
</value>
<value>
<subparam suboid="time" value="12:14:39"/>
<subparam suboid="message" value="prev: returned 0 (no error)"/>
</value>
<value>
<subparam suboid="time" value="12:14:39"/>
<subparam suboid="message" value="Type 'pause' to continue."/>
</value>
<value>
<subparam suboid="time" value="12:14:39"/>
<subparam suboid="message" value="next: returned 0 (no error)"/>
</value>
<value>
<subparam suboid="time" value="12:14:40"/>
<subparam suboid="message" value="pause: returned 0 (no error)"/>
</value>
<value>
<subparam suboid="time" value="12:14:40"/>
<subparam suboid="message" value="status change: ( play state: 2 ): Play"/>
</value>
<value>
<subparam suboid="time" value="12:14:44"/>
<subparam suboid="message" value="status change: ( play state: 3 )"/>
</value>
<value>
<subparam suboid="time" value="12:14:44"/>
<subparam suboid="message" value="pause: returned 0 (no error)"/>
</value>
<value>
<subparam suboid="time" value="12:14:44"/>
<subparam suboid="message" value="status change: ( pause state: 3 ): Pause"/>
</value>
<value>
<subparam suboid="time" value="13:20:43"/>
<subparam suboid="message" value="status change: ( play state: 2 ): Play"/>
</value>
<value>
<subparam suboid="time" value="13:20:43"/>
<subparam suboid="message" value="status change: ( audio volume: 256 )"/>
</value>
<value>
<subparam suboid="time" value="15:41:12"/>
<subparam suboid="message" value="status change: ( stop state: 0 )"/>
</value>
<value>
<subparam suboid="time" value="15:41:12"/>
<subparam suboid="message" value="next: returned 0 (no error)"/>
</value>
<value>
<subparam suboid="time" value="15:41:15"/>
<subparam suboid="message" value="status change: ( new input: file:///C:/Users/rcrutwell/Videos/BBB/big_buck_bunny_480p_stereo.ogg )"/>
</value>
<value>
<subparam suboid="time" value="15:41:15"/>
<subparam suboid="message" value="status change: ( play state: 3 )"/>
</value>
<value>
<subparam suboid="time" value="15:41:15"/>
<subparam suboid="message" value="pause: returned 0 (no error)"/>
</value>
<value>
<subparam suboid="time" value="15:41:15"/>
<subparam suboid="message" value="status change: ( pause state: 3 ): Pause"/>
</value>
<value>
<subparam suboid="time" value="15:41:19"/>
<subparam suboid="message" value="status change: ( pause state: 4 )"/>
</value>
<value>
<subparam suboid="time" value="15:41:19"/>
<subparam suboid="message" value="big_buck_bunny_480p_stereo.ogg"/>
</value>
<value>
<subparam suboid="time" value="15:41:21"/>
<subparam suboid="message" value="Type 'pause' to continue."/>
</value>
<value>
<subparam suboid="time" value="15:41:21"/>
<subparam suboid="message" value="playlist: returned 0 (no error)"/>
</value>
<value>
<subparam suboid="time" value="15:41:34"/>
<subparam suboid="message" value="2"/>
</value>
<value>
<subparam suboid="time" value="15:41:35"/>
<subparam suboid="message" value="596"/>
</value>
<value>
<subparam suboid="time" value="15:41:36"/>
<subparam suboid="message" value="2"/>
</value>
<value>
<subparam suboid="time" value="15:41:58"/>
<subparam suboid="message" value="Type 'pause' to continue."/>
</value>
<value>
<subparam suboid="time" value="15:41:58"/>
<subparam suboid="message" value="prev: returned 0 (no error)"/>
</value>
<value>
<subparam suboid="time" value="15:41:59"/>
<subparam suboid="message" value="Type 'pause' to continue."/>
</value>
<value>
<subparam suboid="time" value="15:41:59"/>
<subparam suboid="message" value="next: returned 0 (no error)"/>
</value>
<value>
<subparam suboid="time" value="15:41:59"/>
<subparam suboid="message" value="Type 'pause' to continue."/>
</value>
<value>
<subparam suboid="time" value="15:41:59"/>
<subparam suboid="message" value="next: returned 0 (no error)"/>
</value>
<value>
<subparam suboid="time" value="15:42:03"/>
<subparam suboid="message" value="pause: returned 0 (no error)"/>
</value>
<value>
<subparam suboid="time" value="15:42:03"/>
<subparam suboid="message" value="status change: ( play state: 2 ): Play"/>
</value>
<value>
<subparam suboid="time" value="15:42:03"/>
<subparam suboid="message" value="status change: ( time: 2s )"/>
</value>
<value>
<subparam suboid="time" value="15:42:03"/>
<subparam suboid="message" value="status change: ( play state: 3 )"/>
</value>
<value>
<subparam suboid="time" value="15:42:03"/>
<subparam suboid="message" value="next: returned 0 (no error)"/>
</value>
<value>
<subparam suboid="time" value="15:42:05"/>
<subparam suboid="message" value="status change: ( stop state: 0 )"/>
</value>
<value>
<subparam suboid="time" value="15:42:05"/>
<subparam suboid="message" value="pause: returned 0 (no error)"/>
</value>
<value>
<subparam suboid="time" value="15:42:05"/>
<subparam suboid="message" value="status change: ( new input: file:///C:/Users/rcrutwell/Videos/BBB/big_buck_bunny_480p_stereo.ogg )"/>
</value>
<value>
<subparam suboid="time" value="15:42:05"/>
<subparam suboid="message" value="status change: ( pause state: 4 )"/>
</value>
<value>
<subparam suboid="time" value="15:42:05"/>
<subparam suboid="message" value="pause: returned 0 (no error)"/>
</value>
<value>
<subparam suboid="time" value="15:42:05"/>
<subparam suboid="message" value="status change: ( play state: 2 ): Play"/>
</value>
<value>
<subparam suboid="time" value="15:42:49"/>
<subparam suboid="message" value="status change: ( play state: 3 )"/>
</value>
<value>
<subparam suboid="time" value="15:42:49"/>
<subparam suboid="message" value="44"/>
</value>
<value>
<subparam suboid="time" value="15:42:49"/>
<subparam suboid="message" value="44"/>
</value>
<value>
<subparam suboid="time" value="15:42:49"/>
<subparam suboid="message" value="44"/>
</value>
<value>
<subparam suboid="time" value="15:42:49"/>
<subparam suboid="message" value="45"/>
</value>
<value>
<subparam suboid="time" value="15:42:50"/>
<subparam suboid="message" value="45"/>
</value>
<value>
<subparam suboid="time" value="15:42:50"/>
<subparam suboid="message" value="45"/>
</value>
<value>
<subparam suboid="time" value="15:42:50"/>
<subparam suboid="message" value="45"/>
</value>
<value>
<subparam suboid="time" value="15:42:50"/>
<subparam suboid="message" value="45"/>
</value>
<value>
<subparam suboid="time" value="15:42:50"/>
<subparam suboid="message" value="46"/>
</value>
<value>
<subparam suboid="time" value="15:42:51"/>
<subparam suboid="message" value="46"/>
</value>
<value>
<subparam suboid="time" value="15:42:51"/>
<subparam suboid="message" value="46"/>
</value>
<value>
<subparam suboid="time" value="15:42:51"/>
<subparam suboid="message" value="46"/>
</value>
<value>
<subparam suboid="time" value="15:42:51"/>
<subparam suboid="message" value="46"/>
</value>
<value>
<subparam suboid="time" value="15:42:52"/>
<subparam suboid="message" value="596"/>
</value>
<value>
<subparam suboid="time" value="15:42:52"/>
<subparam suboid="message" value="596"/>
</value>
<value>
<subparam suboid="time" value="15:42:52"/>
<subparam suboid="message" value="596"/>
</value>
<value>
<subparam suboid="time" value="15:45:34"/>
<subparam suboid="message" value="+----[ Playlist ]"/>
</value>
<value>
<subparam suboid="time" value="15:45:34"/>
<subparam suboid="message" value="|- Playlist"/>
</value>
<value>
<subparam suboid="time" value="15:45:34"/>
<subparam suboid="message" value="| - big_buck_bunny_480p_stereo.ogg (09:56)"/>
</value>
<value>
<subparam suboid="time" value="15:45:34"/>
<subparam suboid="message" value="|- Media Library"/>
</value>
<value>
<subparam suboid="time" value="15:45:34"/>
<subparam suboid="message" value="+----[ End of playlist ]"/>
</value>
<value>
<subparam suboid="time" value="15:45:34"/>
<subparam suboid="message" value="playlist: returned 0 (no error)"/>
</value>
<value>
<subparam suboid="time" value="15:45:39"/>
<subparam suboid="message" value="+----[ Playlist ]"/>
</value>
<value>
<subparam suboid="time" value="15:45:39"/>
<subparam suboid="message" value="|- Playlist"/>
</value>
<value>
<subparam suboid="time" value="15:45:39"/>
<subparam suboid="message" value="| - big_buck_bunny_480p_stereo.ogg (09:56)"/>
</value>
<value>
<subparam suboid="time" value="15:45:39"/>
<subparam suboid="message" value="|- Media Library"/>
</value>
<value>
<subparam suboid="time" value="15:45:39"/>
<subparam suboid="message" value="+----[ End of playlist ]"/>
</value>
<value>
<subparam suboid="time" value="15:45:39"/>
<subparam suboid="message" value="playlist: returned 0 (no error)"/>
</value>
<value>
<subparam suboid="time" value="15:52:01"/>
<subparam suboid="message" value="status change: ( play state: 4 ): End"/>
</value>
<value>
<subparam suboid="time" value="15:52:01"/>
<subparam suboid="message" value="status change: ( play state: 4 ): End"/>
</value>
<value>
<subparam suboid="time" value="16:06:59"/>
<subparam suboid="message" value="status change: ( audio volume: 256 )"/>
</value>
<value>
<subparam suboid="time" value="16:07:06"/>
<subparam suboid="message" value="status change: ( audio volume: 256 )"/>
</value>
<value>
<subparam suboid="time" value="16:07:08"/>
<subparam suboid="message" value="status change: ( audio volume: 256 )"/>
</value>
<value>
<subparam suboid="time" value="16:07:08"/>
<subparam suboid="message" value="status change: ( audio volume: 256 )"/>
</value>
<value>
<subparam suboid="time" value="16:54:15"/>
<subparam suboid="message" value="status change: ( audio volume: 256 )"/>
</value>
</param>
<param access="1" maxlength="0" name="vlc host" oid="vlchost" type="STRING" value="localhost" widget="default"/>
<param access="1" constrainttype="INT_NULL" name="vlc port" oid="vlcport" precision="0" type="INT16" value="2235" widget="default"/>
<param access="1" constraint="0.0;1000.0;0.0;1000.0;1" constrainttype="INT_STEP_RANGE" name="Goto Number" oid="goto" precision="0" stateless="true" type="INT16" value="14" widget="default"/>
<param access="1" maxlength="0" name="title" oid="title" stateless="true" type="STRING" value="Soccer - 5264.mov" widget="default"/>
<param access="1" maxlength="0" name="current_time" oid="current_time" stateless="true" type="STRING" value="0:01" widget="default"/>
<param access="1" maxlength="0" name="clip_length" oid="clip_length" stateless="true" type="STRING" value="0:04" widget="default"/>
</params>
<listener autostart="true" connecthost="localhost" connectport="2235" delimitertype="newline" id="vlc">
<task tasktype="ogscript">if (event.isConnectEvent())
{
ogscript.putObject("listener-connection", this);
}
else if (event.isMessageEvent())
{
var message = event.getBytesAsString()
logMessage(message);
if (!message.startsWith("status change"))
{
// ignore status changes;
var lastCommand = ogscript.getObject("lastcommand");
if (lastCommand == "get_title") {
params.setValue("title", 0, message);
ogscript.putObject("lastcommand", "");
if (ogscript.getObject("monitorrunning") == true) {
sendCommand("get_time");
}
}
if (lastCommand == "get_time") {
var time= parseInt(message);
var min = Math.floor(time / 60);
var sec = time % 60;
var paddedSec = ("00" + sec).slice (-2);
var displaytime = min+":" +paddedSec;
params.setValue("current_time", 0, displaytime);
ogscript.putObject("lastcommand", "");
if (ogscript.getObject("monitorrunning") == true) {
sendCommand("get_length");
}
}
if (lastCommand == "get_length") {
var time= parseInt(message);
var min = Math.floor(time / 60);
var sec = time % 60;
var paddedSec = ("00" + sec).slice (-2);
var displaytime = min+":" +paddedSec;
params.setValue("clip_length", 0, displaytime);
ogscript.putObject("lastcommand", "");
}
if (lastCommand == "playlist") {
if (message.includes("[ Playlist ]")) {
var playlist = new Array();
ogscript.putObject("playlistArray", playlist);
}
if (message.lastIndexOf("(") > 0) {
var item = message.substring(message.indexOf("-")+1, message.lastIndexOf("(")).trim();
var playlist = ogscript.getObject("playlistArray");
if (playlist != null) {
var end = playlist.length;
playlist[end] = (end + 1) + ". " + item;
ogscript.putObject("playlistArray", playlist);
}
}
if (message.includes("[ End of playlist ]")) {
ogscript.putObject("lastcommand", "");
updateConstraints();
}
}
}
}
else if (event.isDisconnectEvent())
{
var lObj = ogscript.getObject("listener-connection");
if (lObj == this)
{
ogscript.putObject("listener-connection", null);
}
}
function updateConstraints() {
var songs = ogscript.getObject("playlistArray");
var choiceConstraint = params.createIntChoiceConstraint(songs);
params.replaceConstraint("playlist", choiceConstraint);
}
function logMessage(inmessage) {
var today = new Date();
var min = ("00" + today.getMinutes()).slice (-2);
ogscript.debug("min is " + min);
var sec = ("00" + today.getSeconds()).slice (-2);
var time = today.getHours() + ":" + min + ":" + sec;
var newmessage = {
time: time,
message: inmessage
};
var count = params.getElementCount("message_log");
var p = params.getParam("message_log",0);
p.setValueAt(count, newmessage);
}</task>
</listener>
<api>function sendCommand(command) {
var listener = ogscript.getObject("listener-connection");
if (listener != null)
{
listener.writeString(command+"\n", false);
ogscript.putObject("lastcommand", command);
}
}</api>
<ogscript handles="onclick" targetid="playlistID">if (event.getClickCount() > 1) {
sendCommand("goto " + (params.getValue("playlist",0) + 1));
}</ogscript>
</meta>
<label height="60" left="40" name="VLC over TCP - Using Listener" style="txt-align:west;size:Bigger;" top="40" width="620"/>
<label height="20" left="40" name="This panel users a listener to establish a connection to a VLC player. " style="txt-align:west;" top="100" width="780"/>
<label height="20" left="40" name="VLC Host:" style="txt-align:west;" top="180" width="120"/>
<label height="20" left="40" name="VLC Port:" style="txt-align:west" top="220" width="140"/>
<label height="20" left="40" name="For this to work, VLC has to be started with the following arguments: vlc.exe --extraintf rc --rc-host localhost:2235 " style="txt-align:west;" top="140" width="700"/>
<button buttontype="push" height="60" left="320" name="Connect" top="180" width="140">
<task tasktype="ogscript">var ip = params.getValue('address', 0);
var port = params.getValue('port', 0);
var listener = ogscript.getListenerById('vlc');
if (!listener.isStarted())
{
listener.start();
}</task>
</button>
<param expand="true" height="20" left="120" oid="vlchost" showlabel="false" top="180" width="180"/>
<param expand="true" height="20" left="120" oid="vlcport" showlabel="false" top="220" width="180"/>
<button buttontype="push" height="40" left="40" name="Pause" top="280" width="100">
<task tasktype="ogscript">sendCommand("pause");</task>
</button>
<button buttontype="push" height="40" left="180" name="Next" top="280" width="100">
<task tasktype="ogscript">sendCommand("next");</task>
</button>
<button buttontype="push" height="40" left="300" name="Prev" top="280" width="100">
<task tasktype="ogscript">sendCommand("prev");</task>
</button>
<button buttontype="push" height="40" left="440" name="Goto" top="280" width="100">
<task tasktype="ogscript">sendCommand("goto " + params.getValue('goto', 0) + "\n");</task>
</button>
<param expand="true" height="20" left="480" oid="goto" showlabel="false" top="320" width="60"/>
<label height="20" left="440" name="Clip" style="txt-align:west;" top="320" width="60"/>
<button buttontype="push" height="40" left="40" name="Get Title" top="480" width="100">
<task tasktype="ogscript">sendCommand("get_title");</task>
</button>
<button buttontype="push" height="40" left="340" name="Get Time" top="480" width="80">
<task tasktype="ogscript">sendCommand("get_time");</task>
</button>
<button buttontype="push" height="40" left="440" name="Get Length" top="480" width="80">
<task tasktype="ogscript">sendCommand("get_length");</task>
</button>
<param expand="true" height="760" left="1020" oid="messages" showlabel="false" top="60" width="560"/>
<simplegrid height="380" left="700" top="420" width="540">
<param expand="true" oid="message_log" showlabel="false"/>
</simplegrid>
<button buttontype="push" height="40" left="700" name="Clear" top="820" width="120">
<task tasktype="ogscript">var newarray = new Array();
newarray[0] = {time:"0:00", message:"no messages"};
params.setAllValues("message_log", newarray);</task>
</button>
<button buttontype="push" height="40" left="300" name="Update Playlist" top="680" width="120">
<task tasktype="ogscript">sendCommand("playlist");</task>
</button>
<param expand="true" height="40" left="40" oid="title" showlabel="false" top="440" width="280"/>
<param expand="true" height="40" left="340" oid="current_time" showlabel="false" top="440" width="80"/>
<param expand="true" height="40" left="440" oid="clip_length" showlabel="false" top="440" width="80"/>
<abs height="180" left="40" scroll="true" top="680" width="240">
<param bottom="0" expand="true" id="playlistID" left="0" oid="playlist" right="0" showlabel="false" top="0"/>
</abs>
<label height="20" left="300" name="Double Click to Play" style="txt-align:west" top="720" width="240"/>
<button buttontype="push" height="40" left="40" name="Start Timer" top="540" width="120">
<task tasktype="timercontrol">ogscript.getTimerManager().getTimer('Monitor').startTimer(false);
ogscript.putObject("monitorrunning", true);
ogscript.rename("monitor", "Monitor is running");</task>
</button>
<button buttontype="push" height="40" left="160" name="Stop Timer" top="540" width="120">
<task tasktype="timercontrol">ogscript.getTimerManager().getTimer('Monitor').stopTimer(false);
ogscript.putObject("monitorrunning", false);
ogscript.rename("monitor", "Monitor is NOT running");</task>
</button>
<label height="20" id="monitor" left="300" style="txt-align:west" top="540" width="240"/>
<label height="20" left="40" name="We can send commands to the VLC player through the listener, and when a message is received from the VLC player, we can parse it and do something with the information." style="txt-align:west" top="120" width="1060"/>
<label height="20" left="40" name="The following buttons send messages through the listener: (the sendCommand function is in an API)" style="txt-align:west;" top="260" width="580"/>
<label height="20" left="40" name="The following section send commands that have a one line response. " style="txt-align:west;" top="360" width="580"/>
<label height="20" left="40" name="When the response is sent, we parse it in the listener and update some parameters." style="txt-align:west" top="380" width="560"/>
<label height="20" left="40" name="We also have a timer that can be run every second to request the data " style="txt-align:west" top="400" width="560"/>
<label height="20" left="40" name="The following section sends a command that has multiple lines of response." style="txt-align:west" top="600" width="580"/>
<label height="20" left="40" name="When the responses are sent, we parse them in the listener, " style="txt-align:west;" top="620" width="580"/>
<label height="20" left="700" name="These are the messages we are receiving from the VLC player" style="txt-align:west" top="180" width="460"/>
<ndi height="200" left="700" srcname="L-LONRCRUTWELL3 (VLC)" top="220" width="400"/>
</abs>
Setup with VLC:
Download VLC from:
https://www.videolan.org/vlc/index.html
Use these commands to start VLC:
1. cd "c:\Program Files (x86)\VideoLAN\VLC"
2. vlc.exe --extraintf rc --rc-host localhost:2235
------------------------------
Richard Crutwell
Ross Video UK
------------------------------
Original Message:
Sent: 02-03-2026 20:33
From: Simon Liddicott
Subject: HTTP Trigger Rename Button
Hi Richard.
Thanks for the response.
I'm not trying to send a trigger, but to find the value of a parameter by web api.
I thought that if I could rename a button to the parameter value I could parse that, but it doesn't update.
------------------------------
Simon Liddicott
Systems Engineer
Original Message:
Sent: 12-24-2025 06:32
From: Richard Crutwell
Subject: HTTP Trigger Rename Button
The webserver for this port creates a script that will send triggers if accessed in a browser, to send the same triggers insert '/ajax/' into the url before the trigger ID.
<!-- Panel with 4 buttons that trigger the GPI when clicked --><?xml version="1.0" encoding="UTF-8"?><abs contexttype="opengear" httptriggerport="12345" id="_top" keepalive="false"> <meta name="styles"> <style id="color_1" value="bdr#red;bdr:thick;"/> <style id="color_2" value="bdr#green;bdr:thick;"/> <style id="color_3" value="bdr#teal;bdr:thick;"/> <style id="color_4" value="bdr#orange;bdr:thick;"/> </meta> <abs height="300" id="border" left="10" top="10" width="300"> <table bottom="5" left="5" right="5" top="5"> <tr> <button buttontype="push" colspan="1" fill="both" gpi="color-1" name="Color 1" rowspan="1" style="bg#red;" weightx="1.0" weighty="1.0"> <task tasktype="ogscript">ogscript.setStyle('border', 'style:color_1');</task> </button> <button buttontype="push" colspan="1" fill="both" gpi="color-2" name="Color 2" rowspan="1" style="bg#green;" weightx="1.0" weighty="1.0"> <task tasktype="ogscript">ogscript.setStyle('border', 'style:color_2');</task> </button> </tr> <tr> <button buttontype="push" colspan="1" fill="both" gpi="color-3" name="Color 3" rowspan="1" style="bg#teal;" weightx="1.0" weighty="1.0"> <task tasktype="ogscript">ogscript.setStyle('border', 'style:color_3');</task> </button> <button buttontype="push" colspan="1" fill="both" gpi="color-4" name="Color 4" rowspan="1" style="bg#orange;" weightx="1.0" weighty="1.0"> <task tasktype="ogscript">ogscript.setStyle('border', 'style:color_4');</task> </button> </tr> </table> </abs></abs><!-- Panel to send a message to the GPI --><?xml version="1.0" encoding="UTF-8"?><abs contexttype="opengear" id="_top" keepalive="false"> <meta> <params> <param access="1" maxlength="0" name="host" oid="host" type="STRING" value="localhost" widget="default"/> <param access="1" maxlength="0" name="port" oid="port" type="STRING" value="12345" widget="default"/> <param access="1" maxlength="0" name="message" oid="message" type="STRING" value="color-3" widget="default"/> </params> </meta> <abs height="230" left="10" style="bdr#buttonbg;bdr:thick;" top="10" width="485"> <table bottom="5" left="5" right="5" top="5"> <tr> <simplegrid cols="2" colspan="1" fill="both" rowspan="1" weightx="1.0" weighty="1.0"> <label name="Host" style="txt-align:center"/> <param expand="true" oid="host" showlabel="false"/> </simplegrid> </tr> <tr> <simplegrid cols="2" colspan="1" fill="both" rowspan="1" weightx="1.0" weighty="1.0"> <label name="Port" style="txt-align:center"/> <param expand="true" oid="port" showlabel="false"/> </simplegrid> </tr> <tr> <simplegrid cols="2" colspan="1" fill="both" rowspan="1" weightx="1.0" weighty="1.0"> <label name="Message" style="txt-align:center"/> <param expand="true" oid="message" showlabel="false"/> </simplegrid> </tr> <tr> <button buttontype="push" colspan="1" fill="both" name="Send" rowspan="1" weightx="1.0" weighty="1.0"> <task tasktype="ogscript">var host = params.getValue('host', 0);var port = params.getValue('port', 0);var message = params.getValue('message', 0);// Construct URL for triggering the GPI: /ajax/{gpi-name}var url = 'http://' + host + ':' + port + '/ajax/' + message;function callback(result) { if (result) { ogscript.debug("[HTTP_Trigger] Error: " + JSON.stringify(result, null, 2)); } else { ogscript.debug("[HTTP_Trigger] Trigger sent successfully"); }}// Use GET method to trigger the GPI (matches the dashboard button behavior)ogscript.asyncHTTP(url, "GET", null, null, callback, true);</task> </button> </tr> </table> </abs></abs>
------------------------------
Richard Crutwell
Ross Video UK
Original Message:
Sent: 12-22-2025 11:30
From: Simon Liddicott
Subject: HTTP Trigger Rename Button
I can rename a panel element in DashBoard, but the button on the HTTP Trigger Web Page does not rename.
Is this expected behaviour?
What I'm really trying to do is use a web api to revel parameters without having to wrote my own handler.
Does that already exist?
Thanks
------------------------------
Simon
------------------------------