{"text_format":"1","workbook":"xlsx","n_sheets":9,"sheets":["Getting Started","Setup","Script","Results Data","Trace Data","Calc","Report","Version","Utils"],"not_rendered":{"charts":3,"images":1,"macros":1,"external_links":0,"defined_names":1,"comments":0,"pivot_tables":0},"unopened":[],"bounds":{"document_bytes":16777216,"sheet_cells":100000,"rows_first":2000,"rows_last":500,"rows_between":2000,"halvings":0,"cell_chars":16384,"cell_head_chars":4096},"cells_cut":0,"cells_raw":0,"read":"whole","date_system":"1900"}

{"sheet":"Getting Started","index":0,"n_rows":304,"n_cols":1,"rows_kept":304,"cut":false,"hidden":false,"merged":[]}
["VIAVI Instrument Programming Tool - Getting Started"]
[]
["Note:  The VIP Tool option must be installed on the test set for the VIP Tool™ to operate."]
["To purchase the VIP Tool option, please contact a VIAVI Solutions Radio Test Sales Expert with your model and serial number. "]
["Find your closest Radio Test Sales Expert"]
[]
["The VIP Tool™ provides a method to efficiently connect to a VIAVI instrument through an Ethernet socket and control the "]
[" instrument using remote commands entered into the Scripts worksheet to control and receive data from the instrument."]
["The commands can be placed in sequence to build an automated test routine."]
[]
["Warranties: The Viavi Instrument Programming Tool (“VIP Tool”) is provided “as-is.”  There are no warranties, either express,"]
["implied, contractual, or statutory with respect to the merchantability or fitness applicable to the VIP Tool.  The user agrees that no "]
["warranty has been expressed or implied by VIAVI and that the user understands that the VIP Tool is being  provided “as-is.”  The"]
["user hereby expressly waives any claim for incidental or consequential damages, including damages to connected equipment,"]
["from use of the VIP Tool."]
[]
["VIAVI VIP Tool License Agreement"]
[]
["Table of Contents"]
["Introduction to the VIP Tool"]
["The VIP Tool Ribbon"]
["The Embedded Worksheets"]
["The Report Worksheets"]
["The Setup Worksheet"]
["The Script Worksheet"]
["The Results Data Worksheet"]
["The Trace Data Worksheet"]
["Editing and Executing a Script"]
["VIP Tool Resources"]
["VIAVI RCI Document Resources"]
[]
["Introduction to the VIP Tool"]
["The VIP Tool provides a method to connect to and control a VIAVI instrument through a TCP/IP socket.  The VIP Tool allows the "]
["user to create and edit a script that can then be used to programmatically perform automated tasks with the instrument."]
[]
["A script consists of RCI commands, which control the instrument, and VIAVI Instrument Programming keywords that are used to "]
["control the flow and output of the script."]
[]
["The VIAVI Instrument Programming Language provides syntax that allows responses from the tool  to be sent and easily organized "]
["on a separate sheet within the VIP Tool workbook.  An additional output of the VIP Tool is an organized sheet of trace data "]
["generated by the instrument when it is queried for such data.  Trace data consists of the data that are used to create the various "]
["graphs displayed on the instrument such as Channel Analyzer, Oscilloscope, Distribution plots, etc."]
[]
["The VIP Tool currently supports operation with the VIAVI 3900 Series, 8800 Series and 3550 series of radio test sets."]
[]
["Back to Top"]
[]
["The VIP Tool Ribbon"]
["The VIP Tool Ribbon contains the controls for operating the VIP Tool.  The controls that appear on the ribbon are context"]
["specific,  depending on which VIP Tool sheet is selected for view.  For example, the Script sheet ribbon will contain all of the "]
["controls for creating, editing and debugging scripts.  The Setup sheet ribbon will contain controls for setting up a connection to the"]
[" instrument and for configuring paths to save and load various types of files.  A report sheet ribbon will contain controls for editing "]
["report sheets, such as showing and hiding tags, and for saving the report to PDF or CSV formats."]
[]
["Back to Top"]
[]
["The Embedded Worksheets"]
["The VIP Tool workbook contains of five embedded worksheets:"]
["1.  This Getting Started sheet."]
["2.  The Setup worksheet is used to configure the connection to the instrument and set paths for files"]
["3.  The Script worksheet is used for editing and debugging the script."]
["4.  The Results Data worksheet is used to monitor measurement data. "]
["5.  The Trace Data worksheet is used to store trace data returned from the instrument when a trace query command is executed."]
[]
["The Report Worksheets"]
["Unlike the embedded worksheets, Report worksheets are not write protected and can be freely edited, deleted and imported."]
["Report sheets are intended for two functions:  creating reports and reserving a sheet to perform Excel calculations used by the "]
["script.  When first downloaded, the VIP Tool worksheet contains two report reports sheets - one sheet is named 'Calc' and the"]
["other sheet is named 'Report'.  Other sheets can be imported using the Import XLS Sheet button on the Script sheet Tool Ribbon."]
[]
["Back to Top"]
[]
["The Setup Worksheet"]
["The Setup Worksheet provides the means to configure the connection setup, default paths for various files, and whether a saved "]
["PDF report opens immediately in a local PDF viewer or is saved in the background.  The title of test reports and which sheet"]
["will be saved as a report are also configured on the Setup Sheet."]
[]
["To configure the connection to an instrument, these steps must be followed:"]
[]
["1.  Select the instrument model to connect to from the Select Model dropdown menu."]
["2.  Enter the IP address of the instrument into the IP field.  An example IP address is 10.10.10.104"]
["3.  The port number is automatically selected, based upon the model selected.  However, if 39XX is selected as the model, be"]
["sure to check that its port number is set to the port number displayed in the 39XX Port Number field.  The 39XX port number "]
["can be set to a different value on the instrument itself.  There are instructions for checking the 39XX port number on the "]
["instrument on the Setup sheet."]
[]
["After entering values in either the IP Address or 39XX Port fields, be sure to press the ENTER key or click outside of the field"]
["to ensure the setting has been entered into the worksheet.  Until the settings have been fully entered through this action, the VIP Tool"]
["cannot connect to the instrument."]
[]
["Once the IP address and Port number are configured, the Check Connection button on the VIP Tool Ribbon can be pressed "]
[" to verify that the program is able to communicate with the instrument.  If the connection is successful, it is verified  by a message"]
[" box, and the instrument serial number and software version will be displayed in the Serial Number and Software Version fields"]
["on the Setup worksheet.  If, however, the VIP Tool cannot communicate with the instrument, the message \"Connection "]
["Unsuccessful\" will appear.  It may take up to 20 seconds for this message to appear if the VIP Tool cannot succesfully connect"]
["to the instrument."]
[]
[]
["Back to Top"]
[]
["The Script Worksheet"]
["The Command and Argument Columns"]
["The Script worksheet is used for assembling sequences of commands, queries and keywords into a script, editing the script, and"]
[" running the script.  It consists of four columns.  The number of rows for entering control commands is the maximum number of rows"]
["allowed by Excel."]
[]
["In general, SCPI RCI commands consist of a command and an argument to the command.  As an example, the"]
["command :RF:GENerator:FREQuency 125 MHz consists of the command :RF:GENerator:FREQuency, which denotes what"]
["parameter is to be controlled (in this case, RF generator frequency) and the argument 125 MHz, which provides the value to assign"]
["to the RF generator frequency.  The command :RF:GENerator:FREQuency should therefore be placed in the Command"]
["column, and its argument 125 MHz should be placed in the adjacent Argument column on the same row."]
[]
["An RCI query, which is used to request data from the instrument, may rarely optionally provide argument functionality, but, in general,"]
["no argument is required for a query.  To follow the above example, :RF:GENerator:FREQuency? is the matching query to the RF"]
["generator command example; it is requesting the RF generator frequency value.  This query has no argument, so"]
[":RF:GENerator:FREQuency? is entered into the command column, and its adjacent Argument row entry is left blank."]
[]
["Keywords are also entered into the command column.  If a keyword requires or supports an argument, then the argument must also"]
["be entered into the argument column."]
[]
["The Reply Column"]
["In most cases, the Reply column will display all returned data from a query, in the format that it was received.  Note that when a query"]
["is executed, the reply from the query, as well as the query command and argument, will also be copied to the Results Data"]
["worksheet.  If the reply to the query contains multiple values separated by a comma, the Results Data worksheet will separate each"]
["individual datum into separate columns. "]
[]
["Trace data, which is CSV data returned from a trace query, are not displayed in the Reply column; instead, the number of points or "]
["number of pairs of received trace data will be displayed in the Reply column.  The trace data are copied to the Trace Data "]
["worksheet."]
[]
["Reply data are automatically erased each time a Script or a selected sequence of commands is executed."]
[]
["The Info Column"]
["The Info column is used to display information about a command, query or keyword executed on a row."]
["If the instrument reports an error message, or if the program encounters an error, the Error column entry will display the error "]
["message.  When the program encounters an error message, it stops execution on the step on which it encountered the error."]
[]
["Info messages are automatically erased each time a Script or a selected sequence of commands is executed."]
[]
["Back to Top"]
[]
["The Results Data Worksheet"]
["Measurement reply data are the data returned by a query.  On the Script worksheet, the data are recorded in the reply column.  "]
["Measurement reply data, with the exception of trace data, are also recorded on the results data sheet.   Trace data are a special"]
["category of reply data that are sent to the Trace Data worksheet (discussed below)."]
[]
["Argument data supplied by the info keyword will also be copied to the Results Data worksheet."]
[]
["Measurement reply data can consist of a single datum, or as several data elements, separated by commas (termed Comma "]
["Separated Values or CSV).  One function of the Results Data worksheet is to separate any CSV into separate columns to make"]
["accessing a particular datum in a CSV string an easier process."]
[]
["The data are separated out into specific columns on the Results Data worksheet:"]
[]
["Column A contains the Date the data were requested from the instrument."]
["Column B contains the Time the data were requested from the instrument."]
["Column C contains the query command that was used to access the data."]
["Column D will contain any argument that was used with the query."]
["Column E will contain the first received datum.  If the reply was a single datum, this will be the only column containing reply data."]
["If the reply was CSV data, Column E will contain the first datum in the CSV string."]
["Columns F and onward will each contain a single datum from any received CSV string, in the order of the data in the CSV string."]
[]
["Following the reply data, Column E will contain the total time the script or selected commands took to complete."]
[]
["If a trace query was sent, the data in Column E will indicate the number of points or pairs of data received by the trace query."]
["Some trace data contain additional status byte or fail byte information.  If the trace data contain that information, it will appear "]
["on the Results Data worksheet in addition to the number of points information."]
[]
["Results data are automatically erased each time a Script or a selected sequence of commands is executed."]
[]
["Back to Top"]
[]
["The Trace Data Worksheet"]
["Trace data are data returned from a specific trace query.  Trace data consist of Comma Separated Values (CSV).  Trace data can"]
["consist of oscilloscope data, spectrum or channel analyzer data, or data from various graphs such as Distribution or Power Over "]
["Time, as examples. "]
[]
["Trace data consist of two components:  X Axis (horizontal) data, which can represent elements such as frequency or time,"]
["depending on the type of trace, and Y Axis (vertical) data, which generally represent some value of amplitude.  When trace data are"]
["encountered by the program, the X axis and Y axis data are separated into two separate rows on the Trace Data worksheet.  The"]
["\"upper\" row of a pair of trace data rows will contain the X axis values, and the \"lower\" row will contain the Y axis values.  The trace "]
["data row pairs are separated from preceding or succeeding trace data row pairs by a blank row."]
[]
["The X axis data are separated into specific columns on the Trace Data worksheet:"]
[]
["Column A contains the Date the trace data were requested from the instrument."]
["Column B contains the Time the trace data were requested from the instrument."]
["Column C contains the number of trace data elements returned (and therefore the number of trace data columns on the worksheet)."]
["Column D contains the X axis designation, and horizontal units of the X axis data.\n\n"]
["Column E is left blank.  This makes it easier to select the trace data with the cntrl-A key combination provided by Excel."]
["Columns F and higher contain the X axis trace data.  The number of columns occupied by data is equal to the value in Column C."]
[]
["The Y axis data are separated into specific columns on the Trace Data worksheet:"]
[]
["Column A contains the Date the trace data were requested from the instrument."]
["Column B contains the Time the trace data were requested from the instrument."]
["Column C contains the query command that was used to access the data."]
["Column D contains the Y axis designation of the X axis data.\n\n"]
["Column E is left blank.  This makes it easier to select the trace data with the cntrl-A key combination provided by Excel."]
["Columns F and higher contain the Y axis trace data.  The number of columns occupied by data is equal to number of X data values."]
[]
["Trace data are automatically erased each time a Script or a selected sequence of commands is executed."]
[]
["Note that X data are generally returned by most RCI commands.  In the event that X data is not available for a specific trace query,"]
["the program calculates the X data and inserts it into the Trace Data worksheet."]
[]
["In the rare event that X data alone is available through a query, the program ignores the data and does not store it in the Trace Data"]
["worksheet when the query is sent as a commmand.  When the Y data query is executed for the function, the program will "]
["automatically send the X data query, and store the X data results with the Y data in the format described above."]
[]
["Back to Top"]
[]
["Editing and Executing a Script"]
["A script consists of a vertical sequence of RCI commands and program keywords entered into the Argument and Command "]
["of the Script worksheet."]
[]
["If more than one row of commands/keywords is selected for execution, the program will sequentially execute the commands or  "]
["keywords until it reaches the end of the selection, encounters a blank entry in the command column, or encounters the end keyword."]
["When a query is encountered, the return data will be displayed in the Reply column, and will be copied to the Results Data "]
["worksheet.   In the case of a trace data query, the number of points of data will be reported in the reply column and the Results Data"]
["worksheet.  Trace data will be copied to the Trace Data worksheet.  If the row is 'commented out' by the \"/\" keyword, the program"]
["will not execute the row and will skip to the next row.  If the program encounters an error message it will cease execution at the row"]
["where it encountered the error message."]
[]
["Note that only a single command can occupy a row.  The program does not support concantenated commands.  Any "]
["concantenation of multiple single commands on a single row will generate an error and the script will stop at that point.  "]
[]
["If a command is placed in the command column without a preceding colon, a preceding colon will automatically be appended to the"]
["command.  This does not affect IEE-488 commands such as *OPC or *IDN?, nor will it affect keywords or commands that have"]
["been 'skipped' with the special \"/\" keyword."]
[]
["When the Run Script button is pressed, the program will start at row 2 of the command column and begin sequentially executing"]
["the script from that point. This allows a dedicated starting point for any script."]
[]
["When the Run From Here button is pressed, the program will start at the currently selected row and begin sequentially executing the"]
["the script from that point.  This allows the user to test blocks of script without having to select the entire block to execute it, or for "]
["testing blocks of script that are separated from other portions of the script by a blank row or end keyword."]
[]
["To execute a single command, or a subset of contiguous commands in the script, select the command or subset of commands and"]
["press the Run Selected button.  Only the selected command(s) will be executed.  Note that if more than one command is selected,"]
["the selected commands must be contiguous."]
[]
["Pressing the Toggle Comments button will 'comment out' an uncommented row or selection of rows, or 'uncomment' a commented "]
["row or selection of rows.  This function automates the placement of the '/' keyword.  The program will skip any commented row "]
["and will not execute the command or keyword on that row."]
[]
["Pressing the Abort Execution button will halt execution of the script at its current position in the script."]
[]
["To insert one or more rows, press the Insert Rows button."]
[]
["To delete one or more rows, press the Delete Rows button."]
[]
["The contents of the Reply column, Info column, Results Data worksheet and Trace Data worksheet will be erased when the Clear"]
["Results button is pressed, or each time a script or selected sequence of commands is executed."]
[]
["The entire script and all results can be removed by pressing the Remove Script button. "]
[]
["Note:  There is no 'undo' function on the Scripts worksheet.  "]
[]
["Back to Top"]
[]
["VIP Tool Resources"]
["VIAVI provides a number of resources at our website.  On our VIP Tool website, you will find the VIP Tool Operations Manual"]
["which is a complete guide to using this tool, including a complete reference to the VIAVI Intrument Programming Language. "]
["The operations manual provides plenty of examples of using the langugage in the VIP Tool.  Also on our VIP Tool website"]
["there are videos, sample scripts, sample reports and more to get you started on your VIP Tool project."]
[]
["VIP Tool Resources"]
[]
["Back to Top"]
[]
["VIAVI RCI Document Resources"]
[]
["VIAVI 3900 Series RCI Document Resources"]
["The key to writing scripts is good Remote Command Interface documentation.  In the case of the VIAVI 39XX models, the RCI"]
["commands can be found in the Help system that is integrated into the instrument."]
[]
["Of course, it's always good to have documents to reference.  All of the 39XX Remote Programming manuals can be downloaded "]
["from the following links:"]
[]
["3900 Series Digital Radio Test Set Remote Programming Manual"]
["Remote Programming Manual: 3900 Series Digital Radio Test Set P25"]
["Remote Programming Manual: 3900 Series Digital Radio Test Set DMR"]
["Remote Programming Manual: 3900 Series Digital Radio Test Set dPMR"]
["Remote Programming Manual: 3900 Series Digital Radio Test Set NXDN"]
["Remote Programming Manual: 3900 Series Digital Radio Test Set TETRA"]
["Remote Programming Manual: 3900 Series Digital Radio Test Set ARIB STD-T98"]
["Remote Programming Manual: 3900 Series Digital Radio Test Set HPD®"]
[]
["VIAVI 8800 Series RCI Document"]
["The VIAVI 8800 Series RCI document can be dowloaded from the following link:"]
[]
["8800 Digital Radio Test Set RCI Programming Manual"]
[]
["VIAVI 3550 Series RCI Document"]
["The VIAVI 3550 Series RCI document can be dowloaded from the following link:"]
[]
["3550/3550R RCI Manual"]
[]
[]
["Back to Top"]
["  \n\n\n   \n\n\n    \n\n\n     "]
["© 2021 VIAVI Solutions"]
[" \n\n\n   \n\n\n \n\n\n"]

{"sheet":"Setup","index":1,"n_rows":32,"n_cols":13,"rows_kept":32,"cut":false,"hidden":false,"merged":[[24,4,24,6],[25,4,25,6],[18,4,18,6],[21,4,21,6],[19,4,19,6],[22,4,22,6],[7,5,7,6],[8,5,8,6],[9,4,9,5],[12,4,12,6],[13,4,13,6],[12,1,12,2],[13,1,13,2],[15,1,15,2],[15,4,15,6],[16,4,16,6]]}
[null,null,null,null,null,null,null,"Calc",null,null,1234]
[null,"Select Model:","CX200",null,null,null,null,"Report"]
[null,{"$f":"C2 & \" \" &  \"IP Address:\"","v":"CX200 IP Address:"},"10.200.150.249"]
[null,null,null,null,null,null,null,null,null,null,null,null,"10.200.150.80"]
[null,{"$f":"C2 & \" \" & \"Port Number:\"","v":"CX200 Port Number:"},5600]
[]
[]
[null,"Serial Number",null,null,"Test Name"]
[null,"Software Version",null,null,"Report Sheet","Report"]
[null,null,null,null,"Open PDF Report On Save",null,"Off"]
[]
[]
[null,"After entering settings, press the ENTER key or click outside of the ",null,null,"Report PDF File Path"]
[null,"entry field to complete entry."]
[]
[null,"The default 39XX Port Number is 1234.  If the port number has been",null,null,"Report CSV File Path"]
[null,"changed from the default value on the instrument, the 39XX Port Number"]
[null,"field on this page must be set to match the port number on the instrument."]
[null,null,null,null,"Script File Path"]
[null,"Steps To verify the port number on the 39XX instrument:"]
[]
[null,"1.  Press the UTILS key.",null,null,"Script Module File Path"]
[null,"2.  Select 'Hardware Settings' "]
[null,"3.  Select 'Remote' from the floating menu."]
[null,"4.  The port number will be displayed in the 'TCP/IP Port' Field on the",null,null,"Import/Export Sheet Path"]
[null,"      Remote menu."]
[]
[]
[]
[null,"Auxiliary IP Address:","10.200.152.13"]
[]
[null,"Auxiliary Port Number:",1234]

{"sheet":"Script","index":2,"n_rows":1,"n_cols":4,"rows_kept":1,"cut":false,"hidden":false,"merged":[]}
["Command","Argument","Reply","Info Message"]

{"sheet":"Results Data","index":3,"n_rows":5,"n_cols":9,"rows_kept":5,"cut":false,"hidden":false,"merged":[]}
["2025-06-12","10:24:20","Program Start",null,"Stop Time:","10:24:21","Total Time:","00:00:01"]
["2025-06-12","10:24:20","*idn?"," ","VIAVI Solutions","CX300",1000000079,"2.3.1_b2.20250514145447"," "]
["2025-06-12","10:24:21","Program Stop"]
[]
[null,null,"Total Test Time"," ","00:00:01"]

{"sheet":"Trace Data","index":4,"n_rows":0,"n_cols":0,"rows_kept":0,"cut":false,"hidden":false,"merged":[]}

{"sheet":"Calc","index":5,"n_rows":0,"n_cols":0,"rows_kept":0,"cut":false,"hidden":false,"merged":[]}

{"sheet":"Report","index":6,"n_rows":0,"n_cols":0,"rows_kept":0,"cut":false,"hidden":false,"merged":[]}

{"sheet":"Version","index":7,"n_rows":5,"n_cols":1,"rows_kept":5,"cut":false,"hidden":false,"merged":[]}
["Version 1.3.0"]
["07/01/2025"]
[]
["VIP Tool Version Release Notes are available at the following link:"]
["VIP Tool Resources"]

{"sheet":"Utils","index":8,"n_rows":44,"n_cols":13,"rows_kept":44,"cut":false,"hidden":true,"merged":[]}
[null,null,null,"Calc",false,null,null,null,null,"CALC",null,null,"REPORT"]
[null,null,null,"Report",true]
[null,null,null,null,""]
[]
[]
[]
[]
[]
[]
[null,null,null,null,457504416]
[]
[]
[]
[]
[null,null,null,null,""]
[null,null,null,null,""]
[]
[]
[]
[null,null,null,null,"882.3875"]
[]
[]
[]
[]
[null,null,null,null,"False"]
[null,null,null,null,"False"]
[]
[]
[]
[null,null,null,null,"False"]
[null,null,null,null,"False"]
[]
[]
[null,null,null,null,"On"]
[null,null,null,null,"Off"]
[]
[null,null,null,null,"No"]
[]
[]
[]
[]
[null,null,null,null,"False"]
[null,null,null,null,""]
[null,null,null,null,"False"]