Facility Control

 View Only
Expand all | Collapse all

VDCP custom panel - Dashboard

  • 1.  VDCP custom panel - Dashboard

    Posted 11-09-2023 09:52

    Hello,

    I need to create a custom panel to control a server through VDCP protocol, however I didn't have success on it so far. 

    The customer has an old Ross server known as "SMS - Softmetal server" which only receives commands from VDCP protocol. It worked fine with his Vision swtcher, but since he recently bought a new Carbonite Ultra and TD panel, this automation will not longer work. Due to the TD panel sending commands only  via  the AMP protocol. So, I believe that I can overcome this issue developing an custom Dashboard Panel. 

    As I don't have this server in my lab, I'd like to develop a panel and test it using my Mira Xpress server, in this way I can simulate the functionalities. I've tried to use the panel attached, but it does not work so far. 

    If anyone could help me that would be amazing. 

    Thanks, 



    ------------------------------
    João victhor Mariano
    ------------------------------


  • 2.  RE: VDCP custom panel - Dashboard

    Posted 11-09-2023 10:38

    Hi João,

    Thanks for reaching out! Unfortunately, you cannot upload grid files to the DashBoard Community forum, I would recommend renaming the file and changing its extension to ".txt" or sharing the link of your custom panel hosted on Google Drive or One Drive. I look forward to finding a solution for you.

    Cheers



    ------------------------------
    Altaz Daruwala
    Ross Video
    ------------------------------



  • 3.  RE: VDCP custom panel - Dashboard

    Posted 11-09-2023 11:05

    Hi,

    I'm sorry for that. You'll find the script below. Thank you for your attention.

    <abs contexttype="opengear" style="bg-u:Images/Red.jpg;" virtualheight="1077" virtualwidth="1918">
       <timer id="ClipName1" pattern="HH:mm:ss" rate="1000">
          <timertask tasktype="ogscript">function callbackFunction1(success, cmd, result, exception)
    {
       if (success = 'true') {
          ogscript.rename('clipName1',result); //Update Channel 1 Clip Name in playout area
          params.setValue('Blackstorm.loadedClipName',0,result); //Store Channel 1 Clipname
          params.setValue('Blackstorm.Channel1State', 0, 0); //Set Channel 1 State to none
       }
    }

    var host = params.getValue('Blackstorm.IPAddress', 0); //Get IP Address
    var port = params.getValue('Blackstorm.PortNumber', 0); //Get Port Number
    var numOfChs = params.getValue('Blackstorm.NumOfChannels', 0); // Get the number of Channels
    var state = params.getValue('Blackstorm.Channel1State', 0); //Get the the Channel 1 state flag

    if (numOfChs &gt; 0) {
       if (state == 0) {
          vdcp.activeClip(host,port, 1, callbackFunction1);
          params.setValue('Blackstorm.Channel1State', 0, 1); //Set Channel 1 State to request
          ogscript.debug('Channel 1Requesting');
       }
    }</timertask>
       </timer>
       <timer id="ClipName4" pattern="HH:mm:ss" rate="1000">
          <timertask tasktype="ogscript">function callbackFunction4(success, cmd, result, exception)
    {
       if (success = 'true') {
          ogscript.rename('clipName4',result); //Update Channel 4 Clip Name in playout area
          params.setValue('Blackstorm.loadedClipName',3,result); //Store Channel 4 Clipname
          params.setValue('Blackstorm.Channel4State', 0, 0); //Set Channel 4 State to none
       }
    }

    var host = params.getValue('Blackstorm.IPAddress', 0); //Get IP Address
    var port = params.getValue('Blackstorm.PortNumber', 3); //Get Port Number
    var numOfChs = params.getValue('Blackstorm.NumOfChannels', 0); // Get the number of Channels
    var state = params.getValue('Blackstorm.Channel4State', 0); //Get the the Channel 4 state flag

    if (numOfChs &gt; 3) {
       if (state == 0) {
          vdcp.activeClip(host,port, 4, callbackFunction4);
          params.setValue('Blackstorm.Channel4State', 0, 1); //Set Channel 4 State to request
          ogscript.debug('Channel 4 Requesting');
       }
    }</timertask>
       </timer>
       <timer id="ClipName3" pattern="HH:mm:ss" rate="1000">
          <timertask tasktype="ogscript">function callbackFunction3(success, cmd, result, exception)
    {
       if (success = 'true') {
          ogscript.rename('clipName3',result); //Update Channel 3 Clip Name in playout area
          params.setValue('Blackstorm.loadedClipName',2,result); //Store Channel 3 Clipname
          params.setValue('Blackstorm.Channel3State', 0, 0); //Set Channel 3 State to none
       }
    }

    var host = params.getValue('Blackstorm.IPAddress', 0); //Get IP Address
    var port = params.getValue('Blackstorm.PortNumber', 2); //Get Port Number
    var numOfChs = params.getValue('Blackstorm.NumOfChannels', 0); // Get the number of Channels
    var state = params.getValue('Blackstorm.Channel3State', 0); //Get the the Channel 3 state flag

    if (numOfChs &gt; 2) {
       if (state == 0) {
          vdcp.activeClip(host,port, 3, callbackFunction3);
          params.setValue('Blackstorm.Channel3State', 0, 1); //Set Channel 3 State to request
          ogscript.debug('Channel 3 Requesting');
       }
    }</timertask>
       </timer>
       <timer id="ClipName2" pattern="HH:mm:ss" rate="1000">
          <timertask tasktype="ogscript">function callbackFunction2(success, cmd, result, exception)
    {
       if (success = 'true') {
          ogscript.rename('clipName2',result); //Update Channel 2 Clip Name in playout area
          params.setValue('Blackstorm.loadedClipName',1,result); //Store Channel 2 Clipname
          params.setValue('Blackstorm.Channel2State', 0, 0); //Set Channel 2 State to none
       }
    }

    var host = params.getValue('Blackstorm.IPAddress', 0); //Get IP Address
    var port = params.getValue('Blackstorm.PortNumber', 1); //Get Port Number
    var numOfChs = params.getValue('Blackstorm.NumOfChannels', 0); // Get the number of Channels
    var state = params.getValue('Blackstorm.Channel2State', 0); //Get the the Channel 2 state flag

    if (numOfChs &gt; 1) {
       if (state == 0) {
          vdcp.activeClip(host,port, 2, callbackFunction2);
          params.setValue('Blackstorm.Channel2State', 0, 1); //Set Channel 2 State to request
          ogscript.debug('Channel 2 Requesting');
       }
    }</timertask>
       </timer>
       
       <meta>
          <lookup code="true" id="GlobalScripts" multiline="true" name="Global Scripts">
             <entry key="LoadClip">function loadClip(channel){
       var ip = params.getValue('Blackstorm.IPAddress', 0); //Get IP Address
       var port = params.getValue('Blackstorm.PortNumber', (channel - 1)); //Get Port Number
       var fileExt = params.getValue('Flag.Extention', 0); //Get File extension flag
       var extension = params.getValue('Blackstorm.extension', 0);
       
       //Get the current selected line item in the displayed cliplist
       var clip_index = params.getValue('Blackstorm.ClipList',0); 
       //Get the String name of the selected clip
       var name = params.getIdentifiedConstraint('ClipListChoices').getStringOf(clip_index);
       
       if (fileExt) {
          name = name + extension;
       }
       //Update the currently selected clipname
       params.setValue('Blackstorm.loadedClipName', (channel - 1), name);

       ogscript.debug('Load Clip: '+name+' in to Channel: '+channel);
       //Cue the selected clip into the selected Channel
       function callbackFunction(success, cmd, result, exception)
       {
          if (success){
             ogscript.rename('status'+channel, 'Clip Loaded');
          }
       }
       vdcp.cueClip(ip, port, channel, name, callbackFunction);
    }</entry>
             <entry key="CueClip">function cueClip(channel){
       var ip = params.getValue('Blackstorm.IPAddress', 0);
       var port = params.getValue('Blackstorm.PortNumber', (channel - 1));
       var fileExt = params.getValue('Flag.Extention', 0); 
       var name = params.getValue('Blackstorm.loadedClipName', (channel - 1));
       //Recue the current loaded clip.
       function callbackFunction(success, cmd, result, exception)
       {
          if (success){
             ogscript.rename('status'+channel, 'Clip Cued');
          }
       }
       vdcp.cueClip(ip, port, channel, name, callbackFunction);
       ogscript.debug('Cue Clip: '+name+' in to Channel: '+channel);
    }</entry>
             <entry key="RewindClip">function revClip(channel){
       var ip = params.getValue('Blackstorm.IPAddress', 0);
       var port = params.getValue('Blackstorm.PortNumber', (channel - 1));
       //Rewind the current loaded clip.
       function callbackFunction(success, cmd, result, exception)
       {
          if (success){
             ogscript.rename('status'+channel, 'Clip Rewinding');
          }
       }
       vdcp.rewind(ip, port, channel, callbackFunction);
       ogscript.debug('Rewind Channel: '+channel);
    }</entry>
             <entry key="StopClip">function stopClip(channel){
       var ip = params.getValue('Blackstorm.IPAddress', 0);
       var port = params.getValue('Blackstorm.PortNumber', (channel - 1));
       //Stop the current loaded clip.
       function callbackFunction(success, cmd, result, exception)
       {
          if (success){
             ogscript.rename('status'+channel, 'Clip Ejected');
          }
       }
       vdcp.stop(ip, port, channel, callbackFunction);
       ogscript.debug('Stop Channel: '+channel);
    }</entry>
             <entry key="PlayClip">function playClip(channel){
       var ip = params.getValue('Blackstorm.IPAddress', 0);
       var port = params.getValue('Blackstorm.PortNumber', (channel - 1));
       //Play the current loaded clip.
       function callbackFunction(success, cmd, result, exception)
       {
          if (success){
             ogscript.rename('status'+channel, 'Clip Playing');
          }
       }
       vdcp.play(ip, port, channel, callbackFunction);
       ogscript.debug('Play Channel: '+channel);
    }</entry>
             <entry key="PauseClip">function pauseClip(channel){
       var ip = params.getValue('Blackstorm.IPAddress', 0);
       var port = params.getValue('Blackstorm.PortNumber', (channel - 1));
       //Pause the current loaded clip.
       function callbackFunction(success, cmd, result, exception)
       {
          if (success){
             ogscript.rename('status'+channel, 'Clip Paused');
          }
       }
       vdcp.pause(ip, port, channel, callbackFunction);
       ogscript.debug('Pause Channel: '+channel);
    }</entry>
             <entry key="FastForwardClip">function ffClip(channel){
       var ip = params.getValue('Blackstorm.IPAddress', 0);
       var port = params.getValue('Blackstorm.PortNumber', (channel - 1));
       //Fast Forward the current loaded clip.
       function callbackFunction(success, cmd, result, exception)
       {
          if (success){
             ogscript.rename('status'+channel, 'Clip Fast Forwarding');
          }
       }
       vdcp.fastForward(ip, port, channel, callbackFunction);
       ogscript.debug('Fast Forward Channel: '+channel);
    }</entry>
          </lookup>
          <lookup id="hosts">
             <entry key="BlackStorm.host">172.16.7.178</entry>
             <entry key="BlackStorm.port">50103</entry>
             <entry key="XPNBVS.host">10.0.200.91</entry>
             <entry key="XPNBVS.port">50103</entry>
          </lookup>
          <constraint constrainttype="INT_CHOICE" id="ClipListChoices" precision="0">
             <constraint key="0">Choices Not Loaded</constraint>
          </constraint>
          <params>
             <param access="1" maxlength="0" name="IP Address" oid="Blackstorm.IPAddress" type="STRING" value="10.65.1.174" widget="0"/>
             <param access="1" constrainttype="INT_CHOICE" name="Clip List" oid="Blackstorm.ClipList" precision="0" strvalue="List Not Loaded" type="INT32" value="690" widget="7">
                <constraint key="0">List Not Loaded</constraint>
             </param>
             <param access="1" maxlength="0" name="Port Number" oid="Blackstorm.PortNumber" precision="0" type="STRING_ARRAY" widget="0">
                <value>50103</value>
                <value>50104</value>
                <value>50105</value>
                <value>50106</value>
             </param>
             <param access="1" maxlength="0" name="Clip Names" oid="Blackstorm.loadedClipName" precision="0" type="STRING_ARRAY" widget="0">
                <value>WJR's Timeout</value>
                <value>WJr's Post Replay</value>
                <value>World Jrs Empty Net Post</value>
                <value>World Jrs Empty Net Replay</value>
             </param>
             <param access="1" constrainttype="INT_CHOICE" name="File Extention" oid="Flag.Extention" precision="0" strvalue="OFF" type="INT16" value="0" widget="0">
                <constraint key="0">OFF</constraint>
                <constraint key="1">ON</constraint>
             </param>
             <param access="1" maxlength="0" name="Extension" oid="Blackstorm.extension" type="STRING" value=".mov" widget="0"/>
             <param access="1" constrainttype="INT_CHOICE" name="Number of Channels" oid="Blackstorm.NumOfChannels" precision="0" strvalue="0" type="INT16" value="0" widget="0">
                <constraint key="0">0</constraint>
                <constraint key="1">1</constraint>
                <constraint key="2">2</constraint>
                <constraint key="3">3</constraint>
                <constraint key="4">4</constraint>
             </param>
             <param access="1" constrainttype="INT_CHOICE" name="Channel 1 State" oid="Blackstorm.Channel1State" precision="0" type="INT16" value="0" widget="default">
                <constraint key="0">None</constraint>
                <constraint key="1">Request</constraint>
             </param>
             <param access="1" constrainttype="INT_CHOICE" name="Channel 2 State" oid="Blackstorm.Channel2State" precision="0" type="INT16" value="0" widget="default">
                <constraint key="0">None</constraint>
                <constraint key="1">Request</constraint>
             </param>
             <param access="1" constrainttype="INT_CHOICE" name="Channel 3 State" oid="Blackstorm.Channel3State" precision="0" type="INT16" value="0" widget="default">
                <constraint key="0">None</constraint>
                <constraint key="1">Request</constraint>
             </param>
             <param access="1" constrainttype="INT_CHOICE" name="Channel 4 State" oid="Blackstorm.Channel4State" precision="0" type="INT16" value="0" widget="default">
                <constraint key="0">None</constraint>
                <constraint key="1">Request</constraint>
             </param>
          </params>
          <style id="TitleLabel" name="TitleLabel" value="bdr#000000;size:20;bg#393939;"/>
          <style id="ParamLabel" name="ParamLabel" value="size:Big;bg#dark;txt-align:center;bdr:etched;"/>
          <ogscript handles="onchange" oid="Blackstorm.NumOfChannels">for (var i = 1; i &lt; 5; i++)
    {
       ogscript.hide('Channel'+i);
    }

    var numOfChs = params.getValue('Blackstorm.NumOfChannels', 0);

    if (numOfChs == 1){
       ogscript.reveal('Channel1');
    }else if (numOfChs == 2) {
       ogscript.reveal('Channel1');
       ogscript.reveal('Channel2');
    }else if (numOfChs == 3) {
       ogscript.reveal('Channel1');
       ogscript.reveal('Channel2');
       ogscript.reveal('Channel3');
    }else if (numOfChs == 4) {
       ogscript.reveal('Channel1');
       ogscript.reveal('Channel2');
       ogscript.reveal('Channel3');
       ogscript.reveal('Channel4');
    }</ogscript>
          <ogscript handles="onload" name="Reset Channel States">params.setValue('Blackstorm.Channel1State', 0, 0);
    params.setValue('Blackstorm.Channel2State', 0, 0);
    params.setValue('Blackstorm.Channel3State', 0, 0);
    params.setValue('Blackstorm.Channel4State', 0, 0);
    </ogscript>
       </meta>
       <label height="84" left="717" name="DashBoard VDCP" right="727" style="size:30;bg#3E3C3C;font:bold;txt-align:center;bdr:etched;" top="11"/>
       <abs height="962" left="15" style="bg#panelbg;bdr:etched;" top="101" virtualheight="962" virtualwidth="936" width="936">
          
          <button buttontype="push" height="104" left="23" name="Load Clip List" top="198" width="886">
             <task tasktype="ogscript">function myFunc(success, cmd, result, exception)
    {
       ogscript.debug("List Clips callback: " + success);
       var list = params.createIntChoiceConstraint(result); //Create a choice constraint with the results of the clip list
       params.replaceIdentifiedConstraint('ClipListChoices', list); //Replace the old list with the new clip list
       ogscript.reload('ClipSelector'); //Refresh the Clip List display
    }

    var ip = params.getValue('Blackstorm.IPAddress', 0);
    var port = params.getValue('Blackstorm.PortNumber', 0);
    //Get the cliplist from the server run 'myFunc'
    vdcp.listClips(ip, port, myFunc);

    ogscript.debug ("List Clips Sent. IP Address: " + ip);</task>
          </button>
          <table height="409" left="23" top="314" width="886">
             <tr>
                <label colspan="1" fill="both" height="35" insets="2,2,2,2" name="Clip List" rowspan="1" style="style:ParamLabel;txt-align:center;" weightx="1.0" weighty="0.2" width="545"/>
             </tr>
             <tr>
                <param anchor="west" constraint="ClipListChoices" constrainttype="ID_REFERENCE" fill="both" height="277" id="ClipSelector" insets="2,2,2,2" oid="Blackstorm.ClipList" precision="0" scroll="vertical" showlabel="false" style="bdr:none;" weightx="1.0" weighty="1.0" widget="35" width="545"/>
             </tr>
          </table>
          <table height="99" left="30" top="835" width="872">
             <tr>
                <button buttontype="push" colspan="1" fill="both" height="60" name="Load to Channel 1" rowspan="1" weightx="1.0" weighty="1.0" width="322">
                   <task tasktype="ogscript">%const['GlobalScripts']['LoadClip']%

    loadClip(1);</task>
                </button>
                <button buttontype="push" colspan="1" fill="both" height="60" name="Load to Channel 2" rowspan="1" weightx="1.0" weighty="1.0" width="322">
                   <task tasktype="ogscript">%const['GlobalScripts']['LoadClip']%

    loadClip(2);</task>
                </button>
                <button buttontype="push" colspan="1" fill="both" height="60" name="Load to Channel 3" rowspan="1" weightx="1.0" weighty="1.0" width="322">
                   <task tasktype="ogscript">%const['GlobalScripts']['LoadClip']%

    loadClip(3);</task>
                </button>
                <button buttontype="push" colspan="1" fill="both" height="60" name="Load to Channel 4" rowspan="1" weightx="1.0" weighty="1.0" width="322">
                   <task tasktype="ogscript">%const['GlobalScripts']['LoadClip']%

    loadClip(4);</task>
                </button>
             </tr>
          </table>
          <table height="92" left="684" top="733" width="210">
             <tr>
                <table colspan="1" fill="both" height="25" insets="2,2,2,2" name="" rowspan="1" style="txt-align:center;" weightx="1.0" weighty="1.0">
                   <tr>
                      <label colspan="1" fill="both" height="37" name="Add Extension:" rowspan="1" style="txt-align:west;" weightx="1.0" weighty="1.0" width="131"/>
                      <param colspan="1" element="0" fill="both" height="37" oid="Blackstorm.extension" rowspan="1" showlabel="false" weightx="1.0" weighty="1.0" width="131"/>
                   </tr>
                </table>
             </tr>
             <tr>
                <param colspan="1" expand="true" fill="both" insets="2,2,2,2" oid="Flag.Extention" rowspan="1" showlabel="false" weightx="1.0" weighty="1.0"/>
             </tr>
          </table>
          <label height="99" html="true" left="36" scroll="vertical" style="bdr:shadow;" top="732" width="637"><![CDATA[
    Some VDCP devices display clip lists without file extensions, but require them to load clips.
    If needed type the file extension in the field to the left and select On. 
    The 'useFileExtensionVDCP' parameter on Blackstorm can be found C:\Ross\Blackstorm\ControllerPortsConfig.xml (default is set to false).
    ]]></label>
       <table height="175" left="23" top="20" width="876">
             <tr>
                <label colspan="1" fill="both" height="57" insets="2,2,2,2" name="Number of Channels:" rowspan="1" style="style:TitleLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="424"/>
                <param colspan="1" expand="true" fill="both" height="57" insets="2,2,2,2" oid="Blackstorm.NumOfChannels" rowspan="1" showlabel="false" weightx="1.0" weighty="1.0" width="424"/>
             </tr>
             <tr>
                <label colspan="1" fill="both" height="57" insets="2,2,2,2" name="IP Address:" rowspan="1" style="style:TitleLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="424"/>
                <param colspan="1" expand="true" fill="both" height="57" insets="2,2,2,2" oid="Blackstorm.IPAddress" rowspan="1" showlabel="false" weightx="1.0" weighty="1.0" width="424"/>
             </tr>
             <tr>
                <label colspan="1" fill="both" height="57" insets="2,2,2,2" name="Port Numbers:" rowspan="1" style="style:TitleLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="424"/>
                <table colspan="1" fill="both" height="57" insets="2,2,2,2" rowspan="1" weightx="1.0" weighty="1.0" width="424">
                   <tr>
                      <abs colspan="1" fill="both" height="52" insets="0,2,0,2" rowspan="1" weightx="1.0" weighty="1.0" width="76">
                         <abs bottom="0" id="Port1" left="0" name="Port1" right="0" top="0" visible="true">
                            <table bottom="0" left="0" right="0" top="0">
                               <tr>
                                  <label colspan="1" fill="both" name="Channel 1" rowspan="1" style="txt-align:center" weightx="1.0" weighty="1.0"/>
                               </tr>
                               <tr>
                                  <param colspan="1" element="0" fill="both" oid="Blackstorm.PortNumber" rowspan="1" showlabel="false" weightx="1.0" weighty="1.0"/>
                               </tr>
                            </table>
                         </abs>
                      </abs>
                      <abs colspan="1" fill="both" height="52" insets="0,2,0,2" rowspan="1" weightx="1.0" weighty="1.0" width="76">
                         <abs bottom="0" id="Port2" left="0" name="Port2" right="0" top="0" visible="true">
                            <table bottom="0" left="0" right="0" top="0">
                               <tr>
                                  <label colspan="1" fill="both" name="Channel 2" rowspan="1" style="txt-align:center" weightx="1.0" weighty="1.0"/>
                               </tr>
                               <tr>
                                  <param colspan="1" element="1" fill="both" oid="Blackstorm.PortNumber" rowspan="1" showlabel="false" weightx="1.0" weighty="1.0"/>
                               </tr>
                            </table>
                         </abs>
                      </abs>
                      <abs colspan="1" fill="both" height="52" insets="0,2,0,2" rowspan="1" weightx="1.0" weighty="1.0" width="76">
                         <abs bottom="0" id="Port3" left="0" name="Port3" right="0" top="0" visible="true">
                            <table bottom="0" left="0" right="0" top="0">
                               <tr>
                                  <label colspan="1" fill="both" name="Channel 3" rowspan="1" style="txt-align:center" weightx="1.0" weighty="1.0"/>
                               </tr>
                               <tr>
                                  <param colspan="1" element="2" fill="both" oid="Blackstorm.PortNumber" rowspan="1" showlabel="false" weightx="1.0" weighty="1.0"/>
                               </tr>
                            </table>
                         </abs>
                      </abs>
                      <abs colspan="1" fill="both" height="52" insets="0,2,0,2" rowspan="1" weightx="1.0" weighty="1.0" width="76">
                         <abs bottom="0" id="Port4" left="0" name="Port4" right="0" top="0" visible="true">
                            <table bottom="0" left="0" right="0" top="0">
                               <tr>
                                  <label colspan="1" fill="both" name="Channel 4" rowspan="1" style="txt-align:center" weightx="1.0" weighty="1.0"/>
                               </tr>
                               <tr>
                                  <param colspan="1" element="3" fill="both" oid="Blackstorm.PortNumber" rowspan="1" showlabel="false" weightx="1.0" weighty="1.0"/>
                               </tr>
                            </table>
                         </abs>
                      </abs>
                   </tr>
                </table>
             </tr>
          </table>
       </abs>
       <abs height="87" left="1654" style="bg-u:platform:/plugin/com.rossvideo.common.oglml/patterns/ross-150.png;bg-align:center;bg-fill:shrink;" top="11" virtualheight="87" virtualwidth="252" width="252"/>
       <abs height="90" left="18" style="bg-u:Images/BlackStorm_sm.png;bg-align:center;bg-fill:none;" top="11" virtualheight="90" virtualwidth="333" width="333"/>
       <table height="962" id="Table Test" left="959" top="101" width="946">
          <tr>
             <abs colspan="1" fill="both" height="253" id="" insets="2,0,2,0" name="" rowspan="1" style="bg#panelbg;bdr:etched;" virtualheight="237" virtualwidth="946" visible="false" weightx="1.0" weighty="1.0" width="946">
                <table height="59" left="26" top="19" width="897">
                   <tr>
                      <label colspan="1" fill="both" height="90" id="" insets="2,2,2,2" name="" rowspan="1" style="txt-align:center;" weightx="1.0" weighty="1.0" width="184"/>
                   </tr>
                </table>
                <abs bottom="0" colspan="1" fill="both" id="Channel1" left="0" name="" right="0" rowspan="1" style="bg#panelbg;bdr:etched;" top="0" virtualheight="224" virtualwidth="847" visible="false" weightx="1.0" weighty="1.0">
                   <table height="86" left="14" top="12" width="817">
                      <tr>
                         <label colspan="1" fill="both" height="90" insets="2,0,2,0" name="Channel 1: " rowspan="1" style="style:TitleLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="170"/>
                         <label colspan="1" fill="both" height="90" id="clipName1" insets="2,2,2,2" name="" rowspan="1" style="style:ParamLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="170"/>
                      </tr>
                      <tr>
                         <label colspan="1" fill="both" height="90" insets="2,0,2,0" name="Status: " rowspan="1" style="style:TitleLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="170"/>
                         <label colspan="1" fill="both" height="90" id="status1" insets="2,2,2,2" name="" rowspan="1" style="style:ParamLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="170"/>
                      </tr>
                   </table>
                   <table height="107" left="14" top="104" width="811">
                      <tr>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgCueClip.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['CueClip']%

    cueClip(1);</task>
                         </button>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgRewind.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['RewindClip']%

    revClip(1);</task>
                         </button>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgStop.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['StopClip']%

    stopClip(1);</task>
                         </button>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgPlay.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['PlayClip']%

    playClip(1);</task>
                         </button>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgPause.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['PauseClip']%

    pauseClip(1);</task>
                         </button>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgFastForward.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['FastForwardClip']%

    ffClip(1);</task>
                         </button>
                      </tr>
                   </table>
                </abs>
             </abs>
          </tr>
          <tr>
             <abs colspan="1" fill="both" height="253" id="" insets="2,0,2,0" name="" rowspan="1" style="bg#panelbg;bdr:etched;" virtualheight="237" virtualwidth="946" visible="false" weightx="1.0" weighty="1.0" width="946">
                <table height="59" left="26" top="19" width="897">
                   <tr>
                      <label colspan="1" fill="both" height="90" id="" insets="2,2,2,2" name="" rowspan="1" style="txt-align:center;" weightx="1.0" weighty="1.0" width="184"/>
                   </tr>
                </table>
                <abs bottom="0" colspan="1" fill="both" id="Channel2" left="0" name="" right="0" rowspan="1" style="bg#panelbg;bdr:etched;" top="0" virtualheight="224" virtualwidth="847" visible="false" weightx="1.0" weighty="1.0">
                   <table height="86" left="14" top="12" width="817">
                      <tr>
                         <label colspan="1" fill="both" height="90" insets="2,0,2,0" name="Channel 2: " rowspan="1" style="style:TitleLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="170"/>
                         <label colspan="1" fill="both" height="90" id="clipName2" insets="2,2,2,2" name="" rowspan="1" style="style:ParamLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="170"/>
                      </tr>
                      <tr>
                         <label colspan="1" fill="both" height="90" insets="2,0,2,0" name="Status: " rowspan="1" style="style:TitleLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="170"/>
                         <label colspan="1" fill="both" height="90" id="status2" insets="2,2,2,2" name="" rowspan="1" style="style:ParamLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="170"/>
                      </tr>
                   </table>
                   <table height="107" left="14" top="104" width="811">
                      <tr>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgCueClip.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['CueClip']%

    cueClip(2);</task>
                         </button>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgRewind.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['RewindClip']%

    revClip(2);</task>
                         </button>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgStop.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['StopClip']%

    stopClip(2);</task>
                         </button>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgPlay.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['PlayClip']%

    playClip(2);</task>
                         </button>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgPause.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['PauseClip']%

    pauseClip(2);</task>
                         </button>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgFastForward.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['FastForwardClip']%

    ffClip(2);</task>
                         </button>
                      </tr>
                   </table>
                </abs>
             </abs>
          </tr>
          <tr>
             <abs colspan="1" fill="both" height="253" id="" insets="2,0,2,0" name="" rowspan="1" style="bg#panelbg;bdr:etched;" virtualheight="237" virtualwidth="946" visible="false" weightx="1.0" weighty="1.0" width="946">
                <table height="59" left="26" top="19" width="897">
                   <tr>
                      <label colspan="1" fill="both" height="90" id="" insets="2,2,2,2" name="" rowspan="1" style="txt-align:center;" weightx="1.0" weighty="1.0" width="184"/>
                   </tr>
                </table>
                <abs bottom="0" colspan="1" fill="both" id="Channel3" left="0" name="" right="0" rowspan="1" style="bg#panelbg;bdr:etched;" top="0" virtualheight="224" virtualwidth="847" visible="false" weightx="1.0" weighty="1.0">
                   <table height="86" left="14" top="12" width="817">
                      <tr>
                         <label colspan="1" fill="both" height="90" insets="2,0,2,0" name="Channel 3: " rowspan="1" style="style:TitleLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="170"/>
                         <label colspan="1" fill="both" height="90" id="clipName3" insets="2,2,2,2" name="" rowspan="1" style="style:ParamLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="170"/>
                      </tr>
                      <tr>
                         <label colspan="1" fill="both" height="90" insets="2,0,2,0" name="Status: " rowspan="1" style="style:TitleLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="170"/>
                         <label colspan="1" fill="both" height="90" id="status3" insets="2,2,2,2" name="" rowspan="1" style="style:ParamLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="170"/>
                      </tr>
                   </table>
                   <table height="107" left="14" top="104" width="811">
                      <tr>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgCueClip.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['CueClip']%

    cueClip(3);</task>
                         </button>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgRewind.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['RewindClip']%

    revClip(3);</task>
                         </button>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgStop.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['StopClip']%

    stopClip(3);</task>
                         </button>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgPlay.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['PlayClip']%

    playClip(3);</task>
                         </button>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgPause.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['PauseClip']%

    pauseClip(3);</task>
                         </button>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgFastForward.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['FastForwardClip']%

    ffClip(3);</task>
                         </button>
                      </tr>
                   </table>
                </abs>
             </abs>
          </tr>
          <tr>
             <abs colspan="1" fill="both" height="253" id="" insets="2,0,2,0" name="" rowspan="1" style="bg#panelbg;bdr:etched;" virtualheight="237" virtualwidth="946" visible="false" weightx="1.0" weighty="1.0" width="946">
                <table height="59" left="26" top="19" width="897">
                   <tr>
                      <label colspan="1" fill="both" height="90" id="" insets="2,2,2,2" name="" rowspan="1" style="txt-align:center;" weightx="1.0" weighty="1.0" width="184"/>
                   </tr>
                </table>
                <abs bottom="0" colspan="1" fill="both" id="Channel4" left="0" name="" right="0" rowspan="1" style="bg#panelbg;bdr:etched;" top="0" virtualheight="224" virtualwidth="847" visible="false" weightx="1.0" weighty="1.0">
                   <table height="86" left="14" top="12" width="817">
                      <tr>
                         <label colspan="1" fill="both" height="90" insets="2,0,2,0" name="Channel 4: " rowspan="1" style="style:TitleLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="170"/>
                         <label colspan="1" fill="both" height="90" id="clipName4" insets="2,2,2,2" name="" rowspan="1" style="style:ParamLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="170"/>
                      </tr>
                      <tr>
                         <label colspan="1" fill="both" height="90" insets="2,0,2,0" name="Status: " rowspan="1" style="style:TitleLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="170"/>
                         <label colspan="1" fill="both" height="90" id="status4" insets="2,2,2,2" name="" rowspan="1" style="style:ParamLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="170"/>
                      </tr>
                   </table>
                   <table height="107" left="14" top="104" width="811">
                      <tr>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgCueClip.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['CueClip']%

    cueClip(4);</task>
                         </button>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgRewind.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['RewindClip']%

    revClip(4);</task>
                         </button>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgStop.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['StopClip']%

    stopClip(4);</task>
                         </button>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgPlay.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['PlayClip']%

    playClip(4);</task>
                         </button>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgPause.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['PauseClip']%

    pauseClip(4);</task>
                         </button>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgFastForward.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['FastForwardClip']%

    ffClip(4);</task>
                         </button>
                      </tr>
                   </table>
                </abs>
             </abs>
          </tr>
       </table>

    </abs>



    ------------------------------
    João victhor Mariano
    ------------------------------



  • 4.  RE: VDCP custom panel - Dashboard

    Posted 11-13-2023 17:14

    Hello Altaz,

    Did you have a chance to check my panel? Unfortunately I have not made any progress in the last few days. 

    Thanks, 



    ------------------------------
    João victhor Mariano
    ------------------------------



  • 5.  RE: VDCP custom panel - Dashboard

    Posted 11-13-2023 17:20

    Hii João,

    Unfortunately, I am still looking for a solution. I am reaching out to others on the team and will try to find a solution as soon as possible. Sorry for the delay.

    Best Regards,



    ------------------------------
    Altaz Daruwala
    Ross Video
    ------------------------------



  • 6.  RE: VDCP custom panel - Dashboard

    Posted 11-14-2023 03:11
      |   view attached

    Hey João

    I have some good news. Both paths are open to you. AMP via the Carbonite or using the VDCP panel you sent. 

    I have a setup sheet for using AMP with SoftMetal which I have attached to this email. Its was written for the older Carbonites but i think it still translates to TouchDrive with out too much difficulty. 

    If you wanted to persist with the VDCP route you just have to use the dropdown at the top of the page to add as many channels (simultaneous playbacks) you want to use. Then add the SoftMetals IP address then for each channel the port number starts 50103 for channel 1 50104 for channel 2 all the way to 50110 for channel 8. Note if you are using Mira you will need to use port 8000 for channel A 8001 for channel B etc. 

    Once connected you should see the buttons required (if the images are also downloaded) this Dashboard U video was the original panel from the one you sent. https://www.rossvideo.com/resources/ross-university/using-vdcp/ if your panel doesnt work try loading the file on this page. 

    Hope that puts you on the right path. 

    Jack 



    ------------------------------
    Jack Horry
    Product Manager
    DashBoard, PowerPlay, Lightning
    Ross Video | Living Live
    ------------------------------

    Attachment(s)



  • 7.  RE: VDCP custom panel - Dashboard

    Posted 11-14-2023 07:55

    Hello Jack,

    First of all, thank you for your attention in this case. 

    Ok,understood. So I'll try the two solutions you sent me and verify which one best suits the customer's operation. 

    Thanks, 



    ------------------------------
    João victhor Mariano
    ------------------------------



  • 8.  RE: VDCP custom panel - Dashboard

    Posted 11-14-2023 10:42
      |   view attached

    Hi João,

    Hope Jack's answer was helpful to you. Just to add, the VDCP library in DashBoard was built around those servers, so it should be supported. Here is a Custom Panel that uses VDCP commands that should help you build your panel. Please be careful about using the right ports.

    Best Regards,



    ------------------------------
    Altaz Daruwala
    Ross Video
    ------------------------------

    Attachment(s)

    txt
    VDCP Tester.grid.txt   4 KB 1 version


  • 9.  RE: VDCP custom panel - Dashboard

    Posted 11-14-2023 16:31

    Hi Altaz,

    I didn't test the Jack's answers yet, but I'll certainly test you panel too. 

    Regarding this custom panel, Can I assign the server IP address on the "Host field" ? 

    Thanks, 


    ------------------------------
    João victhor Mariano
    ------------------------------



  • 10.  RE: VDCP custom panel - Dashboard

    Posted 11-15-2023 15:24

    Hi João,

    Yes, you can assign the hostname or ip. 

    Here is a Similar thread on the community regarding the same topic.

    Cheers,

    Aury Rukazana
    DashBoard Team



    ------------------------------
    Aury Rukazana
    Senior Software Developer
    Ross Video
    ------------------------------



  • 11.  RE: VDCP custom panel - Dashboard

    Posted 11-16-2023 09:22

    Hi Aury,

    I tested the two panels suggested by Altaz and Jack, but I did not have success on it. In both cases the playlist isnot loaded.

    Looking at the photos above, Am I doing something wrong ?
    Thanks, 


    ------------------------------
    João victhor Mariano
    ------------------------------



  • 12.  RE: VDCP custom panel - Dashboard

    Posted 11-16-2023 10:50

    Hi João,

    Can you attach your custom panel to this conversation so I can have a look?

    Thanks,
    Aury



    ------------------------------
    Aury Rukazana
    Senior Software Developer
    Ross Video
    ------------------------------



  • 13.  RE: VDCP custom panel - Dashboard

    Posted 11-16-2023 10:59
      |   view attached

    Hi,

    Yes,sure. 

    Thanks.



    ------------------------------
    João victhor Mariano
    ------------------------------

    Attachment(s)

    txt
    VDCP-JOAO.txt   37 KB 1 version


  • 14.  RE: VDCP custom panel - Dashboard

    Posted 11-16-2023 13:24

    Hi,

    Your panel looks good, I think it could be a connection issue (probably firewall). The next steps would be to contact technical support for further investigations.

    Thank you,

    Aury.



    ------------------------------
    Aury Rukazana
    Senior Software Developer
    Ross Video
    ------------------------------