diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/CONNECT_DMM7510.py b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/CONNECT_DMM7510.py new file mode 100644 index 00000000..339d3c66 --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/CONNECT_DMM7510.py @@ -0,0 +1,36 @@ +from flojoy import VisaDevice, flojoy, TextBlob +from flojoy.connection_manager import DeviceConnectionManager + + +@flojoy +def CONNECT_DMM7510( + device: VisaDevice, +) -> TextBlob: + """Open a VISA connection to a Keithley DMM7510. + + Also sets the communication language to TSP. + + Parameters + ---------- + device: VisaDevice + The connected VISA device. + + Returns + ------- + device_addr: TextBlob + The IP or VISA address of the VISA device. + """ + + device_addr = device.get_address() + + dmm = DeviceConnectionManager.tm.add_dmm(device_addr) + dmm.write("*LANG TSP") + lang = dmm.query("*LANG?") + if lang != "TSP": + raise ValueError( + "Command set language not set correctly. Try setting to 'TSP' manually." + ) + + DeviceConnectionManager.register_connection(device, dmm) + + return TextBlob(text_blob=device_addr) diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/app.json b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/app.json new file mode 100644 index 00000000..e257e336 --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/app.json @@ -0,0 +1,643 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "type": "HARDWARE", + "data": { + "id": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "label": "RESET DMM7510", + "func": "RESET_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "RESET_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Reset" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/RESET_DMM7510.py", + "selected": false + }, + "position": { + "x": -365.98860382815104, + "y": -346.86520014985507 + }, + "selected": false, + "positionAbsolute": { + "x": -365.98860382815104, + "y": -346.86520014985507 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "type": "HARDWARE", + "data": { + "id": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "label": "READ MEASUREMENT DMM7510", + "func": "READ_MEASUREMENT_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "READ_MEASUREMENT_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Measurement" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/READ_MEASUREMENT_DMM7510.py", + "selected": false + }, + "position": { + "x": 397.55459909996137, + "y": -348.39554945753986 + }, + "selected": false, + "positionAbsolute": { + "x": 397.55459909996137, + "y": -348.39554945753986 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bf", + "type": "HARDWARE", + "data": { + "id": "MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bf", + "label": "MEASUREMENT PARAMS DMM7510", + "func": "MEASUREMENT_PARAMS_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "autorange": { + "type": "bool", + "default": true, + "desc": "Use auto range?", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "autorange", + "value": true + }, + "meas_range": { + "type": "float", + "default": 1, + "desc": "The range to measure with (i.e. the maximum).", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "meas_range", + "value": 0.1 + }, + "autozero": { + "type": "bool", + "default": true, + "desc": "Use auto zero?", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "autozero", + "value": true + }, + "count": { + "type": "int", + "default": 1, + "desc": "The number of counts to average.", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "count", + "value": 10 + }, + "NPLC": { + "type": "float", + "default": 1, + "desc": "The integration rate in number of clocks.", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "NPLC", + "value": 1 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement settings" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/MEASUREMENT_PARAMS_DMM7510.py", + "selected": false + }, + "position": { + "x": 122.53418479995364, + "y": -100.64663643022996 + }, + "selected": false, + "positionAbsolute": { + "x": 122.53418479995364, + "y": -100.64663643022996 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8e", + "type": "HARDWARE", + "data": { + "id": "MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8e", + "label": "MEASUREMENT FILTER DMM7510", + "func": "MEASUREMENT_FILTER_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "on_off": { + "type": "select", + "options": [ + "on", + "off" + ], + "default": "off", + "desc": "Turn the filter on or off.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "on_off", + "value": "off" + }, + "avg_type": { + "type": "select", + "options": [ + "moving", + "repeat" + ], + "default": "moving", + "desc": "Use moving or repeating averaging.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "avg_type", + "value": "moving" + }, + "count": { + "type": "int", + "default": 10, + "desc": "The number of counts to average.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "count", + "value": 10 + }, + "window": { + "type": "float", + "default": 0, + "desc": "The size of the window, in percent.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "window", + "value": 0 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Filter settings" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/MEASUREMENT_FILTER_DMM7510.py", + "selected": false + }, + "position": { + "x": 128.40664152191533, + "y": -585.1213878287573 + }, + "selected": false, + "positionAbsolute": { + "x": 128.40664152191533, + "y": -585.1213878287573 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "type": "HARDWARE", + "data": { + "id": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "label": "FUNCTION DMM7510", + "func": "FUNCTION_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "FUNCTION_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "function": { + "type": "select", + "options": [ + "DC voltage", + "DC current", + "AC voltage", + "AC current", + "2W resistance", + "4W resistance", + "temperature", + "capacitance", + "continuity", + "diode", + "period", + "frequency", + "DCV ratio" + ], + "default": "DC voltage", + "desc": "Select the measurement function", + "overload": null, + "functionName": "FUNCTION_DMM7510", + "param": "function", + "value": "DC voltage" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/FUNCTION_DMM7510.py", + "selected": false + }, + "position": { + "x": -138.91561228691435, + "y": -348.39119615677674 + }, + "selected": false, + "positionAbsolute": { + "x": -138.91561228691435, + "y": -348.39119615677674 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "type": "HARDWARE", + "data": { + "id": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "label": "DIGITS DMM7510", + "func": "DIGITS_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "DIGITS_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "digits": { + "type": "select", + "options": [ + "3.5", + "4.5", + "5.5", + "6.5", + "7.5" + ], + "default": "7.5", + "desc": "Number of digits for the DMM measurements?", + "overload": null, + "functionName": "DIGITS_DMM7510", + "param": "digits", + "value": "6.5" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement settings" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/DIGITS_DMM7510.py", + "selected": false + }, + "position": { + "x": 118.60936692575538, + "y": -348.93898622831296 + }, + "selected": false, + "positionAbsolute": { + "x": 118.60936692575538, + "y": -348.93898622831296 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8", + "type": "HARDWARE", + "data": { + "id": "CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8", + "label": "CONNECT DMM7510", + "func": "CONNECT_DMM7510", + "type": "HARDWARE", + "ctrls": { + "device": { + "type": "VisaDevice", + "default": null, + "desc": "The connected VISA device.", + "overload": null, + "functionName": "CONNECT_DMM7510", + "param": "device", + "value": "TCPIP::169.254.200.12::INSTR" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP or VISA address of the VISA device." + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/CONNECT_DMM7510.py", + "selected": true + }, + "position": { + "x": -592.955723694826, + "y": -345.1619499307562 + }, + "selected": false, + "positionAbsolute": { + "x": -592.955723694826, + "y": -345.1619499307562 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5", + "type": "VISUALIZATION", + "data": { + "id": "BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5", + "label": "BIG NUMBER", + "func": "BIG_NUMBER", + "type": "VISUALIZATION", + "ctrls": { + "suffix": { + "type": "str", + "default": null, + "desc": "any suffix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "suffix", + "value": " V" + }, + "prefix": { + "type": "str", + "default": null, + "desc": "any prefix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "prefix", + "value": "" + }, + "title": { + "type": "str", + "default": null, + "desc": "title of the plot, default = \"BIG_NUMBER\"", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "title", + "value": "" + }, + "relative_delta": { + "type": "bool", + "default": true, + "desc": "whether or not to show the relative delta from the last run along with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "relative_delta", + "value": true + }, + "scientific_notation": { + "type": "bool", + "default": false, + "desc": null, + "overload": null, + "functionName": "BIG_NUMBER", + "param": "scientific_notation", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Scalar|Vector", + "multiple": false, + "desc": "the DataContainer to be visualized" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly", + "desc": "the DataContainer containing the Plotly big number visualization" + } + ], + "path": "DATA/VISUALIZATION/PLOTLY/BIG_NUMBER/BIG_NUMBER.py", + "selected": false + }, + "position": { + "x": 667.4303529715919, + "y": -398.3189188865829 + }, + "selected": false, + "positionAbsolute": { + "x": 667.4303529715919, + "y": -398.3189188865829 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8", + "sourceHandle": "default", + "target": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "targetHandle": "input", + "id": "reactflow__edge-CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8default-RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767input" + }, + { + "source": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "sourceHandle": "default", + "target": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "targetHandle": "input", + "id": "reactflow__edge-DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13default-READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35input" + }, + { + "source": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "sourceHandle": "default", + "target": "MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bf", + "targetHandle": "input", + "id": "reactflow__edge-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aaddefault-MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bfinput" + }, + { + "source": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "sourceHandle": "default", + "target": "MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8e", + "targetHandle": "input", + "id": "reactflow__edge-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aaddefault-MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8einput" + }, + { + "source": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "sourceHandle": "default", + "target": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "targetHandle": "input", + "id": "reactflow__edge-RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767default-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aadinput" + }, + { + "source": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "sourceHandle": "default", + "target": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "targetHandle": "input", + "id": "reactflow__edge-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aaddefault-DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13input" + }, + { + "source": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "sourceHandle": "default", + "target": "BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5", + "targetHandle": "default", + "id": "reactflow__edge-READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35default-BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5default" + } + ], + "viewport": { + "x": 1181.2883637885323, + "y": 525.5787480876195, + "zoom": 1.0441212277180714 + } + }, + "textNodes": [] +} \ No newline at end of file diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/block_data.json b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/block_data.json new file mode 100644 index 00000000..19481dbf --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/block_data.json @@ -0,0 +1,20 @@ +{ + "docstring": { + "long_description": "Also sets the communication language to TSP.", + "short_description": "Open a VISA connection to a Keithley DMM7510.", + "parameters": [ + { + "name": "device", + "type": "VisaDevice", + "description": "The connected VISA device." + } + ], + "returns": [ + { + "name": "device_addr", + "type": "TextBlob", + "description": "The IP or VISA address of the VISA device." + } + ] + } +} \ No newline at end of file diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/example.md b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/example.md new file mode 100644 index 00000000..efee664b --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/example.md @@ -0,0 +1,16 @@ +In this example, a DC voltage measurement was extracted from a Keithley DMM7510. + +First the necessary blocks were added: + +- `CONNECT_DMM7510` +- `RESET_DMM7510` +- `FUNCTION_DMM7510` +- `DIGITS_DMM7510` +- `MEASUREMENT_PARAMS_DMM7510` +- `MEASUREMENT_FILTER_DMM7510` +- `READ_DMM7510` +- `BIG_NUMBER` + +The instrument address was set for each `DMM7510` block. The `FUNCTION_DMM7510` block was changed in order to extract the correct measurement. The parameters in `DIGITS_DMM7510`, `MEASUREMENT_PARAMS_DMM7510`, and `MEASUREMENT_FILTER_DMM7510` blocks were changed as necessary. The `READ_DMM7510` block was connected to the `BIG_NUMBER` block in order to view the reading. + +The blocks were connected as shown and the app was run. diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITIZED_TIME_DMM7510/DIGITIZED_TIME_DMM7510.py b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITIZED_TIME_DMM7510/DIGITIZED_TIME_DMM7510.py new file mode 100644 index 00000000..051f19b5 --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITIZED_TIME_DMM7510/DIGITIZED_TIME_DMM7510.py @@ -0,0 +1,67 @@ +from typing import Optional, Literal +from flojoy import VisaConnection, flojoy, DataContainer, OrderedPair + + +@flojoy(inject_connection=True) +def DIGITIZED_TIME_DMM7510( + connection: VisaConnection, + input: Optional[DataContainer] = None, + function: Literal[ + "Digitize voltage", + "Digitize current", + ] = "Digitize voltage", + num_samples: int = 100, + sample_rate: float = 1e3, + range: float = 1, +) -> OrderedPair: + """Measures digitized data vs time. + + Requires a CONNECT_DMM7510 block to create the connection. + + Parameters + ---------- + connection : VisaConnection + The VISA address (requires the CONNECTION_DMM7510 block). + function : select, default=Digitize voltage + Select the measurement function + num_samples : int, default=100 + The number of points/samples to measure. + sample_rate : float, default=1000 + The number of samples per second. + range : float, default=1 + The range of the function measurement. + + Returns + ------- + OrderedPair + x: time + y: measurements + """ + + dmm = connection.get_handle() + + if function == "Digitize voltage": + dmm.write("dmm.digitize.func = dmm.FUNC_DIGITIZE_VOLTAGE") + else: + dmm.write("dmm.digitize.func = dmm.FUNC_DIGITIZE_CURRENT") + + dmm.write(f"dmm.digitize.range = {range}") + dmm.write(f"dmm.digitize.samplerate = {sample_rate}") + dmm.write(f"dmm.digitize.count = {num_samples}") + + dmm.write("dmm.digitize.aperture = dmm.APERTURE_AUTO") + dmm.commands.dmm.digitize.inputimpedance = "dmm.IMPEDANCE_AUTO" + + dmm.commands.buffer_var["defbuffer1"].capacity = num_samples + dmm.write("defbuffer1.clear()") + dmm.write("dmm.digitize.read()") + + time = [] + y = [] + for cnt in range(1, num_samples + 1): + y.append(float(dmm.commands.buffer_var["defbuffer1"].readings[cnt])) + time.append( + float(dmm.commands.buffer_var["defbuffer1"].relativetimestamps[cnt]) + ) + + return OrderedPair(x=time, y=y) diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITIZED_TIME_DMM7510/app.json b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITIZED_TIME_DMM7510/app.json new file mode 100644 index 00000000..e257e336 --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITIZED_TIME_DMM7510/app.json @@ -0,0 +1,643 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "type": "HARDWARE", + "data": { + "id": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "label": "RESET DMM7510", + "func": "RESET_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "RESET_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Reset" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/RESET_DMM7510.py", + "selected": false + }, + "position": { + "x": -365.98860382815104, + "y": -346.86520014985507 + }, + "selected": false, + "positionAbsolute": { + "x": -365.98860382815104, + "y": -346.86520014985507 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "type": "HARDWARE", + "data": { + "id": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "label": "READ MEASUREMENT DMM7510", + "func": "READ_MEASUREMENT_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "READ_MEASUREMENT_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Measurement" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/READ_MEASUREMENT_DMM7510.py", + "selected": false + }, + "position": { + "x": 397.55459909996137, + "y": -348.39554945753986 + }, + "selected": false, + "positionAbsolute": { + "x": 397.55459909996137, + "y": -348.39554945753986 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bf", + "type": "HARDWARE", + "data": { + "id": "MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bf", + "label": "MEASUREMENT PARAMS DMM7510", + "func": "MEASUREMENT_PARAMS_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "autorange": { + "type": "bool", + "default": true, + "desc": "Use auto range?", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "autorange", + "value": true + }, + "meas_range": { + "type": "float", + "default": 1, + "desc": "The range to measure with (i.e. the maximum).", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "meas_range", + "value": 0.1 + }, + "autozero": { + "type": "bool", + "default": true, + "desc": "Use auto zero?", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "autozero", + "value": true + }, + "count": { + "type": "int", + "default": 1, + "desc": "The number of counts to average.", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "count", + "value": 10 + }, + "NPLC": { + "type": "float", + "default": 1, + "desc": "The integration rate in number of clocks.", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "NPLC", + "value": 1 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement settings" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/MEASUREMENT_PARAMS_DMM7510.py", + "selected": false + }, + "position": { + "x": 122.53418479995364, + "y": -100.64663643022996 + }, + "selected": false, + "positionAbsolute": { + "x": 122.53418479995364, + "y": -100.64663643022996 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8e", + "type": "HARDWARE", + "data": { + "id": "MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8e", + "label": "MEASUREMENT FILTER DMM7510", + "func": "MEASUREMENT_FILTER_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "on_off": { + "type": "select", + "options": [ + "on", + "off" + ], + "default": "off", + "desc": "Turn the filter on or off.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "on_off", + "value": "off" + }, + "avg_type": { + "type": "select", + "options": [ + "moving", + "repeat" + ], + "default": "moving", + "desc": "Use moving or repeating averaging.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "avg_type", + "value": "moving" + }, + "count": { + "type": "int", + "default": 10, + "desc": "The number of counts to average.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "count", + "value": 10 + }, + "window": { + "type": "float", + "default": 0, + "desc": "The size of the window, in percent.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "window", + "value": 0 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Filter settings" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/MEASUREMENT_FILTER_DMM7510.py", + "selected": false + }, + "position": { + "x": 128.40664152191533, + "y": -585.1213878287573 + }, + "selected": false, + "positionAbsolute": { + "x": 128.40664152191533, + "y": -585.1213878287573 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "type": "HARDWARE", + "data": { + "id": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "label": "FUNCTION DMM7510", + "func": "FUNCTION_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "FUNCTION_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "function": { + "type": "select", + "options": [ + "DC voltage", + "DC current", + "AC voltage", + "AC current", + "2W resistance", + "4W resistance", + "temperature", + "capacitance", + "continuity", + "diode", + "period", + "frequency", + "DCV ratio" + ], + "default": "DC voltage", + "desc": "Select the measurement function", + "overload": null, + "functionName": "FUNCTION_DMM7510", + "param": "function", + "value": "DC voltage" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/FUNCTION_DMM7510.py", + "selected": false + }, + "position": { + "x": -138.91561228691435, + "y": -348.39119615677674 + }, + "selected": false, + "positionAbsolute": { + "x": -138.91561228691435, + "y": -348.39119615677674 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "type": "HARDWARE", + "data": { + "id": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "label": "DIGITS DMM7510", + "func": "DIGITS_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "DIGITS_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "digits": { + "type": "select", + "options": [ + "3.5", + "4.5", + "5.5", + "6.5", + "7.5" + ], + "default": "7.5", + "desc": "Number of digits for the DMM measurements?", + "overload": null, + "functionName": "DIGITS_DMM7510", + "param": "digits", + "value": "6.5" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement settings" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/DIGITS_DMM7510.py", + "selected": false + }, + "position": { + "x": 118.60936692575538, + "y": -348.93898622831296 + }, + "selected": false, + "positionAbsolute": { + "x": 118.60936692575538, + "y": -348.93898622831296 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8", + "type": "HARDWARE", + "data": { + "id": "CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8", + "label": "CONNECT DMM7510", + "func": "CONNECT_DMM7510", + "type": "HARDWARE", + "ctrls": { + "device": { + "type": "VisaDevice", + "default": null, + "desc": "The connected VISA device.", + "overload": null, + "functionName": "CONNECT_DMM7510", + "param": "device", + "value": "TCPIP::169.254.200.12::INSTR" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP or VISA address of the VISA device." + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/CONNECT_DMM7510.py", + "selected": true + }, + "position": { + "x": -592.955723694826, + "y": -345.1619499307562 + }, + "selected": false, + "positionAbsolute": { + "x": -592.955723694826, + "y": -345.1619499307562 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5", + "type": "VISUALIZATION", + "data": { + "id": "BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5", + "label": "BIG NUMBER", + "func": "BIG_NUMBER", + "type": "VISUALIZATION", + "ctrls": { + "suffix": { + "type": "str", + "default": null, + "desc": "any suffix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "suffix", + "value": " V" + }, + "prefix": { + "type": "str", + "default": null, + "desc": "any prefix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "prefix", + "value": "" + }, + "title": { + "type": "str", + "default": null, + "desc": "title of the plot, default = \"BIG_NUMBER\"", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "title", + "value": "" + }, + "relative_delta": { + "type": "bool", + "default": true, + "desc": "whether or not to show the relative delta from the last run along with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "relative_delta", + "value": true + }, + "scientific_notation": { + "type": "bool", + "default": false, + "desc": null, + "overload": null, + "functionName": "BIG_NUMBER", + "param": "scientific_notation", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Scalar|Vector", + "multiple": false, + "desc": "the DataContainer to be visualized" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly", + "desc": "the DataContainer containing the Plotly big number visualization" + } + ], + "path": "DATA/VISUALIZATION/PLOTLY/BIG_NUMBER/BIG_NUMBER.py", + "selected": false + }, + "position": { + "x": 667.4303529715919, + "y": -398.3189188865829 + }, + "selected": false, + "positionAbsolute": { + "x": 667.4303529715919, + "y": -398.3189188865829 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8", + "sourceHandle": "default", + "target": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "targetHandle": "input", + "id": "reactflow__edge-CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8default-RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767input" + }, + { + "source": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "sourceHandle": "default", + "target": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "targetHandle": "input", + "id": "reactflow__edge-DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13default-READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35input" + }, + { + "source": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "sourceHandle": "default", + "target": "MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bf", + "targetHandle": "input", + "id": "reactflow__edge-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aaddefault-MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bfinput" + }, + { + "source": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "sourceHandle": "default", + "target": "MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8e", + "targetHandle": "input", + "id": "reactflow__edge-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aaddefault-MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8einput" + }, + { + "source": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "sourceHandle": "default", + "target": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "targetHandle": "input", + "id": "reactflow__edge-RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767default-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aadinput" + }, + { + "source": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "sourceHandle": "default", + "target": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "targetHandle": "input", + "id": "reactflow__edge-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aaddefault-DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13input" + }, + { + "source": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "sourceHandle": "default", + "target": "BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5", + "targetHandle": "default", + "id": "reactflow__edge-READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35default-BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5default" + } + ], + "viewport": { + "x": 1181.2883637885323, + "y": 525.5787480876195, + "zoom": 1.0441212277180714 + } + }, + "textNodes": [] +} \ No newline at end of file diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITIZED_TIME_DMM7510/block_data.json b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITIZED_TIME_DMM7510/block_data.json new file mode 100644 index 00000000..8ddc6220 --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITIZED_TIME_DMM7510/block_data.json @@ -0,0 +1,40 @@ +{ + "docstring": { + "long_description": "Requires a CONNECT_DMM7510 block to create the connection.", + "short_description": "Measures digitized data vs time.", + "parameters": [ + { + "name": "connection", + "type": "VisaConnection", + "description": "The VISA address (requires the CONNECTION_DMM7510 block)." + }, + { + "name": "function", + "type": "select, default=Digitize voltage", + "description": "Select the measurement function" + }, + { + "name": "num_samples", + "type": "int, default=100", + "description": "The number of points/samples to measure." + }, + { + "name": "sample_rate", + "type": "float, default=1000", + "description": "The number of samples per second." + }, + { + "name": "range", + "type": "float, default=1", + "description": "The range of the function measurement." + } + ], + "returns": [ + { + "name": null, + "type": "OrderedPair", + "description": "x: time\ny: measurements" + } + ] + } +} \ No newline at end of file diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITIZED_TIME_DMM7510/example.md b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITIZED_TIME_DMM7510/example.md new file mode 100644 index 00000000..efee664b --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITIZED_TIME_DMM7510/example.md @@ -0,0 +1,16 @@ +In this example, a DC voltage measurement was extracted from a Keithley DMM7510. + +First the necessary blocks were added: + +- `CONNECT_DMM7510` +- `RESET_DMM7510` +- `FUNCTION_DMM7510` +- `DIGITS_DMM7510` +- `MEASUREMENT_PARAMS_DMM7510` +- `MEASUREMENT_FILTER_DMM7510` +- `READ_DMM7510` +- `BIG_NUMBER` + +The instrument address was set for each `DMM7510` block. The `FUNCTION_DMM7510` block was changed in order to extract the correct measurement. The parameters in `DIGITS_DMM7510`, `MEASUREMENT_PARAMS_DMM7510`, and `MEASUREMENT_FILTER_DMM7510` blocks were changed as necessary. The `READ_DMM7510` block was connected to the `BIG_NUMBER` block in order to view the reading. + +The blocks were connected as shown and the app was run. diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/DIGITS_DMM7510.py b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/DIGITS_DMM7510.py new file mode 100644 index 00000000..8e8c3b9a --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/DIGITS_DMM7510.py @@ -0,0 +1,44 @@ +from typing import Optional, Literal +from flojoy import VisaConnection, flojoy, DataContainer, TextBlob + + +@flojoy(inject_connection=True) +def DIGITS_DMM7510( + connection: VisaConnection, + input: Optional[DataContainer] = None, + digits: Literal["3.5", "4.5", "5.5", "6.5", "7.5"] = "7.5", +) -> TextBlob: + """Changes the number of digits for measurements for the DMM7510. + + Less digits is faster (but less accurate). + + Requires a CONNECT_DMM7510 block to create the connection. + + Parameters + ---------- + connection : VisaConnection + The VISA address (requires the CONNECTION_DMM7510 block). + digits : select, default=7.5, + Number of digits for the DMM measurements? + + Returns + ------- + TextBlob + Measurement settings + """ + + dmm = connection.get_handle() + + match digits: + case "3.5": + dmm.commands.dmm.measure.displaydigits = "dmm.DIGITS_3_5" + case "4.5": + dmm.commands.dmm.measure.displaydigits = "dmm.DIGITS_4_5" + case "5.5": + dmm.commands.dmm.measure.displaydigits = "dmm.DIGITS_5_5" + case "6.5": + dmm.commands.dmm.measure.displaydigits = "dmm.DIGITS_6_5" + case "7.5": + dmm.commands.dmm.measure.displaydigits = "dmm.DIGITS_7_5" + + return TextBlob(text_blob=f"Digits: {digits}") diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/app.json b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/app.json new file mode 100644 index 00000000..e257e336 --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/app.json @@ -0,0 +1,643 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "type": "HARDWARE", + "data": { + "id": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "label": "RESET DMM7510", + "func": "RESET_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "RESET_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Reset" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/RESET_DMM7510.py", + "selected": false + }, + "position": { + "x": -365.98860382815104, + "y": -346.86520014985507 + }, + "selected": false, + "positionAbsolute": { + "x": -365.98860382815104, + "y": -346.86520014985507 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "type": "HARDWARE", + "data": { + "id": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "label": "READ MEASUREMENT DMM7510", + "func": "READ_MEASUREMENT_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "READ_MEASUREMENT_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Measurement" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/READ_MEASUREMENT_DMM7510.py", + "selected": false + }, + "position": { + "x": 397.55459909996137, + "y": -348.39554945753986 + }, + "selected": false, + "positionAbsolute": { + "x": 397.55459909996137, + "y": -348.39554945753986 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bf", + "type": "HARDWARE", + "data": { + "id": "MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bf", + "label": "MEASUREMENT PARAMS DMM7510", + "func": "MEASUREMENT_PARAMS_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "autorange": { + "type": "bool", + "default": true, + "desc": "Use auto range?", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "autorange", + "value": true + }, + "meas_range": { + "type": "float", + "default": 1, + "desc": "The range to measure with (i.e. the maximum).", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "meas_range", + "value": 0.1 + }, + "autozero": { + "type": "bool", + "default": true, + "desc": "Use auto zero?", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "autozero", + "value": true + }, + "count": { + "type": "int", + "default": 1, + "desc": "The number of counts to average.", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "count", + "value": 10 + }, + "NPLC": { + "type": "float", + "default": 1, + "desc": "The integration rate in number of clocks.", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "NPLC", + "value": 1 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement settings" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/MEASUREMENT_PARAMS_DMM7510.py", + "selected": false + }, + "position": { + "x": 122.53418479995364, + "y": -100.64663643022996 + }, + "selected": false, + "positionAbsolute": { + "x": 122.53418479995364, + "y": -100.64663643022996 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8e", + "type": "HARDWARE", + "data": { + "id": "MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8e", + "label": "MEASUREMENT FILTER DMM7510", + "func": "MEASUREMENT_FILTER_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "on_off": { + "type": "select", + "options": [ + "on", + "off" + ], + "default": "off", + "desc": "Turn the filter on or off.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "on_off", + "value": "off" + }, + "avg_type": { + "type": "select", + "options": [ + "moving", + "repeat" + ], + "default": "moving", + "desc": "Use moving or repeating averaging.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "avg_type", + "value": "moving" + }, + "count": { + "type": "int", + "default": 10, + "desc": "The number of counts to average.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "count", + "value": 10 + }, + "window": { + "type": "float", + "default": 0, + "desc": "The size of the window, in percent.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "window", + "value": 0 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Filter settings" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/MEASUREMENT_FILTER_DMM7510.py", + "selected": false + }, + "position": { + "x": 128.40664152191533, + "y": -585.1213878287573 + }, + "selected": false, + "positionAbsolute": { + "x": 128.40664152191533, + "y": -585.1213878287573 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "type": "HARDWARE", + "data": { + "id": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "label": "FUNCTION DMM7510", + "func": "FUNCTION_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "FUNCTION_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "function": { + "type": "select", + "options": [ + "DC voltage", + "DC current", + "AC voltage", + "AC current", + "2W resistance", + "4W resistance", + "temperature", + "capacitance", + "continuity", + "diode", + "period", + "frequency", + "DCV ratio" + ], + "default": "DC voltage", + "desc": "Select the measurement function", + "overload": null, + "functionName": "FUNCTION_DMM7510", + "param": "function", + "value": "DC voltage" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/FUNCTION_DMM7510.py", + "selected": false + }, + "position": { + "x": -138.91561228691435, + "y": -348.39119615677674 + }, + "selected": false, + "positionAbsolute": { + "x": -138.91561228691435, + "y": -348.39119615677674 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "type": "HARDWARE", + "data": { + "id": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "label": "DIGITS DMM7510", + "func": "DIGITS_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "DIGITS_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "digits": { + "type": "select", + "options": [ + "3.5", + "4.5", + "5.5", + "6.5", + "7.5" + ], + "default": "7.5", + "desc": "Number of digits for the DMM measurements?", + "overload": null, + "functionName": "DIGITS_DMM7510", + "param": "digits", + "value": "6.5" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement settings" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/DIGITS_DMM7510.py", + "selected": false + }, + "position": { + "x": 118.60936692575538, + "y": -348.93898622831296 + }, + "selected": false, + "positionAbsolute": { + "x": 118.60936692575538, + "y": -348.93898622831296 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8", + "type": "HARDWARE", + "data": { + "id": "CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8", + "label": "CONNECT DMM7510", + "func": "CONNECT_DMM7510", + "type": "HARDWARE", + "ctrls": { + "device": { + "type": "VisaDevice", + "default": null, + "desc": "The connected VISA device.", + "overload": null, + "functionName": "CONNECT_DMM7510", + "param": "device", + "value": "TCPIP::169.254.200.12::INSTR" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP or VISA address of the VISA device." + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/CONNECT_DMM7510.py", + "selected": true + }, + "position": { + "x": -592.955723694826, + "y": -345.1619499307562 + }, + "selected": false, + "positionAbsolute": { + "x": -592.955723694826, + "y": -345.1619499307562 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5", + "type": "VISUALIZATION", + "data": { + "id": "BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5", + "label": "BIG NUMBER", + "func": "BIG_NUMBER", + "type": "VISUALIZATION", + "ctrls": { + "suffix": { + "type": "str", + "default": null, + "desc": "any suffix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "suffix", + "value": " V" + }, + "prefix": { + "type": "str", + "default": null, + "desc": "any prefix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "prefix", + "value": "" + }, + "title": { + "type": "str", + "default": null, + "desc": "title of the plot, default = \"BIG_NUMBER\"", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "title", + "value": "" + }, + "relative_delta": { + "type": "bool", + "default": true, + "desc": "whether or not to show the relative delta from the last run along with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "relative_delta", + "value": true + }, + "scientific_notation": { + "type": "bool", + "default": false, + "desc": null, + "overload": null, + "functionName": "BIG_NUMBER", + "param": "scientific_notation", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Scalar|Vector", + "multiple": false, + "desc": "the DataContainer to be visualized" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly", + "desc": "the DataContainer containing the Plotly big number visualization" + } + ], + "path": "DATA/VISUALIZATION/PLOTLY/BIG_NUMBER/BIG_NUMBER.py", + "selected": false + }, + "position": { + "x": 667.4303529715919, + "y": -398.3189188865829 + }, + "selected": false, + "positionAbsolute": { + "x": 667.4303529715919, + "y": -398.3189188865829 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8", + "sourceHandle": "default", + "target": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "targetHandle": "input", + "id": "reactflow__edge-CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8default-RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767input" + }, + { + "source": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "sourceHandle": "default", + "target": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "targetHandle": "input", + "id": "reactflow__edge-DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13default-READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35input" + }, + { + "source": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "sourceHandle": "default", + "target": "MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bf", + "targetHandle": "input", + "id": "reactflow__edge-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aaddefault-MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bfinput" + }, + { + "source": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "sourceHandle": "default", + "target": "MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8e", + "targetHandle": "input", + "id": "reactflow__edge-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aaddefault-MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8einput" + }, + { + "source": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "sourceHandle": "default", + "target": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "targetHandle": "input", + "id": "reactflow__edge-RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767default-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aadinput" + }, + { + "source": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "sourceHandle": "default", + "target": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "targetHandle": "input", + "id": "reactflow__edge-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aaddefault-DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13input" + }, + { + "source": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "sourceHandle": "default", + "target": "BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5", + "targetHandle": "default", + "id": "reactflow__edge-READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35default-BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5default" + } + ], + "viewport": { + "x": 1181.2883637885323, + "y": 525.5787480876195, + "zoom": 1.0441212277180714 + } + }, + "textNodes": [] +} \ No newline at end of file diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/block_data.json b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/block_data.json new file mode 100644 index 00000000..f39edac4 --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/block_data.json @@ -0,0 +1,25 @@ +{ + "docstring": { + "long_description": "Less digits is faster (but less accurate).\n\nRequires a CONNECT_DMM7510 block to create the connection.", + "short_description": "Changes the number of digits for measurements for the DMM7510.", + "parameters": [ + { + "name": "connection", + "type": "VisaConnection", + "description": "The VISA address (requires the CONNECTION_DMM7510 block)." + }, + { + "name": "digits", + "type": "select, default=7.5,", + "description": "Number of digits for the DMM measurements?" + } + ], + "returns": [ + { + "name": null, + "type": "TextBlob", + "description": "Measurement settings" + } + ] + } +} \ No newline at end of file diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/example.md b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/example.md new file mode 100644 index 00000000..efee664b --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/example.md @@ -0,0 +1,16 @@ +In this example, a DC voltage measurement was extracted from a Keithley DMM7510. + +First the necessary blocks were added: + +- `CONNECT_DMM7510` +- `RESET_DMM7510` +- `FUNCTION_DMM7510` +- `DIGITS_DMM7510` +- `MEASUREMENT_PARAMS_DMM7510` +- `MEASUREMENT_FILTER_DMM7510` +- `READ_DMM7510` +- `BIG_NUMBER` + +The instrument address was set for each `DMM7510` block. The `FUNCTION_DMM7510` block was changed in order to extract the correct measurement. The parameters in `DIGITS_DMM7510`, `MEASUREMENT_PARAMS_DMM7510`, and `MEASUREMENT_FILTER_DMM7510` blocks were changed as necessary. The `READ_DMM7510` block was connected to the `BIG_NUMBER` block in order to view the reading. + +The blocks were connected as shown and the app was run. diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/FUNCTION_DMM7510.py b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/FUNCTION_DMM7510.py new file mode 100644 index 00000000..1b88f752 --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/FUNCTION_DMM7510.py @@ -0,0 +1,72 @@ +from typing import Optional, Literal +from flojoy import VisaConnection, flojoy, DataContainer, TextBlob + + +@flojoy(inject_connection=True) +def FUNCTION_DMM7510( + connection: VisaConnection, + input: Optional[DataContainer] = None, + function: Literal[ + "DC voltage", + "DC current", + "AC voltage", + "AC current", + "2W resistance", + "4W resistance", + "temperature", + "capacitance", + "continuity", + "diode", + "period", + "frequency", + "DCV ratio", + ] = "DC voltage", +) -> TextBlob: + """Changes the measurement function for the DMM7510. + + Requires a CONNECT_DMM7510 block to create the connection. + + Parameters + ---------- + connection : VisaConnection + The VISA address (requires the CONNECTION_DMM7510 block). + function : select, default=DC voltage + Select the measurement function + + Returns + ------- + TextBlob + Measurement + """ + + dmm = connection.get_handle() + + match function: + case "DC voltage": + dmm.commands.dmm.measure.func = "dmm.FUNC_DC_VOLTAGE" + case "DC current": + dmm.commands.dmm.measure.func = "dmm.FUNC_DC_CURRENT" + case "AC voltage": + dmm.commands.dmm.measure.func = "dmm.FUNC_AC_VOLTAGE" + case "AC current": + dmm.commands.dmm.measure.func = "dmm.FUNC_AC_CURRENT" + case "2W resistance": + dmm.commands.dmm.measure.func = "dmm.FUNC_RESISTANCE" + case "4W resistance": + dmm.commands.dmm.measure.func = "dmm.FUNC_4W_RESISTANCE" + case "temperature": + dmm.commands.dmm.measure.func = "dmm.FUNC_TEMPERATURE" + case "capacitance": + dmm.commands.dmm.measure.func = "dmm.FUNC_CAPACITANCE" + case "continuity": + dmm.commands.dmm.measure.func = "dmm.FUNC_CONTINUITY" + case "diode": + dmm.commands.dmm.measure.func = "dmm.FUNC_DIODE" + case "period": + dmm.commands.dmm.measure.func = "dmm.FUNC_PERIOD" + case "frequency": + dmm.commands.dmm.measure.func = "dmm.FUNC_FREQUENCY" + case "DCV ratio": + dmm.commands.dmm.measure.func = "dmm.FUNC_DCV_RATIO" + + return TextBlob(text_blob=f"Measure {function}") diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/app.json b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/app.json new file mode 100644 index 00000000..e257e336 --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/app.json @@ -0,0 +1,643 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "type": "HARDWARE", + "data": { + "id": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "label": "RESET DMM7510", + "func": "RESET_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "RESET_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Reset" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/RESET_DMM7510.py", + "selected": false + }, + "position": { + "x": -365.98860382815104, + "y": -346.86520014985507 + }, + "selected": false, + "positionAbsolute": { + "x": -365.98860382815104, + "y": -346.86520014985507 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "type": "HARDWARE", + "data": { + "id": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "label": "READ MEASUREMENT DMM7510", + "func": "READ_MEASUREMENT_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "READ_MEASUREMENT_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Measurement" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/READ_MEASUREMENT_DMM7510.py", + "selected": false + }, + "position": { + "x": 397.55459909996137, + "y": -348.39554945753986 + }, + "selected": false, + "positionAbsolute": { + "x": 397.55459909996137, + "y": -348.39554945753986 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bf", + "type": "HARDWARE", + "data": { + "id": "MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bf", + "label": "MEASUREMENT PARAMS DMM7510", + "func": "MEASUREMENT_PARAMS_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "autorange": { + "type": "bool", + "default": true, + "desc": "Use auto range?", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "autorange", + "value": true + }, + "meas_range": { + "type": "float", + "default": 1, + "desc": "The range to measure with (i.e. the maximum).", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "meas_range", + "value": 0.1 + }, + "autozero": { + "type": "bool", + "default": true, + "desc": "Use auto zero?", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "autozero", + "value": true + }, + "count": { + "type": "int", + "default": 1, + "desc": "The number of counts to average.", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "count", + "value": 10 + }, + "NPLC": { + "type": "float", + "default": 1, + "desc": "The integration rate in number of clocks.", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "NPLC", + "value": 1 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement settings" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/MEASUREMENT_PARAMS_DMM7510.py", + "selected": false + }, + "position": { + "x": 122.53418479995364, + "y": -100.64663643022996 + }, + "selected": false, + "positionAbsolute": { + "x": 122.53418479995364, + "y": -100.64663643022996 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8e", + "type": "HARDWARE", + "data": { + "id": "MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8e", + "label": "MEASUREMENT FILTER DMM7510", + "func": "MEASUREMENT_FILTER_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "on_off": { + "type": "select", + "options": [ + "on", + "off" + ], + "default": "off", + "desc": "Turn the filter on or off.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "on_off", + "value": "off" + }, + "avg_type": { + "type": "select", + "options": [ + "moving", + "repeat" + ], + "default": "moving", + "desc": "Use moving or repeating averaging.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "avg_type", + "value": "moving" + }, + "count": { + "type": "int", + "default": 10, + "desc": "The number of counts to average.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "count", + "value": 10 + }, + "window": { + "type": "float", + "default": 0, + "desc": "The size of the window, in percent.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "window", + "value": 0 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Filter settings" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/MEASUREMENT_FILTER_DMM7510.py", + "selected": false + }, + "position": { + "x": 128.40664152191533, + "y": -585.1213878287573 + }, + "selected": false, + "positionAbsolute": { + "x": 128.40664152191533, + "y": -585.1213878287573 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "type": "HARDWARE", + "data": { + "id": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "label": "FUNCTION DMM7510", + "func": "FUNCTION_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "FUNCTION_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "function": { + "type": "select", + "options": [ + "DC voltage", + "DC current", + "AC voltage", + "AC current", + "2W resistance", + "4W resistance", + "temperature", + "capacitance", + "continuity", + "diode", + "period", + "frequency", + "DCV ratio" + ], + "default": "DC voltage", + "desc": "Select the measurement function", + "overload": null, + "functionName": "FUNCTION_DMM7510", + "param": "function", + "value": "DC voltage" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/FUNCTION_DMM7510.py", + "selected": false + }, + "position": { + "x": -138.91561228691435, + "y": -348.39119615677674 + }, + "selected": false, + "positionAbsolute": { + "x": -138.91561228691435, + "y": -348.39119615677674 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "type": "HARDWARE", + "data": { + "id": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "label": "DIGITS DMM7510", + "func": "DIGITS_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "DIGITS_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "digits": { + "type": "select", + "options": [ + "3.5", + "4.5", + "5.5", + "6.5", + "7.5" + ], + "default": "7.5", + "desc": "Number of digits for the DMM measurements?", + "overload": null, + "functionName": "DIGITS_DMM7510", + "param": "digits", + "value": "6.5" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement settings" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/DIGITS_DMM7510.py", + "selected": false + }, + "position": { + "x": 118.60936692575538, + "y": -348.93898622831296 + }, + "selected": false, + "positionAbsolute": { + "x": 118.60936692575538, + "y": -348.93898622831296 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8", + "type": "HARDWARE", + "data": { + "id": "CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8", + "label": "CONNECT DMM7510", + "func": "CONNECT_DMM7510", + "type": "HARDWARE", + "ctrls": { + "device": { + "type": "VisaDevice", + "default": null, + "desc": "The connected VISA device.", + "overload": null, + "functionName": "CONNECT_DMM7510", + "param": "device", + "value": "TCPIP::169.254.200.12::INSTR" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP or VISA address of the VISA device." + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/CONNECT_DMM7510.py", + "selected": true + }, + "position": { + "x": -592.955723694826, + "y": -345.1619499307562 + }, + "selected": false, + "positionAbsolute": { + "x": -592.955723694826, + "y": -345.1619499307562 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5", + "type": "VISUALIZATION", + "data": { + "id": "BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5", + "label": "BIG NUMBER", + "func": "BIG_NUMBER", + "type": "VISUALIZATION", + "ctrls": { + "suffix": { + "type": "str", + "default": null, + "desc": "any suffix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "suffix", + "value": " V" + }, + "prefix": { + "type": "str", + "default": null, + "desc": "any prefix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "prefix", + "value": "" + }, + "title": { + "type": "str", + "default": null, + "desc": "title of the plot, default = \"BIG_NUMBER\"", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "title", + "value": "" + }, + "relative_delta": { + "type": "bool", + "default": true, + "desc": "whether or not to show the relative delta from the last run along with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "relative_delta", + "value": true + }, + "scientific_notation": { + "type": "bool", + "default": false, + "desc": null, + "overload": null, + "functionName": "BIG_NUMBER", + "param": "scientific_notation", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Scalar|Vector", + "multiple": false, + "desc": "the DataContainer to be visualized" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly", + "desc": "the DataContainer containing the Plotly big number visualization" + } + ], + "path": "DATA/VISUALIZATION/PLOTLY/BIG_NUMBER/BIG_NUMBER.py", + "selected": false + }, + "position": { + "x": 667.4303529715919, + "y": -398.3189188865829 + }, + "selected": false, + "positionAbsolute": { + "x": 667.4303529715919, + "y": -398.3189188865829 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8", + "sourceHandle": "default", + "target": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "targetHandle": "input", + "id": "reactflow__edge-CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8default-RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767input" + }, + { + "source": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "sourceHandle": "default", + "target": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "targetHandle": "input", + "id": "reactflow__edge-DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13default-READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35input" + }, + { + "source": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "sourceHandle": "default", + "target": "MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bf", + "targetHandle": "input", + "id": "reactflow__edge-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aaddefault-MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bfinput" + }, + { + "source": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "sourceHandle": "default", + "target": "MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8e", + "targetHandle": "input", + "id": "reactflow__edge-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aaddefault-MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8einput" + }, + { + "source": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "sourceHandle": "default", + "target": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "targetHandle": "input", + "id": "reactflow__edge-RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767default-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aadinput" + }, + { + "source": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "sourceHandle": "default", + "target": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "targetHandle": "input", + "id": "reactflow__edge-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aaddefault-DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13input" + }, + { + "source": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "sourceHandle": "default", + "target": "BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5", + "targetHandle": "default", + "id": "reactflow__edge-READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35default-BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5default" + } + ], + "viewport": { + "x": 1181.2883637885323, + "y": 525.5787480876195, + "zoom": 1.0441212277180714 + } + }, + "textNodes": [] +} \ No newline at end of file diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/block_data.json b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/block_data.json new file mode 100644 index 00000000..d3bb0476 --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/block_data.json @@ -0,0 +1,25 @@ +{ + "docstring": { + "long_description": "Requires a CONNECT_DMM7510 block to create the connection.", + "short_description": "Changes the measurement function for the DMM7510.", + "parameters": [ + { + "name": "connection", + "type": "VisaConnection", + "description": "The VISA address (requires the CONNECTION_DMM7510 block)." + }, + { + "name": "function", + "type": "select, default=DC voltage", + "description": "Select the measurement function" + } + ], + "returns": [ + { + "name": null, + "type": "TextBlob", + "description": "Measurement" + } + ] + } +} \ No newline at end of file diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/example.md b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/example.md new file mode 100644 index 00000000..efee664b --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/example.md @@ -0,0 +1,16 @@ +In this example, a DC voltage measurement was extracted from a Keithley DMM7510. + +First the necessary blocks were added: + +- `CONNECT_DMM7510` +- `RESET_DMM7510` +- `FUNCTION_DMM7510` +- `DIGITS_DMM7510` +- `MEASUREMENT_PARAMS_DMM7510` +- `MEASUREMENT_FILTER_DMM7510` +- `READ_DMM7510` +- `BIG_NUMBER` + +The instrument address was set for each `DMM7510` block. The `FUNCTION_DMM7510` block was changed in order to extract the correct measurement. The parameters in `DIGITS_DMM7510`, `MEASUREMENT_PARAMS_DMM7510`, and `MEASUREMENT_FILTER_DMM7510` blocks were changed as necessary. The `READ_DMM7510` block was connected to the `BIG_NUMBER` block in order to view the reading. + +The blocks were connected as shown and the app was run. diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/MEASUREMENT_FILTER_DMM7510.py b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/MEASUREMENT_FILTER_DMM7510.py new file mode 100644 index 00000000..a2723ecf --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/MEASUREMENT_FILTER_DMM7510.py @@ -0,0 +1,55 @@ +from typing import Optional, Literal +from flojoy import VisaConnection, flojoy, DataContainer, TextBlob + + +@flojoy(inject_connection=True) +def MEASUREMENT_FILTER_DMM7510( + connection: VisaConnection, + input: Optional[DataContainer] = None, + on_off: Literal["on", "off"] = "off", + avg_type: Literal["moving", "repeat"] = "moving", + count: int = 10, + window: float = 0, +) -> TextBlob: + """Changes the measurement filter settings for the DMM7510. + + Requires a CONNECT_DMM7510 block to create the connection. + + Parameters + ---------- + connection : VisaConnection + The VISA address (requires the CONNECTION_DMM7510 block). + on_off : select, default=off + Turn the filter on or off. + avg_type : select, default=moving + Use moving or repeating averaging. + count : int, default=10 + The number of counts to average. + window : float, default=0 + The size of the window, in percent. + + Returns + ------- + TextBlob + Filter settings + """ + assert 0.0 <= window <= 100.0, "The window must be between 0 and 100." + assert count > 1, "The count must be greater than 1." + + dmm = connection.get_handle() + + if avg_type == "moving": + dmm.commands.dmm.measure.filter.type = "dmm.FILTER_MOVING_AVG" + else: + dmm.commands.dmm.measure.filter.type = "dmm.FILTER_REPEAT_AVG" + + dmm.commands.dmm.measure.filter.count = count + dmm.commands.dmm.measure.filter.window = window + + match on_off: + case "off": + dmm.commands.dmm.measure.filter.enable = "dmm.OFF" + case "on": + dmm.commands.dmm.measure.filter.enable = "dmm.ON" + + return TextBlob(text_blob=f"Filter {on_off}") diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/app.json b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/app.json new file mode 100644 index 00000000..e257e336 --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/app.json @@ -0,0 +1,643 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "type": "HARDWARE", + "data": { + "id": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "label": "RESET DMM7510", + "func": "RESET_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "RESET_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Reset" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/RESET_DMM7510.py", + "selected": false + }, + "position": { + "x": -365.98860382815104, + "y": -346.86520014985507 + }, + "selected": false, + "positionAbsolute": { + "x": -365.98860382815104, + "y": -346.86520014985507 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "type": "HARDWARE", + "data": { + "id": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "label": "READ MEASUREMENT DMM7510", + "func": "READ_MEASUREMENT_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "READ_MEASUREMENT_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Measurement" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/READ_MEASUREMENT_DMM7510.py", + "selected": false + }, + "position": { + "x": 397.55459909996137, + "y": -348.39554945753986 + }, + "selected": false, + "positionAbsolute": { + "x": 397.55459909996137, + "y": -348.39554945753986 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bf", + "type": "HARDWARE", + "data": { + "id": "MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bf", + "label": "MEASUREMENT PARAMS DMM7510", + "func": "MEASUREMENT_PARAMS_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "autorange": { + "type": "bool", + "default": true, + "desc": "Use auto range?", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "autorange", + "value": true + }, + "meas_range": { + "type": "float", + "default": 1, + "desc": "The range to measure with (i.e. the maximum).", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "meas_range", + "value": 0.1 + }, + "autozero": { + "type": "bool", + "default": true, + "desc": "Use auto zero?", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "autozero", + "value": true + }, + "count": { + "type": "int", + "default": 1, + "desc": "The number of counts to average.", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "count", + "value": 10 + }, + "NPLC": { + "type": "float", + "default": 1, + "desc": "The integration rate in number of clocks.", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "NPLC", + "value": 1 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement settings" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/MEASUREMENT_PARAMS_DMM7510.py", + "selected": false + }, + "position": { + "x": 122.53418479995364, + "y": -100.64663643022996 + }, + "selected": false, + "positionAbsolute": { + "x": 122.53418479995364, + "y": -100.64663643022996 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8e", + "type": "HARDWARE", + "data": { + "id": "MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8e", + "label": "MEASUREMENT FILTER DMM7510", + "func": "MEASUREMENT_FILTER_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "on_off": { + "type": "select", + "options": [ + "on", + "off" + ], + "default": "off", + "desc": "Turn the filter on or off.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "on_off", + "value": "off" + }, + "avg_type": { + "type": "select", + "options": [ + "moving", + "repeat" + ], + "default": "moving", + "desc": "Use moving or repeating averaging.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "avg_type", + "value": "moving" + }, + "count": { + "type": "int", + "default": 10, + "desc": "The number of counts to average.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "count", + "value": 10 + }, + "window": { + "type": "float", + "default": 0, + "desc": "The size of the window, in percent.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "window", + "value": 0 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Filter settings" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/MEASUREMENT_FILTER_DMM7510.py", + "selected": false + }, + "position": { + "x": 128.40664152191533, + "y": -585.1213878287573 + }, + "selected": false, + "positionAbsolute": { + "x": 128.40664152191533, + "y": -585.1213878287573 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "type": "HARDWARE", + "data": { + "id": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "label": "FUNCTION DMM7510", + "func": "FUNCTION_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "FUNCTION_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "function": { + "type": "select", + "options": [ + "DC voltage", + "DC current", + "AC voltage", + "AC current", + "2W resistance", + "4W resistance", + "temperature", + "capacitance", + "continuity", + "diode", + "period", + "frequency", + "DCV ratio" + ], + "default": "DC voltage", + "desc": "Select the measurement function", + "overload": null, + "functionName": "FUNCTION_DMM7510", + "param": "function", + "value": "DC voltage" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/FUNCTION_DMM7510.py", + "selected": false + }, + "position": { + "x": -138.91561228691435, + "y": -348.39119615677674 + }, + "selected": false, + "positionAbsolute": { + "x": -138.91561228691435, + "y": -348.39119615677674 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "type": "HARDWARE", + "data": { + "id": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "label": "DIGITS DMM7510", + "func": "DIGITS_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "DIGITS_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "digits": { + "type": "select", + "options": [ + "3.5", + "4.5", + "5.5", + "6.5", + "7.5" + ], + "default": "7.5", + "desc": "Number of digits for the DMM measurements?", + "overload": null, + "functionName": "DIGITS_DMM7510", + "param": "digits", + "value": "6.5" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement settings" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/DIGITS_DMM7510.py", + "selected": false + }, + "position": { + "x": 118.60936692575538, + "y": -348.93898622831296 + }, + "selected": false, + "positionAbsolute": { + "x": 118.60936692575538, + "y": -348.93898622831296 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8", + "type": "HARDWARE", + "data": { + "id": "CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8", + "label": "CONNECT DMM7510", + "func": "CONNECT_DMM7510", + "type": "HARDWARE", + "ctrls": { + "device": { + "type": "VisaDevice", + "default": null, + "desc": "The connected VISA device.", + "overload": null, + "functionName": "CONNECT_DMM7510", + "param": "device", + "value": "TCPIP::169.254.200.12::INSTR" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP or VISA address of the VISA device." + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/CONNECT_DMM7510.py", + "selected": true + }, + "position": { + "x": -592.955723694826, + "y": -345.1619499307562 + }, + "selected": false, + "positionAbsolute": { + "x": -592.955723694826, + "y": -345.1619499307562 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5", + "type": "VISUALIZATION", + "data": { + "id": "BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5", + "label": "BIG NUMBER", + "func": "BIG_NUMBER", + "type": "VISUALIZATION", + "ctrls": { + "suffix": { + "type": "str", + "default": null, + "desc": "any suffix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "suffix", + "value": " V" + }, + "prefix": { + "type": "str", + "default": null, + "desc": "any prefix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "prefix", + "value": "" + }, + "title": { + "type": "str", + "default": null, + "desc": "title of the plot, default = \"BIG_NUMBER\"", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "title", + "value": "" + }, + "relative_delta": { + "type": "bool", + "default": true, + "desc": "whether or not to show the relative delta from the last run along with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "relative_delta", + "value": true + }, + "scientific_notation": { + "type": "bool", + "default": false, + "desc": null, + "overload": null, + "functionName": "BIG_NUMBER", + "param": "scientific_notation", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Scalar|Vector", + "multiple": false, + "desc": "the DataContainer to be visualized" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly", + "desc": "the DataContainer containing the Plotly big number visualization" + } + ], + "path": "DATA/VISUALIZATION/PLOTLY/BIG_NUMBER/BIG_NUMBER.py", + "selected": false + }, + "position": { + "x": 667.4303529715919, + "y": -398.3189188865829 + }, + "selected": false, + "positionAbsolute": { + "x": 667.4303529715919, + "y": -398.3189188865829 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8", + "sourceHandle": "default", + "target": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "targetHandle": "input", + "id": "reactflow__edge-CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8default-RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767input" + }, + { + "source": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "sourceHandle": "default", + "target": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "targetHandle": "input", + "id": "reactflow__edge-DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13default-READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35input" + }, + { + "source": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "sourceHandle": "default", + "target": "MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bf", + "targetHandle": "input", + "id": "reactflow__edge-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aaddefault-MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bfinput" + }, + { + "source": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "sourceHandle": "default", + "target": "MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8e", + "targetHandle": "input", + "id": "reactflow__edge-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aaddefault-MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8einput" + }, + { + "source": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "sourceHandle": "default", + "target": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "targetHandle": "input", + "id": "reactflow__edge-RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767default-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aadinput" + }, + { + "source": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "sourceHandle": "default", + "target": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "targetHandle": "input", + "id": "reactflow__edge-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aaddefault-DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13input" + }, + { + "source": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "sourceHandle": "default", + "target": "BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5", + "targetHandle": "default", + "id": "reactflow__edge-READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35default-BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5default" + } + ], + "viewport": { + "x": 1181.2883637885323, + "y": 525.5787480876195, + "zoom": 1.0441212277180714 + } + }, + "textNodes": [] +} \ No newline at end of file diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/block_data.json b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/block_data.json new file mode 100644 index 00000000..91b116ac --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/block_data.json @@ -0,0 +1,40 @@ +{ + "docstring": { + "long_description": "Requires a CONNECT_DMM7510 block to create the connection.", + "short_description": "Changes the measurement filter settings for the DMM7510.", + "parameters": [ + { + "name": "connection", + "type": "VisaConnection", + "description": "The VISA address (requires the CONNECTION_DMM7510 block)." + }, + { + "name": "on_off", + "type": "select, default=off", + "description": "Turn the filter on or off." + }, + { + "name": "avg_type", + "type": "select, default=moving", + "description": "Use moving or repeating averaging." + }, + { + "name": "count", + "type": "int, default=10", + "description": "The number of counts to average." + }, + { + "name": "window", + "type": "float, default=0", + "description": "The size of the window, in percent." + } + ], + "returns": [ + { + "name": null, + "type": "TextBlob", + "description": "Filter settings" + } + ] + } +} \ No newline at end of file diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/example.md b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/example.md new file mode 100644 index 00000000..efee664b --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/example.md @@ -0,0 +1,16 @@ +In this example, a DC voltage measurement was extracted from a Keithley DMM7510. + +First the necessary blocks were added: + +- `CONNECT_DMM7510` +- `RESET_DMM7510` +- `FUNCTION_DMM7510` +- `DIGITS_DMM7510` +- `MEASUREMENT_PARAMS_DMM7510` +- `MEASUREMENT_FILTER_DMM7510` +- `READ_DMM7510` +- `BIG_NUMBER` + +The instrument address was set for each `DMM7510` block. The `FUNCTION_DMM7510` block was changed in order to extract the correct measurement. The parameters in `DIGITS_DMM7510`, `MEASUREMENT_PARAMS_DMM7510`, and `MEASUREMENT_FILTER_DMM7510` blocks were changed as necessary. The `READ_DMM7510` block was connected to the `BIG_NUMBER` block in order to view the reading. + +The blocks were connected as shown and the app was run. diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/MEASUREMENT_PARAMS_DMM7510.py b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/MEASUREMENT_PARAMS_DMM7510.py new file mode 100644 index 00000000..d3893322 --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/MEASUREMENT_PARAMS_DMM7510.py @@ -0,0 +1,57 @@ +from typing import Optional +from flojoy import VisaConnection, flojoy, DataContainer, TextBlob + + +@flojoy(inject_connection=True) +def MEASUREMENT_PARAMS_DMM7510( + connection: VisaConnection, + input: Optional[DataContainer] = None, + autorange: bool = True, + meas_range: float = 1, + autozero: bool = True, + count: int = 1, + NPLC: float = 1, +) -> TextBlob: + """Changes the measurement settings for the DMM7510. + + Requires a CONNECT_DMM7510 block to create the connection. + + Parameters + ---------- + connection : VisaConnection + The VISA address (requires the CONNECTION_DMM7510 block). + autorange: bool, default=True, + Use auto range? + meas_range : float, default=1, + The range to measure with (i.e. the maximum). + autozero : bool, default=True, + Use auto zero? + count : int, default=1, + The number of counts to average. + NPLC : float, default=1, + The integration rate in number of clocks. + + Returns + ------- + TextBlob + Measurement settings + """ + assert count > 0, "The count must be greater than 1." + + dmm = connection.get_handle() + + dmm.commands.dmm.measure.range = meas_range + if autorange: + dmm.commands.dmm.measure.autorange = "dmm.ON" + else: + dmm.commands.dmm.measure.autorange = "dmm.OFF" + if autozero: + dmm.commands.dmm.measure.autozero.enable = "dmm.ON" + else: + dmm.commands.dmm.measure.autozero.enable = "dmm.OFF" + dmm.commands.dmm.measure.nplc = NPLC + dmm.commands.dmm.measure.count = count + + dmm.commands.dmm.measure.inputimpedance = "dmm.IMPEDANCE_AUTO" + + return TextBlob(text_blob=f"Measure range: {dmm.commands.dmm.measure.range}") diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/app.json b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/app.json new file mode 100644 index 00000000..e257e336 --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/app.json @@ -0,0 +1,643 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "type": "HARDWARE", + "data": { + "id": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "label": "RESET DMM7510", + "func": "RESET_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "RESET_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Reset" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/RESET_DMM7510.py", + "selected": false + }, + "position": { + "x": -365.98860382815104, + "y": -346.86520014985507 + }, + "selected": false, + "positionAbsolute": { + "x": -365.98860382815104, + "y": -346.86520014985507 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "type": "HARDWARE", + "data": { + "id": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "label": "READ MEASUREMENT DMM7510", + "func": "READ_MEASUREMENT_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "READ_MEASUREMENT_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Measurement" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/READ_MEASUREMENT_DMM7510.py", + "selected": false + }, + "position": { + "x": 397.55459909996137, + "y": -348.39554945753986 + }, + "selected": false, + "positionAbsolute": { + "x": 397.55459909996137, + "y": -348.39554945753986 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bf", + "type": "HARDWARE", + "data": { + "id": "MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bf", + "label": "MEASUREMENT PARAMS DMM7510", + "func": "MEASUREMENT_PARAMS_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "autorange": { + "type": "bool", + "default": true, + "desc": "Use auto range?", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "autorange", + "value": true + }, + "meas_range": { + "type": "float", + "default": 1, + "desc": "The range to measure with (i.e. the maximum).", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "meas_range", + "value": 0.1 + }, + "autozero": { + "type": "bool", + "default": true, + "desc": "Use auto zero?", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "autozero", + "value": true + }, + "count": { + "type": "int", + "default": 1, + "desc": "The number of counts to average.", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "count", + "value": 10 + }, + "NPLC": { + "type": "float", + "default": 1, + "desc": "The integration rate in number of clocks.", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "NPLC", + "value": 1 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement settings" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/MEASUREMENT_PARAMS_DMM7510.py", + "selected": false + }, + "position": { + "x": 122.53418479995364, + "y": -100.64663643022996 + }, + "selected": false, + "positionAbsolute": { + "x": 122.53418479995364, + "y": -100.64663643022996 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8e", + "type": "HARDWARE", + "data": { + "id": "MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8e", + "label": "MEASUREMENT FILTER DMM7510", + "func": "MEASUREMENT_FILTER_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "on_off": { + "type": "select", + "options": [ + "on", + "off" + ], + "default": "off", + "desc": "Turn the filter on or off.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "on_off", + "value": "off" + }, + "avg_type": { + "type": "select", + "options": [ + "moving", + "repeat" + ], + "default": "moving", + "desc": "Use moving or repeating averaging.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "avg_type", + "value": "moving" + }, + "count": { + "type": "int", + "default": 10, + "desc": "The number of counts to average.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "count", + "value": 10 + }, + "window": { + "type": "float", + "default": 0, + "desc": "The size of the window, in percent.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "window", + "value": 0 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Filter settings" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/MEASUREMENT_FILTER_DMM7510.py", + "selected": false + }, + "position": { + "x": 128.40664152191533, + "y": -585.1213878287573 + }, + "selected": false, + "positionAbsolute": { + "x": 128.40664152191533, + "y": -585.1213878287573 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "type": "HARDWARE", + "data": { + "id": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "label": "FUNCTION DMM7510", + "func": "FUNCTION_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "FUNCTION_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "function": { + "type": "select", + "options": [ + "DC voltage", + "DC current", + "AC voltage", + "AC current", + "2W resistance", + "4W resistance", + "temperature", + "capacitance", + "continuity", + "diode", + "period", + "frequency", + "DCV ratio" + ], + "default": "DC voltage", + "desc": "Select the measurement function", + "overload": null, + "functionName": "FUNCTION_DMM7510", + "param": "function", + "value": "DC voltage" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/FUNCTION_DMM7510.py", + "selected": false + }, + "position": { + "x": -138.91561228691435, + "y": -348.39119615677674 + }, + "selected": false, + "positionAbsolute": { + "x": -138.91561228691435, + "y": -348.39119615677674 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "type": "HARDWARE", + "data": { + "id": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "label": "DIGITS DMM7510", + "func": "DIGITS_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "DIGITS_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "digits": { + "type": "select", + "options": [ + "3.5", + "4.5", + "5.5", + "6.5", + "7.5" + ], + "default": "7.5", + "desc": "Number of digits for the DMM measurements?", + "overload": null, + "functionName": "DIGITS_DMM7510", + "param": "digits", + "value": "6.5" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement settings" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/DIGITS_DMM7510.py", + "selected": false + }, + "position": { + "x": 118.60936692575538, + "y": -348.93898622831296 + }, + "selected": false, + "positionAbsolute": { + "x": 118.60936692575538, + "y": -348.93898622831296 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8", + "type": "HARDWARE", + "data": { + "id": "CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8", + "label": "CONNECT DMM7510", + "func": "CONNECT_DMM7510", + "type": "HARDWARE", + "ctrls": { + "device": { + "type": "VisaDevice", + "default": null, + "desc": "The connected VISA device.", + "overload": null, + "functionName": "CONNECT_DMM7510", + "param": "device", + "value": "TCPIP::169.254.200.12::INSTR" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP or VISA address of the VISA device." + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/CONNECT_DMM7510.py", + "selected": true + }, + "position": { + "x": -592.955723694826, + "y": -345.1619499307562 + }, + "selected": false, + "positionAbsolute": { + "x": -592.955723694826, + "y": -345.1619499307562 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5", + "type": "VISUALIZATION", + "data": { + "id": "BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5", + "label": "BIG NUMBER", + "func": "BIG_NUMBER", + "type": "VISUALIZATION", + "ctrls": { + "suffix": { + "type": "str", + "default": null, + "desc": "any suffix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "suffix", + "value": " V" + }, + "prefix": { + "type": "str", + "default": null, + "desc": "any prefix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "prefix", + "value": "" + }, + "title": { + "type": "str", + "default": null, + "desc": "title of the plot, default = \"BIG_NUMBER\"", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "title", + "value": "" + }, + "relative_delta": { + "type": "bool", + "default": true, + "desc": "whether or not to show the relative delta from the last run along with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "relative_delta", + "value": true + }, + "scientific_notation": { + "type": "bool", + "default": false, + "desc": null, + "overload": null, + "functionName": "BIG_NUMBER", + "param": "scientific_notation", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Scalar|Vector", + "multiple": false, + "desc": "the DataContainer to be visualized" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly", + "desc": "the DataContainer containing the Plotly big number visualization" + } + ], + "path": "DATA/VISUALIZATION/PLOTLY/BIG_NUMBER/BIG_NUMBER.py", + "selected": false + }, + "position": { + "x": 667.4303529715919, + "y": -398.3189188865829 + }, + "selected": false, + "positionAbsolute": { + "x": 667.4303529715919, + "y": -398.3189188865829 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8", + "sourceHandle": "default", + "target": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "targetHandle": "input", + "id": "reactflow__edge-CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8default-RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767input" + }, + { + "source": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "sourceHandle": "default", + "target": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "targetHandle": "input", + "id": "reactflow__edge-DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13default-READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35input" + }, + { + "source": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "sourceHandle": "default", + "target": "MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bf", + "targetHandle": "input", + "id": "reactflow__edge-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aaddefault-MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bfinput" + }, + { + "source": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "sourceHandle": "default", + "target": "MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8e", + "targetHandle": "input", + "id": "reactflow__edge-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aaddefault-MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8einput" + }, + { + "source": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "sourceHandle": "default", + "target": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "targetHandle": "input", + "id": "reactflow__edge-RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767default-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aadinput" + }, + { + "source": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "sourceHandle": "default", + "target": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "targetHandle": "input", + "id": "reactflow__edge-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aaddefault-DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13input" + }, + { + "source": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "sourceHandle": "default", + "target": "BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5", + "targetHandle": "default", + "id": "reactflow__edge-READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35default-BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5default" + } + ], + "viewport": { + "x": 1181.2883637885323, + "y": 525.5787480876195, + "zoom": 1.0441212277180714 + } + }, + "textNodes": [] +} \ No newline at end of file diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/block_data.json b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/block_data.json new file mode 100644 index 00000000..f45281f4 --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/block_data.json @@ -0,0 +1,45 @@ +{ + "docstring": { + "long_description": "Requires a CONNECT_DMM7510 block to create the connection.", + "short_description": "Changes the measurement settings for the DMM7510.", + "parameters": [ + { + "name": "connection", + "type": "VisaConnection", + "description": "The VISA address (requires the CONNECTION_DMM7510 block)." + }, + { + "name": "autorange", + "type": "bool, default=True,", + "description": "Use auto range?" + }, + { + "name": "meas_range", + "type": "float, default=1,", + "description": "The range to measure with (i.e. the maximum)." + }, + { + "name": "autozero", + "type": "bool, default=True,", + "description": "Use auto zero?" + }, + { + "name": "count", + "type": "int, default=1,", + "description": "The number of counts to average." + }, + { + "name": "NPLC", + "type": "float, default=1,", + "description": "The integration rate in number of clocks." + } + ], + "returns": [ + { + "name": null, + "type": "TextBlob", + "description": "Measurement settings" + } + ] + } +} \ No newline at end of file diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/example.md b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/example.md new file mode 100644 index 00000000..efee664b --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/example.md @@ -0,0 +1,16 @@ +In this example, a DC voltage measurement was extracted from a Keithley DMM7510. + +First the necessary blocks were added: + +- `CONNECT_DMM7510` +- `RESET_DMM7510` +- `FUNCTION_DMM7510` +- `DIGITS_DMM7510` +- `MEASUREMENT_PARAMS_DMM7510` +- `MEASUREMENT_FILTER_DMM7510` +- `READ_DMM7510` +- `BIG_NUMBER` + +The instrument address was set for each `DMM7510` block. The `FUNCTION_DMM7510` block was changed in order to extract the correct measurement. The parameters in `DIGITS_DMM7510`, `MEASUREMENT_PARAMS_DMM7510`, and `MEASUREMENT_FILTER_DMM7510` blocks were changed as necessary. The `READ_DMM7510` block was connected to the `BIG_NUMBER` block in order to view the reading. + +The blocks were connected as shown and the app was run. diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/READ_MEASUREMENT_DMM7510.py b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/READ_MEASUREMENT_DMM7510.py new file mode 100644 index 00000000..f98ed566 --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/READ_MEASUREMENT_DMM7510.py @@ -0,0 +1,29 @@ +from typing import Optional +from flojoy import VisaConnection, flojoy, DataContainer, Scalar + + +@flojoy(inject_connection=True) +def READ_MEASUREMENT_DMM7510( + connection: VisaConnection, + input: Optional[DataContainer] = None, +) -> Scalar: + """Reads a single measurement from the DMM7510. + + Requires a CONNECT_DMM7510 block to create the connection. + + Parameters + ---------- + connection : VisaConnection + The VISA address (requires the CONNECTION_DMM7510 block). + + Returns + ------- + Scalar + Measurement + """ + + dmm = connection.get_handle() + + c = float(dmm.commands.dmm.measure.read()) + + return Scalar(c=c) diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/app.json b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/app.json new file mode 100644 index 00000000..e257e336 --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/app.json @@ -0,0 +1,643 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "type": "HARDWARE", + "data": { + "id": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "label": "RESET DMM7510", + "func": "RESET_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "RESET_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Reset" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/RESET_DMM7510.py", + "selected": false + }, + "position": { + "x": -365.98860382815104, + "y": -346.86520014985507 + }, + "selected": false, + "positionAbsolute": { + "x": -365.98860382815104, + "y": -346.86520014985507 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "type": "HARDWARE", + "data": { + "id": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "label": "READ MEASUREMENT DMM7510", + "func": "READ_MEASUREMENT_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "READ_MEASUREMENT_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Measurement" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/READ_MEASUREMENT_DMM7510.py", + "selected": false + }, + "position": { + "x": 397.55459909996137, + "y": -348.39554945753986 + }, + "selected": false, + "positionAbsolute": { + "x": 397.55459909996137, + "y": -348.39554945753986 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bf", + "type": "HARDWARE", + "data": { + "id": "MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bf", + "label": "MEASUREMENT PARAMS DMM7510", + "func": "MEASUREMENT_PARAMS_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "autorange": { + "type": "bool", + "default": true, + "desc": "Use auto range?", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "autorange", + "value": true + }, + "meas_range": { + "type": "float", + "default": 1, + "desc": "The range to measure with (i.e. the maximum).", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "meas_range", + "value": 0.1 + }, + "autozero": { + "type": "bool", + "default": true, + "desc": "Use auto zero?", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "autozero", + "value": true + }, + "count": { + "type": "int", + "default": 1, + "desc": "The number of counts to average.", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "count", + "value": 10 + }, + "NPLC": { + "type": "float", + "default": 1, + "desc": "The integration rate in number of clocks.", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "NPLC", + "value": 1 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement settings" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/MEASUREMENT_PARAMS_DMM7510.py", + "selected": false + }, + "position": { + "x": 122.53418479995364, + "y": -100.64663643022996 + }, + "selected": false, + "positionAbsolute": { + "x": 122.53418479995364, + "y": -100.64663643022996 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8e", + "type": "HARDWARE", + "data": { + "id": "MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8e", + "label": "MEASUREMENT FILTER DMM7510", + "func": "MEASUREMENT_FILTER_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "on_off": { + "type": "select", + "options": [ + "on", + "off" + ], + "default": "off", + "desc": "Turn the filter on or off.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "on_off", + "value": "off" + }, + "avg_type": { + "type": "select", + "options": [ + "moving", + "repeat" + ], + "default": "moving", + "desc": "Use moving or repeating averaging.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "avg_type", + "value": "moving" + }, + "count": { + "type": "int", + "default": 10, + "desc": "The number of counts to average.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "count", + "value": 10 + }, + "window": { + "type": "float", + "default": 0, + "desc": "The size of the window, in percent.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "window", + "value": 0 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Filter settings" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/MEASUREMENT_FILTER_DMM7510.py", + "selected": false + }, + "position": { + "x": 128.40664152191533, + "y": -585.1213878287573 + }, + "selected": false, + "positionAbsolute": { + "x": 128.40664152191533, + "y": -585.1213878287573 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "type": "HARDWARE", + "data": { + "id": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "label": "FUNCTION DMM7510", + "func": "FUNCTION_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "FUNCTION_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "function": { + "type": "select", + "options": [ + "DC voltage", + "DC current", + "AC voltage", + "AC current", + "2W resistance", + "4W resistance", + "temperature", + "capacitance", + "continuity", + "diode", + "period", + "frequency", + "DCV ratio" + ], + "default": "DC voltage", + "desc": "Select the measurement function", + "overload": null, + "functionName": "FUNCTION_DMM7510", + "param": "function", + "value": "DC voltage" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/FUNCTION_DMM7510.py", + "selected": false + }, + "position": { + "x": -138.91561228691435, + "y": -348.39119615677674 + }, + "selected": false, + "positionAbsolute": { + "x": -138.91561228691435, + "y": -348.39119615677674 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "type": "HARDWARE", + "data": { + "id": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "label": "DIGITS DMM7510", + "func": "DIGITS_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "DIGITS_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "digits": { + "type": "select", + "options": [ + "3.5", + "4.5", + "5.5", + "6.5", + "7.5" + ], + "default": "7.5", + "desc": "Number of digits for the DMM measurements?", + "overload": null, + "functionName": "DIGITS_DMM7510", + "param": "digits", + "value": "6.5" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement settings" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/DIGITS_DMM7510.py", + "selected": false + }, + "position": { + "x": 118.60936692575538, + "y": -348.93898622831296 + }, + "selected": false, + "positionAbsolute": { + "x": 118.60936692575538, + "y": -348.93898622831296 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8", + "type": "HARDWARE", + "data": { + "id": "CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8", + "label": "CONNECT DMM7510", + "func": "CONNECT_DMM7510", + "type": "HARDWARE", + "ctrls": { + "device": { + "type": "VisaDevice", + "default": null, + "desc": "The connected VISA device.", + "overload": null, + "functionName": "CONNECT_DMM7510", + "param": "device", + "value": "TCPIP::169.254.200.12::INSTR" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP or VISA address of the VISA device." + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/CONNECT_DMM7510.py", + "selected": true + }, + "position": { + "x": -592.955723694826, + "y": -345.1619499307562 + }, + "selected": false, + "positionAbsolute": { + "x": -592.955723694826, + "y": -345.1619499307562 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5", + "type": "VISUALIZATION", + "data": { + "id": "BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5", + "label": "BIG NUMBER", + "func": "BIG_NUMBER", + "type": "VISUALIZATION", + "ctrls": { + "suffix": { + "type": "str", + "default": null, + "desc": "any suffix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "suffix", + "value": " V" + }, + "prefix": { + "type": "str", + "default": null, + "desc": "any prefix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "prefix", + "value": "" + }, + "title": { + "type": "str", + "default": null, + "desc": "title of the plot, default = \"BIG_NUMBER\"", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "title", + "value": "" + }, + "relative_delta": { + "type": "bool", + "default": true, + "desc": "whether or not to show the relative delta from the last run along with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "relative_delta", + "value": true + }, + "scientific_notation": { + "type": "bool", + "default": false, + "desc": null, + "overload": null, + "functionName": "BIG_NUMBER", + "param": "scientific_notation", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Scalar|Vector", + "multiple": false, + "desc": "the DataContainer to be visualized" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly", + "desc": "the DataContainer containing the Plotly big number visualization" + } + ], + "path": "DATA/VISUALIZATION/PLOTLY/BIG_NUMBER/BIG_NUMBER.py", + "selected": false + }, + "position": { + "x": 667.4303529715919, + "y": -398.3189188865829 + }, + "selected": false, + "positionAbsolute": { + "x": 667.4303529715919, + "y": -398.3189188865829 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8", + "sourceHandle": "default", + "target": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "targetHandle": "input", + "id": "reactflow__edge-CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8default-RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767input" + }, + { + "source": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "sourceHandle": "default", + "target": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "targetHandle": "input", + "id": "reactflow__edge-DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13default-READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35input" + }, + { + "source": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "sourceHandle": "default", + "target": "MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bf", + "targetHandle": "input", + "id": "reactflow__edge-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aaddefault-MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bfinput" + }, + { + "source": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "sourceHandle": "default", + "target": "MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8e", + "targetHandle": "input", + "id": "reactflow__edge-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aaddefault-MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8einput" + }, + { + "source": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "sourceHandle": "default", + "target": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "targetHandle": "input", + "id": "reactflow__edge-RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767default-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aadinput" + }, + { + "source": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "sourceHandle": "default", + "target": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "targetHandle": "input", + "id": "reactflow__edge-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aaddefault-DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13input" + }, + { + "source": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "sourceHandle": "default", + "target": "BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5", + "targetHandle": "default", + "id": "reactflow__edge-READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35default-BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5default" + } + ], + "viewport": { + "x": 1181.2883637885323, + "y": 525.5787480876195, + "zoom": 1.0441212277180714 + } + }, + "textNodes": [] +} \ No newline at end of file diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/block_data.json b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/block_data.json new file mode 100644 index 00000000..1c0d3e78 --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/block_data.json @@ -0,0 +1,20 @@ +{ + "docstring": { + "long_description": "Requires a CONNECT_DMM7510 block to create the connection.", + "short_description": "Reads a single measurement from the DMM7510.", + "parameters": [ + { + "name": "connection", + "type": "VisaConnection", + "description": "The VISA address (requires the CONNECTION_DMM7510 block)." + } + ], + "returns": [ + { + "name": null, + "type": "Scalar", + "description": "Measurement" + } + ] + } +} \ No newline at end of file diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/example.md b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/example.md new file mode 100644 index 00000000..efee664b --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/example.md @@ -0,0 +1,16 @@ +In this example, a DC voltage measurement was extracted from a Keithley DMM7510. + +First the necessary blocks were added: + +- `CONNECT_DMM7510` +- `RESET_DMM7510` +- `FUNCTION_DMM7510` +- `DIGITS_DMM7510` +- `MEASUREMENT_PARAMS_DMM7510` +- `MEASUREMENT_FILTER_DMM7510` +- `READ_DMM7510` +- `BIG_NUMBER` + +The instrument address was set for each `DMM7510` block. The `FUNCTION_DMM7510` block was changed in order to extract the correct measurement. The parameters in `DIGITS_DMM7510`, `MEASUREMENT_PARAMS_DMM7510`, and `MEASUREMENT_FILTER_DMM7510` blocks were changed as necessary. The `READ_DMM7510` block was connected to the `BIG_NUMBER` block in order to view the reading. + +The blocks were connected as shown and the app was run. diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/RESET_DMM7510.py b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/RESET_DMM7510.py new file mode 100644 index 00000000..d283639b --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/RESET_DMM7510.py @@ -0,0 +1,28 @@ +from typing import Optional +from flojoy import VisaConnection, flojoy, DataContainer, TextBlob + + +@flojoy(inject_connection=True) +def RESET_DMM7510( + connection: VisaConnection, + input: Optional[DataContainer] = None, +) -> TextBlob: + """Resets the DMM7510 and clears buffers. + + Requires a CONNECT_DMM7510 block to create the connection. + + Parameters + ---------- + connection : VisaConnection + The VISA address (requires the CONNECTION_DMM7510 block). + + Returns + ------- + TextBlob + Reset + """ + + dmm = connection.get_handle() + dmm.commands.reset() + + return TextBlob(text_blob="Reset DMM7510") diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/app.json b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/app.json new file mode 100644 index 00000000..e257e336 --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/app.json @@ -0,0 +1,643 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "type": "HARDWARE", + "data": { + "id": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "label": "RESET DMM7510", + "func": "RESET_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "RESET_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Reset" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/RESET_DMM7510.py", + "selected": false + }, + "position": { + "x": -365.98860382815104, + "y": -346.86520014985507 + }, + "selected": false, + "positionAbsolute": { + "x": -365.98860382815104, + "y": -346.86520014985507 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "type": "HARDWARE", + "data": { + "id": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "label": "READ MEASUREMENT DMM7510", + "func": "READ_MEASUREMENT_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "READ_MEASUREMENT_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Measurement" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/READ_MEASUREMENT_DMM7510.py", + "selected": false + }, + "position": { + "x": 397.55459909996137, + "y": -348.39554945753986 + }, + "selected": false, + "positionAbsolute": { + "x": 397.55459909996137, + "y": -348.39554945753986 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bf", + "type": "HARDWARE", + "data": { + "id": "MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bf", + "label": "MEASUREMENT PARAMS DMM7510", + "func": "MEASUREMENT_PARAMS_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "autorange": { + "type": "bool", + "default": true, + "desc": "Use auto range?", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "autorange", + "value": true + }, + "meas_range": { + "type": "float", + "default": 1, + "desc": "The range to measure with (i.e. the maximum).", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "meas_range", + "value": 0.1 + }, + "autozero": { + "type": "bool", + "default": true, + "desc": "Use auto zero?", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "autozero", + "value": true + }, + "count": { + "type": "int", + "default": 1, + "desc": "The number of counts to average.", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "count", + "value": 10 + }, + "NPLC": { + "type": "float", + "default": 1, + "desc": "The integration rate in number of clocks.", + "overload": null, + "functionName": "MEASUREMENT_PARAMS_DMM7510", + "param": "NPLC", + "value": 1 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement settings" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/MEASUREMENT_PARAMS_DMM7510.py", + "selected": false + }, + "position": { + "x": 122.53418479995364, + "y": -100.64663643022996 + }, + "selected": false, + "positionAbsolute": { + "x": 122.53418479995364, + "y": -100.64663643022996 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8e", + "type": "HARDWARE", + "data": { + "id": "MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8e", + "label": "MEASUREMENT FILTER DMM7510", + "func": "MEASUREMENT_FILTER_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "on_off": { + "type": "select", + "options": [ + "on", + "off" + ], + "default": "off", + "desc": "Turn the filter on or off.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "on_off", + "value": "off" + }, + "avg_type": { + "type": "select", + "options": [ + "moving", + "repeat" + ], + "default": "moving", + "desc": "Use moving or repeating averaging.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "avg_type", + "value": "moving" + }, + "count": { + "type": "int", + "default": 10, + "desc": "The number of counts to average.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "count", + "value": 10 + }, + "window": { + "type": "float", + "default": 0, + "desc": "The size of the window, in percent.", + "overload": null, + "functionName": "MEASUREMENT_FILTER_DMM7510", + "param": "window", + "value": 0 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Filter settings" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/MEASUREMENT_FILTER_DMM7510.py", + "selected": false + }, + "position": { + "x": 128.40664152191533, + "y": -585.1213878287573 + }, + "selected": false, + "positionAbsolute": { + "x": 128.40664152191533, + "y": -585.1213878287573 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "type": "HARDWARE", + "data": { + "id": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "label": "FUNCTION DMM7510", + "func": "FUNCTION_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "FUNCTION_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "function": { + "type": "select", + "options": [ + "DC voltage", + "DC current", + "AC voltage", + "AC current", + "2W resistance", + "4W resistance", + "temperature", + "capacitance", + "continuity", + "diode", + "period", + "frequency", + "DCV ratio" + ], + "default": "DC voltage", + "desc": "Select the measurement function", + "overload": null, + "functionName": "FUNCTION_DMM7510", + "param": "function", + "value": "DC voltage" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/FUNCTION_DMM7510.py", + "selected": false + }, + "position": { + "x": -138.91561228691435, + "y": -348.39119615677674 + }, + "selected": false, + "positionAbsolute": { + "x": -138.91561228691435, + "y": -348.39119615677674 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "type": "HARDWARE", + "data": { + "id": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "label": "DIGITS DMM7510", + "func": "DIGITS_DMM7510", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_DMM7510 block).", + "overload": null, + "functionName": "DIGITS_DMM7510", + "param": "connection", + "value": "TCPIP::169.254.200.12::INSTR" + }, + "digits": { + "type": "select", + "options": [ + "3.5", + "4.5", + "5.5", + "6.5", + "7.5" + ], + "default": "7.5", + "desc": "Number of digits for the DMM measurements?", + "overload": null, + "functionName": "DIGITS_DMM7510", + "param": "digits", + "value": "6.5" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement settings" + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/DIGITS_DMM7510.py", + "selected": false + }, + "position": { + "x": 118.60936692575538, + "y": -348.93898622831296 + }, + "selected": false, + "positionAbsolute": { + "x": 118.60936692575538, + "y": -348.93898622831296 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8", + "type": "HARDWARE", + "data": { + "id": "CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8", + "label": "CONNECT DMM7510", + "func": "CONNECT_DMM7510", + "type": "HARDWARE", + "ctrls": { + "device": { + "type": "VisaDevice", + "default": null, + "desc": "The connected VISA device.", + "overload": null, + "functionName": "CONNECT_DMM7510", + "param": "device", + "value": "TCPIP::169.254.200.12::INSTR" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP or VISA address of the VISA device." + } + ], + "path": "HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/CONNECT_DMM7510.py", + "selected": true + }, + "position": { + "x": -592.955723694826, + "y": -345.1619499307562 + }, + "selected": false, + "positionAbsolute": { + "x": -592.955723694826, + "y": -345.1619499307562 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5", + "type": "VISUALIZATION", + "data": { + "id": "BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5", + "label": "BIG NUMBER", + "func": "BIG_NUMBER", + "type": "VISUALIZATION", + "ctrls": { + "suffix": { + "type": "str", + "default": null, + "desc": "any suffix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "suffix", + "value": " V" + }, + "prefix": { + "type": "str", + "default": null, + "desc": "any prefix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "prefix", + "value": "" + }, + "title": { + "type": "str", + "default": null, + "desc": "title of the plot, default = \"BIG_NUMBER\"", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "title", + "value": "" + }, + "relative_delta": { + "type": "bool", + "default": true, + "desc": "whether or not to show the relative delta from the last run along with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "relative_delta", + "value": true + }, + "scientific_notation": { + "type": "bool", + "default": false, + "desc": null, + "overload": null, + "functionName": "BIG_NUMBER", + "param": "scientific_notation", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Scalar|Vector", + "multiple": false, + "desc": "the DataContainer to be visualized" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly", + "desc": "the DataContainer containing the Plotly big number visualization" + } + ], + "path": "DATA/VISUALIZATION/PLOTLY/BIG_NUMBER/BIG_NUMBER.py", + "selected": false + }, + "position": { + "x": 667.4303529715919, + "y": -398.3189188865829 + }, + "selected": false, + "positionAbsolute": { + "x": 667.4303529715919, + "y": -398.3189188865829 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8", + "sourceHandle": "default", + "target": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "targetHandle": "input", + "id": "reactflow__edge-CONNECT_DMM7510-15768171-e9ac-447c-8fff-ed87ea37b4e8default-RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767input" + }, + { + "source": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "sourceHandle": "default", + "target": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "targetHandle": "input", + "id": "reactflow__edge-DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13default-READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35input" + }, + { + "source": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "sourceHandle": "default", + "target": "MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bf", + "targetHandle": "input", + "id": "reactflow__edge-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aaddefault-MEASUREMENT_PARAMS_DMM7510-ea9be712-5545-4826-8a9e-80f5048e30bfinput" + }, + { + "source": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "sourceHandle": "default", + "target": "MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8e", + "targetHandle": "input", + "id": "reactflow__edge-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aaddefault-MEASUREMENT_FILTER_DMM7510-82e0a9bb-14c6-44ba-ae5a-bccc2dcd3e8einput" + }, + { + "source": "RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767", + "sourceHandle": "default", + "target": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "targetHandle": "input", + "id": "reactflow__edge-RESET_DMM7510-759ea9c4-12e9-4f66-a90a-9444e9299767default-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aadinput" + }, + { + "source": "FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aad", + "sourceHandle": "default", + "target": "DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13", + "targetHandle": "input", + "id": "reactflow__edge-FUNCTION_DMM7510-700a6612-0549-4c56-ab34-42c0f5001aaddefault-DIGITS_DMM7510-cbc0f55d-9956-4b13-bd09-d75d2876fa13input" + }, + { + "source": "READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35", + "sourceHandle": "default", + "target": "BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5", + "targetHandle": "default", + "id": "reactflow__edge-READ_MEASUREMENT_DMM7510-d02caf67-71e5-4cf2-8330-c0d1b2160f35default-BIG_NUMBER-666f96e9-7522-40be-a34d-47e7445876d5default" + } + ], + "viewport": { + "x": 1181.2883637885323, + "y": 525.5787480876195, + "zoom": 1.0441212277180714 + } + }, + "textNodes": [] +} \ No newline at end of file diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/block_data.json b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/block_data.json new file mode 100644 index 00000000..6640c3c8 --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/block_data.json @@ -0,0 +1,20 @@ +{ + "docstring": { + "long_description": "Requires a CONNECT_DMM7510 block to create the connection.", + "short_description": "Resets the DMM7510 and clears buffers.", + "parameters": [ + { + "name": "connection", + "type": "VisaConnection", + "description": "The VISA address (requires the CONNECTION_DMM7510 block)." + } + ], + "returns": [ + { + "name": null, + "type": "TextBlob", + "description": "Reset" + } + ] + } +} \ No newline at end of file diff --git a/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/example.md b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/example.md new file mode 100644 index 00000000..efee664b --- /dev/null +++ b/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/example.md @@ -0,0 +1,16 @@ +In this example, a DC voltage measurement was extracted from a Keithley DMM7510. + +First the necessary blocks were added: + +- `CONNECT_DMM7510` +- `RESET_DMM7510` +- `FUNCTION_DMM7510` +- `DIGITS_DMM7510` +- `MEASUREMENT_PARAMS_DMM7510` +- `MEASUREMENT_FILTER_DMM7510` +- `READ_DMM7510` +- `BIG_NUMBER` + +The instrument address was set for each `DMM7510` block. The `FUNCTION_DMM7510` block was changed in order to extract the correct measurement. The parameters in `DIGITS_DMM7510`, `MEASUREMENT_PARAMS_DMM7510`, and `MEASUREMENT_FILTER_DMM7510` blocks were changed as necessary. The `READ_DMM7510` block was connected to the `BIG_NUMBER` block in order to view the reading. + +The blocks were connected as shown and the app was run. diff --git a/blocks/HARDWARE/PROTOCOLS/GPIB/PROLOGIX/summary.md b/blocks/HARDWARE/PROTOCOLS/GPIB/PROLOGIX/summary.md new file mode 100644 index 00000000..d48d3d71 --- /dev/null +++ b/blocks/HARDWARE/PROTOCOLS/GPIB/PROLOGIX/summary.md @@ -0,0 +1,7 @@ +--- +title: Prologix +description: "Welcome to Flojoy's Prologix Blocks page." +--- + + +Coming soon... diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/BEEP_2450.py b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/BEEP_2450.py new file mode 100644 index 00000000..78f94f59 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/BEEP_2450.py @@ -0,0 +1,36 @@ +from typing import Optional +from flojoy import VisaConnection, flojoy, DataContainer, TextBlob + + +@flojoy(deps={"tm_devices": "1.0"}, inject_connection=True) +def BEEP_2450( + connection: VisaConnection, + input: Optional[DataContainer] = None, + duration: float = 0.25, + frequency: float = 2000, +) -> TextBlob: + """Causes the 2450 to beep audibly. + + Requires a CONNECT_2450 block to create the connection. + + Parameters + ---------- + connection : VisaConnection + The VISA address (requires the CONNECTION_2450 block). + duration : float, default=0.25 + The duration of the beep in seconds. + frequency : float, default=2000 + The frequency, or tone, of the beep in Hz. + + Returns + ------- + TextBlob + Beep + """ + + # Retrieve oscilloscope instrument connection + smu = connection.get_handle() + + smu.commands.beeper.beep(duration=duration, frequency=frequency) + + return TextBlob(text_blob="BEEP") diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/app.json b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/app.json new file mode 100644 index 00000000..bfc67574 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/app.json @@ -0,0 +1,903 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "type": "HARDWARE", + "data": { + "id": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "label": "BEEP 2450", + "func": "BEEP_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "BEEP_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "duration": { + "type": "float", + "default": 0.25, + "desc": "The duration of the beep in seconds.", + "overload": null, + "functionName": "BEEP_2450", + "param": "duration", + "value": 0.25 + }, + "frequency": { + "type": "float", + "default": 2000, + "desc": "The frequency, or tone, of the beep in Hz.", + "overload": null, + "functionName": "BEEP_2450", + "param": "frequency", + "value": 2000 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Beep" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/BEEP_2450.py" + }, + "position": { + "x": -448.3091293727178, + "y": -347.92345448716804 + }, + "selected": false, + "positionAbsolute": { + "x": -448.3091293727178, + "y": -347.92345448716804 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06", + "type": "HARDWARE", + "data": { + "id": "CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06", + "label": "CONNECT 2450", + "func": "CONNECT_2450", + "type": "HARDWARE", + "ctrls": { + "device": { + "type": "VisaDevice", + "default": null, + "desc": "The connected VISA device.", + "overload": null, + "functionName": "CONNECT_2450", + "param": "device", + "value": "TCPIP::169.254.175.123::INSTR" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP or VISA address of the VISA device." + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/CONNECT_2450.py" + }, + "position": { + "x": -674.0943355603956, + "y": -346.9914490190549 + }, + "selected": false, + "positionAbsolute": { + "x": -674.0943355603956, + "y": -346.9914490190549 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "type": "HARDWARE", + "data": { + "id": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "label": "IV SWEEP 2450", + "func": "IV_SWEEP_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "sweep": { + "type": "select", + "options": [ + "voltage", + "current" + ], + "default": "voltage", + "desc": "Select the sweep mode, the opposite unit is measured.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "sweep", + "value": "voltage" + }, + "sense": { + "type": "select", + "options": [ + "2-wire", + "4-wire" + ], + "default": "2-wire", + "desc": "Use 2 or 4 wire sense/measurement mode.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "sense", + "value": "2-wire" + }, + "start": { + "type": "float", + "default": 0, + "desc": "The first x value of the sweep.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "start", + "value": 0 + }, + "stop": { + "type": "float", + "default": 1, + "desc": "The last x value of the sweep.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "stop", + "value": 1 + }, + "points": { + "type": "float", + "default": 100, + "desc": "The number of points between start and stop.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "points", + "value": 100 + }, + "measurement_time": { + "type": "float", + "default": 1, + "desc": "How long to measure a single point, in seconds.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "measurement_time", + "value": 1 + }, + "measurement_delay": { + "type": "float", + "default": 0.05, + "desc": "How long to delay between two points, in seconds.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "measurement_delay", + "value": 0.05 + }, + "y_limit": { + "type": "float", + "default": 1, + "desc": "The limit of the measured value.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "y_limit", + "value": 1 + }, + "source_range": { + "type": "float", + "default": 1, + "desc": "The range of the x value.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "source_range", + "value": 2 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair", + "desc": "Sweep values" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/IV_SWEEP_2450.py" + }, + "position": { + "x": 492.2816086087546, + "y": 1.7974868009648617 + }, + "selected": false, + "positionAbsolute": { + "x": 492.2816086087546, + "y": 1.7974868009648617 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "type": "HARDWARE", + "data": { + "id": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "label": "MEASURE READ 2450", + "func": "MEASURE_READ_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "MEASURE_READ_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Reading" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/MEASURE_READ_2450.py" + }, + "position": { + "x": 512.3891574605273, + "y": -320.65565183900117 + }, + "selected": false, + "positionAbsolute": { + "x": 512.3891574605273, + "y": -320.65565183900117 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "type": "HARDWARE", + "data": { + "id": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "label": "MEASURE SETTINGS 2450", + "func": "MEASURE_SETTINGS_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "measure": { + "type": "select", + "options": [ + "voltage", + "current", + "resistance", + "power" + ], + "default": "voltage", + "desc": "Select the measure unit", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "measure", + "value": "voltage" + }, + "wires": { + "type": "select", + "options": [ + "2", + "4" + ], + "default": "2", + "desc": "Select 2-wire or 4-wire sense mode.", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "wires", + "value": "2" + }, + "digits": { + "type": "select", + "options": [ + "3.5", + "4.5", + "5.5", + "6.5" + ], + "default": "6.5", + "desc": "Select the number of display digits.", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "digits", + "value": "6.5" + }, + "meas_range": { + "type": "float", + "default": 0, + "desc": "The measurement range. 0 == AUTO.", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "meas_range", + "value": 0 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/MEASURE_SETTINGS_2450.py" + }, + "position": { + "x": 26.597185633155945, + "y": -437.0939563812675 + }, + "selected": false, + "positionAbsolute": { + "x": 26.597185633155945, + "y": -437.0939563812675 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "type": "HARDWARE", + "data": { + "id": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "label": "OUTPUT 2450", + "func": "OUTPUT_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "OUTPUT_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "output": { + "type": "select", + "options": [ + "on", + "off" + ], + "default": "on", + "desc": "Turn the output on or off.", + "overload": null, + "functionName": "OUTPUT_2450", + "param": "output", + "value": "on" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Output settings" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/OUTPUT_2450.py" + }, + "position": { + "x": 280.0082587419151, + "y": -318.62173032956696 + }, + "selected": false, + "positionAbsolute": { + "x": 280.0082587419151, + "y": -318.62173032956696 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "type": "HARDWARE", + "data": { + "id": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "label": "RESET 2450", + "func": "RESET_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "RESET_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Reset" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/RESET_2450.py" + }, + "position": { + "x": -226.13106763431557, + "y": -346.60560976610765 + }, + "selected": false, + "positionAbsolute": { + "x": -226.13106763431557, + "y": -346.60560976610765 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "type": "HARDWARE", + "data": { + "id": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "label": "SOURCE 2450", + "func": "SOURCE_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "SOURCE_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "function": { + "type": "select", + "options": [ + "current", + "voltage" + ], + "default": "voltage", + "desc": "The type of output to use.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "function", + "value": "voltage" + }, + "level": { + "type": "float", + "default": 1, + "desc": "The fixed voltage or current to output.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "level", + "value": 1 + }, + "limit": { + "type": "float", + "default": 1, + "desc": "Output limit (if function=voltage, current is limited and visa versa).", + "overload": null, + "functionName": "SOURCE_2450", + "param": "limit", + "value": 1 + }, + "terminal": { + "type": "select", + "options": [ + "front", + "rear" + ], + "default": "front", + "desc": "The panel to output from.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "terminal", + "value": "front" + }, + "protect": { + "type": "select", + "options": [ + "NONE", + "2V", + "5V", + "10V", + "20V", + "40V", + "60V", + "80V", + "100V", + "120V", + "140V", + "160V", + "180V" + ], + "default": "NONE", + "desc": "The overvoltage protection value.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "protect", + "value": "5V" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Source settings" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/SOURCE_2450.py" + }, + "position": { + "x": 16.48308033026258, + "y": -220.1001132926403 + }, + "selected": false, + "positionAbsolute": { + "x": 16.48308033026258, + "y": -220.1001132926403 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "LINE-30feab30-6d4f-4274-8877-383382355e5f", + "type": "VISUALIZATION", + "data": { + "id": "LINE-30feab30-6d4f-4274-8877-383382355e5f", + "label": "LINE", + "func": "LINE", + "type": "VISUALIZATION", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|DataFrame|Matrix|Vector", + "multiple": false, + "desc": "the DataContainer to be visualized" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly", + "desc": "the DataContainer containing the Plotly Line visualization of the input data" + } + ], + "path": "DATA/VISUALIZATION/PLOTLY/LINE/LINE.py" + }, + "position": { + "x": 820.060590405619, + "y": -43.462075618890026 + }, + "selected": false, + "positionAbsolute": { + "x": 820.060590405619, + "y": -43.462075618890026 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749", + "type": "VISUALIZATION", + "data": { + "id": "BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749", + "label": "BIG NUMBER", + "func": "BIG_NUMBER", + "type": "VISUALIZATION", + "ctrls": { + "suffix": { + "type": "str", + "default": null, + "desc": "any suffix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "suffix", + "value": "" + }, + "prefix": { + "type": "str", + "default": null, + "desc": "any prefix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "prefix", + "value": "" + }, + "title": { + "type": "str", + "default": null, + "desc": "title of the plot, default = \"BIG_NUMBER\"", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "title", + "value": "" + }, + "relative_delta": { + "type": "bool", + "default": true, + "desc": "whether or not to show the relative delta from the last run along with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "relative_delta", + "value": true + }, + "scientific_notation": { + "type": "bool", + "default": false, + "desc": null, + "overload": null, + "functionName": "BIG_NUMBER", + "param": "scientific_notation", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Scalar|Vector", + "multiple": false, + "desc": "the DataContainer to be visualized" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly", + "desc": "the DataContainer containing the Plotly big number visualization" + } + ], + "path": "DATA/VISUALIZATION/PLOTLY/BIG_NUMBER/BIG_NUMBER.py" + }, + "position": { + "x": 831.0144261253039, + "y": -361.6163345095765 + }, + "selected": false, + "positionAbsolute": { + "x": 831.0144261253039, + "y": -361.6163345095765 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06", + "sourceHandle": "default", + "target": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "targetHandle": "input", + "id": "reactflow__edge-CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06default-BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29input" + }, + { + "source": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "sourceHandle": "default", + "target": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "targetHandle": "input", + "id": "reactflow__edge-MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787default-IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010input" + }, + { + "source": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "sourceHandle": "default", + "target": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "targetHandle": "input", + "id": "reactflow__edge-OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9ddefault-MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787input" + }, + { + "source": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "sourceHandle": "default", + "target": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "targetHandle": "input", + "id": "reactflow__edge-RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809edefault-MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9input" + }, + { + "source": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "sourceHandle": "default", + "target": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "targetHandle": "input", + "id": "reactflow__edge-MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9default-OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9dinput" + }, + { + "source": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "sourceHandle": "default", + "target": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "targetHandle": "input", + "id": "reactflow__edge-SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7default-OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9dinput" + }, + { + "source": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "sourceHandle": "default", + "target": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "targetHandle": "input", + "id": "reactflow__edge-BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29default-RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809einput" + }, + { + "source": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "sourceHandle": "default", + "target": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "targetHandle": "input", + "id": "reactflow__edge-RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809edefault-SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7input" + }, + { + "source": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "sourceHandle": "default", + "target": "LINE-30feab30-6d4f-4274-8877-383382355e5f", + "targetHandle": "default", + "id": "reactflow__edge-IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010default-LINE-30feab30-6d4f-4274-8877-383382355e5fdefault" + }, + { + "source": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "sourceHandle": "default", + "target": "BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749", + "targetHandle": "default", + "id": "reactflow__edge-MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787default-BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749default" + } + ], + "viewport": { + "x": 994.2991122110108, + "y": 573.4932402039965, + "zoom": 0.9719556784888205 + } + }, + "textNodes": [] +} \ No newline at end of file diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/block_data.json b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/block_data.json new file mode 100644 index 00000000..770c608e --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/block_data.json @@ -0,0 +1,30 @@ +{ + "docstring": { + "long_description": "Requires a CONNECT_2450 block to create the connection.", + "short_description": "Causes the 2450 to beep audibly.", + "parameters": [ + { + "name": "connection", + "type": "VisaConnection", + "description": "The VISA address (requires the CONNECTION_2450 block)." + }, + { + "name": "duration", + "type": "float, default=0.25", + "description": "The duration of the beep in seconds." + }, + { + "name": "frequency", + "type": "float, default=2000", + "description": "The frequency, or tone, of the beep in Hz." + } + ], + "returns": [ + { + "name": null, + "type": "TextBlob", + "description": "Beep" + } + ] + } +} \ No newline at end of file diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/example.md b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/example.md new file mode 100644 index 00000000..2faf7340 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/example.md @@ -0,0 +1,19 @@ +In this example, a Keithley 2450 to generate 1V and then sweep between 0 and 1V. + +First the necessary blocks were added: + +- `CONNECT_2450` +- `BEEP_2450` +- `RESET_2450` +- `SOURCE_2450` +- `MEASURE_SETTINGS_2450` +- `MEASUREMENT_READ_2450` +- `IV_SWEEP_2450` +- `BIG_NUMBER` +- `LINE` + +The instrument address was set for each `2450` block. The `SOURCE_2450` block was changed in order to source 1V. The parameters in the `MEASURE_SETTINGS_2450` block were changed as necessary. The `MEASUREMENT_READ_2450` block was connected to the `BIG_NUMBER` block in order to view the reading. + +The `IV_SWEEP_2450` block output was connected to the `LINE` plot to show the output of the sweep. + +The blocks were connected as shown and the app was run. diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/CONNECT_2450.py b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/CONNECT_2450.py new file mode 100644 index 00000000..d372da48 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/CONNECT_2450.py @@ -0,0 +1,34 @@ +from flojoy import VisaDevice, flojoy, TextBlob +from flojoy.connection_manager import DeviceConnectionManager + + +@flojoy(deps={"tm_devices": "1.0"}) +def CONNECT_2450( + device: VisaDevice, +) -> TextBlob: + """Open a VISA connection to an Keithley 2450 SourceMeter. + + Parameters + ---------- + device: VisaDevice + The connected VISA device. + + Returns + ------- + device_addr: TextBlob + The IP or VISA address of the VISA device. + """ + + device_addr = device.get_address() + + smu = DeviceConnectionManager.tm.add_smu(device_addr) + smu.write("*LANG TSP") + lang = smu.query("*LANG?") + if lang != "TSP": + raise ValueError( + "Command set language not set correctly. Try setting to 'TSP' manually." + ) + + DeviceConnectionManager.register_connection(device, smu) + + return TextBlob(text_blob=device_addr) diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/app.json b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/app.json new file mode 100644 index 00000000..bfc67574 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/app.json @@ -0,0 +1,903 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "type": "HARDWARE", + "data": { + "id": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "label": "BEEP 2450", + "func": "BEEP_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "BEEP_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "duration": { + "type": "float", + "default": 0.25, + "desc": "The duration of the beep in seconds.", + "overload": null, + "functionName": "BEEP_2450", + "param": "duration", + "value": 0.25 + }, + "frequency": { + "type": "float", + "default": 2000, + "desc": "The frequency, or tone, of the beep in Hz.", + "overload": null, + "functionName": "BEEP_2450", + "param": "frequency", + "value": 2000 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Beep" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/BEEP_2450.py" + }, + "position": { + "x": -448.3091293727178, + "y": -347.92345448716804 + }, + "selected": false, + "positionAbsolute": { + "x": -448.3091293727178, + "y": -347.92345448716804 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06", + "type": "HARDWARE", + "data": { + "id": "CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06", + "label": "CONNECT 2450", + "func": "CONNECT_2450", + "type": "HARDWARE", + "ctrls": { + "device": { + "type": "VisaDevice", + "default": null, + "desc": "The connected VISA device.", + "overload": null, + "functionName": "CONNECT_2450", + "param": "device", + "value": "TCPIP::169.254.175.123::INSTR" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP or VISA address of the VISA device." + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/CONNECT_2450.py" + }, + "position": { + "x": -674.0943355603956, + "y": -346.9914490190549 + }, + "selected": false, + "positionAbsolute": { + "x": -674.0943355603956, + "y": -346.9914490190549 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "type": "HARDWARE", + "data": { + "id": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "label": "IV SWEEP 2450", + "func": "IV_SWEEP_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "sweep": { + "type": "select", + "options": [ + "voltage", + "current" + ], + "default": "voltage", + "desc": "Select the sweep mode, the opposite unit is measured.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "sweep", + "value": "voltage" + }, + "sense": { + "type": "select", + "options": [ + "2-wire", + "4-wire" + ], + "default": "2-wire", + "desc": "Use 2 or 4 wire sense/measurement mode.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "sense", + "value": "2-wire" + }, + "start": { + "type": "float", + "default": 0, + "desc": "The first x value of the sweep.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "start", + "value": 0 + }, + "stop": { + "type": "float", + "default": 1, + "desc": "The last x value of the sweep.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "stop", + "value": 1 + }, + "points": { + "type": "float", + "default": 100, + "desc": "The number of points between start and stop.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "points", + "value": 100 + }, + "measurement_time": { + "type": "float", + "default": 1, + "desc": "How long to measure a single point, in seconds.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "measurement_time", + "value": 1 + }, + "measurement_delay": { + "type": "float", + "default": 0.05, + "desc": "How long to delay between two points, in seconds.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "measurement_delay", + "value": 0.05 + }, + "y_limit": { + "type": "float", + "default": 1, + "desc": "The limit of the measured value.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "y_limit", + "value": 1 + }, + "source_range": { + "type": "float", + "default": 1, + "desc": "The range of the x value.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "source_range", + "value": 2 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair", + "desc": "Sweep values" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/IV_SWEEP_2450.py" + }, + "position": { + "x": 492.2816086087546, + "y": 1.7974868009648617 + }, + "selected": false, + "positionAbsolute": { + "x": 492.2816086087546, + "y": 1.7974868009648617 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "type": "HARDWARE", + "data": { + "id": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "label": "MEASURE READ 2450", + "func": "MEASURE_READ_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "MEASURE_READ_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Reading" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/MEASURE_READ_2450.py" + }, + "position": { + "x": 512.3891574605273, + "y": -320.65565183900117 + }, + "selected": false, + "positionAbsolute": { + "x": 512.3891574605273, + "y": -320.65565183900117 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "type": "HARDWARE", + "data": { + "id": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "label": "MEASURE SETTINGS 2450", + "func": "MEASURE_SETTINGS_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "measure": { + "type": "select", + "options": [ + "voltage", + "current", + "resistance", + "power" + ], + "default": "voltage", + "desc": "Select the measure unit", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "measure", + "value": "voltage" + }, + "wires": { + "type": "select", + "options": [ + "2", + "4" + ], + "default": "2", + "desc": "Select 2-wire or 4-wire sense mode.", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "wires", + "value": "2" + }, + "digits": { + "type": "select", + "options": [ + "3.5", + "4.5", + "5.5", + "6.5" + ], + "default": "6.5", + "desc": "Select the number of display digits.", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "digits", + "value": "6.5" + }, + "meas_range": { + "type": "float", + "default": 0, + "desc": "The measurement range. 0 == AUTO.", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "meas_range", + "value": 0 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/MEASURE_SETTINGS_2450.py" + }, + "position": { + "x": 26.597185633155945, + "y": -437.0939563812675 + }, + "selected": false, + "positionAbsolute": { + "x": 26.597185633155945, + "y": -437.0939563812675 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "type": "HARDWARE", + "data": { + "id": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "label": "OUTPUT 2450", + "func": "OUTPUT_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "OUTPUT_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "output": { + "type": "select", + "options": [ + "on", + "off" + ], + "default": "on", + "desc": "Turn the output on or off.", + "overload": null, + "functionName": "OUTPUT_2450", + "param": "output", + "value": "on" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Output settings" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/OUTPUT_2450.py" + }, + "position": { + "x": 280.0082587419151, + "y": -318.62173032956696 + }, + "selected": false, + "positionAbsolute": { + "x": 280.0082587419151, + "y": -318.62173032956696 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "type": "HARDWARE", + "data": { + "id": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "label": "RESET 2450", + "func": "RESET_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "RESET_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Reset" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/RESET_2450.py" + }, + "position": { + "x": -226.13106763431557, + "y": -346.60560976610765 + }, + "selected": false, + "positionAbsolute": { + "x": -226.13106763431557, + "y": -346.60560976610765 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "type": "HARDWARE", + "data": { + "id": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "label": "SOURCE 2450", + "func": "SOURCE_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "SOURCE_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "function": { + "type": "select", + "options": [ + "current", + "voltage" + ], + "default": "voltage", + "desc": "The type of output to use.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "function", + "value": "voltage" + }, + "level": { + "type": "float", + "default": 1, + "desc": "The fixed voltage or current to output.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "level", + "value": 1 + }, + "limit": { + "type": "float", + "default": 1, + "desc": "Output limit (if function=voltage, current is limited and visa versa).", + "overload": null, + "functionName": "SOURCE_2450", + "param": "limit", + "value": 1 + }, + "terminal": { + "type": "select", + "options": [ + "front", + "rear" + ], + "default": "front", + "desc": "The panel to output from.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "terminal", + "value": "front" + }, + "protect": { + "type": "select", + "options": [ + "NONE", + "2V", + "5V", + "10V", + "20V", + "40V", + "60V", + "80V", + "100V", + "120V", + "140V", + "160V", + "180V" + ], + "default": "NONE", + "desc": "The overvoltage protection value.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "protect", + "value": "5V" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Source settings" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/SOURCE_2450.py" + }, + "position": { + "x": 16.48308033026258, + "y": -220.1001132926403 + }, + "selected": false, + "positionAbsolute": { + "x": 16.48308033026258, + "y": -220.1001132926403 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "LINE-30feab30-6d4f-4274-8877-383382355e5f", + "type": "VISUALIZATION", + "data": { + "id": "LINE-30feab30-6d4f-4274-8877-383382355e5f", + "label": "LINE", + "func": "LINE", + "type": "VISUALIZATION", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|DataFrame|Matrix|Vector", + "multiple": false, + "desc": "the DataContainer to be visualized" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly", + "desc": "the DataContainer containing the Plotly Line visualization of the input data" + } + ], + "path": "DATA/VISUALIZATION/PLOTLY/LINE/LINE.py" + }, + "position": { + "x": 820.060590405619, + "y": -43.462075618890026 + }, + "selected": false, + "positionAbsolute": { + "x": 820.060590405619, + "y": -43.462075618890026 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749", + "type": "VISUALIZATION", + "data": { + "id": "BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749", + "label": "BIG NUMBER", + "func": "BIG_NUMBER", + "type": "VISUALIZATION", + "ctrls": { + "suffix": { + "type": "str", + "default": null, + "desc": "any suffix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "suffix", + "value": "" + }, + "prefix": { + "type": "str", + "default": null, + "desc": "any prefix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "prefix", + "value": "" + }, + "title": { + "type": "str", + "default": null, + "desc": "title of the plot, default = \"BIG_NUMBER\"", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "title", + "value": "" + }, + "relative_delta": { + "type": "bool", + "default": true, + "desc": "whether or not to show the relative delta from the last run along with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "relative_delta", + "value": true + }, + "scientific_notation": { + "type": "bool", + "default": false, + "desc": null, + "overload": null, + "functionName": "BIG_NUMBER", + "param": "scientific_notation", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Scalar|Vector", + "multiple": false, + "desc": "the DataContainer to be visualized" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly", + "desc": "the DataContainer containing the Plotly big number visualization" + } + ], + "path": "DATA/VISUALIZATION/PLOTLY/BIG_NUMBER/BIG_NUMBER.py" + }, + "position": { + "x": 831.0144261253039, + "y": -361.6163345095765 + }, + "selected": false, + "positionAbsolute": { + "x": 831.0144261253039, + "y": -361.6163345095765 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06", + "sourceHandle": "default", + "target": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "targetHandle": "input", + "id": "reactflow__edge-CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06default-BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29input" + }, + { + "source": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "sourceHandle": "default", + "target": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "targetHandle": "input", + "id": "reactflow__edge-MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787default-IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010input" + }, + { + "source": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "sourceHandle": "default", + "target": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "targetHandle": "input", + "id": "reactflow__edge-OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9ddefault-MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787input" + }, + { + "source": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "sourceHandle": "default", + "target": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "targetHandle": "input", + "id": "reactflow__edge-RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809edefault-MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9input" + }, + { + "source": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "sourceHandle": "default", + "target": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "targetHandle": "input", + "id": "reactflow__edge-MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9default-OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9dinput" + }, + { + "source": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "sourceHandle": "default", + "target": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "targetHandle": "input", + "id": "reactflow__edge-SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7default-OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9dinput" + }, + { + "source": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "sourceHandle": "default", + "target": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "targetHandle": "input", + "id": "reactflow__edge-BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29default-RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809einput" + }, + { + "source": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "sourceHandle": "default", + "target": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "targetHandle": "input", + "id": "reactflow__edge-RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809edefault-SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7input" + }, + { + "source": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "sourceHandle": "default", + "target": "LINE-30feab30-6d4f-4274-8877-383382355e5f", + "targetHandle": "default", + "id": "reactflow__edge-IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010default-LINE-30feab30-6d4f-4274-8877-383382355e5fdefault" + }, + { + "source": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "sourceHandle": "default", + "target": "BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749", + "targetHandle": "default", + "id": "reactflow__edge-MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787default-BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749default" + } + ], + "viewport": { + "x": 994.2991122110108, + "y": 573.4932402039965, + "zoom": 0.9719556784888205 + } + }, + "textNodes": [] +} \ No newline at end of file diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/block_data.json b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/block_data.json new file mode 100644 index 00000000..1e31504a --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/block_data.json @@ -0,0 +1,20 @@ +{ + "docstring": { + "long_description": "", + "short_description": "Open a VISA connection to an Keithley 2450 SourceMeter.", + "parameters": [ + { + "name": "device", + "type": "VisaDevice", + "description": "The connected VISA device." + } + ], + "returns": [ + { + "name": "device_addr", + "type": "TextBlob", + "description": "The IP or VISA address of the VISA device." + } + ] + } +} \ No newline at end of file diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/example.md b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/example.md new file mode 100644 index 00000000..2faf7340 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/example.md @@ -0,0 +1,19 @@ +In this example, a Keithley 2450 to generate 1V and then sweep between 0 and 1V. + +First the necessary blocks were added: + +- `CONNECT_2450` +- `BEEP_2450` +- `RESET_2450` +- `SOURCE_2450` +- `MEASURE_SETTINGS_2450` +- `MEASUREMENT_READ_2450` +- `IV_SWEEP_2450` +- `BIG_NUMBER` +- `LINE` + +The instrument address was set for each `2450` block. The `SOURCE_2450` block was changed in order to source 1V. The parameters in the `MEASURE_SETTINGS_2450` block were changed as necessary. The `MEASUREMENT_READ_2450` block was connected to the `BIG_NUMBER` block in order to view the reading. + +The `IV_SWEEP_2450` block output was connected to the `LINE` plot to show the output of the sweep. + +The blocks were connected as shown and the app was run. diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/IV_SWEEP_2450.py b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/IV_SWEEP_2450.py new file mode 100644 index 00000000..8348be3c --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/IV_SWEEP_2450.py @@ -0,0 +1,105 @@ +from typing import Optional, Literal +from flojoy import VisaConnection, flojoy, DataContainer, OrderedPair +from time import sleep + + +@flojoy(deps={"tm_devices": "1.0"}, inject_connection=True) +def IV_SWEEP_2450( + connection: VisaConnection, + input: Optional[DataContainer] = None, + sweep: Literal["voltage", "current"] = "voltage", + sense: Literal["2-wire", "4-wire"] = "2-wire", + start: float = 0, + stop: float = 1, + points: float = 100, + measurement_time: float = 1, + measurement_delay: float = 0.05, + y_limit: float = 1, + source_range: float = 1, +) -> OrderedPair: + """Sweeps current or voltage and measures the opposite for the 2450. + + Requires a CONNECT_2450 block to create the connection. + + Parameters + ---------- + connection : VisaConnection + The VISA address (requires the CONNECTION_2450 block). + sweep : select, default=voltage + Select the sweep mode, the opposite unit is measured. + sense : select, default=2-wire + Use 2 or 4 wire sense/measurement mode. + start : float, default=0 + The first x value of the sweep. + stop : float, default=1 + The last x value of the sweep. + points : float, default=100 + The number of points between start and stop. + measurement_time : float, default=1 + How long to measure a single point, in seconds. + measurement_delay : float, default=0.05 + How long to delay between two points, in seconds. + y_limit : float, default=1 + The limit of the measured value. + source_range : float, default=1 + The range of the x value. + + Returns + ------- + OrderedPair + Sweep values + """ + + # Retrieve oscilloscope instrument connection + smu = connection.get_handle() + smu.commands.reset() + + # Set the source and measure functions. + if sweep == "current": + smu.commands.smu.measure.func = smu.commands.smu.FUNC_DC_VOLTAGE + smu.commands.smu.source.func = smu.commands.smu.FUNC_DC_CURRENT + else: + smu.commands.smu.measure.func = smu.commands.smu.FUNC_DC_CURRENT + smu.commands.smu.source.func = smu.commands.smu.FUNC_DC_VOLTAGE + + # Configure measurement settings. + smu.commands.smu.terminals = smu.commands.smu.TERMINALS_FRONT + if sense == "2-wire": + smu.commands.smu.measure.sense = smu.commands.smu.SENSE_2WIRE + else: + smu.commands.smu.measure.sense = smu.commands.smu.SENSE_4WIRE + smu.commands.smu.measure.autorange = smu.commands.smu.ON + smu.commands.smu.measure.nplc = measurement_time + + # Configure source settings. + smu.commands.smu.source.highc = smu.commands.smu.OFF + smu.commands.smu.source.range = source_range + smu.commands.smu.source.readback = smu.commands.smu.ON + if sweep == "current": + smu.commands.smu.source.vlimit.level = y_limit + else: + smu.commands.smu.source.ilimit.level = y_limit + smu.commands.smu.source.sweeplinear( + "IVSweep", + start, + stop, + points, + measurement_delay, + ) + + # Set the operation status bit 0 to high when the trigger model is active. + # See Event Numbers in 2450 reference manual. + smu.commands.status.operation.setmap(0, 2731, 2732) + smu.commands.trigger.model.initiate() + + while True: # This is needed to wait for the trigger model to complete + sleep(0.5) + if not int(smu.commands.status.operation.condition): + break + + # Get the data from the buffers: + buffer_data = smu.get_buffers("defbuffer1.sourcevalues", "defbuffer1") + x = buffer_data["defbuffer1.sourcevalues"] + y = buffer_data["defbuffer1"] + + return OrderedPair(x=x, y=y) diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/app.json b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/app.json new file mode 100644 index 00000000..bfc67574 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/app.json @@ -0,0 +1,903 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "type": "HARDWARE", + "data": { + "id": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "label": "BEEP 2450", + "func": "BEEP_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "BEEP_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "duration": { + "type": "float", + "default": 0.25, + "desc": "The duration of the beep in seconds.", + "overload": null, + "functionName": "BEEP_2450", + "param": "duration", + "value": 0.25 + }, + "frequency": { + "type": "float", + "default": 2000, + "desc": "The frequency, or tone, of the beep in Hz.", + "overload": null, + "functionName": "BEEP_2450", + "param": "frequency", + "value": 2000 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Beep" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/BEEP_2450.py" + }, + "position": { + "x": -448.3091293727178, + "y": -347.92345448716804 + }, + "selected": false, + "positionAbsolute": { + "x": -448.3091293727178, + "y": -347.92345448716804 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06", + "type": "HARDWARE", + "data": { + "id": "CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06", + "label": "CONNECT 2450", + "func": "CONNECT_2450", + "type": "HARDWARE", + "ctrls": { + "device": { + "type": "VisaDevice", + "default": null, + "desc": "The connected VISA device.", + "overload": null, + "functionName": "CONNECT_2450", + "param": "device", + "value": "TCPIP::169.254.175.123::INSTR" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP or VISA address of the VISA device." + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/CONNECT_2450.py" + }, + "position": { + "x": -674.0943355603956, + "y": -346.9914490190549 + }, + "selected": false, + "positionAbsolute": { + "x": -674.0943355603956, + "y": -346.9914490190549 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "type": "HARDWARE", + "data": { + "id": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "label": "IV SWEEP 2450", + "func": "IV_SWEEP_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "sweep": { + "type": "select", + "options": [ + "voltage", + "current" + ], + "default": "voltage", + "desc": "Select the sweep mode, the opposite unit is measured.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "sweep", + "value": "voltage" + }, + "sense": { + "type": "select", + "options": [ + "2-wire", + "4-wire" + ], + "default": "2-wire", + "desc": "Use 2 or 4 wire sense/measurement mode.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "sense", + "value": "2-wire" + }, + "start": { + "type": "float", + "default": 0, + "desc": "The first x value of the sweep.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "start", + "value": 0 + }, + "stop": { + "type": "float", + "default": 1, + "desc": "The last x value of the sweep.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "stop", + "value": 1 + }, + "points": { + "type": "float", + "default": 100, + "desc": "The number of points between start and stop.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "points", + "value": 100 + }, + "measurement_time": { + "type": "float", + "default": 1, + "desc": "How long to measure a single point, in seconds.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "measurement_time", + "value": 1 + }, + "measurement_delay": { + "type": "float", + "default": 0.05, + "desc": "How long to delay between two points, in seconds.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "measurement_delay", + "value": 0.05 + }, + "y_limit": { + "type": "float", + "default": 1, + "desc": "The limit of the measured value.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "y_limit", + "value": 1 + }, + "source_range": { + "type": "float", + "default": 1, + "desc": "The range of the x value.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "source_range", + "value": 2 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair", + "desc": "Sweep values" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/IV_SWEEP_2450.py" + }, + "position": { + "x": 492.2816086087546, + "y": 1.7974868009648617 + }, + "selected": false, + "positionAbsolute": { + "x": 492.2816086087546, + "y": 1.7974868009648617 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "type": "HARDWARE", + "data": { + "id": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "label": "MEASURE READ 2450", + "func": "MEASURE_READ_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "MEASURE_READ_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Reading" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/MEASURE_READ_2450.py" + }, + "position": { + "x": 512.3891574605273, + "y": -320.65565183900117 + }, + "selected": false, + "positionAbsolute": { + "x": 512.3891574605273, + "y": -320.65565183900117 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "type": "HARDWARE", + "data": { + "id": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "label": "MEASURE SETTINGS 2450", + "func": "MEASURE_SETTINGS_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "measure": { + "type": "select", + "options": [ + "voltage", + "current", + "resistance", + "power" + ], + "default": "voltage", + "desc": "Select the measure unit", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "measure", + "value": "voltage" + }, + "wires": { + "type": "select", + "options": [ + "2", + "4" + ], + "default": "2", + "desc": "Select 2-wire or 4-wire sense mode.", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "wires", + "value": "2" + }, + "digits": { + "type": "select", + "options": [ + "3.5", + "4.5", + "5.5", + "6.5" + ], + "default": "6.5", + "desc": "Select the number of display digits.", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "digits", + "value": "6.5" + }, + "meas_range": { + "type": "float", + "default": 0, + "desc": "The measurement range. 0 == AUTO.", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "meas_range", + "value": 0 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/MEASURE_SETTINGS_2450.py" + }, + "position": { + "x": 26.597185633155945, + "y": -437.0939563812675 + }, + "selected": false, + "positionAbsolute": { + "x": 26.597185633155945, + "y": -437.0939563812675 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "type": "HARDWARE", + "data": { + "id": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "label": "OUTPUT 2450", + "func": "OUTPUT_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "OUTPUT_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "output": { + "type": "select", + "options": [ + "on", + "off" + ], + "default": "on", + "desc": "Turn the output on or off.", + "overload": null, + "functionName": "OUTPUT_2450", + "param": "output", + "value": "on" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Output settings" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/OUTPUT_2450.py" + }, + "position": { + "x": 280.0082587419151, + "y": -318.62173032956696 + }, + "selected": false, + "positionAbsolute": { + "x": 280.0082587419151, + "y": -318.62173032956696 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "type": "HARDWARE", + "data": { + "id": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "label": "RESET 2450", + "func": "RESET_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "RESET_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Reset" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/RESET_2450.py" + }, + "position": { + "x": -226.13106763431557, + "y": -346.60560976610765 + }, + "selected": false, + "positionAbsolute": { + "x": -226.13106763431557, + "y": -346.60560976610765 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "type": "HARDWARE", + "data": { + "id": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "label": "SOURCE 2450", + "func": "SOURCE_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "SOURCE_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "function": { + "type": "select", + "options": [ + "current", + "voltage" + ], + "default": "voltage", + "desc": "The type of output to use.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "function", + "value": "voltage" + }, + "level": { + "type": "float", + "default": 1, + "desc": "The fixed voltage or current to output.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "level", + "value": 1 + }, + "limit": { + "type": "float", + "default": 1, + "desc": "Output limit (if function=voltage, current is limited and visa versa).", + "overload": null, + "functionName": "SOURCE_2450", + "param": "limit", + "value": 1 + }, + "terminal": { + "type": "select", + "options": [ + "front", + "rear" + ], + "default": "front", + "desc": "The panel to output from.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "terminal", + "value": "front" + }, + "protect": { + "type": "select", + "options": [ + "NONE", + "2V", + "5V", + "10V", + "20V", + "40V", + "60V", + "80V", + "100V", + "120V", + "140V", + "160V", + "180V" + ], + "default": "NONE", + "desc": "The overvoltage protection value.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "protect", + "value": "5V" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Source settings" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/SOURCE_2450.py" + }, + "position": { + "x": 16.48308033026258, + "y": -220.1001132926403 + }, + "selected": false, + "positionAbsolute": { + "x": 16.48308033026258, + "y": -220.1001132926403 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "LINE-30feab30-6d4f-4274-8877-383382355e5f", + "type": "VISUALIZATION", + "data": { + "id": "LINE-30feab30-6d4f-4274-8877-383382355e5f", + "label": "LINE", + "func": "LINE", + "type": "VISUALIZATION", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|DataFrame|Matrix|Vector", + "multiple": false, + "desc": "the DataContainer to be visualized" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly", + "desc": "the DataContainer containing the Plotly Line visualization of the input data" + } + ], + "path": "DATA/VISUALIZATION/PLOTLY/LINE/LINE.py" + }, + "position": { + "x": 820.060590405619, + "y": -43.462075618890026 + }, + "selected": false, + "positionAbsolute": { + "x": 820.060590405619, + "y": -43.462075618890026 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749", + "type": "VISUALIZATION", + "data": { + "id": "BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749", + "label": "BIG NUMBER", + "func": "BIG_NUMBER", + "type": "VISUALIZATION", + "ctrls": { + "suffix": { + "type": "str", + "default": null, + "desc": "any suffix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "suffix", + "value": "" + }, + "prefix": { + "type": "str", + "default": null, + "desc": "any prefix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "prefix", + "value": "" + }, + "title": { + "type": "str", + "default": null, + "desc": "title of the plot, default = \"BIG_NUMBER\"", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "title", + "value": "" + }, + "relative_delta": { + "type": "bool", + "default": true, + "desc": "whether or not to show the relative delta from the last run along with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "relative_delta", + "value": true + }, + "scientific_notation": { + "type": "bool", + "default": false, + "desc": null, + "overload": null, + "functionName": "BIG_NUMBER", + "param": "scientific_notation", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Scalar|Vector", + "multiple": false, + "desc": "the DataContainer to be visualized" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly", + "desc": "the DataContainer containing the Plotly big number visualization" + } + ], + "path": "DATA/VISUALIZATION/PLOTLY/BIG_NUMBER/BIG_NUMBER.py" + }, + "position": { + "x": 831.0144261253039, + "y": -361.6163345095765 + }, + "selected": false, + "positionAbsolute": { + "x": 831.0144261253039, + "y": -361.6163345095765 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06", + "sourceHandle": "default", + "target": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "targetHandle": "input", + "id": "reactflow__edge-CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06default-BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29input" + }, + { + "source": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "sourceHandle": "default", + "target": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "targetHandle": "input", + "id": "reactflow__edge-MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787default-IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010input" + }, + { + "source": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "sourceHandle": "default", + "target": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "targetHandle": "input", + "id": "reactflow__edge-OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9ddefault-MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787input" + }, + { + "source": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "sourceHandle": "default", + "target": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "targetHandle": "input", + "id": "reactflow__edge-RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809edefault-MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9input" + }, + { + "source": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "sourceHandle": "default", + "target": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "targetHandle": "input", + "id": "reactflow__edge-MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9default-OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9dinput" + }, + { + "source": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "sourceHandle": "default", + "target": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "targetHandle": "input", + "id": "reactflow__edge-SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7default-OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9dinput" + }, + { + "source": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "sourceHandle": "default", + "target": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "targetHandle": "input", + "id": "reactflow__edge-BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29default-RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809einput" + }, + { + "source": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "sourceHandle": "default", + "target": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "targetHandle": "input", + "id": "reactflow__edge-RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809edefault-SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7input" + }, + { + "source": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "sourceHandle": "default", + "target": "LINE-30feab30-6d4f-4274-8877-383382355e5f", + "targetHandle": "default", + "id": "reactflow__edge-IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010default-LINE-30feab30-6d4f-4274-8877-383382355e5fdefault" + }, + { + "source": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "sourceHandle": "default", + "target": "BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749", + "targetHandle": "default", + "id": "reactflow__edge-MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787default-BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749default" + } + ], + "viewport": { + "x": 994.2991122110108, + "y": 573.4932402039965, + "zoom": 0.9719556784888205 + } + }, + "textNodes": [] +} \ No newline at end of file diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/block_data.json b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/block_data.json new file mode 100644 index 00000000..f342c185 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/block_data.json @@ -0,0 +1,65 @@ +{ + "docstring": { + "long_description": "Requires a CONNECT_2450 block to create the connection.", + "short_description": "Sweeps current or voltage and measures the opposite for the 2450.", + "parameters": [ + { + "name": "connection", + "type": "VisaConnection", + "description": "The VISA address (requires the CONNECTION_2450 block)." + }, + { + "name": "sweep", + "type": "select, default=voltage", + "description": "Select the sweep mode, the opposite unit is measured." + }, + { + "name": "sense", + "type": "select, default=2-wire", + "description": "Use 2 or 4 wire sense/measurement mode." + }, + { + "name": "start", + "type": "float, default=0", + "description": "The first x value of the sweep." + }, + { + "name": "stop", + "type": "float, default=1", + "description": "The last x value of the sweep." + }, + { + "name": "points", + "type": "float, default=100", + "description": "The number of points between start and stop." + }, + { + "name": "measurement_time", + "type": "float, default=1", + "description": "How long to measure a single point, in seconds." + }, + { + "name": "measurement_delay", + "type": "float, default=0.05", + "description": "How long to delay between two points, in seconds." + }, + { + "name": "y_limit", + "type": "float, default=1", + "description": "The limit of the measured value." + }, + { + "name": "source_range", + "type": "float, default=1", + "description": "The range of the x value." + } + ], + "returns": [ + { + "name": null, + "type": "OrderedPair", + "description": "Sweep values" + } + ] + } +} \ No newline at end of file diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/example.md b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/example.md new file mode 100644 index 00000000..2faf7340 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/example.md @@ -0,0 +1,19 @@ +In this example, a Keithley 2450 to generate 1V and then sweep between 0 and 1V. + +First the necessary blocks were added: + +- `CONNECT_2450` +- `BEEP_2450` +- `RESET_2450` +- `SOURCE_2450` +- `MEASURE_SETTINGS_2450` +- `MEASUREMENT_READ_2450` +- `IV_SWEEP_2450` +- `BIG_NUMBER` +- `LINE` + +The instrument address was set for each `2450` block. The `SOURCE_2450` block was changed in order to source 1V. The parameters in the `MEASURE_SETTINGS_2450` block were changed as necessary. The `MEASUREMENT_READ_2450` block was connected to the `BIG_NUMBER` block in order to view the reading. + +The `IV_SWEEP_2450` block output was connected to the `LINE` plot to show the output of the sweep. + +The blocks were connected as shown and the app was run. diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/MEASURE_READ_2450.py b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/MEASURE_READ_2450.py new file mode 100644 index 00000000..dbe980cc --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/MEASURE_READ_2450.py @@ -0,0 +1,32 @@ +from typing import Optional +from flojoy import VisaConnection, flojoy, DataContainer, Scalar + + +@flojoy(deps={"tm_devices": "1.0"}, inject_connection=True) +def MEASURE_READ_2450( + connection: VisaConnection, + input: Optional[DataContainer] = None, +) -> Scalar: + """Returns the measurement reading from the 2450. + + Use the MEASURE_SETTINGS_2450 block to change the measurement settings. + + Requires a CONNECT_2450 block to create the connection. + + Parameters + ---------- + connection : VisaConnection + The VISA address (requires the CONNECTION_2450 block). + + Returns + ------- + Scalar + Reading + """ + + # Retrieve oscilloscope instrument connection + smu = connection.get_handle() + + c = float(smu.commands.smu.measure.read()) + + return Scalar(c=c) diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/app.json b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/app.json new file mode 100644 index 00000000..bfc67574 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/app.json @@ -0,0 +1,903 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "type": "HARDWARE", + "data": { + "id": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "label": "BEEP 2450", + "func": "BEEP_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "BEEP_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "duration": { + "type": "float", + "default": 0.25, + "desc": "The duration of the beep in seconds.", + "overload": null, + "functionName": "BEEP_2450", + "param": "duration", + "value": 0.25 + }, + "frequency": { + "type": "float", + "default": 2000, + "desc": "The frequency, or tone, of the beep in Hz.", + "overload": null, + "functionName": "BEEP_2450", + "param": "frequency", + "value": 2000 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Beep" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/BEEP_2450.py" + }, + "position": { + "x": -448.3091293727178, + "y": -347.92345448716804 + }, + "selected": false, + "positionAbsolute": { + "x": -448.3091293727178, + "y": -347.92345448716804 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06", + "type": "HARDWARE", + "data": { + "id": "CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06", + "label": "CONNECT 2450", + "func": "CONNECT_2450", + "type": "HARDWARE", + "ctrls": { + "device": { + "type": "VisaDevice", + "default": null, + "desc": "The connected VISA device.", + "overload": null, + "functionName": "CONNECT_2450", + "param": "device", + "value": "TCPIP::169.254.175.123::INSTR" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP or VISA address of the VISA device." + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/CONNECT_2450.py" + }, + "position": { + "x": -674.0943355603956, + "y": -346.9914490190549 + }, + "selected": false, + "positionAbsolute": { + "x": -674.0943355603956, + "y": -346.9914490190549 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "type": "HARDWARE", + "data": { + "id": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "label": "IV SWEEP 2450", + "func": "IV_SWEEP_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "sweep": { + "type": "select", + "options": [ + "voltage", + "current" + ], + "default": "voltage", + "desc": "Select the sweep mode, the opposite unit is measured.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "sweep", + "value": "voltage" + }, + "sense": { + "type": "select", + "options": [ + "2-wire", + "4-wire" + ], + "default": "2-wire", + "desc": "Use 2 or 4 wire sense/measurement mode.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "sense", + "value": "2-wire" + }, + "start": { + "type": "float", + "default": 0, + "desc": "The first x value of the sweep.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "start", + "value": 0 + }, + "stop": { + "type": "float", + "default": 1, + "desc": "The last x value of the sweep.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "stop", + "value": 1 + }, + "points": { + "type": "float", + "default": 100, + "desc": "The number of points between start and stop.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "points", + "value": 100 + }, + "measurement_time": { + "type": "float", + "default": 1, + "desc": "How long to measure a single point, in seconds.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "measurement_time", + "value": 1 + }, + "measurement_delay": { + "type": "float", + "default": 0.05, + "desc": "How long to delay between two points, in seconds.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "measurement_delay", + "value": 0.05 + }, + "y_limit": { + "type": "float", + "default": 1, + "desc": "The limit of the measured value.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "y_limit", + "value": 1 + }, + "source_range": { + "type": "float", + "default": 1, + "desc": "The range of the x value.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "source_range", + "value": 2 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair", + "desc": "Sweep values" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/IV_SWEEP_2450.py" + }, + "position": { + "x": 492.2816086087546, + "y": 1.7974868009648617 + }, + "selected": false, + "positionAbsolute": { + "x": 492.2816086087546, + "y": 1.7974868009648617 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "type": "HARDWARE", + "data": { + "id": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "label": "MEASURE READ 2450", + "func": "MEASURE_READ_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "MEASURE_READ_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Reading" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/MEASURE_READ_2450.py" + }, + "position": { + "x": 512.3891574605273, + "y": -320.65565183900117 + }, + "selected": false, + "positionAbsolute": { + "x": 512.3891574605273, + "y": -320.65565183900117 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "type": "HARDWARE", + "data": { + "id": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "label": "MEASURE SETTINGS 2450", + "func": "MEASURE_SETTINGS_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "measure": { + "type": "select", + "options": [ + "voltage", + "current", + "resistance", + "power" + ], + "default": "voltage", + "desc": "Select the measure unit", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "measure", + "value": "voltage" + }, + "wires": { + "type": "select", + "options": [ + "2", + "4" + ], + "default": "2", + "desc": "Select 2-wire or 4-wire sense mode.", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "wires", + "value": "2" + }, + "digits": { + "type": "select", + "options": [ + "3.5", + "4.5", + "5.5", + "6.5" + ], + "default": "6.5", + "desc": "Select the number of display digits.", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "digits", + "value": "6.5" + }, + "meas_range": { + "type": "float", + "default": 0, + "desc": "The measurement range. 0 == AUTO.", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "meas_range", + "value": 0 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/MEASURE_SETTINGS_2450.py" + }, + "position": { + "x": 26.597185633155945, + "y": -437.0939563812675 + }, + "selected": false, + "positionAbsolute": { + "x": 26.597185633155945, + "y": -437.0939563812675 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "type": "HARDWARE", + "data": { + "id": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "label": "OUTPUT 2450", + "func": "OUTPUT_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "OUTPUT_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "output": { + "type": "select", + "options": [ + "on", + "off" + ], + "default": "on", + "desc": "Turn the output on or off.", + "overload": null, + "functionName": "OUTPUT_2450", + "param": "output", + "value": "on" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Output settings" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/OUTPUT_2450.py" + }, + "position": { + "x": 280.0082587419151, + "y": -318.62173032956696 + }, + "selected": false, + "positionAbsolute": { + "x": 280.0082587419151, + "y": -318.62173032956696 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "type": "HARDWARE", + "data": { + "id": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "label": "RESET 2450", + "func": "RESET_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "RESET_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Reset" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/RESET_2450.py" + }, + "position": { + "x": -226.13106763431557, + "y": -346.60560976610765 + }, + "selected": false, + "positionAbsolute": { + "x": -226.13106763431557, + "y": -346.60560976610765 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "type": "HARDWARE", + "data": { + "id": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "label": "SOURCE 2450", + "func": "SOURCE_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "SOURCE_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "function": { + "type": "select", + "options": [ + "current", + "voltage" + ], + "default": "voltage", + "desc": "The type of output to use.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "function", + "value": "voltage" + }, + "level": { + "type": "float", + "default": 1, + "desc": "The fixed voltage or current to output.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "level", + "value": 1 + }, + "limit": { + "type": "float", + "default": 1, + "desc": "Output limit (if function=voltage, current is limited and visa versa).", + "overload": null, + "functionName": "SOURCE_2450", + "param": "limit", + "value": 1 + }, + "terminal": { + "type": "select", + "options": [ + "front", + "rear" + ], + "default": "front", + "desc": "The panel to output from.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "terminal", + "value": "front" + }, + "protect": { + "type": "select", + "options": [ + "NONE", + "2V", + "5V", + "10V", + "20V", + "40V", + "60V", + "80V", + "100V", + "120V", + "140V", + "160V", + "180V" + ], + "default": "NONE", + "desc": "The overvoltage protection value.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "protect", + "value": "5V" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Source settings" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/SOURCE_2450.py" + }, + "position": { + "x": 16.48308033026258, + "y": -220.1001132926403 + }, + "selected": false, + "positionAbsolute": { + "x": 16.48308033026258, + "y": -220.1001132926403 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "LINE-30feab30-6d4f-4274-8877-383382355e5f", + "type": "VISUALIZATION", + "data": { + "id": "LINE-30feab30-6d4f-4274-8877-383382355e5f", + "label": "LINE", + "func": "LINE", + "type": "VISUALIZATION", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|DataFrame|Matrix|Vector", + "multiple": false, + "desc": "the DataContainer to be visualized" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly", + "desc": "the DataContainer containing the Plotly Line visualization of the input data" + } + ], + "path": "DATA/VISUALIZATION/PLOTLY/LINE/LINE.py" + }, + "position": { + "x": 820.060590405619, + "y": -43.462075618890026 + }, + "selected": false, + "positionAbsolute": { + "x": 820.060590405619, + "y": -43.462075618890026 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749", + "type": "VISUALIZATION", + "data": { + "id": "BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749", + "label": "BIG NUMBER", + "func": "BIG_NUMBER", + "type": "VISUALIZATION", + "ctrls": { + "suffix": { + "type": "str", + "default": null, + "desc": "any suffix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "suffix", + "value": "" + }, + "prefix": { + "type": "str", + "default": null, + "desc": "any prefix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "prefix", + "value": "" + }, + "title": { + "type": "str", + "default": null, + "desc": "title of the plot, default = \"BIG_NUMBER\"", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "title", + "value": "" + }, + "relative_delta": { + "type": "bool", + "default": true, + "desc": "whether or not to show the relative delta from the last run along with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "relative_delta", + "value": true + }, + "scientific_notation": { + "type": "bool", + "default": false, + "desc": null, + "overload": null, + "functionName": "BIG_NUMBER", + "param": "scientific_notation", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Scalar|Vector", + "multiple": false, + "desc": "the DataContainer to be visualized" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly", + "desc": "the DataContainer containing the Plotly big number visualization" + } + ], + "path": "DATA/VISUALIZATION/PLOTLY/BIG_NUMBER/BIG_NUMBER.py" + }, + "position": { + "x": 831.0144261253039, + "y": -361.6163345095765 + }, + "selected": false, + "positionAbsolute": { + "x": 831.0144261253039, + "y": -361.6163345095765 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06", + "sourceHandle": "default", + "target": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "targetHandle": "input", + "id": "reactflow__edge-CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06default-BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29input" + }, + { + "source": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "sourceHandle": "default", + "target": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "targetHandle": "input", + "id": "reactflow__edge-MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787default-IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010input" + }, + { + "source": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "sourceHandle": "default", + "target": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "targetHandle": "input", + "id": "reactflow__edge-OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9ddefault-MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787input" + }, + { + "source": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "sourceHandle": "default", + "target": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "targetHandle": "input", + "id": "reactflow__edge-RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809edefault-MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9input" + }, + { + "source": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "sourceHandle": "default", + "target": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "targetHandle": "input", + "id": "reactflow__edge-MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9default-OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9dinput" + }, + { + "source": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "sourceHandle": "default", + "target": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "targetHandle": "input", + "id": "reactflow__edge-SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7default-OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9dinput" + }, + { + "source": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "sourceHandle": "default", + "target": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "targetHandle": "input", + "id": "reactflow__edge-BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29default-RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809einput" + }, + { + "source": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "sourceHandle": "default", + "target": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "targetHandle": "input", + "id": "reactflow__edge-RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809edefault-SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7input" + }, + { + "source": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "sourceHandle": "default", + "target": "LINE-30feab30-6d4f-4274-8877-383382355e5f", + "targetHandle": "default", + "id": "reactflow__edge-IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010default-LINE-30feab30-6d4f-4274-8877-383382355e5fdefault" + }, + { + "source": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "sourceHandle": "default", + "target": "BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749", + "targetHandle": "default", + "id": "reactflow__edge-MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787default-BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749default" + } + ], + "viewport": { + "x": 994.2991122110108, + "y": 573.4932402039965, + "zoom": 0.9719556784888205 + } + }, + "textNodes": [] +} \ No newline at end of file diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/block_data.json b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/block_data.json new file mode 100644 index 00000000..10059055 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/block_data.json @@ -0,0 +1,20 @@ +{ + "docstring": { + "long_description": "Use the MEASURE_SETTINGS_2450 block to change the measurement settings.\n\nRequires a CONNECT_2450 block to create the connection.", + "short_description": "Returns the measurement reading from the 2450.", + "parameters": [ + { + "name": "connection", + "type": "VisaConnection", + "description": "The VISA address (requires the CONNECTION_2450 block)." + } + ], + "returns": [ + { + "name": null, + "type": "Scalar", + "description": "Reading" + } + ] + } +} \ No newline at end of file diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/example.md b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/example.md new file mode 100644 index 00000000..2faf7340 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/example.md @@ -0,0 +1,19 @@ +In this example, a Keithley 2450 to generate 1V and then sweep between 0 and 1V. + +First the necessary blocks were added: + +- `CONNECT_2450` +- `BEEP_2450` +- `RESET_2450` +- `SOURCE_2450` +- `MEASURE_SETTINGS_2450` +- `MEASUREMENT_READ_2450` +- `IV_SWEEP_2450` +- `BIG_NUMBER` +- `LINE` + +The instrument address was set for each `2450` block. The `SOURCE_2450` block was changed in order to source 1V. The parameters in the `MEASURE_SETTINGS_2450` block were changed as necessary. The `MEASUREMENT_READ_2450` block was connected to the `BIG_NUMBER` block in order to view the reading. + +The `IV_SWEEP_2450` block output was connected to the `LINE` plot to show the output of the sweep. + +The blocks were connected as shown and the app was run. diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/MEASURE_SETTINGS_2450.py b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/MEASURE_SETTINGS_2450.py new file mode 100644 index 00000000..6d83e2c3 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/MEASURE_SETTINGS_2450.py @@ -0,0 +1,64 @@ +from typing import Optional, Literal +from flojoy import VisaConnection, flojoy, DataContainer, TextBlob + + +@flojoy(deps={"tm_devices": "1.0"}, inject_connection=True) +def MEASURE_SETTINGS_2450( + connection: VisaConnection, + input: Optional[DataContainer] = None, + measure: Literal["voltage", "current", "resistance", "power"] = "voltage", + wires: Literal["2", "4"] = "2", + digits: Literal["3.5", "4.5", "5.5", "6.5"] = "6.5", + meas_range: float = 0, +) -> TextBlob: + """Changes the measurement settings for the 2450. + + Use the MEASURE_READ_2450 block to return a measurement. + + Requires a CONNECT_2450 block to create the connection. + + Parameters + ---------- + connection : VisaConnection + The VISA address (requires the CONNECTION_2450 block). + measure : select, default=voltage + Select the measure unit + wires : select, default=2 + Select 2-wire or 4-wire sense mode. + digits : select, default=6.5 + Select the number of display digits. + meas_range : int, default=0 + The measurement range. 0 == AUTO. + + Returns + ------- + TextBlob + Measurement + """ + + # Retrieve oscilloscope instrument connection + smu = connection.get_handle() + + smu.commands.smu.measure.displaydigits = f"smu.DIGITS_{digits[0]}_5" + + match measure: + case "current": + smu.commands.smu.measure.func = "smu.FUNC_DC_CURRENT" + case "voltage": + smu.commands.smu.measure.func = "smu.FUNC_DC_VOLTAGE" + case "resistance": + smu.commands.smu.measure.func = "smu.FUNC_DC_RESISTANCE" + case "power": + smu.commands.smu.measure.func = "smu.FUNC_DC_POWER" + + if wires == "2": + smu.commands.smu.SENSE_2WIRE + else: + smu.commands.smu.SENSE_4WIRE + + if meas_range == 0: + smu.commands.smu.measure.autorange = "smu.ON" + else: + smu.commands.smu.measure.range = meas_range + + return TextBlob(text_blob=f"Measure {measure}") diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/app.json b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/app.json new file mode 100644 index 00000000..bfc67574 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/app.json @@ -0,0 +1,903 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "type": "HARDWARE", + "data": { + "id": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "label": "BEEP 2450", + "func": "BEEP_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "BEEP_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "duration": { + "type": "float", + "default": 0.25, + "desc": "The duration of the beep in seconds.", + "overload": null, + "functionName": "BEEP_2450", + "param": "duration", + "value": 0.25 + }, + "frequency": { + "type": "float", + "default": 2000, + "desc": "The frequency, or tone, of the beep in Hz.", + "overload": null, + "functionName": "BEEP_2450", + "param": "frequency", + "value": 2000 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Beep" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/BEEP_2450.py" + }, + "position": { + "x": -448.3091293727178, + "y": -347.92345448716804 + }, + "selected": false, + "positionAbsolute": { + "x": -448.3091293727178, + "y": -347.92345448716804 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06", + "type": "HARDWARE", + "data": { + "id": "CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06", + "label": "CONNECT 2450", + "func": "CONNECT_2450", + "type": "HARDWARE", + "ctrls": { + "device": { + "type": "VisaDevice", + "default": null, + "desc": "The connected VISA device.", + "overload": null, + "functionName": "CONNECT_2450", + "param": "device", + "value": "TCPIP::169.254.175.123::INSTR" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP or VISA address of the VISA device." + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/CONNECT_2450.py" + }, + "position": { + "x": -674.0943355603956, + "y": -346.9914490190549 + }, + "selected": false, + "positionAbsolute": { + "x": -674.0943355603956, + "y": -346.9914490190549 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "type": "HARDWARE", + "data": { + "id": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "label": "IV SWEEP 2450", + "func": "IV_SWEEP_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "sweep": { + "type": "select", + "options": [ + "voltage", + "current" + ], + "default": "voltage", + "desc": "Select the sweep mode, the opposite unit is measured.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "sweep", + "value": "voltage" + }, + "sense": { + "type": "select", + "options": [ + "2-wire", + "4-wire" + ], + "default": "2-wire", + "desc": "Use 2 or 4 wire sense/measurement mode.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "sense", + "value": "2-wire" + }, + "start": { + "type": "float", + "default": 0, + "desc": "The first x value of the sweep.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "start", + "value": 0 + }, + "stop": { + "type": "float", + "default": 1, + "desc": "The last x value of the sweep.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "stop", + "value": 1 + }, + "points": { + "type": "float", + "default": 100, + "desc": "The number of points between start and stop.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "points", + "value": 100 + }, + "measurement_time": { + "type": "float", + "default": 1, + "desc": "How long to measure a single point, in seconds.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "measurement_time", + "value": 1 + }, + "measurement_delay": { + "type": "float", + "default": 0.05, + "desc": "How long to delay between two points, in seconds.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "measurement_delay", + "value": 0.05 + }, + "y_limit": { + "type": "float", + "default": 1, + "desc": "The limit of the measured value.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "y_limit", + "value": 1 + }, + "source_range": { + "type": "float", + "default": 1, + "desc": "The range of the x value.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "source_range", + "value": 2 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair", + "desc": "Sweep values" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/IV_SWEEP_2450.py" + }, + "position": { + "x": 492.2816086087546, + "y": 1.7974868009648617 + }, + "selected": false, + "positionAbsolute": { + "x": 492.2816086087546, + "y": 1.7974868009648617 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "type": "HARDWARE", + "data": { + "id": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "label": "MEASURE READ 2450", + "func": "MEASURE_READ_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "MEASURE_READ_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Reading" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/MEASURE_READ_2450.py" + }, + "position": { + "x": 512.3891574605273, + "y": -320.65565183900117 + }, + "selected": false, + "positionAbsolute": { + "x": 512.3891574605273, + "y": -320.65565183900117 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "type": "HARDWARE", + "data": { + "id": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "label": "MEASURE SETTINGS 2450", + "func": "MEASURE_SETTINGS_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "measure": { + "type": "select", + "options": [ + "voltage", + "current", + "resistance", + "power" + ], + "default": "voltage", + "desc": "Select the measure unit", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "measure", + "value": "voltage" + }, + "wires": { + "type": "select", + "options": [ + "2", + "4" + ], + "default": "2", + "desc": "Select 2-wire or 4-wire sense mode.", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "wires", + "value": "2" + }, + "digits": { + "type": "select", + "options": [ + "3.5", + "4.5", + "5.5", + "6.5" + ], + "default": "6.5", + "desc": "Select the number of display digits.", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "digits", + "value": "6.5" + }, + "meas_range": { + "type": "float", + "default": 0, + "desc": "The measurement range. 0 == AUTO.", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "meas_range", + "value": 0 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/MEASURE_SETTINGS_2450.py" + }, + "position": { + "x": 26.597185633155945, + "y": -437.0939563812675 + }, + "selected": false, + "positionAbsolute": { + "x": 26.597185633155945, + "y": -437.0939563812675 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "type": "HARDWARE", + "data": { + "id": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "label": "OUTPUT 2450", + "func": "OUTPUT_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "OUTPUT_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "output": { + "type": "select", + "options": [ + "on", + "off" + ], + "default": "on", + "desc": "Turn the output on or off.", + "overload": null, + "functionName": "OUTPUT_2450", + "param": "output", + "value": "on" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Output settings" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/OUTPUT_2450.py" + }, + "position": { + "x": 280.0082587419151, + "y": -318.62173032956696 + }, + "selected": false, + "positionAbsolute": { + "x": 280.0082587419151, + "y": -318.62173032956696 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "type": "HARDWARE", + "data": { + "id": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "label": "RESET 2450", + "func": "RESET_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "RESET_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Reset" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/RESET_2450.py" + }, + "position": { + "x": -226.13106763431557, + "y": -346.60560976610765 + }, + "selected": false, + "positionAbsolute": { + "x": -226.13106763431557, + "y": -346.60560976610765 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "type": "HARDWARE", + "data": { + "id": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "label": "SOURCE 2450", + "func": "SOURCE_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "SOURCE_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "function": { + "type": "select", + "options": [ + "current", + "voltage" + ], + "default": "voltage", + "desc": "The type of output to use.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "function", + "value": "voltage" + }, + "level": { + "type": "float", + "default": 1, + "desc": "The fixed voltage or current to output.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "level", + "value": 1 + }, + "limit": { + "type": "float", + "default": 1, + "desc": "Output limit (if function=voltage, current is limited and visa versa).", + "overload": null, + "functionName": "SOURCE_2450", + "param": "limit", + "value": 1 + }, + "terminal": { + "type": "select", + "options": [ + "front", + "rear" + ], + "default": "front", + "desc": "The panel to output from.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "terminal", + "value": "front" + }, + "protect": { + "type": "select", + "options": [ + "NONE", + "2V", + "5V", + "10V", + "20V", + "40V", + "60V", + "80V", + "100V", + "120V", + "140V", + "160V", + "180V" + ], + "default": "NONE", + "desc": "The overvoltage protection value.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "protect", + "value": "5V" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Source settings" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/SOURCE_2450.py" + }, + "position": { + "x": 16.48308033026258, + "y": -220.1001132926403 + }, + "selected": false, + "positionAbsolute": { + "x": 16.48308033026258, + "y": -220.1001132926403 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "LINE-30feab30-6d4f-4274-8877-383382355e5f", + "type": "VISUALIZATION", + "data": { + "id": "LINE-30feab30-6d4f-4274-8877-383382355e5f", + "label": "LINE", + "func": "LINE", + "type": "VISUALIZATION", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|DataFrame|Matrix|Vector", + "multiple": false, + "desc": "the DataContainer to be visualized" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly", + "desc": "the DataContainer containing the Plotly Line visualization of the input data" + } + ], + "path": "DATA/VISUALIZATION/PLOTLY/LINE/LINE.py" + }, + "position": { + "x": 820.060590405619, + "y": -43.462075618890026 + }, + "selected": false, + "positionAbsolute": { + "x": 820.060590405619, + "y": -43.462075618890026 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749", + "type": "VISUALIZATION", + "data": { + "id": "BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749", + "label": "BIG NUMBER", + "func": "BIG_NUMBER", + "type": "VISUALIZATION", + "ctrls": { + "suffix": { + "type": "str", + "default": null, + "desc": "any suffix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "suffix", + "value": "" + }, + "prefix": { + "type": "str", + "default": null, + "desc": "any prefix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "prefix", + "value": "" + }, + "title": { + "type": "str", + "default": null, + "desc": "title of the plot, default = \"BIG_NUMBER\"", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "title", + "value": "" + }, + "relative_delta": { + "type": "bool", + "default": true, + "desc": "whether or not to show the relative delta from the last run along with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "relative_delta", + "value": true + }, + "scientific_notation": { + "type": "bool", + "default": false, + "desc": null, + "overload": null, + "functionName": "BIG_NUMBER", + "param": "scientific_notation", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Scalar|Vector", + "multiple": false, + "desc": "the DataContainer to be visualized" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly", + "desc": "the DataContainer containing the Plotly big number visualization" + } + ], + "path": "DATA/VISUALIZATION/PLOTLY/BIG_NUMBER/BIG_NUMBER.py" + }, + "position": { + "x": 831.0144261253039, + "y": -361.6163345095765 + }, + "selected": false, + "positionAbsolute": { + "x": 831.0144261253039, + "y": -361.6163345095765 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06", + "sourceHandle": "default", + "target": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "targetHandle": "input", + "id": "reactflow__edge-CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06default-BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29input" + }, + { + "source": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "sourceHandle": "default", + "target": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "targetHandle": "input", + "id": "reactflow__edge-MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787default-IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010input" + }, + { + "source": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "sourceHandle": "default", + "target": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "targetHandle": "input", + "id": "reactflow__edge-OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9ddefault-MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787input" + }, + { + "source": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "sourceHandle": "default", + "target": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "targetHandle": "input", + "id": "reactflow__edge-RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809edefault-MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9input" + }, + { + "source": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "sourceHandle": "default", + "target": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "targetHandle": "input", + "id": "reactflow__edge-MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9default-OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9dinput" + }, + { + "source": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "sourceHandle": "default", + "target": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "targetHandle": "input", + "id": "reactflow__edge-SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7default-OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9dinput" + }, + { + "source": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "sourceHandle": "default", + "target": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "targetHandle": "input", + "id": "reactflow__edge-BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29default-RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809einput" + }, + { + "source": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "sourceHandle": "default", + "target": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "targetHandle": "input", + "id": "reactflow__edge-RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809edefault-SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7input" + }, + { + "source": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "sourceHandle": "default", + "target": "LINE-30feab30-6d4f-4274-8877-383382355e5f", + "targetHandle": "default", + "id": "reactflow__edge-IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010default-LINE-30feab30-6d4f-4274-8877-383382355e5fdefault" + }, + { + "source": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "sourceHandle": "default", + "target": "BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749", + "targetHandle": "default", + "id": "reactflow__edge-MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787default-BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749default" + } + ], + "viewport": { + "x": 994.2991122110108, + "y": 573.4932402039965, + "zoom": 0.9719556784888205 + } + }, + "textNodes": [] +} \ No newline at end of file diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/block_data.json b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/block_data.json new file mode 100644 index 00000000..47411faa --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/block_data.json @@ -0,0 +1,40 @@ +{ + "docstring": { + "long_description": "Use the MEASURE_READ_2450 block to return a measurement.\n\nRequires a CONNECT_2450 block to create the connection.", + "short_description": "Changes the measurement settings for the 2450.", + "parameters": [ + { + "name": "connection", + "type": "VisaConnection", + "description": "The VISA address (requires the CONNECTION_2450 block)." + }, + { + "name": "measure", + "type": "select, default=voltage", + "description": "Select the measure unit" + }, + { + "name": "wires", + "type": "select, default=2", + "description": "Select 2-wire or 4-wire sense mode." + }, + { + "name": "digits", + "type": "select, default=6.5", + "description": "Select the number of display digits." + }, + { + "name": "meas_range", + "type": "int, default=0", + "description": "The measurement range. 0 == AUTO." + } + ], + "returns": [ + { + "name": null, + "type": "TextBlob", + "description": "Measurement" + } + ] + } +} \ No newline at end of file diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/example.md b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/example.md new file mode 100644 index 00000000..2faf7340 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/example.md @@ -0,0 +1,19 @@ +In this example, a Keithley 2450 to generate 1V and then sweep between 0 and 1V. + +First the necessary blocks were added: + +- `CONNECT_2450` +- `BEEP_2450` +- `RESET_2450` +- `SOURCE_2450` +- `MEASURE_SETTINGS_2450` +- `MEASUREMENT_READ_2450` +- `IV_SWEEP_2450` +- `BIG_NUMBER` +- `LINE` + +The instrument address was set for each `2450` block. The `SOURCE_2450` block was changed in order to source 1V. The parameters in the `MEASURE_SETTINGS_2450` block were changed as necessary. The `MEASUREMENT_READ_2450` block was connected to the `BIG_NUMBER` block in order to view the reading. + +The `IV_SWEEP_2450` block output was connected to the `LINE` plot to show the output of the sweep. + +The blocks were connected as shown and the app was run. diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/OUTPUT_2450.py b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/OUTPUT_2450.py new file mode 100644 index 00000000..c105e6f7 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/OUTPUT_2450.py @@ -0,0 +1,38 @@ +from typing import Optional, Literal +from flojoy import VisaConnection, flojoy, DataContainer, TextBlob + + +@flojoy(deps={"tm_devices": "1.0"}, inject_connection=True) +def OUTPUT_2450( + connection: VisaConnection, + input: Optional[DataContainer] = None, + output: Literal["on", "off"] = "on", +) -> TextBlob: + """Turns the source output on or off. + + Use the SOURCE_2450 block to change the source settings. + + Requires a CONNECT_2450 block to create the connection. + + Parameters + ---------- + connection : VisaConnection + The VISA address (requires the CONNECTION_2450 block). + output : select, default=off + Turn the output on or off. + + Returns + ------- + TextBlob + Output settings + """ + + # Retrieve oscilloscope instrument connection + smu = connection.get_handle() + + if output == "on": + smu.commands.smu.source.output = "smu.ON" + else: + smu.commands.smu.source.output = "smu.OFF" + + return TextBlob(text_blob=f"Output {output}") diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/app.json b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/app.json new file mode 100644 index 00000000..bfc67574 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/app.json @@ -0,0 +1,903 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "type": "HARDWARE", + "data": { + "id": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "label": "BEEP 2450", + "func": "BEEP_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "BEEP_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "duration": { + "type": "float", + "default": 0.25, + "desc": "The duration of the beep in seconds.", + "overload": null, + "functionName": "BEEP_2450", + "param": "duration", + "value": 0.25 + }, + "frequency": { + "type": "float", + "default": 2000, + "desc": "The frequency, or tone, of the beep in Hz.", + "overload": null, + "functionName": "BEEP_2450", + "param": "frequency", + "value": 2000 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Beep" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/BEEP_2450.py" + }, + "position": { + "x": -448.3091293727178, + "y": -347.92345448716804 + }, + "selected": false, + "positionAbsolute": { + "x": -448.3091293727178, + "y": -347.92345448716804 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06", + "type": "HARDWARE", + "data": { + "id": "CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06", + "label": "CONNECT 2450", + "func": "CONNECT_2450", + "type": "HARDWARE", + "ctrls": { + "device": { + "type": "VisaDevice", + "default": null, + "desc": "The connected VISA device.", + "overload": null, + "functionName": "CONNECT_2450", + "param": "device", + "value": "TCPIP::169.254.175.123::INSTR" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP or VISA address of the VISA device." + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/CONNECT_2450.py" + }, + "position": { + "x": -674.0943355603956, + "y": -346.9914490190549 + }, + "selected": false, + "positionAbsolute": { + "x": -674.0943355603956, + "y": -346.9914490190549 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "type": "HARDWARE", + "data": { + "id": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "label": "IV SWEEP 2450", + "func": "IV_SWEEP_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "sweep": { + "type": "select", + "options": [ + "voltage", + "current" + ], + "default": "voltage", + "desc": "Select the sweep mode, the opposite unit is measured.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "sweep", + "value": "voltage" + }, + "sense": { + "type": "select", + "options": [ + "2-wire", + "4-wire" + ], + "default": "2-wire", + "desc": "Use 2 or 4 wire sense/measurement mode.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "sense", + "value": "2-wire" + }, + "start": { + "type": "float", + "default": 0, + "desc": "The first x value of the sweep.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "start", + "value": 0 + }, + "stop": { + "type": "float", + "default": 1, + "desc": "The last x value of the sweep.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "stop", + "value": 1 + }, + "points": { + "type": "float", + "default": 100, + "desc": "The number of points between start and stop.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "points", + "value": 100 + }, + "measurement_time": { + "type": "float", + "default": 1, + "desc": "How long to measure a single point, in seconds.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "measurement_time", + "value": 1 + }, + "measurement_delay": { + "type": "float", + "default": 0.05, + "desc": "How long to delay between two points, in seconds.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "measurement_delay", + "value": 0.05 + }, + "y_limit": { + "type": "float", + "default": 1, + "desc": "The limit of the measured value.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "y_limit", + "value": 1 + }, + "source_range": { + "type": "float", + "default": 1, + "desc": "The range of the x value.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "source_range", + "value": 2 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair", + "desc": "Sweep values" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/IV_SWEEP_2450.py" + }, + "position": { + "x": 492.2816086087546, + "y": 1.7974868009648617 + }, + "selected": false, + "positionAbsolute": { + "x": 492.2816086087546, + "y": 1.7974868009648617 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "type": "HARDWARE", + "data": { + "id": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "label": "MEASURE READ 2450", + "func": "MEASURE_READ_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "MEASURE_READ_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Reading" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/MEASURE_READ_2450.py" + }, + "position": { + "x": 512.3891574605273, + "y": -320.65565183900117 + }, + "selected": false, + "positionAbsolute": { + "x": 512.3891574605273, + "y": -320.65565183900117 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "type": "HARDWARE", + "data": { + "id": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "label": "MEASURE SETTINGS 2450", + "func": "MEASURE_SETTINGS_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "measure": { + "type": "select", + "options": [ + "voltage", + "current", + "resistance", + "power" + ], + "default": "voltage", + "desc": "Select the measure unit", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "measure", + "value": "voltage" + }, + "wires": { + "type": "select", + "options": [ + "2", + "4" + ], + "default": "2", + "desc": "Select 2-wire or 4-wire sense mode.", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "wires", + "value": "2" + }, + "digits": { + "type": "select", + "options": [ + "3.5", + "4.5", + "5.5", + "6.5" + ], + "default": "6.5", + "desc": "Select the number of display digits.", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "digits", + "value": "6.5" + }, + "meas_range": { + "type": "float", + "default": 0, + "desc": "The measurement range. 0 == AUTO.", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "meas_range", + "value": 0 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/MEASURE_SETTINGS_2450.py" + }, + "position": { + "x": 26.597185633155945, + "y": -437.0939563812675 + }, + "selected": false, + "positionAbsolute": { + "x": 26.597185633155945, + "y": -437.0939563812675 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "type": "HARDWARE", + "data": { + "id": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "label": "OUTPUT 2450", + "func": "OUTPUT_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "OUTPUT_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "output": { + "type": "select", + "options": [ + "on", + "off" + ], + "default": "on", + "desc": "Turn the output on or off.", + "overload": null, + "functionName": "OUTPUT_2450", + "param": "output", + "value": "on" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Output settings" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/OUTPUT_2450.py" + }, + "position": { + "x": 280.0082587419151, + "y": -318.62173032956696 + }, + "selected": false, + "positionAbsolute": { + "x": 280.0082587419151, + "y": -318.62173032956696 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "type": "HARDWARE", + "data": { + "id": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "label": "RESET 2450", + "func": "RESET_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "RESET_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Reset" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/RESET_2450.py" + }, + "position": { + "x": -226.13106763431557, + "y": -346.60560976610765 + }, + "selected": false, + "positionAbsolute": { + "x": -226.13106763431557, + "y": -346.60560976610765 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "type": "HARDWARE", + "data": { + "id": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "label": "SOURCE 2450", + "func": "SOURCE_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "SOURCE_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "function": { + "type": "select", + "options": [ + "current", + "voltage" + ], + "default": "voltage", + "desc": "The type of output to use.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "function", + "value": "voltage" + }, + "level": { + "type": "float", + "default": 1, + "desc": "The fixed voltage or current to output.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "level", + "value": 1 + }, + "limit": { + "type": "float", + "default": 1, + "desc": "Output limit (if function=voltage, current is limited and visa versa).", + "overload": null, + "functionName": "SOURCE_2450", + "param": "limit", + "value": 1 + }, + "terminal": { + "type": "select", + "options": [ + "front", + "rear" + ], + "default": "front", + "desc": "The panel to output from.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "terminal", + "value": "front" + }, + "protect": { + "type": "select", + "options": [ + "NONE", + "2V", + "5V", + "10V", + "20V", + "40V", + "60V", + "80V", + "100V", + "120V", + "140V", + "160V", + "180V" + ], + "default": "NONE", + "desc": "The overvoltage protection value.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "protect", + "value": "5V" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Source settings" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/SOURCE_2450.py" + }, + "position": { + "x": 16.48308033026258, + "y": -220.1001132926403 + }, + "selected": false, + "positionAbsolute": { + "x": 16.48308033026258, + "y": -220.1001132926403 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "LINE-30feab30-6d4f-4274-8877-383382355e5f", + "type": "VISUALIZATION", + "data": { + "id": "LINE-30feab30-6d4f-4274-8877-383382355e5f", + "label": "LINE", + "func": "LINE", + "type": "VISUALIZATION", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|DataFrame|Matrix|Vector", + "multiple": false, + "desc": "the DataContainer to be visualized" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly", + "desc": "the DataContainer containing the Plotly Line visualization of the input data" + } + ], + "path": "DATA/VISUALIZATION/PLOTLY/LINE/LINE.py" + }, + "position": { + "x": 820.060590405619, + "y": -43.462075618890026 + }, + "selected": false, + "positionAbsolute": { + "x": 820.060590405619, + "y": -43.462075618890026 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749", + "type": "VISUALIZATION", + "data": { + "id": "BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749", + "label": "BIG NUMBER", + "func": "BIG_NUMBER", + "type": "VISUALIZATION", + "ctrls": { + "suffix": { + "type": "str", + "default": null, + "desc": "any suffix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "suffix", + "value": "" + }, + "prefix": { + "type": "str", + "default": null, + "desc": "any prefix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "prefix", + "value": "" + }, + "title": { + "type": "str", + "default": null, + "desc": "title of the plot, default = \"BIG_NUMBER\"", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "title", + "value": "" + }, + "relative_delta": { + "type": "bool", + "default": true, + "desc": "whether or not to show the relative delta from the last run along with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "relative_delta", + "value": true + }, + "scientific_notation": { + "type": "bool", + "default": false, + "desc": null, + "overload": null, + "functionName": "BIG_NUMBER", + "param": "scientific_notation", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Scalar|Vector", + "multiple": false, + "desc": "the DataContainer to be visualized" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly", + "desc": "the DataContainer containing the Plotly big number visualization" + } + ], + "path": "DATA/VISUALIZATION/PLOTLY/BIG_NUMBER/BIG_NUMBER.py" + }, + "position": { + "x": 831.0144261253039, + "y": -361.6163345095765 + }, + "selected": false, + "positionAbsolute": { + "x": 831.0144261253039, + "y": -361.6163345095765 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06", + "sourceHandle": "default", + "target": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "targetHandle": "input", + "id": "reactflow__edge-CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06default-BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29input" + }, + { + "source": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "sourceHandle": "default", + "target": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "targetHandle": "input", + "id": "reactflow__edge-MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787default-IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010input" + }, + { + "source": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "sourceHandle": "default", + "target": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "targetHandle": "input", + "id": "reactflow__edge-OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9ddefault-MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787input" + }, + { + "source": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "sourceHandle": "default", + "target": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "targetHandle": "input", + "id": "reactflow__edge-RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809edefault-MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9input" + }, + { + "source": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "sourceHandle": "default", + "target": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "targetHandle": "input", + "id": "reactflow__edge-MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9default-OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9dinput" + }, + { + "source": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "sourceHandle": "default", + "target": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "targetHandle": "input", + "id": "reactflow__edge-SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7default-OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9dinput" + }, + { + "source": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "sourceHandle": "default", + "target": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "targetHandle": "input", + "id": "reactflow__edge-BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29default-RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809einput" + }, + { + "source": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "sourceHandle": "default", + "target": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "targetHandle": "input", + "id": "reactflow__edge-RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809edefault-SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7input" + }, + { + "source": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "sourceHandle": "default", + "target": "LINE-30feab30-6d4f-4274-8877-383382355e5f", + "targetHandle": "default", + "id": "reactflow__edge-IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010default-LINE-30feab30-6d4f-4274-8877-383382355e5fdefault" + }, + { + "source": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "sourceHandle": "default", + "target": "BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749", + "targetHandle": "default", + "id": "reactflow__edge-MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787default-BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749default" + } + ], + "viewport": { + "x": 994.2991122110108, + "y": 573.4932402039965, + "zoom": 0.9719556784888205 + } + }, + "textNodes": [] +} \ No newline at end of file diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/block_data.json b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/block_data.json new file mode 100644 index 00000000..6abea983 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/block_data.json @@ -0,0 +1,25 @@ +{ + "docstring": { + "long_description": "Use the SOURCE_2450 block to change the source settings.\n\nRequires a CONNECT_2450 block to create the connection.", + "short_description": "Turns the source output on or off.", + "parameters": [ + { + "name": "connection", + "type": "VisaConnection", + "description": "The VISA address (requires the CONNECTION_2450 block)." + }, + { + "name": "output", + "type": "select, default=off", + "description": "Turn the output on or off." + } + ], + "returns": [ + { + "name": null, + "type": "TextBlob", + "description": "Output settings" + } + ] + } +} \ No newline at end of file diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/example.md b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/example.md new file mode 100644 index 00000000..2faf7340 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/example.md @@ -0,0 +1,19 @@ +In this example, a Keithley 2450 to generate 1V and then sweep between 0 and 1V. + +First the necessary blocks were added: + +- `CONNECT_2450` +- `BEEP_2450` +- `RESET_2450` +- `SOURCE_2450` +- `MEASURE_SETTINGS_2450` +- `MEASUREMENT_READ_2450` +- `IV_SWEEP_2450` +- `BIG_NUMBER` +- `LINE` + +The instrument address was set for each `2450` block. The `SOURCE_2450` block was changed in order to source 1V. The parameters in the `MEASURE_SETTINGS_2450` block were changed as necessary. The `MEASUREMENT_READ_2450` block was connected to the `BIG_NUMBER` block in order to view the reading. + +The `IV_SWEEP_2450` block output was connected to the `LINE` plot to show the output of the sweep. + +The blocks were connected as shown and the app was run. diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/RESET_2450.py b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/RESET_2450.py new file mode 100644 index 00000000..7e6038ea --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/RESET_2450.py @@ -0,0 +1,28 @@ +from typing import Optional +from flojoy import VisaConnection, flojoy, DataContainer, TextBlob + + +@flojoy(inject_connection=True) +def RESET_2450( + connection: VisaConnection, + input: Optional[DataContainer] = None, +) -> TextBlob: + """Resets the 2450 and clears buffers. + + Requires a CONNECT_2450 block to create the connection. + + Parameters + ---------- + connection : VisaConnection + The VISA address (requires the CONNECTION_2450 block). + + Returns + ------- + TextBlob + Reset + """ + + smu = connection.get_handle() + smu.commands.reset() + + return TextBlob(text_blob="Reset 2450") diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/app.json b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/app.json new file mode 100644 index 00000000..bfc67574 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/app.json @@ -0,0 +1,903 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "type": "HARDWARE", + "data": { + "id": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "label": "BEEP 2450", + "func": "BEEP_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "BEEP_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "duration": { + "type": "float", + "default": 0.25, + "desc": "The duration of the beep in seconds.", + "overload": null, + "functionName": "BEEP_2450", + "param": "duration", + "value": 0.25 + }, + "frequency": { + "type": "float", + "default": 2000, + "desc": "The frequency, or tone, of the beep in Hz.", + "overload": null, + "functionName": "BEEP_2450", + "param": "frequency", + "value": 2000 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Beep" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/BEEP_2450.py" + }, + "position": { + "x": -448.3091293727178, + "y": -347.92345448716804 + }, + "selected": false, + "positionAbsolute": { + "x": -448.3091293727178, + "y": -347.92345448716804 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06", + "type": "HARDWARE", + "data": { + "id": "CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06", + "label": "CONNECT 2450", + "func": "CONNECT_2450", + "type": "HARDWARE", + "ctrls": { + "device": { + "type": "VisaDevice", + "default": null, + "desc": "The connected VISA device.", + "overload": null, + "functionName": "CONNECT_2450", + "param": "device", + "value": "TCPIP::169.254.175.123::INSTR" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP or VISA address of the VISA device." + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/CONNECT_2450.py" + }, + "position": { + "x": -674.0943355603956, + "y": -346.9914490190549 + }, + "selected": false, + "positionAbsolute": { + "x": -674.0943355603956, + "y": -346.9914490190549 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "type": "HARDWARE", + "data": { + "id": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "label": "IV SWEEP 2450", + "func": "IV_SWEEP_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "sweep": { + "type": "select", + "options": [ + "voltage", + "current" + ], + "default": "voltage", + "desc": "Select the sweep mode, the opposite unit is measured.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "sweep", + "value": "voltage" + }, + "sense": { + "type": "select", + "options": [ + "2-wire", + "4-wire" + ], + "default": "2-wire", + "desc": "Use 2 or 4 wire sense/measurement mode.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "sense", + "value": "2-wire" + }, + "start": { + "type": "float", + "default": 0, + "desc": "The first x value of the sweep.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "start", + "value": 0 + }, + "stop": { + "type": "float", + "default": 1, + "desc": "The last x value of the sweep.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "stop", + "value": 1 + }, + "points": { + "type": "float", + "default": 100, + "desc": "The number of points between start and stop.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "points", + "value": 100 + }, + "measurement_time": { + "type": "float", + "default": 1, + "desc": "How long to measure a single point, in seconds.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "measurement_time", + "value": 1 + }, + "measurement_delay": { + "type": "float", + "default": 0.05, + "desc": "How long to delay between two points, in seconds.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "measurement_delay", + "value": 0.05 + }, + "y_limit": { + "type": "float", + "default": 1, + "desc": "The limit of the measured value.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "y_limit", + "value": 1 + }, + "source_range": { + "type": "float", + "default": 1, + "desc": "The range of the x value.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "source_range", + "value": 2 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair", + "desc": "Sweep values" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/IV_SWEEP_2450.py" + }, + "position": { + "x": 492.2816086087546, + "y": 1.7974868009648617 + }, + "selected": false, + "positionAbsolute": { + "x": 492.2816086087546, + "y": 1.7974868009648617 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "type": "HARDWARE", + "data": { + "id": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "label": "MEASURE READ 2450", + "func": "MEASURE_READ_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "MEASURE_READ_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Reading" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/MEASURE_READ_2450.py" + }, + "position": { + "x": 512.3891574605273, + "y": -320.65565183900117 + }, + "selected": false, + "positionAbsolute": { + "x": 512.3891574605273, + "y": -320.65565183900117 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "type": "HARDWARE", + "data": { + "id": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "label": "MEASURE SETTINGS 2450", + "func": "MEASURE_SETTINGS_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "measure": { + "type": "select", + "options": [ + "voltage", + "current", + "resistance", + "power" + ], + "default": "voltage", + "desc": "Select the measure unit", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "measure", + "value": "voltage" + }, + "wires": { + "type": "select", + "options": [ + "2", + "4" + ], + "default": "2", + "desc": "Select 2-wire or 4-wire sense mode.", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "wires", + "value": "2" + }, + "digits": { + "type": "select", + "options": [ + "3.5", + "4.5", + "5.5", + "6.5" + ], + "default": "6.5", + "desc": "Select the number of display digits.", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "digits", + "value": "6.5" + }, + "meas_range": { + "type": "float", + "default": 0, + "desc": "The measurement range. 0 == AUTO.", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "meas_range", + "value": 0 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/MEASURE_SETTINGS_2450.py" + }, + "position": { + "x": 26.597185633155945, + "y": -437.0939563812675 + }, + "selected": false, + "positionAbsolute": { + "x": 26.597185633155945, + "y": -437.0939563812675 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "type": "HARDWARE", + "data": { + "id": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "label": "OUTPUT 2450", + "func": "OUTPUT_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "OUTPUT_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "output": { + "type": "select", + "options": [ + "on", + "off" + ], + "default": "on", + "desc": "Turn the output on or off.", + "overload": null, + "functionName": "OUTPUT_2450", + "param": "output", + "value": "on" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Output settings" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/OUTPUT_2450.py" + }, + "position": { + "x": 280.0082587419151, + "y": -318.62173032956696 + }, + "selected": false, + "positionAbsolute": { + "x": 280.0082587419151, + "y": -318.62173032956696 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "type": "HARDWARE", + "data": { + "id": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "label": "RESET 2450", + "func": "RESET_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "RESET_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Reset" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/RESET_2450.py" + }, + "position": { + "x": -226.13106763431557, + "y": -346.60560976610765 + }, + "selected": false, + "positionAbsolute": { + "x": -226.13106763431557, + "y": -346.60560976610765 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "type": "HARDWARE", + "data": { + "id": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "label": "SOURCE 2450", + "func": "SOURCE_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "SOURCE_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "function": { + "type": "select", + "options": [ + "current", + "voltage" + ], + "default": "voltage", + "desc": "The type of output to use.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "function", + "value": "voltage" + }, + "level": { + "type": "float", + "default": 1, + "desc": "The fixed voltage or current to output.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "level", + "value": 1 + }, + "limit": { + "type": "float", + "default": 1, + "desc": "Output limit (if function=voltage, current is limited and visa versa).", + "overload": null, + "functionName": "SOURCE_2450", + "param": "limit", + "value": 1 + }, + "terminal": { + "type": "select", + "options": [ + "front", + "rear" + ], + "default": "front", + "desc": "The panel to output from.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "terminal", + "value": "front" + }, + "protect": { + "type": "select", + "options": [ + "NONE", + "2V", + "5V", + "10V", + "20V", + "40V", + "60V", + "80V", + "100V", + "120V", + "140V", + "160V", + "180V" + ], + "default": "NONE", + "desc": "The overvoltage protection value.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "protect", + "value": "5V" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Source settings" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/SOURCE_2450.py" + }, + "position": { + "x": 16.48308033026258, + "y": -220.1001132926403 + }, + "selected": false, + "positionAbsolute": { + "x": 16.48308033026258, + "y": -220.1001132926403 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "LINE-30feab30-6d4f-4274-8877-383382355e5f", + "type": "VISUALIZATION", + "data": { + "id": "LINE-30feab30-6d4f-4274-8877-383382355e5f", + "label": "LINE", + "func": "LINE", + "type": "VISUALIZATION", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|DataFrame|Matrix|Vector", + "multiple": false, + "desc": "the DataContainer to be visualized" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly", + "desc": "the DataContainer containing the Plotly Line visualization of the input data" + } + ], + "path": "DATA/VISUALIZATION/PLOTLY/LINE/LINE.py" + }, + "position": { + "x": 820.060590405619, + "y": -43.462075618890026 + }, + "selected": false, + "positionAbsolute": { + "x": 820.060590405619, + "y": -43.462075618890026 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749", + "type": "VISUALIZATION", + "data": { + "id": "BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749", + "label": "BIG NUMBER", + "func": "BIG_NUMBER", + "type": "VISUALIZATION", + "ctrls": { + "suffix": { + "type": "str", + "default": null, + "desc": "any suffix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "suffix", + "value": "" + }, + "prefix": { + "type": "str", + "default": null, + "desc": "any prefix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "prefix", + "value": "" + }, + "title": { + "type": "str", + "default": null, + "desc": "title of the plot, default = \"BIG_NUMBER\"", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "title", + "value": "" + }, + "relative_delta": { + "type": "bool", + "default": true, + "desc": "whether or not to show the relative delta from the last run along with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "relative_delta", + "value": true + }, + "scientific_notation": { + "type": "bool", + "default": false, + "desc": null, + "overload": null, + "functionName": "BIG_NUMBER", + "param": "scientific_notation", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Scalar|Vector", + "multiple": false, + "desc": "the DataContainer to be visualized" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly", + "desc": "the DataContainer containing the Plotly big number visualization" + } + ], + "path": "DATA/VISUALIZATION/PLOTLY/BIG_NUMBER/BIG_NUMBER.py" + }, + "position": { + "x": 831.0144261253039, + "y": -361.6163345095765 + }, + "selected": false, + "positionAbsolute": { + "x": 831.0144261253039, + "y": -361.6163345095765 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06", + "sourceHandle": "default", + "target": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "targetHandle": "input", + "id": "reactflow__edge-CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06default-BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29input" + }, + { + "source": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "sourceHandle": "default", + "target": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "targetHandle": "input", + "id": "reactflow__edge-MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787default-IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010input" + }, + { + "source": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "sourceHandle": "default", + "target": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "targetHandle": "input", + "id": "reactflow__edge-OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9ddefault-MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787input" + }, + { + "source": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "sourceHandle": "default", + "target": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "targetHandle": "input", + "id": "reactflow__edge-RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809edefault-MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9input" + }, + { + "source": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "sourceHandle": "default", + "target": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "targetHandle": "input", + "id": "reactflow__edge-MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9default-OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9dinput" + }, + { + "source": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "sourceHandle": "default", + "target": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "targetHandle": "input", + "id": "reactflow__edge-SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7default-OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9dinput" + }, + { + "source": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "sourceHandle": "default", + "target": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "targetHandle": "input", + "id": "reactflow__edge-BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29default-RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809einput" + }, + { + "source": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "sourceHandle": "default", + "target": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "targetHandle": "input", + "id": "reactflow__edge-RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809edefault-SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7input" + }, + { + "source": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "sourceHandle": "default", + "target": "LINE-30feab30-6d4f-4274-8877-383382355e5f", + "targetHandle": "default", + "id": "reactflow__edge-IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010default-LINE-30feab30-6d4f-4274-8877-383382355e5fdefault" + }, + { + "source": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "sourceHandle": "default", + "target": "BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749", + "targetHandle": "default", + "id": "reactflow__edge-MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787default-BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749default" + } + ], + "viewport": { + "x": 994.2991122110108, + "y": 573.4932402039965, + "zoom": 0.9719556784888205 + } + }, + "textNodes": [] +} \ No newline at end of file diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/block_data.json b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/block_data.json new file mode 100644 index 00000000..42b85f70 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/block_data.json @@ -0,0 +1,20 @@ +{ + "docstring": { + "long_description": "Requires a CONNECT_2450 block to create the connection.", + "short_description": "Resets the 2450 and clears buffers.", + "parameters": [ + { + "name": "connection", + "type": "VisaConnection", + "description": "The VISA address (requires the CONNECTION_2450 block)." + } + ], + "returns": [ + { + "name": null, + "type": "TextBlob", + "description": "Reset" + } + ] + } +} \ No newline at end of file diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/example.md b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/example.md new file mode 100644 index 00000000..2faf7340 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/example.md @@ -0,0 +1,19 @@ +In this example, a Keithley 2450 to generate 1V and then sweep between 0 and 1V. + +First the necessary blocks were added: + +- `CONNECT_2450` +- `BEEP_2450` +- `RESET_2450` +- `SOURCE_2450` +- `MEASURE_SETTINGS_2450` +- `MEASUREMENT_READ_2450` +- `IV_SWEEP_2450` +- `BIG_NUMBER` +- `LINE` + +The instrument address was set for each `2450` block. The `SOURCE_2450` block was changed in order to source 1V. The parameters in the `MEASURE_SETTINGS_2450` block were changed as necessary. The `MEASUREMENT_READ_2450` block was connected to the `BIG_NUMBER` block in order to view the reading. + +The `IV_SWEEP_2450` block output was connected to the `LINE` plot to show the output of the sweep. + +The blocks were connected as shown and the app was run. diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/SOURCE_2450.py b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/SOURCE_2450.py new file mode 100644 index 00000000..03691fa6 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/SOURCE_2450.py @@ -0,0 +1,75 @@ +from typing import Optional, Literal +from flojoy import VisaConnection, flojoy, DataContainer, TextBlob + + +@flojoy(deps={"tm_devices": "1.0"}, inject_connection=True) +def SOURCE_2450( + connection: VisaConnection, + input: Optional[DataContainer] = None, + function: Literal["current", "voltage"] = "voltage", + level: float = 1.0, + limit: float = 1.0, + terminal: Literal["front", "rear"] = "front", + protect: Literal[ + "NONE", + "2V", + "5V", + "10V", + "20V", + "40V", + "60V", + "80V", + "100V", + "120V", + "140V", + "160V", + "180V", + ] = "NONE", +) -> TextBlob: + """Set the source output settings. + + Use the OUTPUT_2450 block to turn the output on or off. + + Requires a CONNECT_2450 block to create the connection. + + Parameters + ---------- + connection : VisaConnection + The VISA address (requires the CONNECTION_2450 block). + function : select, default=voltage + The type of output to use. + level : float, default=0 + The fixed voltage or current to output. + limit : float, default=1 + Output limit (if function=voltage, current is limited and visa versa). + terminal : select, default=front + The panel to output from. + protect : select, default=NONE + The overvoltage protection value. + + Returns + ------- + TextBlob + Source settings + """ + + # Retrieve oscilloscope instrument connection + smu = connection.get_handle() + + smu.commands.smu.source.protect.level = f"smu.PROTECT_{protect}" + + if terminal == "front": + smu.commands.smu.terminals = "smu.TERMINALS_FRONT" + else: + smu.commands.smu.terminals = "smu.TERMINALS_REAR" + + if function == "current": + smu.commands.smu.source.func = "smu.FUNC_DC_CURRENT" + smu.commands.smu.source.vlimit.level = limit + else: + smu.commands.smu.source.func = "smu.FUNC_DC_VOLTAGE" + smu.commands.smu.source.ilimit.level = limit + + smu.commands.smu.source.level = level + + return TextBlob(text_blob="Source settings") diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/app.json b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/app.json new file mode 100644 index 00000000..bfc67574 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/app.json @@ -0,0 +1,903 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "type": "HARDWARE", + "data": { + "id": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "label": "BEEP 2450", + "func": "BEEP_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "BEEP_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "duration": { + "type": "float", + "default": 0.25, + "desc": "The duration of the beep in seconds.", + "overload": null, + "functionName": "BEEP_2450", + "param": "duration", + "value": 0.25 + }, + "frequency": { + "type": "float", + "default": 2000, + "desc": "The frequency, or tone, of the beep in Hz.", + "overload": null, + "functionName": "BEEP_2450", + "param": "frequency", + "value": 2000 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Beep" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/BEEP_2450.py" + }, + "position": { + "x": -448.3091293727178, + "y": -347.92345448716804 + }, + "selected": false, + "positionAbsolute": { + "x": -448.3091293727178, + "y": -347.92345448716804 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06", + "type": "HARDWARE", + "data": { + "id": "CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06", + "label": "CONNECT 2450", + "func": "CONNECT_2450", + "type": "HARDWARE", + "ctrls": { + "device": { + "type": "VisaDevice", + "default": null, + "desc": "The connected VISA device.", + "overload": null, + "functionName": "CONNECT_2450", + "param": "device", + "value": "TCPIP::169.254.175.123::INSTR" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP or VISA address of the VISA device." + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/CONNECT_2450.py" + }, + "position": { + "x": -674.0943355603956, + "y": -346.9914490190549 + }, + "selected": false, + "positionAbsolute": { + "x": -674.0943355603956, + "y": -346.9914490190549 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "type": "HARDWARE", + "data": { + "id": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "label": "IV SWEEP 2450", + "func": "IV_SWEEP_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "sweep": { + "type": "select", + "options": [ + "voltage", + "current" + ], + "default": "voltage", + "desc": "Select the sweep mode, the opposite unit is measured.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "sweep", + "value": "voltage" + }, + "sense": { + "type": "select", + "options": [ + "2-wire", + "4-wire" + ], + "default": "2-wire", + "desc": "Use 2 or 4 wire sense/measurement mode.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "sense", + "value": "2-wire" + }, + "start": { + "type": "float", + "default": 0, + "desc": "The first x value of the sweep.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "start", + "value": 0 + }, + "stop": { + "type": "float", + "default": 1, + "desc": "The last x value of the sweep.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "stop", + "value": 1 + }, + "points": { + "type": "float", + "default": 100, + "desc": "The number of points between start and stop.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "points", + "value": 100 + }, + "measurement_time": { + "type": "float", + "default": 1, + "desc": "How long to measure a single point, in seconds.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "measurement_time", + "value": 1 + }, + "measurement_delay": { + "type": "float", + "default": 0.05, + "desc": "How long to delay between two points, in seconds.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "measurement_delay", + "value": 0.05 + }, + "y_limit": { + "type": "float", + "default": 1, + "desc": "The limit of the measured value.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "y_limit", + "value": 1 + }, + "source_range": { + "type": "float", + "default": 1, + "desc": "The range of the x value.", + "overload": null, + "functionName": "IV_SWEEP_2450", + "param": "source_range", + "value": 2 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair", + "desc": "Sweep values" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/IV_SWEEP_2450.py" + }, + "position": { + "x": 492.2816086087546, + "y": 1.7974868009648617 + }, + "selected": false, + "positionAbsolute": { + "x": 492.2816086087546, + "y": 1.7974868009648617 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "type": "HARDWARE", + "data": { + "id": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "label": "MEASURE READ 2450", + "func": "MEASURE_READ_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "MEASURE_READ_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Reading" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/MEASURE_READ_2450.py" + }, + "position": { + "x": 512.3891574605273, + "y": -320.65565183900117 + }, + "selected": false, + "positionAbsolute": { + "x": 512.3891574605273, + "y": -320.65565183900117 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "type": "HARDWARE", + "data": { + "id": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "label": "MEASURE SETTINGS 2450", + "func": "MEASURE_SETTINGS_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "measure": { + "type": "select", + "options": [ + "voltage", + "current", + "resistance", + "power" + ], + "default": "voltage", + "desc": "Select the measure unit", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "measure", + "value": "voltage" + }, + "wires": { + "type": "select", + "options": [ + "2", + "4" + ], + "default": "2", + "desc": "Select 2-wire or 4-wire sense mode.", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "wires", + "value": "2" + }, + "digits": { + "type": "select", + "options": [ + "3.5", + "4.5", + "5.5", + "6.5" + ], + "default": "6.5", + "desc": "Select the number of display digits.", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "digits", + "value": "6.5" + }, + "meas_range": { + "type": "float", + "default": 0, + "desc": "The measurement range. 0 == AUTO.", + "overload": null, + "functionName": "MEASURE_SETTINGS_2450", + "param": "meas_range", + "value": 0 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Measurement" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/MEASURE_SETTINGS_2450.py" + }, + "position": { + "x": 26.597185633155945, + "y": -437.0939563812675 + }, + "selected": false, + "positionAbsolute": { + "x": 26.597185633155945, + "y": -437.0939563812675 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "type": "HARDWARE", + "data": { + "id": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "label": "OUTPUT 2450", + "func": "OUTPUT_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "OUTPUT_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "output": { + "type": "select", + "options": [ + "on", + "off" + ], + "default": "on", + "desc": "Turn the output on or off.", + "overload": null, + "functionName": "OUTPUT_2450", + "param": "output", + "value": "on" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Output settings" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/OUTPUT_2450.py" + }, + "position": { + "x": 280.0082587419151, + "y": -318.62173032956696 + }, + "selected": false, + "positionAbsolute": { + "x": 280.0082587419151, + "y": -318.62173032956696 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "type": "HARDWARE", + "data": { + "id": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "label": "RESET 2450", + "func": "RESET_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "RESET_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Reset" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/RESET_2450.py" + }, + "position": { + "x": -226.13106763431557, + "y": -346.60560976610765 + }, + "selected": false, + "positionAbsolute": { + "x": -226.13106763431557, + "y": -346.60560976610765 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "type": "HARDWARE", + "data": { + "id": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "label": "SOURCE 2450", + "func": "SOURCE_2450", + "type": "HARDWARE", + "ctrls": { + "connection": { + "type": "VisaConnection", + "default": null, + "desc": "The VISA address (requires the CONNECTION_2450 block).", + "overload": null, + "functionName": "SOURCE_2450", + "param": "connection", + "value": "TCPIP::169.254.175.123::INSTR" + }, + "function": { + "type": "select", + "options": [ + "current", + "voltage" + ], + "default": "voltage", + "desc": "The type of output to use.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "function", + "value": "voltage" + }, + "level": { + "type": "float", + "default": 1, + "desc": "The fixed voltage or current to output.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "level", + "value": 1 + }, + "limit": { + "type": "float", + "default": 1, + "desc": "Output limit (if function=voltage, current is limited and visa versa).", + "overload": null, + "functionName": "SOURCE_2450", + "param": "limit", + "value": 1 + }, + "terminal": { + "type": "select", + "options": [ + "front", + "rear" + ], + "default": "front", + "desc": "The panel to output from.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "terminal", + "value": "front" + }, + "protect": { + "type": "select", + "options": [ + "NONE", + "2V", + "5V", + "10V", + "20V", + "40V", + "60V", + "80V", + "100V", + "120V", + "140V", + "160V", + "180V" + ], + "default": "NONE", + "desc": "The overvoltage protection value.", + "overload": null, + "functionName": "SOURCE_2450", + "param": "protect", + "value": "5V" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "input", + "id": "input", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "Source settings" + } + ], + "pip_dependencies": [ + { + "name": "tm_devices", + "v": "1.0" + } + ], + "path": "HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/SOURCE_2450.py" + }, + "position": { + "x": 16.48308033026258, + "y": -220.1001132926403 + }, + "selected": false, + "positionAbsolute": { + "x": 16.48308033026258, + "y": -220.1001132926403 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "LINE-30feab30-6d4f-4274-8877-383382355e5f", + "type": "VISUALIZATION", + "data": { + "id": "LINE-30feab30-6d4f-4274-8877-383382355e5f", + "label": "LINE", + "func": "LINE", + "type": "VISUALIZATION", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|DataFrame|Matrix|Vector", + "multiple": false, + "desc": "the DataContainer to be visualized" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly", + "desc": "the DataContainer containing the Plotly Line visualization of the input data" + } + ], + "path": "DATA/VISUALIZATION/PLOTLY/LINE/LINE.py" + }, + "position": { + "x": 820.060590405619, + "y": -43.462075618890026 + }, + "selected": false, + "positionAbsolute": { + "x": 820.060590405619, + "y": -43.462075618890026 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749", + "type": "VISUALIZATION", + "data": { + "id": "BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749", + "label": "BIG NUMBER", + "func": "BIG_NUMBER", + "type": "VISUALIZATION", + "ctrls": { + "suffix": { + "type": "str", + "default": null, + "desc": "any suffix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "suffix", + "value": "" + }, + "prefix": { + "type": "str", + "default": null, + "desc": "any prefix to show with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "prefix", + "value": "" + }, + "title": { + "type": "str", + "default": null, + "desc": "title of the plot, default = \"BIG_NUMBER\"", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "title", + "value": "" + }, + "relative_delta": { + "type": "bool", + "default": true, + "desc": "whether or not to show the relative delta from the last run along with big number", + "overload": null, + "functionName": "BIG_NUMBER", + "param": "relative_delta", + "value": true + }, + "scientific_notation": { + "type": "bool", + "default": false, + "desc": null, + "overload": null, + "functionName": "BIG_NUMBER", + "param": "scientific_notation", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Scalar|Vector", + "multiple": false, + "desc": "the DataContainer to be visualized" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly", + "desc": "the DataContainer containing the Plotly big number visualization" + } + ], + "path": "DATA/VISUALIZATION/PLOTLY/BIG_NUMBER/BIG_NUMBER.py" + }, + "position": { + "x": 831.0144261253039, + "y": -361.6163345095765 + }, + "selected": false, + "positionAbsolute": { + "x": 831.0144261253039, + "y": -361.6163345095765 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06", + "sourceHandle": "default", + "target": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "targetHandle": "input", + "id": "reactflow__edge-CONNECT_2450-72b8d59f-b577-4f92-b3df-705b3fc2cd06default-BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29input" + }, + { + "source": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "sourceHandle": "default", + "target": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "targetHandle": "input", + "id": "reactflow__edge-MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787default-IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010input" + }, + { + "source": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "sourceHandle": "default", + "target": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "targetHandle": "input", + "id": "reactflow__edge-OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9ddefault-MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787input" + }, + { + "source": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "sourceHandle": "default", + "target": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "targetHandle": "input", + "id": "reactflow__edge-RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809edefault-MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9input" + }, + { + "source": "MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9", + "sourceHandle": "default", + "target": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "targetHandle": "input", + "id": "reactflow__edge-MEASURE_SETTINGS_2450-2d6b2106-7975-4e13-9084-1432f534f5e9default-OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9dinput" + }, + { + "source": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "sourceHandle": "default", + "target": "OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9d", + "targetHandle": "input", + "id": "reactflow__edge-SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7default-OUTPUT_2450-e2cfabda-a18e-4170-a237-98e1dd262d9dinput" + }, + { + "source": "BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29", + "sourceHandle": "default", + "target": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "targetHandle": "input", + "id": "reactflow__edge-BEEP_2450-8f32f6a8-a1b7-4902-bcd0-bcd1891d1c29default-RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809einput" + }, + { + "source": "RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809e", + "sourceHandle": "default", + "target": "SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7", + "targetHandle": "input", + "id": "reactflow__edge-RESET_2450-1417dc2d-b853-4330-9d4f-6f67c137809edefault-SOURCE_2450-0665121f-eef3-48f7-b080-2400359631a7input" + }, + { + "source": "IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010", + "sourceHandle": "default", + "target": "LINE-30feab30-6d4f-4274-8877-383382355e5f", + "targetHandle": "default", + "id": "reactflow__edge-IV_SWEEP_2450-4e375cbe-903d-4b94-bda3-d17321ec8010default-LINE-30feab30-6d4f-4274-8877-383382355e5fdefault" + }, + { + "source": "MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787", + "sourceHandle": "default", + "target": "BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749", + "targetHandle": "default", + "id": "reactflow__edge-MEASURE_READ_2450-68952e00-42a8-458a-81c0-7d0d08398787default-BIG_NUMBER-da49fee0-f0ca-4054-8686-bb576f153749default" + } + ], + "viewport": { + "x": 994.2991122110108, + "y": 573.4932402039965, + "zoom": 0.9719556784888205 + } + }, + "textNodes": [] +} \ No newline at end of file diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/block_data.json b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/block_data.json new file mode 100644 index 00000000..0656a9de --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/block_data.json @@ -0,0 +1,45 @@ +{ + "docstring": { + "long_description": "Use the OUTPUT_2450 block to turn the output on or off.\n\nRequires a CONNECT_2450 block to create the connection.", + "short_description": "Set the source output settings.", + "parameters": [ + { + "name": "connection", + "type": "VisaConnection", + "description": "The VISA address (requires the CONNECTION_2450 block)." + }, + { + "name": "function", + "type": "select, default=voltage", + "description": "The type of output to use." + }, + { + "name": "level", + "type": "float, default=0", + "description": "The fixed voltage or current to output." + }, + { + "name": "limit", + "type": "float, default=1", + "description": "Output limit (if function=voltage, current is limited and visa versa)." + }, + { + "name": "terminal", + "type": "select, default=front", + "description": "The panel to output from." + }, + { + "name": "protect", + "type": "select, default=NONE", + "description": "The overvoltage protection value." + } + ], + "returns": [ + { + "name": null, + "type": "TextBlob", + "description": "Source settings" + } + ] + } +} \ No newline at end of file diff --git a/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/example.md b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/example.md new file mode 100644 index 00000000..2faf7340 --- /dev/null +++ b/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/example.md @@ -0,0 +1,19 @@ +In this example, a Keithley 2450 to generate 1V and then sweep between 0 and 1V. + +First the necessary blocks were added: + +- `CONNECT_2450` +- `BEEP_2450` +- `RESET_2450` +- `SOURCE_2450` +- `MEASURE_SETTINGS_2450` +- `MEASUREMENT_READ_2450` +- `IV_SWEEP_2450` +- `BIG_NUMBER` +- `LINE` + +The instrument address was set for each `2450` block. The `SOURCE_2450` block was changed in order to source 1V. The parameters in the `MEASURE_SETTINGS_2450` block were changed as necessary. The `MEASUREMENT_READ_2450` block was connected to the `BIG_NUMBER` block in order to view the reading. + +The `IV_SWEEP_2450` block output was connected to the `LINE` plot to show the output of the sweep. + +The blocks were connected as shown and the app was run. diff --git a/docs/package.json b/docs/package.json index 04c770d3..0e7282e1 100644 --- a/docs/package.json +++ b/docs/package.json @@ -11,28 +11,28 @@ "format": "prettier --plugin=prettier-plugin-astro --plugin=prettier-plugin-tailwindcss --write ." }, "dependencies": { - "@astro-community/astro-embed-youtube": "^0.4.1", + "@astro-community/astro-embed-youtube": "^0.4.3", "@astrojs/react": "^3.0.6", - "@astrojs/starlight": "^0.13.0", + "@astrojs/starlight": "^0.14.0", "@astrojs/starlight-tailwind": "^2.0.1", "@astrojs/tailwind": "^5.0.2", - "@fortawesome/fontawesome-svg-core": "^6.4.2", - "@fortawesome/free-brands-svg-icons": "^6.4.2", + "@fortawesome/fontawesome-svg-core": "^6.5.0", + "@fortawesome/free-brands-svg-icons": "^6.5.0", "@fortawesome/react-fontawesome": "^0.2.0", - "@types/react": "^18.2.38", + "@types/react": "^18.2.39", "@types/react-dom": "^18.2.17", - "astro": "^3.6.0", + "astro": "^3.6.4", "astro-robots-txt": "^1.0.0", "class-variance-authority": "^0.7.0", "clsx": "^2.0.0", - "lucide-react": "^0.292.0", + "lucide-react": "^0.294.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-markdown": "^9.0.1", "reactflow": "^11.10.1", "rehype-katex": "^7.0.0", "remark-math": "^6.0.0", - "sharp": "^0.32.6", + "sharp": "^0.33.0", "tailwindcss": "^3.3.5" }, "devDependencies": { diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml index 783cd4ae..33fcd106 100644 --- a/docs/pnpm-lock.yaml +++ b/docs/pnpm-lock.yaml @@ -6,38 +6,38 @@ settings: dependencies: '@astro-community/astro-embed-youtube': - specifier: ^0.4.1 - version: 0.4.1(astro@3.6.0) + specifier: ^0.4.3 + version: 0.4.3(astro@3.6.4) '@astrojs/react': specifier: ^3.0.6 - version: 3.0.6(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0)(vite@5.0.2) + version: 3.0.6(@types/react-dom@18.2.17)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0)(vite@5.0.4) '@astrojs/starlight': - specifier: ^0.13.0 - version: 0.13.0(astro@3.6.0) + specifier: ^0.14.0 + version: 0.14.0(astro@3.6.4) '@astrojs/starlight-tailwind': specifier: ^2.0.1 - version: 2.0.1(@astrojs/starlight@0.13.0)(@astrojs/tailwind@5.0.2)(tailwindcss@3.3.5) + version: 2.0.1(@astrojs/starlight@0.14.0)(@astrojs/tailwind@5.0.2)(tailwindcss@3.3.5) '@astrojs/tailwind': specifier: ^5.0.2 - version: 5.0.2(astro@3.6.0)(tailwindcss@3.3.5) + version: 5.0.2(astro@3.6.4)(tailwindcss@3.3.5) '@fortawesome/fontawesome-svg-core': - specifier: ^6.4.2 - version: 6.4.2 + specifier: ^6.5.0 + version: 6.5.0 '@fortawesome/free-brands-svg-icons': - specifier: ^6.4.2 - version: 6.4.2 + specifier: ^6.5.0 + version: 6.5.0 '@fortawesome/react-fontawesome': specifier: ^0.2.0 - version: 0.2.0(@fortawesome/fontawesome-svg-core@6.4.2)(react@18.2.0) + version: 0.2.0(@fortawesome/fontawesome-svg-core@6.5.0)(react@18.2.0) '@types/react': - specifier: ^18.2.38 - version: 18.2.38 + specifier: ^18.2.39 + version: 18.2.39 '@types/react-dom': specifier: ^18.2.17 version: 18.2.17 astro: - specifier: ^3.6.0 - version: 3.6.0 + specifier: ^3.6.4 + version: 3.6.4 astro-robots-txt: specifier: ^1.0.0 version: 1.0.0 @@ -48,8 +48,8 @@ dependencies: specifier: ^2.0.0 version: 2.0.0 lucide-react: - specifier: ^0.292.0 - version: 0.292.0(react@18.2.0) + specifier: ^0.294.0 + version: 0.294.0(react@18.2.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -58,10 +58,10 @@ dependencies: version: 18.2.0(react@18.2.0) react-markdown: specifier: ^9.0.1 - version: 9.0.1(@types/react@18.2.38)(react@18.2.0) + version: 9.0.1(@types/react@18.2.39)(react@18.2.0) reactflow: specifier: ^11.10.1 - version: 11.10.1(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) + version: 11.10.1(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) rehype-katex: specifier: ^7.0.0 version: 7.0.0 @@ -69,8 +69,8 @@ dependencies: specifier: ^6.0.0 version: 6.0.0 sharp: - specifier: ^0.32.6 - version: 0.32.6 + specifier: ^0.33.0 + version: 0.33.0 tailwindcss: specifier: ^3.3.5 version: 3.3.5 @@ -101,12 +101,12 @@ packages: '@jridgewell/trace-mapping': 0.3.20 dev: false - /@astro-community/astro-embed-youtube@0.4.1(astro@3.6.0): - resolution: {integrity: sha512-sS3zp3JpCkQl0yl5iCZSuCcankz0Ownjg0Ju5KdON4BJVZUh2gHySCCvqKpsNWwto2VESKi9v7KHi1/R386FZg==} + /@astro-community/astro-embed-youtube@0.4.3(astro@3.6.4): + resolution: {integrity: sha512-zXtPmR9yxrTo6cuLhH8v+r62bsXbsLJgsU2FiZalPr4bXJxAUQEIlG46S/qK0AEXi9uNShKqy4+zBaJ98xTVEg==} peerDependencies: - astro: ^2.0.0 || ^3.0.0-beta + astro: ^2.0.0 || ^3.0.0-beta || ^4.0.0-beta dependencies: - astro: 3.6.0 + astro: 3.6.4 lite-youtube-embed: 0.2.0 dev: false @@ -122,13 +122,13 @@ packages: resolution: {integrity: sha512-06DD2ZnItMwUnH81LBLco3tWjcZ1lGU9rLCCBaeUCGYe9cI0wKyY2W3kDyoW1I6GmcWgt1fu+D1CTvz+FIKf8A==} dev: false - /@astrojs/markdown-remark@3.5.0(astro@3.6.0): + /@astrojs/markdown-remark@3.5.0(astro@3.6.4): resolution: {integrity: sha512-q7vdIqzYhxpsfghg2YmkmSXCfp4w7lBTYP+SSHw89wVhC5Riltr3u8w2otBRxNLSByNi+ht/gGkFC23Shetytw==} peerDependencies: astro: ^3.0.0 dependencies: '@astrojs/prism': 3.0.0 - astro: 3.6.0 + astro: 3.6.4 github-slugger: 2.0.0 import-meta-resolve: 3.1.1 mdast-util-definitions: 6.0.0 @@ -146,16 +146,16 @@ packages: - supports-color dev: false - /@astrojs/mdx@1.1.5(astro@3.6.0): + /@astrojs/mdx@1.1.5(astro@3.6.4): resolution: {integrity: sha512-4bveyB1Lb1vWo2kdHJjQYoCytWlrIjAxHATHUTuYnBPmdPjsfy9wuCnb9rozwyyarDABx87CzG5gotBNYd+dVA==} engines: {node: '>=18.14.1'} peerDependencies: astro: ^3.0.0 dependencies: - '@astrojs/markdown-remark': 3.5.0(astro@3.6.0) + '@astrojs/markdown-remark': 3.5.0(astro@3.6.4) '@mdx-js/mdx': 2.3.0 acorn: 8.11.2 - astro: 3.6.0 + astro: 3.6.4 es-module-lexer: 1.4.1 estree-util-visit: 1.2.1 github-slugger: 2.0.0 @@ -179,7 +179,7 @@ packages: prismjs: 1.29.0 dev: false - /@astrojs/react@3.0.6(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0)(vite@5.0.2): + /@astrojs/react@3.0.6(@types/react-dom@18.2.17)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0)(vite@5.0.4): resolution: {integrity: sha512-hjC02q8cPeyzw+LWe6V2dPTYf8OgfuZwxmH32tkhn3JC/VTz1AdO5rM7dgvbilLnUoL7qMGapODEkSl2mmW+oA==} engines: {node: '>=18.14.1'} peerDependencies: @@ -188,9 +188,9 @@ packages: react: ^17.0.2 || ^18.0.0 react-dom: ^17.0.2 || ^18.0.0 dependencies: - '@types/react': 18.2.38 + '@types/react': 18.2.39 '@types/react-dom': 18.2.17 - '@vitejs/plugin-react': 4.2.0(vite@5.0.2) + '@vitejs/plugin-react': 4.2.0(vite@5.0.4) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) ultrahtml: 1.5.2 @@ -206,29 +206,29 @@ packages: zod: 3.22.4 dev: false - /@astrojs/starlight-tailwind@2.0.1(@astrojs/starlight@0.13.0)(@astrojs/tailwind@5.0.2)(tailwindcss@3.3.5): + /@astrojs/starlight-tailwind@2.0.1(@astrojs/starlight@0.14.0)(@astrojs/tailwind@5.0.2)(tailwindcss@3.3.5): resolution: {integrity: sha512-niMgFcR7NHcsBVy8UAN3F2gqhmoN5v83st5Hu4YzvUL+6SNwjQmIipXppXdN9+iVneRjPr6PLGzDfI+wnjSBWQ==} peerDependencies: '@astrojs/starlight': '>=0.9.0' '@astrojs/tailwind': ^5.0.0 tailwindcss: ^3.3.3 dependencies: - '@astrojs/starlight': 0.13.0(astro@3.6.0) - '@astrojs/tailwind': 5.0.2(astro@3.6.0)(tailwindcss@3.3.5) + '@astrojs/starlight': 0.14.0(astro@3.6.4) + '@astrojs/tailwind': 5.0.2(astro@3.6.4)(tailwindcss@3.3.5) tailwindcss: 3.3.5 dev: false - /@astrojs/starlight@0.13.0(astro@3.6.0): - resolution: {integrity: sha512-3SVWGP9Qze3UkM5Wozpx+5v9dh75ZFPSHRqzeuXNtctn5nHjlzvOgIIQnuyyNhIEQMfml1lo83jL3Vsf7Qk7Iw==} + /@astrojs/starlight@0.14.0(astro@3.6.4): + resolution: {integrity: sha512-wrve52CIIymvntjf2QCfCFpYrmZTyD1qObkvLImeGDVAAyNdUnNlj6MU6SkqQg2fQkJcX9Kh4zkwepm79zYveQ==} peerDependencies: astro: ^3.2.0 dependencies: - '@astrojs/mdx': 1.1.5(astro@3.6.0) + '@astrojs/mdx': 1.1.5(astro@3.6.4) '@astrojs/sitemap': 3.0.3 '@pagefind/default-ui': 1.0.4 '@types/mdast': 3.0.15 - astro: 3.6.0 - astro-expressive-code: 0.29.1(astro@3.6.0) + astro: 3.6.4 + astro-expressive-code: 0.29.2(astro@3.6.4) bcp-47: 2.1.0 execa: 8.0.1 hast-util-select: 5.0.5 @@ -244,13 +244,13 @@ packages: - supports-color dev: false - /@astrojs/tailwind@5.0.2(astro@3.6.0)(tailwindcss@3.3.5): + /@astrojs/tailwind@5.0.2(astro@3.6.4)(tailwindcss@3.3.5): resolution: {integrity: sha512-oXqeqmBlkQmsltrsU9nEWeXOtrZIAHW8dcmX7BCdrjzPnU6dPwWzAwhddNQ9ihKiWwsLnlbwQZIo2CDigcZlIA==} peerDependencies: astro: ^3.2.4 tailwindcss: ^3.0.24 dependencies: - astro: 3.6.0 + astro: 3.6.4 autoprefixer: 10.4.16(postcss@8.4.31) postcss: 8.4.31 postcss-load-config: 4.0.2(postcss@8.4.31) @@ -274,33 +274,33 @@ packages: - supports-color dev: false - /@babel/code-frame@7.23.4: - resolution: {integrity: sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==} + /@babel/code-frame@7.23.5: + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.23.4 chalk: 2.4.2 dev: false - /@babel/compat-data@7.23.3: - resolution: {integrity: sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==} + /@babel/compat-data@7.23.5: + resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} dev: false - /@babel/core@7.23.3: - resolution: {integrity: sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==} + /@babel/core@7.23.5: + resolution: {integrity: sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.23.4 - '@babel/generator': 7.23.4 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.5 '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) - '@babel/helpers': 7.23.4 - '@babel/parser': 7.23.4 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) + '@babel/helpers': 7.23.5 + '@babel/parser': 7.23.5 '@babel/template': 7.22.15 - '@babel/traverse': 7.23.4 - '@babel/types': 7.23.4 + '@babel/traverse': 7.23.5 + '@babel/types': 7.23.5 convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -310,11 +310,11 @@ packages: - supports-color dev: false - /@babel/generator@7.23.4: - resolution: {integrity: sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==} + /@babel/generator@7.23.5: + resolution: {integrity: sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.4 + '@babel/types': 7.23.5 '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.20 jsesc: 2.5.2 @@ -324,15 +324,15 @@ packages: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.4 + '@babel/types': 7.23.5 dev: false /@babel/helper-compilation-targets@7.22.15: resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.23.3 - '@babel/helper-validator-option': 7.22.15 + '@babel/compat-data': 7.23.5 + '@babel/helper-validator-option': 7.23.5 browserslist: 4.22.1 lru-cache: 5.1.1 semver: 6.3.1 @@ -348,30 +348,30 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/types': 7.23.4 + '@babel/types': 7.23.5 dev: false /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.4 + '@babel/types': 7.23.5 dev: false /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.4 + '@babel/types': 7.23.5 dev: false - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.3): + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 @@ -388,14 +388,14 @@ packages: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.4 + '@babel/types': 7.23.5 dev: false /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.4 + '@babel/types': 7.23.5 dev: false /@babel/helper-string-parser@7.23.4: @@ -408,18 +408,18 @@ packages: engines: {node: '>=6.9.0'} dev: false - /@babel/helper-validator-option@7.22.15: - resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} dev: false - /@babel/helpers@7.23.4: - resolution: {integrity: sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw==} + /@babel/helpers@7.23.5: + resolution: {integrity: sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/traverse': 7.23.4 - '@babel/types': 7.23.4 + '@babel/traverse': 7.23.5 + '@babel/types': 7.23.5 transitivePeerDependencies: - supports-color dev: false @@ -433,87 +433,87 @@ packages: js-tokens: 4.0.0 dev: false - /@babel/parser@7.23.4: - resolution: {integrity: sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==} + /@babel/parser@7.23.5: + resolution: {integrity: sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.23.4 + '@babel/types': 7.23.5 dev: false - /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.3): + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.3): + /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.5): resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.3) - '@babel/types': 7.23.4 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.5) + '@babel/types': 7.23.5 dev: false /@babel/template@7.22.15: resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.23.4 - '@babel/parser': 7.23.4 - '@babel/types': 7.23.4 + '@babel/code-frame': 7.23.5 + '@babel/parser': 7.23.5 + '@babel/types': 7.23.5 dev: false - /@babel/traverse@7.23.4: - resolution: {integrity: sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==} + /@babel/traverse@7.23.5: + resolution: {integrity: sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.23.4 - '@babel/generator': 7.23.4 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.4 - '@babel/types': 7.23.4 + '@babel/parser': 7.23.5 + '@babel/types': 7.23.5 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: false - /@babel/types@7.23.4: - resolution: {integrity: sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==} + /@babel/types@7.23.5: + resolution: {integrity: sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.23.4 @@ -526,6 +526,14 @@ packages: engines: {node: '>=10'} dev: false + /@emnapi/runtime@0.44.0: + resolution: {integrity: sha512-ZX/etZEZw8DR7zAB1eVQT40lNo0jeqpb6dCgOvctB6FIQ5PoXfMuNY8+ayQfu8tNQbAB8gQWSSJupR8NxeiZXw==} + requiresBuild: true + dependencies: + tslib: 2.6.2 + dev: false + optional: true + /@esbuild/android-arm64@0.18.20: resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} @@ -535,8 +543,8 @@ packages: dev: false optional: true - /@esbuild/android-arm64@0.19.7: - resolution: {integrity: sha512-YEDcw5IT7hW3sFKZBkCAQaOCJQLONVcD4bOyTXMZz5fr66pTHnAet46XAtbXAkJRfIn2YVhdC6R9g4xa27jQ1w==} + /@esbuild/android-arm64@0.19.8: + resolution: {integrity: sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -553,8 +561,8 @@ packages: dev: false optional: true - /@esbuild/android-arm@0.19.7: - resolution: {integrity: sha512-YGSPnndkcLo4PmVl2tKatEn+0mlVMr3yEpOOT0BeMria87PhvoJb5dg5f5Ft9fbCVgtAz4pWMzZVgSEGpDAlww==} + /@esbuild/android-arm@0.19.8: + resolution: {integrity: sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -571,8 +579,8 @@ packages: dev: false optional: true - /@esbuild/android-x64@0.19.7: - resolution: {integrity: sha512-jhINx8DEjz68cChFvM72YzrqfwJuFbfvSxZAk4bebpngGfNNRm+zRl4rtT9oAX6N9b6gBcFaJHFew5Blf6CvUw==} + /@esbuild/android-x64@0.19.8: + resolution: {integrity: sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -589,8 +597,8 @@ packages: dev: false optional: true - /@esbuild/darwin-arm64@0.19.7: - resolution: {integrity: sha512-dr81gbmWN//3ZnBIm6YNCl4p3pjnabg1/ZVOgz2fJoUO1a3mq9WQ/1iuEluMs7mCL+Zwv7AY5e3g1hjXqQZ9Iw==} + /@esbuild/darwin-arm64@0.19.8: + resolution: {integrity: sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -607,8 +615,8 @@ packages: dev: false optional: true - /@esbuild/darwin-x64@0.19.7: - resolution: {integrity: sha512-Lc0q5HouGlzQEwLkgEKnWcSazqr9l9OdV2HhVasWJzLKeOt0PLhHaUHuzb8s/UIya38DJDoUm74GToZ6Wc7NGQ==} + /@esbuild/darwin-x64@0.19.8: + resolution: {integrity: sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -625,8 +633,8 @@ packages: dev: false optional: true - /@esbuild/freebsd-arm64@0.19.7: - resolution: {integrity: sha512-+y2YsUr0CxDFF7GWiegWjGtTUF6gac2zFasfFkRJPkMAuMy9O7+2EH550VlqVdpEEchWMynkdhC9ZjtnMiHImQ==} + /@esbuild/freebsd-arm64@0.19.8: + resolution: {integrity: sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -643,8 +651,8 @@ packages: dev: false optional: true - /@esbuild/freebsd-x64@0.19.7: - resolution: {integrity: sha512-CdXOxIbIzPJmJhrpmJTLx+o35NoiKBIgOvmvT+jeSadYiWJn0vFKsl+0bSG/5lwjNHoIDEyMYc/GAPR9jxusTA==} + /@esbuild/freebsd-x64@0.19.8: + resolution: {integrity: sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -661,8 +669,8 @@ packages: dev: false optional: true - /@esbuild/linux-arm64@0.19.7: - resolution: {integrity: sha512-inHqdOVCkUhHNvuQPT1oCB7cWz9qQ/Cz46xmVe0b7UXcuIJU3166aqSunsqkgSGMtUCWOZw3+KMwI6otINuC9g==} + /@esbuild/linux-arm64@0.19.8: + resolution: {integrity: sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -679,8 +687,8 @@ packages: dev: false optional: true - /@esbuild/linux-arm@0.19.7: - resolution: {integrity: sha512-Y+SCmWxsJOdQtjcBxoacn/pGW9HDZpwsoof0ttL+2vGcHokFlfqV666JpfLCSP2xLxFpF1lj7T3Ox3sr95YXww==} + /@esbuild/linux-arm@0.19.8: + resolution: {integrity: sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -697,8 +705,8 @@ packages: dev: false optional: true - /@esbuild/linux-ia32@0.19.7: - resolution: {integrity: sha512-2BbiL7nLS5ZO96bxTQkdO0euGZIUQEUXMTrqLxKUmk/Y5pmrWU84f+CMJpM8+EHaBPfFSPnomEaQiG/+Gmh61g==} + /@esbuild/linux-ia32@0.19.8: + resolution: {integrity: sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -715,8 +723,8 @@ packages: dev: false optional: true - /@esbuild/linux-loong64@0.19.7: - resolution: {integrity: sha512-BVFQla72KXv3yyTFCQXF7MORvpTo4uTA8FVFgmwVrqbB/4DsBFWilUm1i2Oq6zN36DOZKSVUTb16jbjedhfSHw==} + /@esbuild/linux-loong64@0.19.8: + resolution: {integrity: sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -733,8 +741,8 @@ packages: dev: false optional: true - /@esbuild/linux-mips64el@0.19.7: - resolution: {integrity: sha512-DzAYckIaK+pS31Q/rGpvUKu7M+5/t+jI+cdleDgUwbU7KdG2eC3SUbZHlo6Q4P1CfVKZ1lUERRFP8+q0ob9i2w==} + /@esbuild/linux-mips64el@0.19.8: + resolution: {integrity: sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -751,8 +759,8 @@ packages: dev: false optional: true - /@esbuild/linux-ppc64@0.19.7: - resolution: {integrity: sha512-JQ1p0SmUteNdUaaiRtyS59GkkfTW0Edo+e0O2sihnY4FoZLz5glpWUQEKMSzMhA430ctkylkS7+vn8ziuhUugQ==} + /@esbuild/linux-ppc64@0.19.8: + resolution: {integrity: sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -769,8 +777,8 @@ packages: dev: false optional: true - /@esbuild/linux-riscv64@0.19.7: - resolution: {integrity: sha512-xGwVJ7eGhkprY/nB7L7MXysHduqjpzUl40+XoYDGC4UPLbnG+gsyS1wQPJ9lFPcxYAaDXbdRXd1ACs9AE9lxuw==} + /@esbuild/linux-riscv64@0.19.8: + resolution: {integrity: sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -787,8 +795,8 @@ packages: dev: false optional: true - /@esbuild/linux-s390x@0.19.7: - resolution: {integrity: sha512-U8Rhki5PVU0L0nvk+E8FjkV8r4Lh4hVEb9duR6Zl21eIEYEwXz8RScj4LZWA2i3V70V4UHVgiqMpszXvG0Yqhg==} + /@esbuild/linux-s390x@0.19.8: + resolution: {integrity: sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -805,8 +813,8 @@ packages: dev: false optional: true - /@esbuild/linux-x64@0.19.7: - resolution: {integrity: sha512-ZYZopyLhm4mcoZXjFt25itRlocKlcazDVkB4AhioiL9hOWhDldU9n38g62fhOI4Pth6vp+Mrd5rFKxD0/S+7aQ==} + /@esbuild/linux-x64@0.19.8: + resolution: {integrity: sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -823,8 +831,8 @@ packages: dev: false optional: true - /@esbuild/netbsd-x64@0.19.7: - resolution: {integrity: sha512-/yfjlsYmT1O3cum3J6cmGG16Fd5tqKMcg5D+sBYLaOQExheAJhqr8xOAEIuLo8JYkevmjM5zFD9rVs3VBcsjtQ==} + /@esbuild/netbsd-x64@0.19.8: + resolution: {integrity: sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -841,8 +849,8 @@ packages: dev: false optional: true - /@esbuild/openbsd-x64@0.19.7: - resolution: {integrity: sha512-MYDFyV0EW1cTP46IgUJ38OnEY5TaXxjoDmwiTXPjezahQgZd+j3T55Ht8/Q9YXBM0+T9HJygrSRGV5QNF/YVDQ==} + /@esbuild/openbsd-x64@0.19.8: + resolution: {integrity: sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -859,8 +867,8 @@ packages: dev: false optional: true - /@esbuild/sunos-x64@0.19.7: - resolution: {integrity: sha512-JcPvgzf2NN/y6X3UUSqP6jSS06V0DZAV/8q0PjsZyGSXsIGcG110XsdmuWiHM+pno7/mJF6fjH5/vhUz/vA9fw==} + /@esbuild/sunos-x64@0.19.8: + resolution: {integrity: sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -877,8 +885,8 @@ packages: dev: false optional: true - /@esbuild/win32-arm64@0.19.7: - resolution: {integrity: sha512-ZA0KSYti5w5toax5FpmfcAgu3ZNJxYSRm0AW/Dao5up0YV1hDVof1NvwLomjEN+3/GMtaWDI+CIyJOMTRSTdMw==} + /@esbuild/win32-arm64@0.19.8: + resolution: {integrity: sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -895,8 +903,8 @@ packages: dev: false optional: true - /@esbuild/win32-ia32@0.19.7: - resolution: {integrity: sha512-CTOnijBKc5Jpk6/W9hQMMvJnsSYRYgveN6O75DTACCY18RA2nqka8dTZR+x/JqXCRiKk84+5+bRKXUSbbwsS0A==} + /@esbuild/win32-ia32@0.19.8: + resolution: {integrity: sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -913,8 +921,8 @@ packages: dev: false optional: true - /@esbuild/win32-x64@0.19.7: - resolution: {integrity: sha512-gRaP2sk6hc98N734luX4VpF318l3w+ofrtTu9j5L8EQXF+FzQKV6alCOHMVoJJHvVK/mGbwBXfOL1HETQu9IGQ==} + /@esbuild/win32-x64@0.19.8: + resolution: {integrity: sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -922,8 +930,8 @@ packages: dev: false optional: true - /@expressive-code/core@0.29.1: - resolution: {integrity: sha512-gz7K1r/S12vYPVUvhAdFcr+zdMbMhi7fPO2iTEEUCIhFUgOoUpOVjupFL+5q46URBGvoZTfmUJge1FBQmGstfA==} + /@expressive-code/core@0.29.2: + resolution: {integrity: sha512-QJv5rDqSpx8WcAE4cZE+9GE31NtkN3i1zdr0KmdgwcIAEixhgxCFfngMoHWYYcLQnBMCIsFCyHnS39SAL4ub0Q==} dependencies: '@ctrl/tinycolor': 3.6.1 hast-util-to-html: 8.0.4 @@ -932,61 +940,249 @@ packages: postcss-nested: 6.0.1(postcss@8.4.31) dev: false - /@expressive-code/plugin-frames@0.29.1: - resolution: {integrity: sha512-nnukQNBBpCSIZITBlFkxJ+4Eh+Hkmix6Db7k5lCBb6Qd/nXeodXFKWROvhtOzH6Jp1UWcpkNtBh3HVmATQRUzA==} + /@expressive-code/plugin-frames@0.29.2: + resolution: {integrity: sha512-qQoDHB3iW7+Jb38omXGcaMNCbcBnGOijREDU5VW8TkFKzwx63gxcia8EYzzuCK15A2Pa8/5YqgE+0RrwKTGXHA==} dependencies: - '@expressive-code/core': 0.29.1 + '@expressive-code/core': 0.29.2 hastscript: 7.2.0 dev: false - /@expressive-code/plugin-shiki@0.29.1: - resolution: {integrity: sha512-4TOJzC8Y4fvLeM7PslH990j3x7luRCkXAWTm4L45ZrBLrU2+7SKn436/mM9k8G+Z1189+e9rSAUFwn1h/VY6QA==} + /@expressive-code/plugin-shiki@0.29.2: + resolution: {integrity: sha512-ZRcG0Rh7S98XzHqTVlZd4pMcXehv6bjSzdM0r0LT2LpCl5oAbzx5DBYCy6BFKu2Qc4UkhTm04obXZSWoAtSaGw==} dependencies: - '@expressive-code/core': 0.29.1 + '@expressive-code/core': 0.29.2 shiki: 0.14.5 dev: false - /@expressive-code/plugin-text-markers@0.29.1: - resolution: {integrity: sha512-fEsI1n1IEisJl+M2ayHy0AbsHIynnpq1yzc4qJk/0sXpouLOMSgw5dKftSmPio+9fXQoNfmYKmJz+OkuPmdy0A==} + /@expressive-code/plugin-text-markers@0.29.2: + resolution: {integrity: sha512-2jhmKIUIizTTnkasFQMmonNNMKmKQxfIIIZcsCLZ0ZaJdBkU0OueAVfQbk0amsrsiPL2ihJ3iDh0JZE0Ztz0AA==} dependencies: - '@expressive-code/core': 0.29.1 + '@expressive-code/core': 0.29.2 hastscript: 7.2.0 unist-util-visit-parents: 5.1.3 dev: false - /@fortawesome/fontawesome-common-types@6.4.2: - resolution: {integrity: sha512-1DgP7f+XQIJbLFCTX1V2QnxVmpLdKdzzo2k8EmvDOePfchaIGQ9eCHj2up3/jNEbZuBqel5OxiaOJf37TWauRA==} + /@fortawesome/fontawesome-common-types@6.5.0: + resolution: {integrity: sha512-vYC8oN2l8meu05sRi1j3Iie/HNFAeIxpitYFhsUrBc11TxiMken9QdXnSQ0q16FYsOSt/6soxs5ghdk+VYGiog==} engines: {node: '>=6'} requiresBuild: true dev: false - /@fortawesome/fontawesome-svg-core@6.4.2: - resolution: {integrity: sha512-gjYDSKv3TrM2sLTOKBc5rH9ckje8Wrwgx1CxAPbN5N3Fm4prfi7NsJVWd1jklp7i5uSCVwhZS5qlhMXqLrpAIg==} + /@fortawesome/fontawesome-svg-core@6.5.0: + resolution: {integrity: sha512-5DrR+oxQr+ruRQ3CEVV8DSCT/q8Atm56+FzAs0P6eW/epW47OmecSpSwc/YTlJ3u5BfPKUBSGyPR2qjZ+5eIgA==} engines: {node: '>=6'} requiresBuild: true dependencies: - '@fortawesome/fontawesome-common-types': 6.4.2 + '@fortawesome/fontawesome-common-types': 6.5.0 dev: false - /@fortawesome/free-brands-svg-icons@6.4.2: - resolution: {integrity: sha512-LKOwJX0I7+mR/cvvf6qIiqcERbdnY+24zgpUSouySml+5w8B4BJOx8EhDR/FTKAu06W12fmUIcv6lzPSwYKGGg==} + /@fortawesome/free-brands-svg-icons@6.5.0: + resolution: {integrity: sha512-LwIl3b5cH0xjmBS7mcy8+SsSsl/7J4xi3aP+Tr4rDUf2Tab8r1c8NcqC8wP5c+bgphGstyG3QPx7l4b9WtcO5Q==} engines: {node: '>=6'} requiresBuild: true dependencies: - '@fortawesome/fontawesome-common-types': 6.4.2 + '@fortawesome/fontawesome-common-types': 6.5.0 dev: false - /@fortawesome/react-fontawesome@0.2.0(@fortawesome/fontawesome-svg-core@6.4.2)(react@18.2.0): + /@fortawesome/react-fontawesome@0.2.0(@fortawesome/fontawesome-svg-core@6.5.0)(react@18.2.0): resolution: {integrity: sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==} peerDependencies: '@fortawesome/fontawesome-svg-core': ~1 || ~6 react: '>=16.3' dependencies: - '@fortawesome/fontawesome-svg-core': 6.4.2 + '@fortawesome/fontawesome-svg-core': 6.5.0 prop-types: 15.8.1 react: 18.2.0 dev: false + /@img/sharp-darwin-arm64@0.33.0: + resolution: {integrity: sha512-070tEheekI1LJWTGPC9WlQEa5UoKTXzzlORBHMX4TbfUxMiL336YHR8vBEUNsjse0RJCX8dZ4ZXwT595aEF1ug==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.0 + dev: false + optional: true + + /@img/sharp-darwin-x64@0.33.0: + resolution: {integrity: sha512-pu/nvn152F3qbPeUkr+4e9zVvEhD3jhwzF473veQfMPkOYo9aoWXSfdZH/E6F+nYC3qvFjbxbvdDbUtEbghLqw==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.0 + dev: false + optional: true + + /@img/sharp-libvips-darwin-arm64@1.0.0: + resolution: {integrity: sha512-VzYd6OwnUR81sInf3alj1wiokY50DjsHz5bvfnsFpxs5tqQxESoHtJO6xyksDs3RIkyhMWq2FufXo6GNSU9BMw==} + engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-darwin-x64@1.0.0: + resolution: {integrity: sha512-dD9OznTlHD6aovRswaPNEy8dKtSAmNo4++tO7uuR4o5VxbVAOoEQ1uSmN4iFAdQneTHws1lkTZeiXPrcCkh6IA==} + engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linux-arm64@1.0.0: + resolution: {integrity: sha512-xTYThiqEZEZc0PRU90yVtM3KE7lw1bKdnDQ9kCTHWbqWyHOe4NpPOtMGy27YnN51q0J5dqRrvicfPbALIOeAZA==} + engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linux-arm@1.0.0: + resolution: {integrity: sha512-VwgD2eEikDJUk09Mn9Dzi1OW2OJFRQK+XlBTkUNmAWPrtj8Ly0yq05DFgu1VCMx2/DqCGQVi5A1dM9hTmxf3uw==} + engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linux-s390x@1.0.0: + resolution: {integrity: sha512-o9E46WWBC6JsBlwU4QyU9578G77HBDT1NInd+aERfxeOPbk0qBZHgoDsQmA2v9TbqJRWzoBPx1aLOhprBMgPjw==} + engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linux-x64@1.0.0: + resolution: {integrity: sha512-naldaJy4hSVhWBgEjfdBY85CAa4UO+W1nx6a1sWStHZ7EUfNiuBTTN2KUYT5dH1+p/xij1t2QSXfCiFJoC5S/Q==} + engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linuxmusl-arm64@1.0.0: + resolution: {integrity: sha512-OdorplCyvmSAPsoJLldtLh3nLxRrkAAAOHsGWGDYfN0kh730gifK+UZb3dWORRa6EusNqCTjfXV4GxvgJ/nPDQ==} + engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linuxmusl-x64@1.0.0: + resolution: {integrity: sha512-FW8iK6rJrg+X2jKD0Ajhjv6y74lToIBEvkZhl42nZt563FfxkCYacrXZtd+q/sRQDypQLzY5WdLkVTbJoPyqNg==} + engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-linux-arm64@0.33.0: + resolution: {integrity: sha512-dcomVSrtgF70SyOr8RCOCQ8XGVThXwe71A1d8MGA+mXEVRJ/J6/TrCbBEJh9ddcEIIsrnrkolaEvYSHqVhswQw==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.0 + dev: false + optional: true + + /@img/sharp-linux-arm@0.33.0: + resolution: {integrity: sha512-4horD3wMFd5a0ddbDY8/dXU9CaOgHjEHALAddXgafoR5oWq5s8X61PDgsSeh4Qupsdo6ycfPPSSNBrfVQnwwrg==} + engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.0 + dev: false + optional: true + + /@img/sharp-linux-s390x@0.33.0: + resolution: {integrity: sha512-TiVJbx38J2rNVfA309ffSOB+3/7wOsZYQEOlKqOUdWD/nqkjNGrX+YQGz7nzcf5oy2lC+d37+w183iNXRZNngQ==} + engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [s390x] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.0 + dev: false + optional: true + + /@img/sharp-linux-x64@0.33.0: + resolution: {integrity: sha512-PaZM4Zi7/Ek71WgTdvR+KzTZpBqrQOFcPe7/8ZoPRlTYYRe43k6TWsf4GVH6XKRLMYeSp8J89RfAhBrSP4itNA==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.0 + dev: false + optional: true + + /@img/sharp-linuxmusl-arm64@0.33.0: + resolution: {integrity: sha512-1QLbbN0zt+32eVrg7bb1lwtvEaZwlhEsY1OrijroMkwAqlHqFj6R33Y47s2XUv7P6Ie1PwCxK/uFnNqMnkd5kg==} + engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.0 + dev: false + optional: true + + /@img/sharp-linuxmusl-x64@0.33.0: + resolution: {integrity: sha512-CecqgB/CnkvCWFhmfN9ZhPGMLXaEBXl4o7WtA6U3Ztrlh/s7FUKX4vNxpMSYLIrWuuzjiaYdfU3+Tdqh1xaHfw==} + engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.0 + dev: false + optional: true + + /@img/sharp-wasm32@0.33.0: + resolution: {integrity: sha512-Hn4js32gUX9qkISlemZBUPuMs0k/xNJebUNl/L6djnU07B/HAA2KaxRVb3HvbU5fL242hLOcp0+tR+M8dvJUFw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [wasm32] + requiresBuild: true + dependencies: + '@emnapi/runtime': 0.44.0 + dev: false + optional: true + + /@img/sharp-win32-ia32@0.33.0: + resolution: {integrity: sha512-5HfcsCZi3l5nPRF2q3bllMVMDXBqEWI3Q8KQONfzl0TferFE5lnsIG0A1YrntMAGqvkzdW6y1Ci1A2uTvxhfzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-win32-x64@0.33.0: + resolution: {integrity: sha512-i3DtP/2ce1yKFj4OzOnOYltOEL/+dp4dc4dJXJBv6god1AFTcmkaA99H/7SwOmkCOBQkbVvA3lCGm3/5nDtf9Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} @@ -1106,39 +1302,39 @@ packages: dev: false optional: true - /@reactflow/background@11.3.6(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): + /@reactflow/background@11.3.6(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-06FPlSUOOMALEEs+2PqPAbpqmL7WDjrkbG2UsDr2d6mbcDDhHiV4tu9FYoz44SQvXo7ma9VRotlsaR4OiRcYsg==} peerDependencies: react: '>=17' react-dom: '>=17' dependencies: - '@reactflow/core': 11.10.1(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.10.1(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) classcat: 5.0.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - zustand: 4.4.6(@types/react@18.2.38)(react@18.2.0) + zustand: 4.4.7(@types/react@18.2.39)(react@18.2.0) transitivePeerDependencies: - '@types/react' - immer dev: false - /@reactflow/controls@11.2.6(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): + /@reactflow/controls@11.2.6(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-4QHT92/ACVlZkvV+Hq44bAPV8WbMhkJl+/J0EbXcqQ1+an7cWJsF84eeelJw7R5J76RoaSSpKdsWsL2v7HAVlw==} peerDependencies: react: '>=17' react-dom: '>=17' dependencies: - '@reactflow/core': 11.10.1(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.10.1(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) classcat: 5.0.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - zustand: 4.4.6(@types/react@18.2.38)(react@18.2.0) + zustand: 4.4.7(@types/react@18.2.39)(react@18.2.0) transitivePeerDependencies: - '@types/react' - immer dev: false - /@reactflow/core@11.10.1(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): + /@reactflow/core@11.10.1(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-GIh3usY1W3eVobx//OO9+Cwm+5evQBBdPGxDaeXwm25UqPMWRI240nXQA5F/5gL5Mwpf0DUC7DR2EmrKNQy+Rw==} peerDependencies: react: '>=17' @@ -1154,19 +1350,19 @@ packages: d3-zoom: 3.0.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - zustand: 4.4.6(@types/react@18.2.38)(react@18.2.0) + zustand: 4.4.7(@types/react@18.2.39)(react@18.2.0) transitivePeerDependencies: - '@types/react' - immer dev: false - /@reactflow/minimap@11.7.6(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): + /@reactflow/minimap@11.7.6(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-kJEtyeQkTZYViLGebVWHVUJROMAGcvejvT+iX4DqKnFb5yK8E8LWlXQpRx2FrL9gDy80mJJaciy7IxnnQKE1bg==} peerDependencies: react: '>=17' react-dom: '>=17' dependencies: - '@reactflow/core': 11.10.1(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.10.1(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) '@types/d3-selection': 3.0.10 '@types/d3-zoom': 3.0.8 classcat: 5.0.4 @@ -1174,136 +1370,136 @@ packages: d3-zoom: 3.0.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - zustand: 4.4.6(@types/react@18.2.38)(react@18.2.0) + zustand: 4.4.7(@types/react@18.2.39)(react@18.2.0) transitivePeerDependencies: - '@types/react' - immer dev: false - /@reactflow/node-resizer@2.2.6(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): + /@reactflow/node-resizer@2.2.6(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-1Xb6q97uP7hRBLpog9sRCNfnsHdDgFRGEiU+lQqGgPEAeYwl4nRjWa/sXwH6ajniKxBhGEvrdzOgEFn6CRMcpQ==} peerDependencies: react: '>=17' react-dom: '>=17' dependencies: - '@reactflow/core': 11.10.1(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.10.1(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) classcat: 5.0.4 d3-drag: 3.0.0 d3-selection: 3.0.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - zustand: 4.4.6(@types/react@18.2.38)(react@18.2.0) + zustand: 4.4.7(@types/react@18.2.39)(react@18.2.0) transitivePeerDependencies: - '@types/react' - immer dev: false - /@reactflow/node-toolbar@1.3.6(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): + /@reactflow/node-toolbar@1.3.6(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-JXDEuZ0wKjZ8z7qK2bIst0eZPzNyVEsiHL0e93EyuqT4fA9icoyE0fLq2ryNOOp7MXgId1h7LusnH6ta45F0yQ==} peerDependencies: react: '>=17' react-dom: '>=17' dependencies: - '@reactflow/core': 11.10.1(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.10.1(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) classcat: 5.0.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - zustand: 4.4.6(@types/react@18.2.38)(react@18.2.0) + zustand: 4.4.7(@types/react@18.2.39)(react@18.2.0) transitivePeerDependencies: - '@types/react' - immer dev: false - /@rollup/rollup-android-arm-eabi@4.5.1: - resolution: {integrity: sha512-YaN43wTyEBaMqLDYeze+gQ4ZrW5RbTEGtT5o1GVDkhpdNcsLTnLRcLccvwy3E9wiDKWg9RIhuoy3JQKDRBfaZA==} + /@rollup/rollup-android-arm-eabi@4.6.1: + resolution: {integrity: sha512-0WQ0ouLejaUCRsL93GD4uft3rOmB8qoQMU05Kb8CmMtMBe7XUDLAltxVZI1q6byNqEtU7N1ZX1Vw5lIpgulLQA==} cpu: [arm] os: [android] requiresBuild: true dev: false optional: true - /@rollup/rollup-android-arm64@4.5.1: - resolution: {integrity: sha512-n1bX+LCGlQVuPlCofO0zOKe1b2XkFozAVRoczT+yxWZPGnkEAKTTYVOGZz8N4sKuBnKMxDbfhUsB1uwYdup/sw==} + /@rollup/rollup-android-arm64@4.6.1: + resolution: {integrity: sha512-1TKm25Rn20vr5aTGGZqo6E4mzPicCUD79k17EgTLAsXc1zysyi4xXKACfUbwyANEPAEIxkzwue6JZ+stYzWUTA==} cpu: [arm64] os: [android] requiresBuild: true dev: false optional: true - /@rollup/rollup-darwin-arm64@4.5.1: - resolution: {integrity: sha512-QqJBumdvfBqBBmyGHlKxje+iowZwrHna7pokj/Go3dV1PJekSKfmjKrjKQ/e6ESTGhkfPNLq3VXdYLAc+UtAQw==} + /@rollup/rollup-darwin-arm64@4.6.1: + resolution: {integrity: sha512-cEXJQY/ZqMACb+nxzDeX9IPLAg7S94xouJJCNVE5BJM8JUEP4HeTF+ti3cmxWeSJo+5D+o8Tc0UAWUkfENdeyw==} cpu: [arm64] os: [darwin] requiresBuild: true dev: false optional: true - /@rollup/rollup-darwin-x64@4.5.1: - resolution: {integrity: sha512-RrkDNkR/P5AEQSPkxQPmd2ri8WTjSl0RYmuFOiEABkEY/FSg0a4riihWQGKDJ4LnV9gigWZlTMx2DtFGzUrYQw==} + /@rollup/rollup-darwin-x64@4.6.1: + resolution: {integrity: sha512-LoSU9Xu56isrkV2jLldcKspJ7sSXmZWkAxg7sW/RfF7GS4F5/v4EiqKSMCFbZtDu2Nc1gxxFdQdKwkKS4rwxNg==} cpu: [x64] os: [darwin] requiresBuild: true dev: false optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.5.1: - resolution: {integrity: sha512-ZFPxvUZmE+fkB/8D9y/SWl/XaDzNSaxd1TJUSE27XAKlRpQ2VNce/86bGd9mEUgL3qrvjJ9XTGwoX0BrJkYK/A==} + /@rollup/rollup-linux-arm-gnueabihf@4.6.1: + resolution: {integrity: sha512-EfI3hzYAy5vFNDqpXsNxXcgRDcFHUWSx5nnRSCKwXuQlI5J9dD84g2Usw81n3FLBNsGCegKGwwTVsSKK9cooSQ==} cpu: [arm] os: [linux] requiresBuild: true dev: false optional: true - /@rollup/rollup-linux-arm64-gnu@4.5.1: - resolution: {integrity: sha512-FEuAjzVIld5WVhu+M2OewLmjmbXWd3q7Zcx+Rwy4QObQCqfblriDMMS7p7+pwgjZoo9BLkP3wa9uglQXzsB9ww==} + /@rollup/rollup-linux-arm64-gnu@4.6.1: + resolution: {integrity: sha512-9lhc4UZstsegbNLhH0Zu6TqvDfmhGzuCWtcTFXY10VjLLUe4Mr0Ye2L3rrtHaDd/J5+tFMEuo5LTCSCMXWfUKw==} cpu: [arm64] os: [linux] requiresBuild: true dev: false optional: true - /@rollup/rollup-linux-arm64-musl@4.5.1: - resolution: {integrity: sha512-f5Gs8WQixqGRtI0Iq/cMqvFYmgFzMinuJO24KRfnv7Ohi/HQclwrBCYkzQu1XfLEEt3DZyvveq9HWo4bLJf1Lw==} + /@rollup/rollup-linux-arm64-musl@4.6.1: + resolution: {integrity: sha512-FfoOK1yP5ksX3wwZ4Zk1NgyGHZyuRhf99j64I5oEmirV8EFT7+OhUZEnP+x17lcP/QHJNWGsoJwrz4PJ9fBEXw==} cpu: [arm64] os: [linux] requiresBuild: true dev: false optional: true - /@rollup/rollup-linux-x64-gnu@4.5.1: - resolution: {integrity: sha512-CWPkPGrFfN2vj3mw+S7A/4ZaU3rTV7AkXUr08W9lNP+UzOvKLVf34tWCqrKrfwQ0NTk5GFqUr2XGpeR2p6R4gw==} + /@rollup/rollup-linux-x64-gnu@4.6.1: + resolution: {integrity: sha512-DNGZvZDO5YF7jN5fX8ZqmGLjZEXIJRdJEdTFMhiyXqyXubBa0WVLDWSNlQ5JR2PNgDbEV1VQowhVRUh+74D+RA==} cpu: [x64] os: [linux] requiresBuild: true dev: false optional: true - /@rollup/rollup-linux-x64-musl@4.5.1: - resolution: {integrity: sha512-ZRETMFA0uVukUC9u31Ed1nx++29073goCxZtmZARwk5aF/ltuENaeTtRVsSQzFlzdd4J6L3qUm+EW8cbGt0CKQ==} + /@rollup/rollup-linux-x64-musl@4.6.1: + resolution: {integrity: sha512-RkJVNVRM+piYy87HrKmhbexCHg3A6Z6MU0W9GHnJwBQNBeyhCJG9KDce4SAMdicQnpURggSvtbGo9xAWOfSvIQ==} cpu: [x64] os: [linux] requiresBuild: true dev: false optional: true - /@rollup/rollup-win32-arm64-msvc@4.5.1: - resolution: {integrity: sha512-ihqfNJNb2XtoZMSCPeoo0cYMgU04ksyFIoOw5S0JUVbOhafLot+KD82vpKXOurE2+9o/awrqIxku9MRR9hozHQ==} + /@rollup/rollup-win32-arm64-msvc@4.6.1: + resolution: {integrity: sha512-v2FVT6xfnnmTe3W9bJXl6r5KwJglMK/iRlkKiIFfO6ysKs0rDgz7Cwwf3tjldxQUrHL9INT/1r4VA0n9L/F1vQ==} cpu: [arm64] os: [win32] requiresBuild: true dev: false optional: true - /@rollup/rollup-win32-ia32-msvc@4.5.1: - resolution: {integrity: sha512-zK9MRpC8946lQ9ypFn4gLpdwr5a01aQ/odiIJeL9EbgZDMgbZjjT/XzTqJvDfTmnE1kHdbG20sAeNlpc91/wbg==} + /@rollup/rollup-win32-ia32-msvc@4.6.1: + resolution: {integrity: sha512-YEeOjxRyEjqcWphH9dyLbzgkF8wZSKAKUkldRY6dgNR5oKs2LZazqGB41cWJ4Iqqcy9/zqYgmzBkRoVz3Q9MLw==} cpu: [ia32] os: [win32] requiresBuild: true dev: false optional: true - /@rollup/rollup-win32-x64-msvc@4.5.1: - resolution: {integrity: sha512-5I3Nz4Sb9TYOtkRwlH0ow+BhMH2vnh38tZ4J4mggE48M/YyJyp/0sPSxhw1UeS1+oBgQ8q7maFtSeKpeRJu41Q==} + /@rollup/rollup-win32-x64-msvc@4.6.1: + resolution: {integrity: sha512-0zfTlFAIhgz8V2G8STq8toAjsYYA6eci1hnXuyOTUFnymrtJwnS6uGKiv3v5UrPZkBlamLvrLV2iiaeqCKzb0A==} cpu: [x64] os: [win32] requiresBuild: true @@ -1319,8 +1515,8 @@ packages: /@types/babel__core@7.20.5: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: - '@babel/parser': 7.23.4 - '@babel/types': 7.23.4 + '@babel/parser': 7.23.5 + '@babel/types': 7.23.5 '@types/babel__generator': 7.6.7 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.4 @@ -1329,20 +1525,20 @@ packages: /@types/babel__generator@7.6.7: resolution: {integrity: sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==} dependencies: - '@babel/types': 7.23.4 + '@babel/types': 7.23.5 dev: false /@types/babel__template@7.4.4: resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: - '@babel/parser': 7.23.4 - '@babel/types': 7.23.4 + '@babel/parser': 7.23.5 + '@babel/types': 7.23.5 dev: false /@types/babel__traverse@7.20.4: resolution: {integrity: sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==} dependencies: - '@babel/types': 7.23.4 + '@babel/types': 7.23.5 dev: false /@types/d3-array@3.2.1: @@ -1601,11 +1797,11 @@ packages: /@types/react-dom@18.2.17: resolution: {integrity: sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==} dependencies: - '@types/react': 18.2.38 + '@types/react': 18.2.39 dev: false - /@types/react@18.2.38: - resolution: {integrity: sha512-cBBXHzuPtQK6wNthuVMV6IjHAFkdl/FOPFIlkd81/Cd1+IqkHu/A+w4g43kaQQoYHik/ruaQBDL72HyCy1vuMw==} + /@types/react@18.2.39: + resolution: {integrity: sha512-Oiw+ppED6IremMInLV4HXGbfbG6GyziY3kqAwJYOR0PNbkYDmLWQA3a95EhdSmamsvbkJN96ZNN+YD+fGjzSBA==} dependencies: '@types/prop-types': 15.7.11 '@types/scheduler': 0.16.8 @@ -1634,18 +1830,18 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: false - /@vitejs/plugin-react@4.2.0(vite@5.0.2): + /@vitejs/plugin-react@4.2.0(vite@5.0.4): resolution: {integrity: sha512-+MHTH/e6H12kRp5HUkzOGqPMksezRMmW+TNzlh/QXfI8rRf6l2Z2yH/v12no1UvTwhZgEDMuQ7g7rrfMseU6FQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.2.0 || ^5.0.0 dependencies: - '@babel/core': 7.23.3 - '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.3) + '@babel/core': 7.23.5 + '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.5) '@types/babel__core': 7.20.5 react-refresh: 0.14.0 - vite: 5.0.2 + vite: 5.0.4 transitivePeerDependencies: - supports-color dev: false @@ -1731,13 +1927,13 @@ packages: hasBin: true dev: false - /astro-expressive-code@0.29.1(astro@3.6.0): - resolution: {integrity: sha512-hvu8kDMr3KD3vqAyJj6KdTDLuebsgnFQdw6V8myJRj464BUMiqPgmufvkuxLrqDCTJvfARJdwf/Q/H3Rqu3mhQ==} + /astro-expressive-code@0.29.2(astro@3.6.4): + resolution: {integrity: sha512-fVslVRplAQGaZyVkAFOM1csHqWDkhPzBhXEMEKfjHCzk8CMnl5VPD9yljx48GizwbB0EId68uIc6xO2hoVK9rQ==} peerDependencies: astro: ^3.0.0-beta dependencies: - astro: 3.6.0 - remark-expressive-code: 0.29.1 + astro: 3.6.4 + remark-expressive-code: 0.29.2 dev: false /astro-robots-txt@1.0.0: @@ -1747,21 +1943,21 @@ packages: zod: 3.22.4 dev: false - /astro@3.6.0: - resolution: {integrity: sha512-mRDzWXsaSBaN+juvunO4Ukq8HQ1WqrULlcZfKzaKEZEXvxiWmMKN9tH0onQH0EaQ7+f4nNR4VN9kYTM26uMrXQ==} + /astro@3.6.4: + resolution: {integrity: sha512-YatUyWEQ9GUC79Wc2zbovy6D6bXPW9++Z6PYs4GDamEDspUSnnzL/INB7WJqgFI0xAFk9jcUr+MZYjkdWqXYTw==} engines: {node: '>=18.14.1', npm: '>=6.14.0'} hasBin: true dependencies: '@astrojs/compiler': 2.3.2 '@astrojs/internal-helpers': 0.2.1 - '@astrojs/markdown-remark': 3.5.0(astro@3.6.0) + '@astrojs/markdown-remark': 3.5.0(astro@3.6.4) '@astrojs/telemetry': 3.0.4 - '@babel/core': 7.23.3 - '@babel/generator': 7.23.4 - '@babel/parser': 7.23.4 - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.3) - '@babel/traverse': 7.23.4 - '@babel/types': 7.23.4 + '@babel/core': 7.23.5 + '@babel/generator': 7.23.5 + '@babel/parser': 7.23.5 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.5) + '@babel/traverse': 7.23.5 + '@babel/types': 7.23.5 '@types/babel__core': 7.20.5 acorn: 8.11.2 boxen: 7.1.1 @@ -1775,7 +1971,7 @@ packages: devalue: 4.3.2 diff: 5.1.0 es-module-lexer: 1.4.1 - esbuild: 0.19.7 + esbuild: 0.19.8 estree-walker: 3.0.3 execa: 8.0.1 fast-glob: 3.3.2 @@ -1832,7 +2028,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.22.1 - caniuse-lite: 1.0.30001564 + caniuse-lite: 1.0.30001565 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -1842,7 +2038,9 @@ packages: /b4a@1.6.4: resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} + requiresBuild: true dev: false + optional: true /bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} @@ -1875,11 +2073,13 @@ packages: /bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + requiresBuild: true dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 dev: false + optional: true /bl@5.1.0: resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} @@ -1926,18 +2126,20 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001564 - electron-to-chromium: 1.4.591 + caniuse-lite: 1.0.30001565 + electron-to-chromium: 1.4.597 node-releases: 2.0.13 update-browserslist-db: 1.0.13(browserslist@4.22.1) dev: false /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + requiresBuild: true dependencies: base64-js: 1.5.1 ieee754: 1.2.1 dev: false + optional: true /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -1956,8 +2158,8 @@ packages: engines: {node: '>=14.16'} dev: false - /caniuse-lite@1.0.30001564: - resolution: {integrity: sha512-DqAOf+rhof+6GVx1y+xzbFPeOumfQnhYzVnZD6LAXijR77yPtm9mfOcqOnT3mpnJiZVT+kwLAFnRlZcIz+c6bg==} + /caniuse-lite@1.0.30001565: + resolution: {integrity: sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w==} dev: false /ccount@2.0.1: @@ -2011,7 +2213,9 @@ packages: /chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + requiresBuild: true dev: false + optional: true /ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} @@ -2040,8 +2244,8 @@ packages: restore-cursor: 4.0.0 dev: false - /cli-spinners@2.9.1: - resolution: {integrity: sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==} + /cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} dev: false @@ -2248,14 +2452,18 @@ packages: /decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} + requiresBuild: true dependencies: mimic-response: 3.1.0 dev: false + optional: true /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} + requiresBuild: true dev: false + optional: true /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} @@ -2308,8 +2516,8 @@ packages: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: false - /electron-to-chromium@1.4.591: - resolution: {integrity: sha512-vLv/P7wwAPKQoY+CVMyyI6rsTp+A14KGtPXx92oz1FY41AAqa9l6Wkizcixg0LDuJgyeo8xgNN9+9hsnGp66UA==} + /electron-to-chromium@1.4.597: + resolution: {integrity: sha512-0XOQNqHhg2YgRVRUrS4M4vWjFCFIP2ETXcXe/0KIQBjXE9Cpy+tgzzYfuq6HGai3hWq0YywtG+5XK8fyG08EjA==} dev: false /emoji-regex@10.3.0: @@ -2326,9 +2534,11 @@ packages: /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + requiresBuild: true dependencies: once: 1.4.0 dev: false + optional: true /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} @@ -2369,34 +2579,34 @@ packages: '@esbuild/win32-x64': 0.18.20 dev: false - /esbuild@0.19.7: - resolution: {integrity: sha512-6brbTZVqxhqgbpqBR5MzErImcpA0SQdoKOkcWK/U30HtQxnokIpG3TX2r0IJqbFUzqLjhU/zC1S5ndgakObVCQ==} + /esbuild@0.19.8: + resolution: {integrity: sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.19.7 - '@esbuild/android-arm64': 0.19.7 - '@esbuild/android-x64': 0.19.7 - '@esbuild/darwin-arm64': 0.19.7 - '@esbuild/darwin-x64': 0.19.7 - '@esbuild/freebsd-arm64': 0.19.7 - '@esbuild/freebsd-x64': 0.19.7 - '@esbuild/linux-arm': 0.19.7 - '@esbuild/linux-arm64': 0.19.7 - '@esbuild/linux-ia32': 0.19.7 - '@esbuild/linux-loong64': 0.19.7 - '@esbuild/linux-mips64el': 0.19.7 - '@esbuild/linux-ppc64': 0.19.7 - '@esbuild/linux-riscv64': 0.19.7 - '@esbuild/linux-s390x': 0.19.7 - '@esbuild/linux-x64': 0.19.7 - '@esbuild/netbsd-x64': 0.19.7 - '@esbuild/openbsd-x64': 0.19.7 - '@esbuild/sunos-x64': 0.19.7 - '@esbuild/win32-arm64': 0.19.7 - '@esbuild/win32-ia32': 0.19.7 - '@esbuild/win32-x64': 0.19.7 + '@esbuild/android-arm': 0.19.8 + '@esbuild/android-arm64': 0.19.8 + '@esbuild/android-x64': 0.19.8 + '@esbuild/darwin-arm64': 0.19.8 + '@esbuild/darwin-x64': 0.19.8 + '@esbuild/freebsd-arm64': 0.19.8 + '@esbuild/freebsd-x64': 0.19.8 + '@esbuild/linux-arm': 0.19.8 + '@esbuild/linux-arm64': 0.19.8 + '@esbuild/linux-ia32': 0.19.8 + '@esbuild/linux-loong64': 0.19.8 + '@esbuild/linux-mips64el': 0.19.8 + '@esbuild/linux-ppc64': 0.19.8 + '@esbuild/linux-riscv64': 0.19.8 + '@esbuild/linux-s390x': 0.19.8 + '@esbuild/linux-x64': 0.19.8 + '@esbuild/netbsd-x64': 0.19.8 + '@esbuild/openbsd-x64': 0.19.8 + '@esbuild/sunos-x64': 0.19.8 + '@esbuild/win32-arm64': 0.19.8 + '@esbuild/win32-ia32': 0.19.8 + '@esbuild/win32-x64': 0.19.8 dev: false /escalade@3.1.1: @@ -2481,15 +2691,17 @@ packages: /expand-template@2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} + requiresBuild: true dev: false + optional: true - /expressive-code@0.29.1: - resolution: {integrity: sha512-KyEkbSRz2+2gbgtYviOb8xr+QhoAfRQe1VxLAmeZ99c57KAleBpfZHU7JeHj84vputFK6Ge6P87ou9ijD1DXbw==} + /expressive-code@0.29.2: + resolution: {integrity: sha512-UwC+GjYSUbonH8gYlHS4fmh0TSdyrdDry88GdVYVUiN2EI1nh7Duu8s2cpYvFsObPIeUXsbHLWTygBO1XhXtEQ==} dependencies: - '@expressive-code/core': 0.29.1 - '@expressive-code/plugin-frames': 0.29.1 - '@expressive-code/plugin-shiki': 0.29.1 - '@expressive-code/plugin-text-markers': 0.29.1 + '@expressive-code/core': 0.29.2 + '@expressive-code/plugin-frames': 0.29.2 + '@expressive-code/plugin-shiki': 0.29.2 + '@expressive-code/plugin-text-markers': 0.29.2 dev: false /extend-shallow@2.0.1: @@ -2505,7 +2717,9 @@ packages: /fast-fifo@1.3.2: resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + requiresBuild: true dev: false + optional: true /fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} @@ -2565,7 +2779,9 @@ packages: /fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + requiresBuild: true dev: false + optional: true /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -2595,7 +2811,9 @@ packages: /github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + requiresBuild: true dev: false + optional: true /github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} @@ -2976,7 +3194,9 @@ packages: /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + requiresBuild: true dev: false + optional: true /inline-style-parser@0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} @@ -3241,8 +3461,8 @@ packages: yallist: 4.0.0 dev: false - /lucide-react@0.292.0(react@18.2.0): - resolution: {integrity: sha512-rRgUkpEHWpa5VCT66YscInCQmQuPCB1RFRzkkxMxg4b+jaL0V12E3riWWR2Sh5OIiUhCwGW/ZExuEO4Az32E6Q==} + /lucide-react@0.294.0(react@18.2.0): + resolution: {integrity: sha512-V7o0/VECSGbLHn3/1O67FUgBwWB+hmzshrgDVRJQhMh8uj5D3HBuIvhuAmQTtlupILSplwIZg5FTc4tTKMA2SA==} peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 dependencies: @@ -4114,7 +4334,9 @@ packages: /mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} + requiresBuild: true dev: false + optional: true /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -4124,11 +4346,15 @@ packages: /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + requiresBuild: true dev: false + optional: true /mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + requiresBuild: true dev: false + optional: true /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} @@ -4163,7 +4389,9 @@ packages: /napi-build-utils@1.0.2: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + requiresBuild: true dev: false + optional: true /needle@2.9.1: resolution: {integrity: sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==} @@ -4186,13 +4414,17 @@ packages: /node-abi@3.51.0: resolution: {integrity: sha512-SQkEP4hmNWjlniS5zdnfIXTk1x7Ome85RDzHlTbBtzE97Gfwz/Ipw4v/Ryk20DWIy3yCNVLVlGKApCnmvYoJbA==} engines: {node: '>=10'} + requiresBuild: true dependencies: semver: 7.5.4 dev: false + optional: true /node-addon-api@6.1.0: resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} + requiresBuild: true dev: false + optional: true /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} @@ -4261,7 +4493,7 @@ packages: dependencies: chalk: 5.3.0 cli-cursor: 4.0.0 - cli-spinners: 2.9.1 + cli-spinners: 2.9.2 is-interactive: 2.0.0 is-unicode-supported: 1.3.0 log-symbols: 5.1.0 @@ -4506,6 +4738,7 @@ packages: resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} engines: {node: '>=10'} hasBin: true + requiresBuild: true dependencies: detect-libc: 2.0.2 expand-template: 2.0.3 @@ -4520,6 +4753,7 @@ packages: tar-fs: 2.1.1 tunnel-agent: 0.6.0 dev: false + optional: true /preferred-pm@3.1.2: resolution: {integrity: sha512-nk7dKrcW8hfCZ4H6klWcdRknBOXWzNQByJ0oJyX97BOupsYD+FzLS4hflgEu/uPUEHZCuRfMxzCBsuWd7OzT8Q==} @@ -4639,10 +4873,12 @@ packages: /pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + requiresBuild: true dependencies: end-of-stream: 1.4.4 once: 1.4.0 dev: false + optional: true /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -4650,17 +4886,21 @@ packages: /queue-tick@1.0.1: resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + requiresBuild: true dev: false + optional: true /rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true + requiresBuild: true dependencies: deep-extend: 0.6.0 ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 dev: false + optional: true /react-dom@18.2.0(react@18.2.0): resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} @@ -4676,14 +4916,14 @@ packages: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: false - /react-markdown@9.0.1(@types/react@18.2.38)(react@18.2.0): + /react-markdown@9.0.1(@types/react@18.2.39)(react@18.2.0): resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==} peerDependencies: '@types/react': '>=18' react: '>=18' dependencies: '@types/hast': 3.0.3 - '@types/react': 18.2.38 + '@types/react': 18.2.39 devlop: 1.1.0 hast-util-to-jsx-runtime: 2.2.0 html-url-attributes: 3.0.0 @@ -4710,18 +4950,18 @@ packages: loose-envify: 1.4.0 dev: false - /reactflow@11.10.1(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): + /reactflow@11.10.1(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Q616fElAc5/N37tMwjuRkkgm/VgmnLLTNNCj61z5mvJxae+/VXZQMfot1K6a5LLz9G3SVKqU97PMb9Ga1PRXew==} peerDependencies: react: '>=17' react-dom: '>=17' dependencies: - '@reactflow/background': 11.3.6(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@reactflow/controls': 11.2.6(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@reactflow/core': 11.10.1(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@reactflow/minimap': 11.7.6(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@reactflow/node-resizer': 2.2.6(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@reactflow/node-toolbar': 1.3.6(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/background': 11.3.6(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/controls': 11.2.6(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.10.1(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/minimap': 11.7.6(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/node-resizer': 2.2.6(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/node-toolbar': 1.3.6(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: @@ -4808,10 +5048,10 @@ packages: - supports-color dev: false - /remark-expressive-code@0.29.1: - resolution: {integrity: sha512-iRdN3XLEFLlUNqUCeBPlLgaZROI5lAM3OK7bnwrmQ0ubXJTfV3oET6WL0c5QGijoCZzzDapNiRlRZPrNDoL+5Q==} + /remark-expressive-code@0.29.2: + resolution: {integrity: sha512-XIsrURhMOJNOUkCSp0OQ3suAZxNIS6ZkubjOxlTLyViOuVPmvRIXp36t6om9PYSwbxesorM+DNJpsla297GzQQ==} dependencies: - expressive-code: 0.29.1 + expressive-code: 0.29.2 hast-util-to-html: 8.0.4 unist-util-visit: 4.1.2 dev: false @@ -4961,23 +5201,23 @@ packages: fsevents: 2.3.3 dev: false - /rollup@4.5.1: - resolution: {integrity: sha512-0EQribZoPKpb5z1NW/QYm3XSR//Xr8BeEXU49Lc/mQmpmVVG5jPUVrpc2iptup/0WMrY9mzas0fxH+TjYvG2CA==} + /rollup@4.6.1: + resolution: {integrity: sha512-jZHaZotEHQaHLgKr8JnQiDT1rmatjgKlMekyksz+yk9jt/8z9quNjnKNRoaM0wd9DC2QKXjmWWuDYtM3jfF8pQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.5.1 - '@rollup/rollup-android-arm64': 4.5.1 - '@rollup/rollup-darwin-arm64': 4.5.1 - '@rollup/rollup-darwin-x64': 4.5.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.5.1 - '@rollup/rollup-linux-arm64-gnu': 4.5.1 - '@rollup/rollup-linux-arm64-musl': 4.5.1 - '@rollup/rollup-linux-x64-gnu': 4.5.1 - '@rollup/rollup-linux-x64-musl': 4.5.1 - '@rollup/rollup-win32-arm64-msvc': 4.5.1 - '@rollup/rollup-win32-ia32-msvc': 4.5.1 - '@rollup/rollup-win32-x64-msvc': 4.5.1 + '@rollup/rollup-android-arm-eabi': 4.6.1 + '@rollup/rollup-android-arm64': 4.6.1 + '@rollup/rollup-darwin-arm64': 4.6.1 + '@rollup/rollup-darwin-x64': 4.6.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.6.1 + '@rollup/rollup-linux-arm64-gnu': 4.6.1 + '@rollup/rollup-linux-arm64-musl': 4.6.1 + '@rollup/rollup-linux-x64-gnu': 4.6.1 + '@rollup/rollup-linux-x64-musl': 4.6.1 + '@rollup/rollup-win32-arm64-msvc': 4.6.1 + '@rollup/rollup-win32-ia32-msvc': 4.6.1 + '@rollup/rollup-win32-x64-msvc': 4.6.1 fsevents: 2.3.3 dev: false @@ -5061,6 +5301,37 @@ packages: tar-fs: 3.0.4 tunnel-agent: 0.6.0 dev: false + optional: true + + /sharp@0.33.0: + resolution: {integrity: sha512-99DZKudjm/Rmz+M0/26t4DKpXyywAOJaayGS9boEn7FvgtG0RYBi46uPE2c+obcJRtA3AZa0QwJot63gJQ1F0Q==} + engines: {libvips: '>=8.15.0', node: ^18.17.0 || ^20.3.0 || >=21.0.0} + requiresBuild: true + dependencies: + color: 4.2.3 + detect-libc: 2.0.2 + semver: 7.5.4 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.0 + '@img/sharp-darwin-x64': 0.33.0 + '@img/sharp-libvips-darwin-arm64': 1.0.0 + '@img/sharp-libvips-darwin-x64': 1.0.0 + '@img/sharp-libvips-linux-arm': 1.0.0 + '@img/sharp-libvips-linux-arm64': 1.0.0 + '@img/sharp-libvips-linux-s390x': 1.0.0 + '@img/sharp-libvips-linux-x64': 1.0.0 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.0 + '@img/sharp-libvips-linuxmusl-x64': 1.0.0 + '@img/sharp-linux-arm': 0.33.0 + '@img/sharp-linux-arm64': 0.33.0 + '@img/sharp-linux-s390x': 0.33.0 + '@img/sharp-linux-x64': 0.33.0 + '@img/sharp-linuxmusl-arm64': 0.33.0 + '@img/sharp-linuxmusl-x64': 0.33.0 + '@img/sharp-wasm32': 0.33.0 + '@img/sharp-win32-ia32': 0.33.0 + '@img/sharp-win32-x64': 0.33.0 + dev: false /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} @@ -5100,15 +5371,19 @@ packages: /simple-concat@1.0.1: resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + requiresBuild: true dev: false + optional: true /simple-get@4.0.1: resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + requiresBuild: true dependencies: decompress-response: 6.0.0 once: 1.4.0 simple-concat: 1.0.1 dev: false + optional: true /simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} @@ -5166,10 +5441,12 @@ packages: /streamx@2.15.5: resolution: {integrity: sha512-9thPGMkKC2GctCzyCUjME3yR03x2xNo0GPKGkRw2UMYN+gqWa9uqpyNWhmsNCutU5zHmkUum0LsCRQTXUgUCAg==} + requiresBuild: true dependencies: fast-fifo: 1.3.2 queue-tick: 1.0.1 dev: false + optional: true /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -5243,7 +5520,9 @@ packages: /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} + requiresBuild: true dev: false + optional: true /style-to-object@0.4.4: resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} @@ -5316,24 +5595,29 @@ packages: /tar-fs@2.1.1: resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + requiresBuild: true dependencies: chownr: 1.1.4 mkdirp-classic: 0.5.3 pump: 3.0.0 tar-stream: 2.2.0 dev: false + optional: true /tar-fs@3.0.4: resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==} + requiresBuild: true dependencies: mkdirp-classic: 0.5.3 pump: 3.0.0 tar-stream: 3.1.6 dev: false + optional: true /tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} + requiresBuild: true dependencies: bl: 4.1.0 end-of-stream: 1.4.4 @@ -5341,14 +5625,17 @@ packages: inherits: 2.0.4 readable-stream: 3.6.2 dev: false + optional: true /tar-stream@3.1.6: resolution: {integrity: sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==} + requiresBuild: true dependencies: b4a: 1.6.4 fast-fifo: 1.3.2 streamx: 2.15.5 dev: false + optional: true /thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} @@ -5398,11 +5685,19 @@ packages: optional: true dev: false + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + requiresBuild: true + dev: false + optional: true + /tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + requiresBuild: true dependencies: safe-buffer: 5.2.1 dev: false + optional: true /type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} @@ -5680,8 +5975,8 @@ packages: fsevents: 2.3.3 dev: false - /vite@5.0.2: - resolution: {integrity: sha512-6CCq1CAJCNM1ya2ZZA7+jS2KgnhbzvxakmlIjN24cF/PXhRMzpM/z8QgsVJA/Dm5fWUWnVEsmtBoMhmerPxT0g==} + /vite@5.0.4: + resolution: {integrity: sha512-RzAr8LSvM8lmhB4tQ5OPcBhpjOZRZjuxv9zO5UcxeoY2bd3kP3Ticd40Qma9/BqZ8JS96Ll/jeBX9u+LJZrhVg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -5708,9 +6003,9 @@ packages: terser: optional: true dependencies: - esbuild: 0.19.7 + esbuild: 0.19.8 postcss: 8.4.31 - rollup: 4.5.1 + rollup: 4.6.1 optionalDependencies: fsevents: 2.3.3 dev: false @@ -5819,8 +6114,8 @@ packages: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} dev: false - /zustand@4.4.6(@types/react@18.2.38)(react@18.2.0): - resolution: {integrity: sha512-Rb16eW55gqL4W2XZpJh0fnrATxYEG3Apl2gfHTyDSE965x/zxslTikpNch0JgNjJA9zK6gEFW8Fl6d1rTZaqgg==} + /zustand@4.4.7(@types/react@18.2.39)(react@18.2.0): + resolution: {integrity: sha512-QFJWJMdlETcI69paJwhSMJz7PPWjVP8Sjhclxmxmxv/RYI7ZOvR5BHX+ktH0we9gTWQMxcne8q1OY8xxz604gw==} engines: {node: '>=12.7.0'} peerDependencies: '@types/react': '>=16.8' @@ -5834,7 +6129,7 @@ packages: react: optional: true dependencies: - '@types/react': 18.2.38 + '@types/react': 18.2.39 react: 18.2.0 use-sync-external-store: 1.2.0(react@18.2.0) dev: false diff --git a/docs/src/content/docs/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510.mdx b/docs/src/content/docs/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510.mdx new file mode 100644 index 00000000..d06cd136 --- /dev/null +++ b/docs/src/content/docs/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510.mdx @@ -0,0 +1,43 @@ +--- +title: CONNECT_DMM7510 +description: "Open a VISA connection to a Keithley DMM7510." +slug: blocks/hardware/multimeters/keithley/dmm7510/connect-dmm7510 +--- + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} + +import block_data from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/block_data.json"; +import PythonDocsDisplay from "@/components/PythonDocsDisplay.astro"; + + +
+Python Code + +import pythonCode from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/CONNECT_DMM7510.py?raw"; + +import { Code } from 'astro:components'; + + + +[Find this Flojoy Block on GitHub](https://github.com/flojoy-ai/blocks/blob/main/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/CONNECT_DMM7510.py) + +
+ +## Example + +import GetHelpWidget from "@/components/GetHelpWidget.astro"; + + + +import app from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/app.json"; +import AppDisplay from "@/components/AppDisplay.tsx"; + + + +import Example from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/CONNECT_DMM7510/example.md"; + + + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} diff --git a/docs/src/content/docs/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITIZED_TIME_DMM7510.mdx b/docs/src/content/docs/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITIZED_TIME_DMM7510.mdx new file mode 100644 index 00000000..c1f48e76 --- /dev/null +++ b/docs/src/content/docs/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITIZED_TIME_DMM7510.mdx @@ -0,0 +1,43 @@ +--- +title: DIGITIZED_TIME_DMM7510 +description: "Measures digitized data vs time." +slug: blocks/hardware/multimeters/keithley/dmm7510/digitized-time-dmm7510 +--- + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} + +import block_data from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITIZED_TIME_DMM7510/block_data.json"; +import PythonDocsDisplay from "@/components/PythonDocsDisplay.astro"; + + +
+Python Code + +import pythonCode from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITIZED_TIME_DMM7510/DIGITIZED_TIME_DMM7510.py?raw"; + +import { Code } from 'astro:components'; + + + +[Find this Flojoy Block on GitHub](https://github.com/flojoy-ai/blocks/blob/main/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITIZED_TIME_DMM7510/DIGITIZED_TIME_DMM7510.py) + +
+ +## Example + +import GetHelpWidget from "@/components/GetHelpWidget.astro"; + + + +import app from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITIZED_TIME_DMM7510/app.json"; +import AppDisplay from "@/components/AppDisplay.tsx"; + + + +import Example from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITIZED_TIME_DMM7510/example.md"; + + + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} diff --git a/docs/src/content/docs/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510.mdx b/docs/src/content/docs/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510.mdx new file mode 100644 index 00000000..97709013 --- /dev/null +++ b/docs/src/content/docs/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510.mdx @@ -0,0 +1,43 @@ +--- +title: DIGITS_DMM7510 +description: "Changes the number of digits for measurements for the DMM7510." +slug: blocks/hardware/multimeters/keithley/dmm7510/digits-dmm7510 +--- + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} + +import block_data from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/block_data.json"; +import PythonDocsDisplay from "@/components/PythonDocsDisplay.astro"; + + +
+Python Code + +import pythonCode from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/DIGITS_DMM7510.py?raw"; + +import { Code } from 'astro:components'; + + + +[Find this Flojoy Block on GitHub](https://github.com/flojoy-ai/blocks/blob/main/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/DIGITS_DMM7510.py) + +
+ +## Example + +import GetHelpWidget from "@/components/GetHelpWidget.astro"; + + + +import app from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/app.json"; +import AppDisplay from "@/components/AppDisplay.tsx"; + + + +import Example from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/DIGITS_DMM7510/example.md"; + + + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} diff --git a/docs/src/content/docs/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510.mdx b/docs/src/content/docs/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510.mdx new file mode 100644 index 00000000..c0fcefe4 --- /dev/null +++ b/docs/src/content/docs/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510.mdx @@ -0,0 +1,43 @@ +--- +title: FUNCTION_DMM7510 +description: "Changes the measurement function for the DMM7510." +slug: blocks/hardware/multimeters/keithley/dmm7510/function-dmm7510 +--- + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} + +import block_data from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/block_data.json"; +import PythonDocsDisplay from "@/components/PythonDocsDisplay.astro"; + + +
+Python Code + +import pythonCode from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/FUNCTION_DMM7510.py?raw"; + +import { Code } from 'astro:components'; + + + +[Find this Flojoy Block on GitHub](https://github.com/flojoy-ai/blocks/blob/main/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/FUNCTION_DMM7510.py) + +
+ +## Example + +import GetHelpWidget from "@/components/GetHelpWidget.astro"; + + + +import app from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/app.json"; +import AppDisplay from "@/components/AppDisplay.tsx"; + + + +import Example from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/FUNCTION_DMM7510/example.md"; + + + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} diff --git a/docs/src/content/docs/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510.mdx b/docs/src/content/docs/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510.mdx new file mode 100644 index 00000000..25777546 --- /dev/null +++ b/docs/src/content/docs/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510.mdx @@ -0,0 +1,43 @@ +--- +title: MEASUREMENT_FILTER_DMM7510 +description: "Changes the measurement filter settings for the DMM7510." +slug: blocks/hardware/multimeters/keithley/dmm7510/measurement-filter-dmm7510 +--- + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} + +import block_data from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/block_data.json"; +import PythonDocsDisplay from "@/components/PythonDocsDisplay.astro"; + + +
+Python Code + +import pythonCode from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/MEASUREMENT_FILTER_DMM7510.py?raw"; + +import { Code } from 'astro:components'; + + + +[Find this Flojoy Block on GitHub](https://github.com/flojoy-ai/blocks/blob/main/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/MEASUREMENT_FILTER_DMM7510.py) + +
+ +## Example + +import GetHelpWidget from "@/components/GetHelpWidget.astro"; + + + +import app from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/app.json"; +import AppDisplay from "@/components/AppDisplay.tsx"; + + + +import Example from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_FILTER_DMM7510/example.md"; + + + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} diff --git a/docs/src/content/docs/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510.mdx b/docs/src/content/docs/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510.mdx new file mode 100644 index 00000000..52e32ef0 --- /dev/null +++ b/docs/src/content/docs/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510.mdx @@ -0,0 +1,43 @@ +--- +title: MEASUREMENT_PARAMS_DMM7510 +description: "Changes the measurement settings for the DMM7510." +slug: blocks/hardware/multimeters/keithley/dmm7510/measurement-params-dmm7510 +--- + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} + +import block_data from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/block_data.json"; +import PythonDocsDisplay from "@/components/PythonDocsDisplay.astro"; + + +
+Python Code + +import pythonCode from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/MEASUREMENT_PARAMS_DMM7510.py?raw"; + +import { Code } from 'astro:components'; + + + +[Find this Flojoy Block on GitHub](https://github.com/flojoy-ai/blocks/blob/main/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/MEASUREMENT_PARAMS_DMM7510.py) + +
+ +## Example + +import GetHelpWidget from "@/components/GetHelpWidget.astro"; + + + +import app from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/app.json"; +import AppDisplay from "@/components/AppDisplay.tsx"; + + + +import Example from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/MEASUREMENT_PARAMS_DMM7510/example.md"; + + + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} diff --git a/docs/src/content/docs/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510.mdx b/docs/src/content/docs/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510.mdx new file mode 100644 index 00000000..92823f19 --- /dev/null +++ b/docs/src/content/docs/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510.mdx @@ -0,0 +1,43 @@ +--- +title: READ_MEASUREMENT_DMM7510 +description: "Reads a single measurement from the DMM7510." +slug: blocks/hardware/multimeters/keithley/dmm7510/read-measurement-dmm7510 +--- + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} + +import block_data from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/block_data.json"; +import PythonDocsDisplay from "@/components/PythonDocsDisplay.astro"; + + +
+Python Code + +import pythonCode from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/READ_MEASUREMENT_DMM7510.py?raw"; + +import { Code } from 'astro:components'; + + + +[Find this Flojoy Block on GitHub](https://github.com/flojoy-ai/blocks/blob/main/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/READ_MEASUREMENT_DMM7510.py) + +
+ +## Example + +import GetHelpWidget from "@/components/GetHelpWidget.astro"; + + + +import app from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/app.json"; +import AppDisplay from "@/components/AppDisplay.tsx"; + + + +import Example from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/READ_MEASUREMENT_DMM7510/example.md"; + + + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} diff --git a/docs/src/content/docs/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510.mdx b/docs/src/content/docs/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510.mdx new file mode 100644 index 00000000..9bc21e68 --- /dev/null +++ b/docs/src/content/docs/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510.mdx @@ -0,0 +1,43 @@ +--- +title: RESET_DMM7510 +description: "Resets the DMM7510 and clears buffers." +slug: blocks/hardware/multimeters/keithley/dmm7510/reset-dmm7510 +--- + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} + +import block_data from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/block_data.json"; +import PythonDocsDisplay from "@/components/PythonDocsDisplay.astro"; + + +
+Python Code + +import pythonCode from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/RESET_DMM7510.py?raw"; + +import { Code } from 'astro:components'; + + + +[Find this Flojoy Block on GitHub](https://github.com/flojoy-ai/blocks/blob/main/blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/RESET_DMM7510.py) + +
+ +## Example + +import GetHelpWidget from "@/components/GetHelpWidget.astro"; + + + +import app from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/app.json"; +import AppDisplay from "@/components/AppDisplay.tsx"; + + + +import Example from "@blocks/HARDWARE/MULTIMETERS/KEITHLEY/DMM7510/RESET_DMM7510/example.md"; + + + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} diff --git a/docs/src/content/docs/blocks/HARDWARE/PROTOCOLS/GPIB/PROLOGIX/overview.mdx b/docs/src/content/docs/blocks/HARDWARE/PROTOCOLS/GPIB/PROLOGIX/overview.mdx new file mode 100644 index 00000000..c562f6ac --- /dev/null +++ b/docs/src/content/docs/blocks/HARDWARE/PROTOCOLS/GPIB/PROLOGIX/overview.mdx @@ -0,0 +1,18 @@ +--- +title: Prologix Overview +description: "Welcome to Flojoy's Prologix Blocks page." +slug: blocks/hardware/protocols/gpib/prologix +sidebar: + order: 1 +--- + +Coming soon... + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} + +import BlockCategory from "@/components/BlockCategory.astro"; + + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} diff --git a/docs/src/content/docs/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450.mdx b/docs/src/content/docs/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450.mdx new file mode 100644 index 00000000..9b276ce6 --- /dev/null +++ b/docs/src/content/docs/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450.mdx @@ -0,0 +1,43 @@ +--- +title: BEEP_2450 +description: "Causes the 2450 to beep audibly." +slug: blocks/hardware/sourcemeters/keithley/2450/beep-2450 +--- + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} + +import block_data from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/block_data.json"; +import PythonDocsDisplay from "@/components/PythonDocsDisplay.astro"; + + +
+Python Code + +import pythonCode from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/BEEP_2450.py?raw"; + +import { Code } from 'astro:components'; + + + +[Find this Flojoy Block on GitHub](https://github.com/flojoy-ai/blocks/blob/main/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/BEEP_2450.py) + +
+ +## Example + +import GetHelpWidget from "@/components/GetHelpWidget.astro"; + + + +import app from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/app.json"; +import AppDisplay from "@/components/AppDisplay.tsx"; + + + +import Example from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/BEEP_2450/example.md"; + + + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} diff --git a/docs/src/content/docs/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450.mdx b/docs/src/content/docs/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450.mdx new file mode 100644 index 00000000..bb6e8704 --- /dev/null +++ b/docs/src/content/docs/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450.mdx @@ -0,0 +1,43 @@ +--- +title: CONNECT_2450 +description: "Open a VISA connection to an Keithley 2450 SourceMeter." +slug: blocks/hardware/sourcemeters/keithley/2450/connect-2450 +--- + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} + +import block_data from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/block_data.json"; +import PythonDocsDisplay from "@/components/PythonDocsDisplay.astro"; + + +
+Python Code + +import pythonCode from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/CONNECT_2450.py?raw"; + +import { Code } from 'astro:components'; + + + +[Find this Flojoy Block on GitHub](https://github.com/flojoy-ai/blocks/blob/main/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/CONNECT_2450.py) + +
+ +## Example + +import GetHelpWidget from "@/components/GetHelpWidget.astro"; + + + +import app from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/app.json"; +import AppDisplay from "@/components/AppDisplay.tsx"; + + + +import Example from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/CONNECT_2450/example.md"; + + + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} diff --git a/docs/src/content/docs/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450.mdx b/docs/src/content/docs/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450.mdx new file mode 100644 index 00000000..1250da70 --- /dev/null +++ b/docs/src/content/docs/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450.mdx @@ -0,0 +1,43 @@ +--- +title: IV_SWEEP_2450 +description: "Sweeps current or voltage and measures the opposite for the 2450." +slug: blocks/hardware/sourcemeters/keithley/2450/iv-sweep-2450 +--- + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} + +import block_data from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/block_data.json"; +import PythonDocsDisplay from "@/components/PythonDocsDisplay.astro"; + + +
+Python Code + +import pythonCode from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/IV_SWEEP_2450.py?raw"; + +import { Code } from 'astro:components'; + + + +[Find this Flojoy Block on GitHub](https://github.com/flojoy-ai/blocks/blob/main/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/IV_SWEEP_2450.py) + +
+ +## Example + +import GetHelpWidget from "@/components/GetHelpWidget.astro"; + + + +import app from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/app.json"; +import AppDisplay from "@/components/AppDisplay.tsx"; + + + +import Example from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/IV_SWEEP_2450/example.md"; + + + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} diff --git a/docs/src/content/docs/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450.mdx b/docs/src/content/docs/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450.mdx new file mode 100644 index 00000000..0bf4d1bc --- /dev/null +++ b/docs/src/content/docs/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450.mdx @@ -0,0 +1,43 @@ +--- +title: MEASURE_READ_2450 +description: "Returns the measurement reading from the 2450." +slug: blocks/hardware/sourcemeters/keithley/2450/measure-read-2450 +--- + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} + +import block_data from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/block_data.json"; +import PythonDocsDisplay from "@/components/PythonDocsDisplay.astro"; + + +
+Python Code + +import pythonCode from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/MEASURE_READ_2450.py?raw"; + +import { Code } from 'astro:components'; + + + +[Find this Flojoy Block on GitHub](https://github.com/flojoy-ai/blocks/blob/main/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/MEASURE_READ_2450.py) + +
+ +## Example + +import GetHelpWidget from "@/components/GetHelpWidget.astro"; + + + +import app from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/app.json"; +import AppDisplay from "@/components/AppDisplay.tsx"; + + + +import Example from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_READ_2450/example.md"; + + + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} diff --git a/docs/src/content/docs/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450.mdx b/docs/src/content/docs/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450.mdx new file mode 100644 index 00000000..df1443a8 --- /dev/null +++ b/docs/src/content/docs/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450.mdx @@ -0,0 +1,43 @@ +--- +title: MEASURE_SETTINGS_2450 +description: "Changes the measurement settings for the 2450." +slug: blocks/hardware/sourcemeters/keithley/2450/measure-settings-2450 +--- + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} + +import block_data from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/block_data.json"; +import PythonDocsDisplay from "@/components/PythonDocsDisplay.astro"; + + +
+Python Code + +import pythonCode from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/MEASURE_SETTINGS_2450.py?raw"; + +import { Code } from 'astro:components'; + + + +[Find this Flojoy Block on GitHub](https://github.com/flojoy-ai/blocks/blob/main/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/MEASURE_SETTINGS_2450.py) + +
+ +## Example + +import GetHelpWidget from "@/components/GetHelpWidget.astro"; + + + +import app from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/app.json"; +import AppDisplay from "@/components/AppDisplay.tsx"; + + + +import Example from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/MEASURE_SETTINGS_2450/example.md"; + + + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} diff --git a/docs/src/content/docs/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450.mdx b/docs/src/content/docs/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450.mdx new file mode 100644 index 00000000..47eef35a --- /dev/null +++ b/docs/src/content/docs/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450.mdx @@ -0,0 +1,43 @@ +--- +title: OUTPUT_2450 +description: "Turns the source output on or off." +slug: blocks/hardware/sourcemeters/keithley/2450/output-2450 +--- + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} + +import block_data from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/block_data.json"; +import PythonDocsDisplay from "@/components/PythonDocsDisplay.astro"; + + +
+Python Code + +import pythonCode from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/OUTPUT_2450.py?raw"; + +import { Code } from 'astro:components'; + + + +[Find this Flojoy Block on GitHub](https://github.com/flojoy-ai/blocks/blob/main/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/OUTPUT_2450.py) + +
+ +## Example + +import GetHelpWidget from "@/components/GetHelpWidget.astro"; + + + +import app from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/app.json"; +import AppDisplay from "@/components/AppDisplay.tsx"; + + + +import Example from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/OUTPUT_2450/example.md"; + + + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} diff --git a/docs/src/content/docs/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450.mdx b/docs/src/content/docs/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450.mdx new file mode 100644 index 00000000..bb0b3f9c --- /dev/null +++ b/docs/src/content/docs/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450.mdx @@ -0,0 +1,43 @@ +--- +title: RESET_2450 +description: "Resets the 2450 and clears buffers." +slug: blocks/hardware/sourcemeters/keithley/2450/reset-2450 +--- + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} + +import block_data from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/block_data.json"; +import PythonDocsDisplay from "@/components/PythonDocsDisplay.astro"; + + +
+Python Code + +import pythonCode from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/RESET_2450.py?raw"; + +import { Code } from 'astro:components'; + + + +[Find this Flojoy Block on GitHub](https://github.com/flojoy-ai/blocks/blob/main/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/RESET_2450.py) + +
+ +## Example + +import GetHelpWidget from "@/components/GetHelpWidget.astro"; + + + +import app from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/app.json"; +import AppDisplay from "@/components/AppDisplay.tsx"; + + + +import Example from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/RESET_2450/example.md"; + + + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} diff --git a/docs/src/content/docs/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450.mdx b/docs/src/content/docs/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450.mdx new file mode 100644 index 00000000..1a2f9544 --- /dev/null +++ b/docs/src/content/docs/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450.mdx @@ -0,0 +1,43 @@ +--- +title: SOURCE_2450 +description: "Set the source output settings." +slug: blocks/hardware/sourcemeters/keithley/2450/source-2450 +--- + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} + +import block_data from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/block_data.json"; +import PythonDocsDisplay from "@/components/PythonDocsDisplay.astro"; + + +
+Python Code + +import pythonCode from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/SOURCE_2450.py?raw"; + +import { Code } from 'astro:components'; + + + +[Find this Flojoy Block on GitHub](https://github.com/flojoy-ai/blocks/blob/main/blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/SOURCE_2450.py) + +
+ +## Example + +import GetHelpWidget from "@/components/GetHelpWidget.astro"; + + + +import app from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/app.json"; +import AppDisplay from "@/components/AppDisplay.tsx"; + + + +import Example from "@blocks/HARDWARE/SOURCEMETERS/KEITHLEY/2450/SOURCE_2450/example.md"; + + + +{/* DO NOT EDIT THIS FILE! IT IS BEING AUTO GENERATED */} +{/* PLEASE REFER TO THE CONTRIBUTION GUIDE ON THE DOCS PAGE */} diff --git a/docs/src/content/docs/blocks/HARDWARE/overview.mdx b/docs/src/content/docs/blocks/HARDWARE/overview.mdx index 1ad0f2d2..3a0ccd25 100644 --- a/docs/src/content/docs/blocks/HARDWARE/overview.mdx +++ b/docs/src/content/docs/blocks/HARDWARE/overview.mdx @@ -54,6 +54,11 @@ import BlockCategory from "@/components/BlockCategory.astro"; ### MULTIMETERS +#### KEITHLEY +##### DMM7510 + + + #### NI ##### USB_4065 @@ -125,6 +130,9 @@ import BlockCategory from "@/components/BlockCategory.astro"; ### SOURCEMETERS #### KEITHLEY +##### 2450 + + ##### 24XX diff --git a/docs/src/content/docs/studio/installation.mdx b/docs/src/content/docs/studio/installation.mdx index 3dbba832..0c1e3a9b 100644 --- a/docs/src/content/docs/studio/installation.mdx +++ b/docs/src/content/docs/studio/installation.mdx @@ -14,20 +14,14 @@ import packageJSON from "@root/package.json"; There are **2 steps** to install Flojoy Studio: -## 1. Install Conda/Miniconda +## 1. Install Python ~3.11 -If you haven't yet installed Conda/Miniconda on your machine, please install it -first. We are using it to manage the underlying Python environment for all the -magic behind Flojoy Studio. We also recommend installing Miniconda since it is -more lightweight. - -You can find a detailed instruction [here](https://docs.conda.io/projects/miniconda/en/latest/miniconda-install.html). -And if you are comfortable of using command line, you can also find a quick -command line installation instruction [here](https://docs.conda.io/projects/miniconda/en/latest/index.html#quick-command-line-install). +If you haven't yet installed Python ~3.11 on your machine, please install it +first. You can install Python v3.11 from official website [here](https://www.python.org/downloads/release/python-3116) ## 2. Install Flojoy Studio -Once you have Conda/Miniconda installed on your machine, you are ready to install +Once you have Python ~3.11 installed on your machine, you are ready to install Flojoy Studio. Simply choose the right installer for your machine and follow the instructions.