COPY_AFG31000
Python Code
from flojoy import flojoy, DataContainer, String, VisaConnection
from typing import Optional, Literal
@flojoy(inject_connection=True)
def COPY_AFG31000(
connection: VisaConnection,
channel: Literal["ch1", "ch2"] = "ch1",
input: Optional[DataContainer] = None,
) -> String:
"""Copy the setup parameters to the other channel.
This block should also work with compatible Tektronix AFG31XXX instruments.
Parameters
----------
connection: VisaConnection
The VISA address (requires the CONNECTION_AFG31000 block).
channel: select, default=ch1
Which channel to copy to the other channel.
Returns
-------
String
Placeholder
"""
afg = connection.get_handle()
if channel == "ch1":
afg.write("AFGControl:CSCopy CH1,CH2")
else:
afg.write("AFGControl:CSCopy CH2,CH1")
return String(s="Copied channel parameters")
Example App
In this example, an Tektronix AFG31000 is used to generate an arbitrary waveform.
First the necessary blocks were added:
CONNECT_AFG31000
COPY_AFG31000
ARBITRARY_AFG31000
BASIC_PARAMETERS_AFG31000
OUTPUT_AFG31000
- 3x
BASIC_OSCILLATOR
MULTIPLY
LINE
The instrument address was set for each AFG31000
block. Ensure the OUTPUT_AFG31000
block has channel 1 output turned on. Note the COPY_AFG31000
block is rename PLACEHOLDER
here and it preset for block running order reasons. The BASIC_PARAMETERS_AFG31000
block is used to change frequency, offset, voltage, and phase for a single channel, without changing the function itself.
The blocks were connected as shown and the app was run. The 3 BASIC_OSCILLATOR
blocks were used to generate the arbitrary waveform. Any waveform generated in Flojoy can be used as the input for ARBITRARY_AFG31000
to allow for any output.
An oscilloscope was connected to the AFG31000 resulting in waveform: