Notices RIGOL products are protected by patent law in and outside of P.R.C. RIGOL reserves the right to modify or change parts of or all the specifications and pricing policies at company‟s sole decision. Information in this publication replaces all previously corresponding material.
Page 4
RIGOL Contents of this Book This manual is written for users who want to use remote commands to control RIGOL DSA1000A Series Spectrum Analyzer for measurement tasks. We believe that readers of this manual have read User‟s Guide for RIGOL DSA1000A Series Spectrum Analyzer carefully and gotten familiar with usage of the analyzer.
:SYSTem....................2-105 :TRACe....................2-113 :TRIGer ....................2-119 :UNIT ....................2-120 Chapter 3 Programming Examples ............3-1 Prepare for Programming ................. 3-2 Program in Visual C++ 6.0 ............... 3-4 Program in Visual Basic 6.0 ..............3-11 Programming Guide for DSA1000A series...
Page 6
RIGOL Program in LabVIEW 8.6 ................. 3-17 Linux Programming Example ..............3-22 Prepare for Programming ..............3-22 Linux Programming Guide..............3-25 Command Quick Reference A-Z ..............1 Programming Guide for DSA1000A series...
This chapter introduces you the remote command programming and some relevant provisions of the SCPI (Standard Commands for Programmable Instruments) commands, which mainly includes: Programming Introduction SCPI Commands Introduction Syntax Symbol Description Parameter Type Command Abbreviation Programming Guide for DSA1000A series...
ASCII string that enable users to control and carry out secondary development. By programming, you can: Setup the analyzer. Make a measurement. Obtain data from the analyzer (such as the working status of the analyzer and the measurement results). Programming Guide for DSA1000A series...
For more detalis, refer to “IEEE 488.2”. A Control Command defined for SCPI Instrument is used to measure and read data, control the state of a function or mode and so on, involving all measurement functions and some specific functional functions. Programming Guide for DSA1000A series...
“:” to separate each keyword; <rel_ampl> denotes a assignable parameter; “?” denotes to query; command “:CALCulate:BANDwidth:NDB” and prarameter <rel_ampl> are separated by a space. “,” is generally used for separating different parameters contained in the same command, such as: :SYSTem:DATE <year>,<month>,<day> Programming Guide for DSA1000A series...
[:SENSe]:CORRection:OFFSet[:MAGNitude]? The following three commands serve a similar purpose: :CORRection:OFFSet? :CORRection:OFFSet:MAGNitude? :SENSe:CORRection:OFFSet? 4. Triangle Brackets < > The parameter enclosed in triangle brackets must be an effective value such as: :DISPlay:BRIGtness <integer> :DISPlay:BRIGtness 10 Programming Guide for DSA1000A series...
:CALCulate:MARKer<n>:MAXimum:MAX Parameter <n> can only be 1, 2, 3 or 4. 6. ASCII Character String The parameter should be a composition of ASCII characters, such as :SYSTem:DATE <year>,<month>,<day> Parameters above should be a date string. Programming Guide for DSA1000A series...
Since all commands are case-insensitive, you can use any kind of them. But if use an abbreviation, the capital letters specified in the command must be written completely. For example: :CALCulate:BANDwidth:NDB? also could be: :CALC:BAND:NDB? Programming Guide for DSA1000A series...
NOTE: In this command system, a query will return “N/A” (without double quotation marks) if the function to be queried is an uninstalled option or “ERR” (without double quotation marks) if the function is OFF or does not match unless where noted in this manual. Programming Guide for DSA1000A series...
Page 16
These commands begin with a “*” and have a keywords 3 characters length. *CLS *ESE *ESE? *ESR? *IDN? *OPC *OPC? *RST *SRE *SRE? *STB? *TRG *WAI Programming Guide for DSA1000A series...
Page 17
*OPC: sets the “Operation Complete” (bit 0) of the standard event status register to “1” after the current operation. *OPC?: queries if the current operation has been finished or not, and returns “1” if successful; otherwise returns “0”. Programming Guide for DSA1000A series...
Page 18
0 and 1 are both 0 within 00000000 (0) and 11111111 (255). 9. *TRG Syntax *TRG Function Triggers a sweep or measurement immediately. 10. *WAI Syntax *WAI Function Waits until done. Programming Guide for DSA1000A series...
Chapter 2 Command Systems RIGOL :ABORt :ABORt 1. :ABORt Syntax :ABORt Function Aborts the current operation and sweeps all over again. Programming Guide for DSA1000A series...
Page 22
The command works for both upper and lower limit. Changes in unit of X-axis may delete all edited points under the current limit line. Default FREQuency Front Panel Meas, Pass/Fail Meas Setup, X-axis, Freq/Time Programming Guide for DSA1000A series...
Page 23
<n>: denotes the limit line to be edited, which can be “1” (lower limit line) or “2” (upper limit line). <x-axis>: denotes the frequency (in Hz) or time (in us) of selected point. Programming Guide for DSA1000A series...
Page 24
“FAIL”, or “UNMEAS” if the measurement is unfinished. 11. :CALCulate:LLINe:FAIL:STOP:STATe Syntax :CALCulate:LLINe:FAIL:STOP:STATe OFF|ON|0|1 :CALCulate:LLINe:FAIL:STOP:STATe? Function Sets whether to continue a new sweep or not. The query returns “0” or “1”. Default ON|1 Front Panel Meas, Pass/Fail Programming Guide for DSA1000A series 2-10...
Page 25
“Delta”, “Delta Pair” or “Span Pair”. The command is invalid in Zero-span mode. Front Panel Marker, Delta/Delta Pair/Span Pair Marker –>, MkrΔ->CF 16. :CALCulate:MARKer<n>:DELTa[:SET]:SPAN Syntax :CALCulate:MARKer<n>:DELTa[:SET]:SPAN Function Sets the analyzer span to the frequency difference between the two Programming Guide for DSA1000A series 2-11...
Page 26
Marker Fctn, Freq Count, Resolution, Auto 19. :CALCulate:MARKer:FCOunt[:STATe] Syntax :CALCulate:MARKer:FCOunt[:STATe] OFF|ON|0|1 :CALCulate:MARKer:FCOunt[:STATe]? Function Turns on or off the frequency counter. The query returns “0” or “1”. Explanations Sending :CALCulate:MARKer:FCOunt:X? queries the readout of the frequency counter. Programming Guide for DSA1000A series 2-12...
Page 27
Searches the nearest peak located to the left side of the current peak and meets the searching condition. The peak is then identified with a marker. Explanations <n> is 1, 2, 3 or 4. Programming Guide for DSA1000A series 2-13...
Page 28
Method one: Peak, Peak Right Method two: R-Peak 26. :CALCulate:MARKer<n>:MINimum Syntax :CALCulate:MARKer<n>:MINimum Function Searches the peak with the minimum amplitude on the trace and identifies it with a marker. Explanations <n> is 1, 2, 3 or 4. Programming Guide for DSA1000A series 2-14...
Page 29
<n> is 1, 2, 3 or 4. <rel_ampl> ranges from 0 to 200 dB. Default 10 dB Front Panel Peak, Search Para, Pk Excursn 29. :CALCulate:MARKer<n>:PEAK:SEARch:MODE Syntax :CALCulate:MARKer<n>:PEAK:SEARch:MODE PARameter|MAXimum :CALCulate:MARKer<n>:PEAK:SEARch:MODE? Function Sets the mode of Peak Search. Programming Guide for DSA1000A series 2-15...
Page 30
Front Panel Peak, Search Para, Pk Thresh 32. :CALCulate:MARKer<n>:PTPeak Syntax :CALCulate:MARKer<n>:PTPeak Function Executes the peak search. Explanations <n> is 1, 2, 3 or 4. Sending this command automatically changes the marker from Programming Guide for DSA1000A series 2-16...
Page 31
In “Delta” marker mode, the start frequency is the frequency at which the delta marker is located. The command is invalid in Zero-span mode. Front Panel Marker –>, Mkr->Start 36. :CALCulate:MARKer<n>[:SET]:STEP Programming Guide for DSA1000A series 2-17...
Page 32
<n> is 1, 2, 3 or 4. If there is no opened marker, turnning on a marker uses the “POSition” (Normal mode) as the default. Default OFF|0 Front Panel Marker, Select Mkr 1/2/3/4 Marker, Off Programming Guide for DSA1000A series 2-18...
Page 33
The current marker stands on the corresponding trace if Auto is disabled. Default ON|1 Front Panel Marker, Mkr Trace, Auto 42. :CALCulate:MARKer:TRCKing[:STATe] Syntax :CALCulate:MARKer:TRCKing[:STATe] OFF|ON|0|1 :CALCulate:MARKer:TRCKing[:STATe]? Function Turns on or off the signal track function. Programming Guide for DSA1000A series 2-19...
Page 34
Default Unit Corresponds with the trace unit of the current marker. Front Panel Marker, Normal Marker, Delta Marker, Delta Pair, Ref/Delta Programming Guide for DSA1000A series 2-20...
Page 35
<n> is 1, 2, 3 or 4. For the range of <param>, refer to “[:SENSe]:SWEep:POINts”. 47. :CALCulate:MARKer<n>:X:POSition:SPAN Syntax :CALCulate:MARKer<n>:X:POSition:SPAN <param> :CALCulate:MARKer<n>:X:POSition:SPAN? Function Sets the number of points on the trace. The trace is limited by the Programming Guide for DSA1000A series 2-21...
Page 36
Sets the marker readout type on X-axis. The query returns “FREQ”, “TIME”, “ITIM” or “PER”. Explanations <n> is 1, 2, 3 or 4. Default FREQuency Marker, Readout, Frequency/Period/Δ Time/ 1/Δtime Front Panel 51. :CALCulate:MARKer<n>:X:SPAN Programming Guide for DSA1000A series 2-22...
Page 37
If current readout mode is “△time”, the range cannot exceed the sweep time and unit input of s (default), us, ms or ks is available. Front Panel Marker, Delta Pair, Ref 53. :CALCulate:MARKer<n>:X:STOP Syntax :CALCulate:MARKer<n>:X:STOP <param> Programming Guide for DSA1000A series 2-23...
Page 38
The query returns the Y-axis readout of the specified marker, the default unit is dBm, such as -2.697830E-01 55. :CALCulate:NTData[:STATe] Syntax :CALCulate:NTData[:STATe] OFF|ON|0|1 :CALCulate:NTData[:STATe]? Function Turns on or off the Normalization function. The query returns “0” or “1”. Default OFF|0 Programming Guide for DSA1000A series 2-24...
The query returns “0” or “1”. Default ON|1 (NOTE: The Auto calibration is set to On as default and will always hold the setting before a power circle.) Front Panel System, Calibrate, Self-Cal, On/Off Programming Guide for DSA1000A series 2-25...
Page 41
The command interrupts the current measurement and restores the analyzer to the defaults of specified measurement function. You can use READ command to initialize a measurement function without any further settings of Default. Front Panel Preset Programming Guide for DSA1000A series 2-27...
Page 42
The command first restores the system parameters to factory defaults. The command interrupts the current measurement and restores the analyzer to the defaults of specified measurement function. You can use READ command to initialize a measurement Programming Guide for DSA1000A series 2-28...
Page 43
Meas, Meas Fctn, Off 9. :CONFigure:TOI Syntax :CONFigure:TOI Function Enables the Third Order Intermodulation measurement. Explanations The command first restores the system parameters to factory defaults. The command interrupts the current measurement and Programming Guide for DSA1000A series 2-29...
Page 44
Default. Front Panel Preset Meas, Meas Fctn, T-Power 11. :CONFigure? Syntax :CONFigure? Function Queries the current measurement. Return Value The query returns “OFF”, “TPOW”, ACP”, “CHP”, “OBW”, “EBW”, “CNR”, “HD”, “TOI” or “PF”. Programming Guide for DSA1000A series 2-30...
The query returns “ALL” or “NONE”. Explanations Following parameters are involved: CF Step Attenuator RBW (Resolution BandWidth) VBW (Video BandWidth) Sweep Time Default Front Panel System, Coupl Param Programming Guide for DSA1000A series 2-31...
Page 47
Enables or disables the screen display. The refresh will be stopped when screen display is disabled, pressing ESC to unlock. The query returns “0” or “1”. Default ON|1 Front Panel Display, Scr State, On/Off Programming Guide for DSA1000A series 2-33...
Page 48
The query returns “CLAS” or “MODE”. Default CLASsic Front Panel Display, Skin, Classic/Modern 9. :DISPlay:SSAVer:TIME Syntax :DISPlay:SSAVer:TIME 1m|15m|30m|1h|OFF :DISPlay:SSAVer:TIME? Function Sets the screen saver duration. The query returns “1M”, “15M”, “30M”, “1H” or “OFF”. Default Programming Guide for DSA1000A series 2-34...
Page 49
Display, Display Line, On/Off 13. :DISPlay:WINdow:TRACe:Y:SCALe:PDIVision Syntax :DISPlay:WINdow:TRACe:Y:SCALe:PDIVision <rel_ampl> :DISPlay:WINdow:TRACe:Y:SCALe:PDIVision? Function Specifies the scale magnitude of Y-axis, such as :DISP:WIN:TRAC:Y:SCAL:PDIV 10 The query returns “1.000000E+01”. Explanations <rel_ampl> ranges from 0.1 dB to 20.0 dB. Programming Guide for DSA1000A series 2-35...
Page 50
Sets the scale type. The query returns “LIN” or “LOG”. Default LOGarithmic Front Panel AMPT, Scale Type, Log/Lin 17. :DISPlay:WINdow:TRACe:Y:SCALe:NRLevel Syntax :DISPlay:WINdow:TRACe:Y:SCALe:NRLevel <rel_ampl> :DISPlay:WINdow:TRACe:Y:SCALe:NRLevel? Function Sets the reference level of the normalization, such as :DISP:WIN:TRAC:Y:SCAL:NRL -20 Programming Guide for DSA1000A series 2-36...
Page 51
:DISPlay:WINdow:TRACe:Y:SCALe:NRPosition <integer> :DISPlay:WINdow:TRACe:Y:SCALe:NRPosition? Function Sets the reference position of the normalization, such as :DISP:WIN:TRAC:Y:SCAL:NRP 50 The query returns “5.000000E+01”. Explanations <integer> ranges from 0 to 100. Default Front Panel Source, Normalize, Norm Ref Pos Programming Guide for DSA1000A series 2-37...
Page 53
The power unit of returned value is the same as the unit of Y-axis. The command transmits the data from the latest measurement to the ouput buffer. Return Value Such as -5.173441E+01 4. :FETCh:ACPower:MAIN? Syntax :FETCh:ACPower:MAIN? Programming Guide for DSA1000A series 2-39...
Page 54
The power unit of returned value is the same as the unit of Y-axis. The command transmits the data from the latest measurement to the ouput buffer. Return Value Such as -7.900511E+01 8. :FETCh:CNRatio? Syntax :FETCh:CNRatio? Programming Guide for DSA1000A series 2-40...
Page 55
The command transmits the data from the latest measurement to the ouput buffer. Return Value Such as -1.442294E+01 12. :FETCh:EBWidth? Syntax :FETCh:EBWidth? Function The query returns the measurement result of emission bandwidth in Hz. Programming Guide for DSA1000A series 2-41...
Page 56
15. :FETCh:HARMonics[:DISTortion]? Syntax :FETCh:HARMonics[:DISTortion]? Function The query returns the percentage of THD (total harmonic distortion). Explanations The command transmits the data from the latest measurement to the ouput buffer. Return Value Such as 2.490393E+02 Programming Guide for DSA1000A series 2-42...
Page 57
The query returns 2 values at comma intervals: Occupied BandWidth (Hz) and Transmit Freq Error (Hz). Explanations The command transmits the data from the latest measurement to the ouput buffer. Return Value Such as 1860000,40000 Programming Guide for DSA1000A series 2-43...
Page 58
1500450000,-8.131735E+01,-8.131735E+01 23. :FETCh:TOIntercept:IP3? Syntax :FETCh:TOIntercept:IP3? Function The query returns the smaller TOI intercept between the 3rd Order Lower and the 3rd Order Upper. Explanations The command transmits the data from the latest measurement to Programming Guide for DSA1000A series 2-44...
Page 59
The unit of the returned value is the same as the unit of Y-axis. The command transmits the data from the latest measurement to the ouput buffer. Return Value Such as -1.658941E+01 Programming Guide for DSA1000A series 2-45...
Specifies the transmission order of the binary data. The query returns “NORM” or “SWAP”. Default NORMal 2. :FORMat[:TRACe][:DATA] Syntax :FORMat[:TRACe][:DATA] ASCii|REAL[,32] :FORMat[:TRACe][:DATA]? Function Specifies the input/output format of a trace data. The query returns “ASCII” or “REAL,32”. Default ASCii Programming Guide for DSA1000A series 2-46...
Page 62
Print Setup, Date Prints, On/Off 5. :HCOPy:IMAGe:QUALity Syntax :HCOPy:IMAGe:QUALity DEFault|NORMal|DRAFt|FINE :HCOPy:IMAGe:QUALity? Function Specifies the print quality. The query returns “DEF”, “NORM”, “DRAF” or “FINE”. Default DEFault (depends on the printer being used) Front Panel Print Setup, Qualities, Default/Normal/Draft/Fine Programming Guide for DSA1000A series 2-48...
Page 63
This setting is persistent even throuth a power cycle. Default Front Panel Print Setup, Copies 10. :HCOPy:PAGE:SIZE Syntax :HCOPy:PAGE:SIZE DEFault|A4|A5|A6|B5 :HCOPy:PAGE:SIZE? Function Selects a page size from Default, A4, A5, A6 or B5. Programming Guide for DSA1000A series 2-49...
Page 64
The query returns “DEF”, “A4”, “A5”, “A6” or “B5”. Default DEFault (depends on the printer being used) Front Panel Print Setup, Page Size, Default/A4/A5/A6/B5 11. :HCOPy:RESume Syntax :HCOPy:RESume Function Resumes the suspended print job. Front Panel Print Setup, Resume Programming Guide for DSA1000A series 2-50...
Chapter 2 Command Systems RIGOL :INITiate :INITiate:CONTinuous :INITiate[:IMMediate] :INITiate:PAUSe :INITiate:RESTart :INITiate:RESume Programming Guide for DSA1000A series 2-51...
Page 66
Front Panel Meas, Off 4. :INITiate:RESTart Syntax :INITiate:RESTart Function Restarts the current measurement in “Idle” state. Explanations The command is valid only when a measurement is open. Front Panel Meas, Restart 5. :INITiate:RESume Syntax :INITiate:RESume Programming Guide for DSA1000A series 2-52...
Page 67
Chapter 2 Command Systems RIGOL Function Switches the instrument from “Pause” to “Wait For Trigger”. Explanations The command is valid only when a measurement is open. Front Panel Meas, Resume Programming Guide for DSA1000A series 2-53...
Sets the input impedance for voltage-to-power conversions. Explanations To measure a 75Ω device, you should use a 75Ω to 50Ω adapter supplied by RIGOL to connect the analyzer with the system under test and then set the correspongding menu on the front panel to 75Ω.
Page 70
<file_name> must contain a valid path. The command is invalid if the file you specify does not exist. Example :MMEM:LOAD:MTAB E:\table.csv Front Panel Storage, File Type, Mark Table, Recall 6. :MMEMory:DELete Syntax :MMEMory:DELete <file_name> Programming Guide for DSA1000A series 2-56...
Page 71
Storage, File Type, Trace, Recall 10. :MMEMory:LOAD:SETUp Syntax :MMEMory:LOAD:SETUp <file_name> Function Loads the specified setting file (.set). Explanations <file_name> must contain a valid path. The command is invalid if the file you specify does not exist. Programming Guide for DSA1000A series 2-57...
Page 72
Specifies the trace with a specified file name (.trc). Explanations <file_name> must contain a valid path. <label> can be: TRACE1|TRACE2|TRACE3|ALL. If the file name specified already exists, it will be overwritten. Programming Guide for DSA1000A series 2-58...
Page 73
Saves the peak table into a USB flash device with a specified file name (.csv). Explanations <file_name> must contain a valid path. If the file name specified already exists, it will be overwritten. Example :MMEM:STOR:PTAB E:\peaktable.csv Programming Guide for DSA1000A series 2-59...
Page 74
Saves the current edited limit line with a specified file name (.trc or .csv). Explanations <file_name> must contain a valid path. If the file name specified already exists, it will be overwritten. Example :MMEM:STOR:LIM E:\limit.csv Programming Guide for DSA1000A series 2-60...
Chapter 2 Command Systems RIGOL :OUTPut :OUTPut[:STATe] 1. :OUTPut[:STATe] Syntax :OUTPut[:STATe] OFF|ON|0|1 :OUTPut[:STATe]? Function Enables or disables the tracking generator output. The query returns “0” or “1”. Default OFF|0 Front Panel Source, TG, On/Off Programming Guide for DSA1000A series 2-61...
Page 77
The power unit of returned value is the same as the unit of Y-axis. The command transmits the data from the latest measurement to the ouput buffer. Return Value Such as -5.173441E+01 Programming Guide for DSA1000A series 2-63...
Page 78
Such as -1.599480E+01 7. :READ:CHPower:DENSity? Syntax :READ:CHPower:DENSity? Function The command executes a measurement and returns the power spectral density. Explanations The power unit of returned value is the same as the unit of Programming Guide for DSA1000A series 2-64...
Page 79
Explanations The command transmits the data from the latest measurement to the ouput buffer. Return Value Such as 8.956909E-02 11. :READ:CNRatio:NOISe? Syntax :READ:CNRatio:NOISe? Function The command executes a measurement and returns the noise Programming Guide for DSA1000A series 2-65...
Page 80
The command executes a measurement and returns the specified harmonic amplitude, such as :READ:HARM:AMPL? 1 Explanations <n> is an integer wthin 1 and 10. The unit of returned value is the same as the unit of Y-axis. Programming Guide for DSA1000A series 2-66...
Page 81
The query returns “---” if the harmonic to be read has no data. The command transmits the data from the latest measurement to the ouput buffer. Return Value Such as 45500000 18. :READ:HARMonics:FUNDamental? Programming Guide for DSA1000A series 2-67...
Page 82
Hz. Explanations The command transmits the data from the latest measurement to the ouput buffer. Return Value Such as 40000 22. :READ:TOIntercept? Syntax :READ:TOIntercept? Function The command executes a measurement and returns the following Programming Guide for DSA1000A series 2-68...
Page 83
The power unit of returned value is the same as the unit of Y-axis. The command transmits the data from the latest measurement to the ouput buffer. Return Value Such as -1.658941E+01 Programming Guide for DSA1000A series 2-69...
Page 87
Explanations <freq> ranges from 1 Hz to 3 MHz. Default 1 MHz Front Panel BW, VBW 4. [:SENSe]:BANDwidth:VIDeo:AUTO Syntax [:SENSe]:BANDwidth:VIDeo:AUTO OFF|ON|0|1 [:SENSe]:BANDwidth:VIDeo:AUTO? Function Enables or disables the Auto function of Video bandwidth. The query returns “0” or “1”. Default ON|1 Programming Guide for DSA1000A series 2-73...
Page 88
Explanations To turn on or off a single correction factor, see command below: [:SENSe]:CORRection:CSET<n>[:STATe] Default OFF|0 Front Panel AMPT, Corrections, Select, Off/Antenna/Cable/Other/User 8. [:SENSe]:CORRection:CSET<n>:DATA Syntax [:SENSe]:CORRection:CSET<n>:DATA <freq>,<rel_ampl>{,<freq>,<rel_ampl>} [:SENSe]:CORRection:CSET<n>:DATA? Function Creates an amplitude correction curve on the basis of current data, such as :CORR:CSET1:DATA 900E6,0.3,1.0E9,0.35,1.3E9,0.2 Programming Guide for DSA1000A series 2-74...
Page 89
In Log mode, both the frequency and amplitude use logarithm as the unit to make an interpolation operation. Default LINear Front Panel AMPT, Corrections, Freq Interp, Log/ Lin 12. [:SENSe]:CORRection:CSET<n>[:STATe] Syntax [:SENSe]:CORRection:CSET<n>[:STATe] OFF|ON|0|1 Programming Guide for DSA1000A series 2-75...
Page 90
Default OFF|0 Front Panel Demod, Demod, AM/FM/Off 16. [:SENSe]:DEMod:TIME Syntax [:SENSe]:DEMod:TIME <time> [:SENSe]:DEMod:TIME? Function Sets the demodulating time, the default unit is s, such as DEM:TIME 0.5 or DEM:TIME 500ms The query returns “5.000000E-01”. Programming Guide for DSA1000A series 2-76...
Page 91
FREQ, CF->Step 20. [:SENSe]:FREQuency:CENTer:STEP:AUTO Syntax [:SENSe]:FREQuency:CENTer:STEP:AUTO OFF|ON|0|1 [:SENSe]:FREQuency:CENTer:STEP:AUTO? Function Enables or disables the Auto function of CF step. The query returns “0” or “1”. Default ON|1 Front Panel FREQ, CF Step, Auto/Manual 21. [:SENSe]:FREQuency:CENTer:STEP[:INCRement] Programming Guide for DSA1000A series 2-77...
Page 92
Default 3 GHz Front Panel SPAN, Span 25. [:SENSe]:FREQuency:SPAN:FULL Syntax [:SENSe]:FREQuency:SPAN:FULL Function Sets the span to the maximun. Front Panel SPAN, Full Span Programming Guide for DSA1000A series 2-78...
Page 93
Sets the stop frequency, the default unit is Hz, such as :FREQ:STOP 100000000 or :FREQ:STOP 100MHZ The query returns “100000000”. Explanations <freq> ranges from 0 Hz to 3 GHz. Default 3 GHz Front Panel FREQ, Stop Freq 31. [:SENSe]:POWer[:RF]:ATTenuation Programming Guide for DSA1000A series 2-79...
Page 94
Sets the maximim power of the input mixer, the default unit is dBm, such as :POW:MIX:RANG -20 The query returns “-2.000000E+01”. Explanations <ampl> ranges from -50 dBm to 0 dBm. Default -10 dBm Front Panel AMPT, MaxMixL 35. [:SENSe]:POWer:ASCale Programming Guide for DSA1000A series 2-80...
Page 95
Sweep, Points 39. [:SENSe]:SWEep:COUNt Syntax [:SENSe]:SWEep:COUNt <integer> [:SENSe]:SWEep:COUNt? Function Specifies the numbers of sweeps in Single sweep mode, such as :SWE:COUN 10 The query returns “10”. Explanations <integer> ranges from 1 to 9999. Default Programming Guide for DSA1000A series 2-81...
Page 96
43. [:SENSe]:SWEep:TIME:AUTO:RULes Syntax :SENSe:SWEep:TIME:AUTO:RULes NORMal|ACCuracy :SENSe:SWEep:TIME:AUTO:RULes? Function Sets the auto mode of the sweep time. The query returns “NORM” or “ACC”. Default NORMal Front Panel Sweep, Auto SWT 44. [:SENSe]:ACPower:AVERage:COUNt Syntax [:SENSe]:ACPower:AVERage:COUNt <integer> [:SENSe]:ACPower:AVERage:COUNt? Programming Guide for DSA1000A series 2-82...
Page 97
In REP mode, the result is the arithmetic average of the current N (specified by [:SENSe]:ACPower:AVERage:COUNt) measurements. Default EXPonential Front Panel Meas, ACP Meas Setup, Avg Mode, Exp/Repeat 47. [:SENSe]:ACPower:BANDwidth:INTegration Syntax [:SENSe]:ACPower:BANDwidth:INTegration <freq> [:SENSe]:ACPower:BANDwidth:INTegration? Programming Guide for DSA1000A series 2-83...
Page 98
Explanations <freq> ranges from 33 Hz to 1 GHz. Default 2 MHz Front Panel Meas, ACP Meas Setup, CH Spacing 50. [:SENSe]:CHPower:AVERage:COUNt Syntax [:SENSe]:CHPower:AVERage:COUNt <integer> [:SENSe]:CHPower:AVERage:COUNt? Function Sets the number of averages of the channel power measurement Programming Guide for DSA1000A series 2-84...
Page 99
In REP mode, the result is the arithmetic average of the current N (specified by [:SENSe]:CHPower:AVERage:COUNt) measurements. Default EXPonential Front Panel Meas, Chan Pwr Meas Setup, Avg Mode, Exp/Repeat 53. [:SENSe]:CHPower:BANDwidth:INTegration Syntax [:SENSe]:CHPower:BANDwidth:INTegration <freq> [:SENSe]:CHPower:BANDwidth:INTegration? Function Sets the integration bandwidth for the channel power measurement, Programming Guide for DSA1000A series 2-85...
Page 100
Front Panel Meas, C/N Ratio Meas Setup, Avg Num 56. [:SENSe]:CNRatio:AVERage[:STATe] Syntax [:SENSe]:CNRatio:AVERage[:STATe] OFF|ON|0|1 [:SENSe]:CNRatio:AVERage[:STATe]? Function Turns on or off the average function of the C/N Ratio measurement. The query returns “0” or “1”. Programming Guide for DSA1000A series 2-86...
Page 101
[:SENSe]:CNRatio:BANDwidth:NOISe? Function Sets the noise bandwidth, the default unit is Hz, such as :CNR:BAND:NOIS 1000000 or :CNR:BAND:NOIS 1MHZ The query returns “1000000”. Explanations <freq> ranges from 33 Hz to 1 GHz. Default 2 MHz Programming Guide for DSA1000A series 2-87...
Page 102
[:SENSe]:EBWidth:AVERage[:STATe] OFF|ON|0|1 [:SENSe]:EBWidth:AVERage[:STATe]? Function Turns on or off the average function of the Emission Bandwidth measurement. The query returns “0” or “1”. Default OFF|0 Front Panel Meas, EBW Meas Setup, Avg Num, On/Off 63. [:SENSe]:EBWidth:AVERage:TCONtrol Programming Guide for DSA1000A series 2-88...
Page 103
:EBW:FREQ:SPAN 1000000 or :EBW:FREQ:SPAN 1MHZ The query returns “1000000”. Explanations <freq> ranges from 100 Hz to 3 GHz. Default 2 MHz Front Panel Meas, EBW Meas Setup, Span 66. [:SENSe]:EBWidth:XDB Syntax [:SENSe]:EBWidth:XDB <real_amp> [:SENSe]:EBWidth:XDB? Programming Guide for DSA1000A series 2-89...
Page 104
Sets the average mode of the Harmonic Distortion measurement. The query returns “EXP” or “REP”. Explanations In Exp mode, the result is from the exponent average calculation of the current N (specified by [:SENSe]:HDISt:AVERage:COUNt) Programming Guide for DSA1000A series 2-90...
Page 105
Meas, Harmo Dist Meas Setup, Sweep Time 72. [:SENSe]:HDISt:TIME:AUTO[:STATe] Syntax [:SENSe]:HDISt:TIME:AUTO[:STATe] OFF|ON|0|1 [:SENSe]:HDISt:TIME:AUTO[:STATe]? Function Turns on or off the Auto function of sweep time for the harmonic measurement. The query returns “0” or “1”. Default ON|1 Programming Guide for DSA1000A series 2-91...
Page 106
In Exp mode, the result is from the exponent average calculation of the current N (specified by [:SENSe]:OBWidth:AVERage:COUNt) measurements. In REP mode, the result is the arithmetic average of the current N (specified by [:SENSe]:OBWidth:AVERage:COUNt) measurements. Default EXPonential Programming Guide for DSA1000A series 2-92...
Page 107
Sets the percent of the signal power in the whole frequency span power, such as :OBW:PERC 90 The query returns “9.000000E+01”. Explanations <real> ranges from 1 to 99.99. Default 99 (99%) Front Panel Meas, OBW Meas Setup, Power Ratio Programming Guide for DSA1000A series 2-93...
Page 108
[:SENSe]:STATus:TG? Function Quires the setting status of TG (Tracking Generator). Front Panel System, Status, TG 85. [:SENSe]:TOI:AVERage:COUNt Syntax [:SENSe]:TOI:AVERage:COUNt <integer> [:SENSe]:TOI:AVERage:COUNt? Function Sets the number of averages of the TOI measurement results, such as Programming Guide for DSA1000A series 2-94...
Page 109
[:SENSe]:TOI:FREQuency:SPAN? Function Sets the span of the TOI measurement, the default unit is Hz, such as :TOI:FREQ:SPAN 1000000 or :TOI:FREQ:SPAN 1MHZ The query returns 1000000. Explanations <freq> ranges from 100 Hz to 3 GHz. Programming Guide for DSA1000A series 2-95...
Page 110
In Exp mode, the result is from the exponent average calculation of the current N (specified by [:SENSe]:TPOWer:AVERage:COUNt) measurements. In REP mode, the result is the arithmetic average of the current N (specified by [:SENSe]:TPOWer:AVERage:COUNt) measurements. Default EXPonential Front Panel Meas, T-Power Programming Guide for DSA1000A series 2-96...
Page 111
Sets the right limit of the Time-domain Power measurement, the default unit is s, such as :TPOW:RLIM 0.01 The query returns “1.000000E-02”. Explanations <time> ranges from the left limit to Sweep Time. Default 100 ms Front Panel Meas, T-Power Meas Setup, Stop Line Programming Guide for DSA1000A series 2-97...
Chapter 2 Command Systems RIGOL :SOURce :SOURce:CORRection:OFFSet :SOURce:FREQuency:OFFSet :SOURce:POWer:LEVel:IMMediate:AMPLitude :SOURce:POWer:MODE :SOURce:POWer:SPAN :SOURce:POWer:STARt :SOURce:POWer:SWEep :SOURce:TRACe:STORref :SOURce:TRACe:REF:STATe Programming Guide for DSA1000A series 2-98...
Page 113
<ampl> ranges from -20 dBm to 0 dBm when the parameter <rel_ampl> in the :SOURce:CORRection:OFFSet command is 0, or else the range should plus the value of <rel_ampl>. Default 0 dBm Front Panel Source, Power Sweep, Off, TG Level 4. :SOURce:POWer:MODE Syntax :SOURce:POWer:MODE FIXed|SWEep Programming Guide for DSA1000A series 2-99...
Page 114
Source, Power Sweep, On, TG Level 7. :SOURce:POWer:SWEep Syntax :SOURce:POWer:SWEep <rel_ampl> :SOURce:POWer:SWEep? Function Sets the output power range of the tracking source in dB when the “power Sweep” is On, such as :SOUR:POW:SWE 10 Programming Guide for DSA1000A series 2-100...
Page 115
Front Panel Source, Normalize, Stor Ref 9. :SOURce:TRACe:REF:STATe Syntax :SOURce:TRACe:REF:STATe OFF|ON|0|1 :SOURce:TRACe:REF:STATe? Function Sets if to display the reference trace. The query returns “0” or “1”. Default OFF|0 Front Panel Source, Normalize, Ref Trace, View/Blank Programming Guide for DSA1000A series 2-101...
Chapter 2 Command Systems RIGOL :STATus :STATus:OPERation:CONDition? :STATus:OPERation:ENABle :STATus:OPERation[:EVENt]? :STATus:PRESet :STATus:QUEStionable:CONDition? :STATus:QUEStionable:ENABle :STATus:QUEStionable[:EVENt]? Programming Guide for DSA1000A series 2-102...
Page 117
15 and 12-8 are 0 within 0000000000000000 (0) and 1111111111111111 (32767). 4. :STATus:PRESet Syntax :STATus:PRESet Function Clears the enable register value in both the operation status register Programming Guide for DSA1000A series 2-103...
Page 118
Bit 15 and bits 12-9 are not used in the Questionable Data Register and always regarded as “0”, thereinto this command returns a decimal number that relates to any binary number whose bits of 15 and 12-9 are 0 within 0000000000000000 (0) and 1111111111111111 (32767). Programming Guide for DSA1000A series 2-104...
Page 120
The query returns “0” or “1”. Default ON|1 Front Panel System, I/O Setting, LAN, DHCP, On/Off 5. :SYSTem:COMMunicate:LAN[:SELF]:AUToip:STATe Syntax :SYSTem:COMMunicate:LAN[:SELF]:AUToip:STATe OFF|ON|0|1 :SYSTem:COMMunicate:LAN[:SELF]:AUToip:STATe? Function Turns on or off the Auto IP. The query returns “0” or “1”. Default ON|1 Programming Guide for DSA1000A series 2-106...
Page 121
0 to 255. Front Panel System, I/O Setting, LAN, Manual-IP (On), IP, Subnet Mask 9. :SYSTem:COMMunicate:LAN[:SELF]:IP:GATeway Syntax :SYSTem:COMMunicate:LAN[:SELF]:IP:GATeway <ip_address> :SYSTem:COMMunicate:LAN[:SELF]:IP:GATeway? Function Specifies a default gateway, such as :SYST:COMM:LAN:IP:GAT 172.16.3.1 The query returns “172.16.3.1”. Programming Guide for DSA1000A series 2-107...
Page 122
The query returns the same system information as those displayed on the screen of the front panel. Explanations The system information involves the software and hardware version and so on. Front Panel System, Information, System Info Programming Guide for DSA1000A series 2-108...
Page 123
*Remark: The double quotation marks here would be returned. 17. :SYSTem:FSWItch[:STATe] Syntax :SYSTem:FSWItch[:STATe] OFF|ON|0|1 :SYSTem:FSWItch[:STATe]? Function Sets if to use the front switch or not. The query returns “0” or “1”. Default ON|1 Front Panel System, Front Switch, On/Off 18. :SYSTem:LANGuage Programming Guide for DSA1000A series 2-109...
Page 124
The presettings contain factory settings and user settings, you can use “:SYSTem:PRESet:TYPE” to select a desired type. Default PRESet Front Panel System, Reset, Power On, Last/Preset 22. :SYSTem:PRESet Syntax :SYSTem:PRESet Function Recalls the system presettings. Front Panel Preset Programming Guide for DSA1000A series 2-110...
Page 125
Front Panel Demod, Demod, AM/FM Demod Setup, Speaker, On/Off 27. :SYSTem:SPEaker:VOLume Syntax :SYSTem:SPEaker:VOLume <integer> :SYSTem:SPEaker:VOLume? Function Adjusts the volume of the speaker. Explanations <integer> ranges from 0 to 255. Default Front Panel Demod, Demod, AM/FM Programming Guide for DSA1000A series 2-111...
Page 126
<minute> is an integer within 00 and 59. <second> is an integer within 00 and 59. Front Panel System, Time/Date, Set Time 29. :SYSTem:VERSion? Syntax :SYSTem:VERSion? Function The query returns the SCPI version number of the analyzer: 1999.0. Programming Guide for DSA1000A series 2-112...
Page 128
Queries the peak readout points from the Peak Table and returns an integer within 0 and 10. 4. :TRACe:MATH:PEAK:SORT Syntax :TRACe:MATH:PEAK:SORT AMPLitude|FREQuency :TRACe:MATH:PEAK:SORT? Function Sorts the Peak Table. The query returns “AMPL” or “FREQ”. Default FREQuency Programming Guide for DSA1000A series 2-114...
Page 129
The query returns “0” or “1”. Default OFF|0 Front Panel Trace, Trace Math, Operate, On/Off 8. :TRACe:MATH:A Syntax :TRACe:MATH:A T1|T2|T3 :TRACe:MATH:A? Function Selects a trace as the trace A for the trace math from T1, T2 or T3. Programming Guide for DSA1000A series 2-115...
Page 130
“VID” or “POW”. Explanations <n> is 1, 2 or 3. All trace data will be erased after you change the sweep points (by using “[:SENSe]:SWEep:POINts”). The query of “:TRACe2:MODE?” and “:TRACe3:MODE?” will Programming Guide for DSA1000A series 2-116...
Page 131
Explanations <n> is 1, 2 or 3. The query of “:TRACe2:AVERage:TYPE?” and “:TRACe3:AVERage:TYPE?” will return “ERR” when the Pass/Fail function is On. Default VIDeo Front Panel Trace, Trace Type, Video Avg/Power Avg Programming Guide for DSA1000A series 2-117...
Page 132
Chapter 2 Command Systems RIGOL 17. :TRACe:CLEar:ALL Syntax :TRACe:CLEar:ALL Function Clears all traces, that is, set the type of all traces to BLANK (Off). Front Panel Trace, Clear All Programming Guide for DSA1000A series 2-118...
The query returns “1.000000E+01”. Explanations <ampl> ranges from -300 dBm to50 dBm. Sending “:TRIGger:SEQuence:SOURce VIDeo” can select the Video trigger. Default 0 dBm Front Panel Trig, Trig Type, Video Trig Setup, Trig Level Programming Guide for DSA1000A series 2-119...
Function Sets the unit of the input, output and the displayed amplitude. The query returns “DBM”, “DBMV”, “DBUV”, “V “or “W”. Default Log unit: dBm Lin unit: V Front Panel AMPT, Units, dBm/ dBmV/dBuV/Volts/Watts Programming Guide for DSA1000A series 2-120...
NI-VISA to make a communication between the analyzer and the PC using USB or such instrument bus. As VISA has defined a set of software commands, users can control the instrument without understanding the working state of the interface bus. For more details, please refer to NI-VISA. Programming Guide for DSA1000A series...
USB interface of the PC for communication. See figure below. After successful connection, turn on the instrument, a dialog will guide you to install the driver of “USB Test and Measurement Device” on the PC. See figure below. Programming Guide for DSA1000A series...
Select “Include files” in Show directories for, and then dblclick the blank in Directories to add the path of “Include”: C:\Program Files\IVI Foundation\VISA\WinNT\include. Select “Library files” in Show directories for, and then dblclick the blank in Directories to add the path of “Lib”: C:\Program Files\IVI Foundation\VISA\WinNT\lib\msc. Programming Guide for DSA1000A series...
Page 139
Note: At present, VISA library has been added successfully. 4. Add controls: Text, Edit and Button. See figure below. 5. Add control variables. Open View→ClassWizard→Member Variables, and add the following three variables: Instrument address: CString m_strInstrAddr Command: CString m_strCommand Return ValueCString m_strResult Programming Guide for DSA1000A series...
Page 140
= viOpenDefaultRM(&defaultRM); if (status < VI_SUCCESS) AfxMessageBox("No VISA resource was opened!"); return false; status = viOpen(defaultRM, SendAddr, VI_NULL, VI_NULL, &instr); //Write command to the instrument status = viWrite(instr, (unsigned char *)SendBuf, strlen(SendBuf), &retCount); //Close the system Programming Guide for DSA1000A series...
Page 141
//Open a VISA resource status = viOpenDefaultRM(&defaultRM); if (status < VI_SUCCESS) // Error Initializing VISA...exiting AfxMessageBox("No VISA resource was opened!"); return false; //Open the instrument status = viOpen(defaultRM, SendAddr, VI_NULL, VI_NULL, &instr); //Read from the instrument Programming Guide for DSA1000A series...
Page 142
CString strInstr = ""; unsigned long i = 0; bool bFindDSA = false; status = viOpenDefaultRM(&defaultRM); if (status < VI_SUCCESS) // Error Initializing VISA...exiting MessageBox("No VISA instrument was opened ! "); return ; memset(instrDesc,0,1000); // Find resource Programming Guide for DSA1000A series...
Page 143
= strSrc; break; //Find next instrument status = viFindNext(*findList,instrDesc); if (bFindDSA == false) MessageBox("Didn‟t find any DSA!"); UpdateData(false); Write operation void CDemoForDSADlg::OnBtWrite() //Write operation // TODO: Add your control notification handler code here UpdateData(true); if (m_strInstrAddr.IsEmpty()) Programming Guide for DSA1000A series...
Page 144
8. Execute results. Click “Connect” to search the available analyzer. Enter “*IDN?” in the Command edit box. Click “Write” to write the command into the analyzer. Click “Read” to read the Return Value. See figure below: Programming Guide for DSA1000A series 3-10...
Then add Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) statement into the visa32.bas, or create a new module to declare the Sleep function. 3. Add controls: Text, Edit and Button, see figure below: Programming Guide for DSA1000A series 3-11...
Page 146
'Write command to the instrument status = viWrite(sesn, strCmd, Len(strCmd), rSize) 'Failed to write to the instrument If (status < VI_SUCCESS) Then MsgBox " Faild to write to the instrument!" Exit Sub End If 'Close the system Programming Guide for DSA1000A series 3-12...
Page 147
'Open instrument failed If (status < VI_SUCCESS) Then MsgBox " Failed to open the instrument! " Exit Function End If ' Read from the instrument stasus = viRead(sesn, strTemp0, 256, rSize) ' Read failed Programming Guide for DSA1000A series 3-13...
Page 148
Dim strRet As String Dim bFindDSA As Boolean „Initialize the system status = viOpenDefaultRM(dfltRM) ' Initialize failed If (status < VI_SUCCESS) Then MsgBox " No VISA resource was opened !" Exit Sub End If Programming Guide for DSA1000A series 3-14...
Page 149
TxtInsAddr.Text = "" End If End Sub Write operation 'Write the command to the instrument Private Sub CmdWrite_Click() If (TxtInsAddr.Text = "") Then MsgBox ("Please write the instrument address!") End If InstrWrite TxtInsAddr.Text, TxtCommand.Text End Sub Programming Guide for DSA1000A series 3-15...
Page 150
6. Execute results Click “Connect” to search the available analyzer. Enter “*IDN?” in the Command edit box. Click “Write” to write the command into the analyzer. Click “Read” to read the Return Value. See figure below: Programming Guide for DSA1000A series 3-16...
Chapter 3 Programming Examples RIGOL Program in LabVIEW 8.6 Enter the Labview 8.6 and take the following steps: 1. Create the event structure 2. Add the events (contain read and write operation, instrument connection and exit) Programming Guide for DSA1000A series 3-17...
Page 152
Chapter 3 Programming Examples RIGOL 3. Instrument connection codes 4. Write the operation codes (contain error judging) Programming Guide for DSA1000A series 3-18...
Page 153
Chapter 3 Programming Examples RIGOL 5. Read operation codes (contain error processing) Programming Guide for DSA1000A series 3-19...
Page 154
Chapter 3 Programming Examples RIGOL 6. Exit code Programming Guide for DSA1000A series 3-20...
Page 155
Chapter 3 Programming Examples RIGOL 7. Execute results Programming Guide for DSA1000A series 3-21...
As shown in the figure below, use network cable to connect the LAN interface at the rear panel of the analyzer with the LAN interface of the PC for communication. Users can also use network cable to connect the analyzer to the local network of the PC. Programming Guide for DSA1000A series 3-22...
Page 157
IP Address: 172.16.3.X Gateway Address: 172.16.3.1 Subnet Mask: 255.255.255.0 DSN: 172.16.2.2 Note : X can be any value that has not been used between 2 and 254. Programming Guide for DSA1000A series 3-23...
Page 158
Chapter 3 Programming Examples RIGOL Programming Guide for DSA1000A series 3-24...
After setting the search path of the library in /etc/ld.so.conf, execute the /sbin/ldconfig command to update /etc/ld.so.cache (this command must have root right) so as to locate the library when executing the program. Programming Guide for DSA1000A series 3-25...
Page 160
#ifndef DEMO_FOR_DSA_H #define DEMO_FOR_DSA_H #include <stdio.h> #include <string.h> #include <stdlib.h> #include <iostream> //#include <syswait.h> using namespace std; #define MAX_SEND_BUF_SIZE #define MAX_REC_SIZE class DemoForDSA // Construction public: DemoForDSA(); Programming Guide for DSA1000A series 3-26...
Page 162
(i = 0;i < (*retcnt);i++) //Get the instrument name strSrc=instrDesc; InstrWrite(strSrc,"*IDN?"); usleep(200); InstrRead(strSrc,strInstr); //If it is a DSA series instrument, the program exits after finding the instrument makeupper(strInstr); (strInstr.find("DSA",0) > 0) bFindDSA = true; m_strInstrAddr = strSrc; break; Programming Guide for DSA1000A series 3-28...
Page 163
//Address conversion, convert strig address to char* address SendAddr = const_cast<char*>(strAddr.c_str()); //Address conversion, convert strig address to char* address SendBuf = const_cast<char*>(strContent.c_str()); //Open the specific device status = viOpenDefaultRM(&defaultRM); (status < VI_SUCCESS) cout<<"No VISA equipment!"<<endl; return false; Programming Guide for DSA1000A series 3-29...
Page 164
RecBuf[MAX_REC_SIZE]; string str; memset(RecBuf,0,MAX_REC_SIZE); result=(char*)malloc(MAX_REC_SIZE*sizeof(char)); memset(result,0,MAX_REC_SIZE); //Address conversion, convert strig address to char* address SendAddr=const_cast<char*>(strAddr.c_str()); //Open the VISA device status = viOpenDefaultRM(&defaultRM); (status < VI_SUCCESS) // Error Initializing VISA...exiting cout<<"No VISA equipment!"<<endl; return false; Programming Guide for DSA1000A series 3-30...
Page 165
== "") exit(0); for(int i = 0;i < instr.length();i++) instr[i] = toupper(instr[i]); 3. Edit the function file mainloop.cpp and finish the flow control. #include "DemoForDSA.h" void menudisplay() cout<<"\t\t Please operate the instrument:\n read write quit"<<endl; Programming Guide for DSA1000A series 3-31...
Page 168
If an instrument is found and successfully connected, the interface as shown in the figure below is displayed. Input “write<command>” to write the command into the analyzer. For example, write<*IDN?>. Input “read” to read the return value as shown in the figure below. Programming Guide for DSA1000A series 3-34...
Need help?
Do you have a question about the DSA1000A Series and is the answer not in the manual?
Questions and answers