From dc11fba514b10ea9b3b284dcfaadf8dea4b86bbf Mon Sep 17 00:00:00 2001 From: jackparmer Date: Tue, 3 Oct 2023 04:00:19 +0000 Subject: [PATCH 1/4] update: Create example.md --- .../DATACONTAINER_TYPE/DATACONTAINER_TYPE.md | 57 ++ .../a1-[autogen]/docstring.txt | 8 + .../a1-[autogen]/python_code.txt | 10 + .../DATACONTAINER_TYPE/appendix/hardware.md | 1 + .../DATACONTAINER_TYPE/appendix/media.md | 1 + .../DATACONTAINER_TYPE/appendix/notes.md | 1 + .../DATACONTAINER_TYPE/examples/EX1/app.json | 701 +++++++++++++ .../examples/EX1/example.md | 0 .../DC_CONTENT_TYPE/DC_CONTENT_TYPE.md | 57 ++ .../a1-[autogen]/docstring.txt | 8 + .../a1-[autogen]/python_code.txt | 38 + .../DC_CONTENT_TYPE/appendix/hardware.md | 1 + .../DC_CONTENT_TYPE/appendix/media.md | 1 + .../DC_CONTENT_TYPE/appendix/notes.md | 1 + .../DC_CONTENT_TYPE/examples/EX1/app.json | 701 +++++++++++++ .../DC_CONTENT_TYPE/examples/EX1/example.md | 0 .../PRINT_DATACONTAINER.md | 57 ++ .../a1-[autogen]/docstring.txt | 8 + .../a1-[autogen]/python_code.txt | 10 + .../PRINT_DATACONTAINER/appendix/hardware.md | 1 + .../PRINT_DATACONTAINER/appendix/media.md | 1 + .../PRINT_DATACONTAINER/appendix/notes.md | 1 + .../PRINT_DATACONTAINER/examples/EX1/app.json | 701 +++++++++++++ .../examples/EX1/example.md | 0 .../SIMULATIONS/POPULATE/POPULATE.md | 57 ++ .../POPULATE/a1-[autogen]/docstring.txt | 27 + .../POPULATE/a1-[autogen]/python_code.txt | 58 ++ .../SIMULATIONS/POPULATE/appendix/hardware.md | 1 + .../SIMULATIONS/POPULATE/appendix/media.md | 1 + .../SIMULATIONS/POPULATE/appendix/notes.md | 1 + .../POPULATE/examples/EX1/app.json | 444 ++++++++ .../POPULATE/examples/EX1/example.md | 6 + .../RAND/a1-[autogen]/docstring.txt | 54 +- .../RAND/a1-[autogen]/python_code.txt | 32 +- .../SIMULATIONS/RAND/examples/EX1/app.json | 341 ++++--- .../UNIX_TIMESTAMP/UNIX_TIMESTAMP.md | 57 ++ .../UNIX_TIMESTAMP/a1-[autogen]/docstring.txt | 17 + .../a1-[autogen]/python_code.txt | 22 + .../UNIX_TIMESTAMP/appendix/hardware.md | 1 + .../UNIX_TIMESTAMP/appendix/media.md | 1 + .../UNIX_TIMESTAMP/appendix/notes.md | 1 + .../UNIX_TIMESTAMP/examples/EX1/app.json | 763 ++++++++++++++ .../UNIX_TIMESTAMP/examples/EX1/example.md | 1 + .../AC_CURRENT_USB4065/AC_CURRENT_USB4065.md | 57 ++ .../a1-[autogen]/docstring.txt | 28 + .../a1-[autogen]/python_code.txt | 27 + .../AC_CURRENT_USB4065/appendix/hardware.md | 1 + .../AC_CURRENT_USB4065/appendix/media.md | 1 + .../AC_CURRENT_USB4065/appendix/notes.md | 1 + .../AC_CURRENT_USB4065/examples/EX1/app.json | 454 +++++++++ .../examples/EX1/example.md | 0 .../AC_VOLTAGE_USB4065/AC_VOLTAGE_USB4065.md | 57 ++ .../a1-[autogen]/docstring.txt | 28 + .../a1-[autogen]/python_code.txt | 27 + .../AC_VOLTAGE_USB4065/appendix/hardware.md | 1 + .../AC_VOLTAGE_USB4065/appendix/media.md | 1 + .../AC_VOLTAGE_USB4065/appendix/notes.md | 1 + .../AC_VOLTAGE_USB4065/examples/EX1/app.json | 454 +++++++++ .../examples/EX1/example.md | 0 .../CONNECTION_USB4065/CONNECTION_USB4065.md | 57 ++ .../a1-[autogen]/docstring.txt | 11 + .../a1-[autogen]/python_code.txt | 17 + .../CONNECTION_USB4065/appendix/hardware.md | 1 + .../CONNECTION_USB4065/appendix/media.md | 1 + .../CONNECTION_USB4065/appendix/notes.md | 1 + .../CONNECTION_USB4065/examples/EX1/app.json | 266 +++++ .../examples/EX1/example.md | 0 .../DC_CURRENT_USB4065/DC_CURRENT_USB4065.md | 57 ++ .../a1-[autogen]/docstring.txt | 28 + .../a1-[autogen]/python_code.txt | 27 + .../DC_CURRENT_USB4065/appendix/hardware.md | 1 + .../DC_CURRENT_USB4065/appendix/media.md | 1 + .../DC_CURRENT_USB4065/appendix/notes.md | 1 + .../DC_CURRENT_USB4065/examples/EX1/app.json | 456 +++++++++ .../examples/EX1/example.md | 0 .../DC_VOLTAGE_USB4065/DC_VOLTAGE_USB4065.md | 57 ++ .../a1-[autogen]/docstring.txt | 28 + .../a1-[autogen]/python_code.txt | 27 + .../DC_VOLTAGE_USB4065/appendix/hardware.md | 1 + .../DC_VOLTAGE_USB4065/appendix/media.md | 1 + .../DC_VOLTAGE_USB4065/appendix/notes.md | 1 + .../DC_VOLTAGE_USB4065/examples/EX1/app.json | 456 +++++++++ .../examples/EX1/example.md | 0 .../BASIC/DIODE_USB4065/DIODE_USB4065.md | 57 ++ .../DIODE_USB4065/a1-[autogen]/docstring.txt | 28 + .../a1-[autogen]/python_code.txt | 27 + .../BASIC/DIODE_USB4065/appendix/hardware.md | 1 + .../BASIC/DIODE_USB4065/appendix/media.md | 1 + .../BASIC/DIODE_USB4065/appendix/notes.md | 1 + .../BASIC/DIODE_USB4065/examples/EX1/app.json | 594 +++++++++++ .../DIODE_USB4065/examples/EX1/example.md | 0 .../RESISTANCE_USB4065/RESISTANCE_USB4065.md | 57 ++ .../a1-[autogen]/docstring.txt | 31 + .../a1-[autogen]/python_code.txt | 27 + .../RESISTANCE_USB4065/appendix/hardware.md | 1 + .../RESISTANCE_USB4065/appendix/media.md | 1 + .../RESISTANCE_USB4065/appendix/notes.md | 1 + .../RESISTANCE_USB4065/examples/EX1/app.json | 266 +++++ .../examples/EX1/example.md | 0 docs/nodes/IO/PROTOCOLS/SCPI/IDN/IDN.md | 57 ++ .../SCPI/IDN/a1-[autogen]/docstring.txt | 16 + .../SCPI/IDN/a1-[autogen]/python_code.txt | 19 + .../PROTOCOLS/SCPI/IDN/appendix/hardware.md | 1 + .../IO/PROTOCOLS/SCPI/IDN/appendix/media.md | 1 + .../IO/PROTOCOLS/SCPI/IDN/appendix/notes.md | 1 + .../PROTOCOLS/SCPI/IDN/examples/EX1/app.json | 223 ++++ .../SCPI/IDN/examples/EX1/example.md | 1 + .../SCPI/MEASURE_VOLTAGE/MEASURE_VOLTAGE.md | 57 ++ .../a1-[autogen]/docstring.txt | 16 + .../a1-[autogen]/python_code.txt | 30 + .../SCPI/MEASURE_VOLTAGE/appendix/hardware.md | 1 + .../SCPI/MEASURE_VOLTAGE/appendix/media.md | 1 + .../SCPI/MEASURE_VOLTAGE/appendix/notes.md | 1 + .../MEASURE_VOLTAGE/examples/EX1/app.json | 955 ++++++++++++++++++ .../MEASURE_VOLTAGE/examples/EX1/example.md | 1 + .../SERIAL/BASIC/OPEN_SERIAL/OPEN_SERIAL.md | 57 ++ .../OPEN_SERIAL/a1-[autogen]/docstring.txt | 10 + .../OPEN_SERIAL/a1-[autogen]/python_code.txt | 23 + .../BASIC/OPEN_SERIAL/appendix/hardware.md | 1 + .../BASIC/OPEN_SERIAL/appendix/media.md | 1 + .../BASIC/OPEN_SERIAL/appendix/notes.md | 1 + .../BASIC/OPEN_SERIAL/examples/EX1/app.json | 223 ++++ .../BASIC/OPEN_SERIAL/examples/EX1/example.md | 1 + .../ARMS/MECADEMIC/ACTIVATE/ACTIVATE.md | 57 ++ .../ACTIVATE/a1-[autogen]/docstring.txt | 18 + .../ACTIVATE/a1-[autogen]/python_code.txt | 14 + .../MECADEMIC/ACTIVATE/appendix/hardware.md | 1 + .../ARMS/MECADEMIC/ACTIVATE/appendix/media.md | 1 + .../ARMS/MECADEMIC/ACTIVATE/appendix/notes.md | 1 + .../MECADEMIC/ACTIVATE/examples/EX1/app.json | 177 ++++ .../ACTIVATE/examples/EX1/example.md | 7 + .../ARMS/MECADEMIC/CONNECT/CONNECT.md | 57 ++ .../CONNECT/a1-[autogen]/docstring.txt | 7 + .../CONNECT/a1-[autogen]/python_code.txt | 10 + .../MECADEMIC/CONNECT/appendix/hardware.md | 1 + .../ARMS/MECADEMIC/CONNECT/appendix/media.md | 1 + .../ARMS/MECADEMIC/CONNECT/appendix/notes.md | 1 + .../MECADEMIC/CONNECT/examples/EX1/app.json | 62 ++ .../MECADEMIC/CONNECT/examples/EX1/example.md | 7 + .../IO/ROBOTICS/ARMS/MECADEMIC/DELAY/DELAY.md | 57 ++ .../DELAY/a1-[autogen]/docstring.txt | 16 + .../DELAY/a1-[autogen]/python_code.txt | 14 + .../ARMS/MECADEMIC/DELAY/appendix/hardware.md | 1 + .../ARMS/MECADEMIC/DELAY/appendix/media.md | 1 + .../ARMS/MECADEMIC/DELAY/appendix/notes.md | 1 + .../MECADEMIC/DELAY/examples/EX1/app.json | 243 +++++ .../MECADEMIC/DELAY/examples/EX1/example.md | 7 + .../ARMS/MECADEMIC/DISCONNECT/DISCONNECT.md | 57 ++ .../DISCONNECT/a1-[autogen]/docstring.txt | 8 + .../DISCONNECT/a1-[autogen]/python_code.txt | 20 + .../MECADEMIC/DISCONNECT/appendix/hardware.md | 1 + .../MECADEMIC/DISCONNECT/appendix/media.md | 1 + .../MECADEMIC/DISCONNECT/appendix/notes.md | 1 + .../DISCONNECT/examples/EX1/app.json | 177 ++++ .../DISCONNECT/examples/EX1/example.md | 5 + .../IO/ROBOTICS/ARMS/MECADEMIC/HOME/HOME.md | 57 ++ .../MECADEMIC/HOME/a1-[autogen]/docstring.txt | 12 + .../HOME/a1-[autogen]/python_code.txt | 11 + .../ARMS/MECADEMIC/HOME/appendix/hardware.md | 1 + .../ARMS/MECADEMIC/HOME/appendix/media.md | 1 + .../ARMS/MECADEMIC/HOME/appendix/notes.md | 1 + .../ARMS/MECADEMIC/HOME/examples/EX1/app.json | 233 +++++ .../MECADEMIC/HOME/examples/EX1/example.md | 5 + .../ARMS/MECADEMIC/MOVE_JOINT/MOVE_JOINT.md | 57 ++ .../MOVE_JOINT/a1-[autogen]/docstring.txt | 28 + .../MOVE_JOINT/a1-[autogen]/python_code.txt | 20 + .../MECADEMIC/MOVE_JOINT/appendix/hardware.md | 1 + .../MECADEMIC/MOVE_JOINT/appendix/media.md | 1 + .../MECADEMIC/MOVE_JOINT/appendix/notes.md | 1 + .../MOVE_JOINT/examples/EX1/app.json | 344 +++++++ .../MOVE_JOINT/examples/EX1/example.md | 7 + .../ARMS/MECADEMIC/MOVE_LIN/MOVE_LIN.md | 57 ++ .../MOVE_LIN/a1-[autogen]/docstring.txt | 28 + .../MOVE_LIN/a1-[autogen]/python_code.txt | 20 + .../MECADEMIC/MOVE_LIN/appendix/hardware.md | 1 + .../ARMS/MECADEMIC/MOVE_LIN/appendix/media.md | 1 + .../ARMS/MECADEMIC/MOVE_LIN/appendix/notes.md | 1 + .../MECADEMIC/MOVE_LIN/examples/EX1/app.json | 344 +++++++ .../MOVE_LIN/examples/EX1/example.md | 7 + .../ARMS/MECADEMIC/MOVE_POSE/MOVE_POSE.md | 57 ++ .../MOVE_POSE/a1-[autogen]/docstring.txt | 28 + .../MOVE_POSE/a1-[autogen]/python_code.txt | 20 + .../MECADEMIC/MOVE_POSE/appendix/hardware.md | 1 + .../MECADEMIC/MOVE_POSE/appendix/media.md | 1 + .../MECADEMIC/MOVE_POSE/appendix/notes.md | 1 + .../MECADEMIC/MOVE_POSE/examples/EX1/app.json | 344 +++++++ .../MOVE_POSE/examples/EX1/example.md | 7 + .../SET_CART_LIN_VEL/SET_CART_LIN_VEL.md | 57 ++ .../a1-[autogen]/docstring.txt | 17 + .../a1-[autogen]/python_code.txt | 11 + .../SET_CART_LIN_VEL/appendix/hardware.md | 1 + .../SET_CART_LIN_VEL/appendix/media.md | 1 + .../SET_CART_LIN_VEL/appendix/notes.md | 1 + .../SET_CART_LIN_VEL/examples/EX1/app.json | 299 ++++++ .../SET_CART_LIN_VEL/examples/EX1/example.md | 7 + .../MECADEMIC/SET_JOINT_VEL/SET_JOINT_VEL.md | 57 ++ .../SET_JOINT_VEL/a1-[autogen]/docstring.txt | 18 + .../a1-[autogen]/python_code.txt | 11 + .../SET_JOINT_VEL/appendix/hardware.md | 1 + .../MECADEMIC/SET_JOINT_VEL/appendix/media.md | 1 + .../MECADEMIC/SET_JOINT_VEL/appendix/notes.md | 1 + .../SET_JOINT_VEL/examples/EX1/app.json | 299 ++++++ .../SET_JOINT_VEL/examples/EX1/example.md | 7 + .../LOCAL_FILE/a1-[autogen]/docstring.txt | 1 - .../LOOPS/APPEND/a1-[autogen]/python_code.txt | 11 +- .../IFFT/examples/EX1/app.json | 513 ++++------ nodeSidebar.json | 6 +- 207 files changed, 13222 insertions(+), 503 deletions(-) create mode 100644 docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/DATACONTAINER_TYPE.md create mode 100644 docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/appendix/hardware.md create mode 100644 docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/appendix/media.md create mode 100644 docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/appendix/notes.md create mode 100644 docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/examples/EX1/app.json create mode 100644 docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/examples/EX1/example.md create mode 100644 docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/DC_CONTENT_TYPE.md create mode 100644 docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/appendix/hardware.md create mode 100644 docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/appendix/media.md create mode 100644 docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/appendix/notes.md create mode 100644 docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/examples/EX1/app.json create mode 100644 docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/examples/EX1/example.md create mode 100644 docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/PRINT_DATACONTAINER.md create mode 100644 docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/appendix/hardware.md create mode 100644 docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/appendix/media.md create mode 100644 docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/appendix/notes.md create mode 100644 docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/examples/EX1/app.json create mode 100644 docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/examples/EX1/example.md create mode 100644 docs/nodes/GENERATORS/SIMULATIONS/POPULATE/POPULATE.md create mode 100644 docs/nodes/GENERATORS/SIMULATIONS/POPULATE/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/GENERATORS/SIMULATIONS/POPULATE/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/GENERATORS/SIMULATIONS/POPULATE/appendix/hardware.md create mode 100644 docs/nodes/GENERATORS/SIMULATIONS/POPULATE/appendix/media.md create mode 100644 docs/nodes/GENERATORS/SIMULATIONS/POPULATE/appendix/notes.md create mode 100644 docs/nodes/GENERATORS/SIMULATIONS/POPULATE/examples/EX1/app.json create mode 100644 docs/nodes/GENERATORS/SIMULATIONS/POPULATE/examples/EX1/example.md create mode 100644 docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/UNIX_TIMESTAMP.md create mode 100644 docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/appendix/hardware.md create mode 100644 docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/appendix/media.md create mode 100644 docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/appendix/notes.md create mode 100644 docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/examples/EX1/app.json create mode 100644 docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/examples/EX1/example.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/AC_CURRENT_USB4065.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/appendix/hardware.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/appendix/media.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/appendix/notes.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/examples/EX1/app.json create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/examples/EX1/example.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/AC_VOLTAGE_USB4065.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/appendix/hardware.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/appendix/media.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/appendix/notes.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/examples/EX1/app.json create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/examples/EX1/example.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/CONNECTION_USB4065.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/appendix/hardware.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/appendix/media.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/appendix/notes.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/examples/EX1/app.json create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/examples/EX1/example.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/DC_CURRENT_USB4065.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/appendix/hardware.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/appendix/media.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/appendix/notes.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/examples/EX1/app.json create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/examples/EX1/example.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/DC_VOLTAGE_USB4065.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/appendix/hardware.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/appendix/media.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/appendix/notes.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/examples/EX1/app.json create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/examples/EX1/example.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/DIODE_USB4065.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/appendix/hardware.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/appendix/media.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/appendix/notes.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/examples/EX1/app.json create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/examples/EX1/example.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/RESISTANCE_USB4065.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/appendix/hardware.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/appendix/media.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/appendix/notes.md create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/examples/EX1/app.json create mode 100644 docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/examples/EX1/example.md create mode 100644 docs/nodes/IO/PROTOCOLS/SCPI/IDN/IDN.md create mode 100644 docs/nodes/IO/PROTOCOLS/SCPI/IDN/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/IO/PROTOCOLS/SCPI/IDN/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/IO/PROTOCOLS/SCPI/IDN/appendix/hardware.md create mode 100644 docs/nodes/IO/PROTOCOLS/SCPI/IDN/appendix/media.md create mode 100644 docs/nodes/IO/PROTOCOLS/SCPI/IDN/appendix/notes.md create mode 100644 docs/nodes/IO/PROTOCOLS/SCPI/IDN/examples/EX1/app.json create mode 100644 docs/nodes/IO/PROTOCOLS/SCPI/IDN/examples/EX1/example.md create mode 100644 docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/MEASURE_VOLTAGE.md create mode 100644 docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/appendix/hardware.md create mode 100644 docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/appendix/media.md create mode 100644 docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/appendix/notes.md create mode 100644 docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/examples/EX1/app.json create mode 100644 docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/examples/EX1/example.md create mode 100644 docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/OPEN_SERIAL.md create mode 100644 docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/appendix/hardware.md create mode 100644 docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/appendix/media.md create mode 100644 docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/appendix/notes.md create mode 100644 docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/examples/EX1/app.json create mode 100644 docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/examples/EX1/example.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/ACTIVATE.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/appendix/hardware.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/appendix/media.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/appendix/notes.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/examples/EX1/app.json create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/examples/EX1/example.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/CONNECT.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/appendix/hardware.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/appendix/media.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/appendix/notes.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/examples/EX1/app.json create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/examples/EX1/example.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/DELAY.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/appendix/hardware.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/appendix/media.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/appendix/notes.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/examples/EX1/app.json create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/examples/EX1/example.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/DISCONNECT.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/appendix/hardware.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/appendix/media.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/appendix/notes.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/examples/EX1/app.json create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/examples/EX1/example.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/HOME.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/appendix/hardware.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/appendix/media.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/appendix/notes.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/examples/EX1/app.json create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/examples/EX1/example.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/MOVE_JOINT.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/appendix/hardware.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/appendix/media.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/appendix/notes.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/examples/EX1/app.json create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/examples/EX1/example.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/MOVE_LIN.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/appendix/hardware.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/appendix/media.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/appendix/notes.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/examples/EX1/app.json create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/examples/EX1/example.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/MOVE_POSE.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/appendix/hardware.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/appendix/media.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/appendix/notes.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/examples/EX1/app.json create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/examples/EX1/example.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/SET_CART_LIN_VEL.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/appendix/hardware.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/appendix/media.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/appendix/notes.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/examples/EX1/app.json create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/examples/EX1/example.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/SET_JOINT_VEL.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/a1-[autogen]/docstring.txt create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/a1-[autogen]/python_code.txt create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/appendix/hardware.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/appendix/media.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/appendix/notes.md create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/examples/EX1/app.json create mode 100644 docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/examples/EX1/example.md diff --git a/docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/DATACONTAINER_TYPE.md b/docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/DATACONTAINER_TYPE.md new file mode 100644 index 0000000000..f84c5039a3 --- /dev/null +++ b/docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/DATACONTAINER_TYPE.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/a1-[autogen]/docstring.txt b/docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..d9638ac97c --- /dev/null +++ b/docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/a1-[autogen]/docstring.txt @@ -0,0 +1,8 @@ +The DATACONTAINER_TYPE node returns a TextBlob containing the input DataContainer type (e.g. Vector). + + Must use the TEXT_VIEW node to view the text. + + Returns + ------- + DataContainer + TextBlob: Input DataContainer type diff --git a/docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/a1-[autogen]/python_code.txt b/docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..5c9f054a04 --- /dev/null +++ b/docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/a1-[autogen]/python_code.txt @@ -0,0 +1,10 @@ +from flojoy import flojoy, DataContainer, TextBlob + + +@flojoy() +def DATACONTAINER_TYPE( + default: DataContainer, +) -> TextBlob: + + + return TextBlob(text_blob=default.type) diff --git a/docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/appendix/hardware.md b/docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/appendix/media.md b/docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/appendix/notes.md b/docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/examples/EX1/app.json b/docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/examples/EX1/app.json new file mode 100644 index 0000000000..072a16fff6 --- /dev/null +++ b/docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/examples/EX1/app.json @@ -0,0 +1,701 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 208, + "height": 96, + "id": "CONSTANT-f360e448-3c26-49f8-a617-a257b2243d86", + "type": "GENERATORS", + "data": { + "id": "CONSTANT-f360e448-3c26-49f8-a617-a257b2243d86", + "label": "3.0", + "func": "CONSTANT", + "type": "GENERATORS", + "ctrls": { + "dc_type": { + "type": "select", + "options": [ + "Scalar", + "Vector", + "OrderedPair" + ], + "default": "OrderedPair", + "desc": "The type of DataContainer to return.", + "overload": null, + "functionName": "CONSTANT", + "param": "dc_type", + "value": "Vector" + }, + "constant": { + "type": "float", + "default": 3, + "desc": "The value of the y axis output.", + "overload": null, + "functionName": "CONSTANT", + "param": "constant", + "value": 3 + }, + "step": { + "type": "float", + "default": 1000, + "desc": "The size of the y and x axes.", + "overload": null, + "functionName": "CONSTANT", + "param": "step", + "value": 1000 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Vector|OrderedPair", + "multiple": false, + "desc": "Optional input that defines the size of the output." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Vector|Scalar", + "desc": "OrderedPair if selected\nx: the x axis generated with size 'step'\ny: the resulting constant with size 'step'\nVector if selected\nv: the resulting constant with size 'step'\nScalar if selected\nc: the resulting constant" + } + ], + "path": "GENERATORS/SIMULATIONS/CONSTANT/CONSTANT.py", + "selected": false + }, + "position": { + "x": -4.389812295729584, + "y": -70.22965827413745 + }, + "selected": false, + "positionAbsolute": { + "x": -4.389812295729584, + "y": -70.22965827413745 + }, + "dragging": true + }, + { + "width": 208, + "height": 96, + "id": "CONSTANT-2136b666-a5c8-491d-9b92-d39109c1735d", + "type": "GENERATORS", + "data": { + "id": "CONSTANT-2136b666-a5c8-491d-9b92-d39109c1735d", + "label": "3.0", + "func": "CONSTANT", + "type": "GENERATORS", + "ctrls": { + "dc_type": { + "type": "select", + "options": [ + "Scalar", + "Vector", + "OrderedPair" + ], + "default": "OrderedPair", + "desc": "The type of DataContainer to return.", + "overload": null, + "functionName": "CONSTANT", + "param": "dc_type", + "value": "Scalar" + }, + "constant": { + "type": "float", + "default": 3, + "desc": "The value of the y axis output.", + "overload": null, + "functionName": "CONSTANT", + "param": "constant", + "value": 3 + }, + "step": { + "type": "float", + "default": 1000, + "desc": "The size of the y and x axes.", + "overload": null, + "functionName": "CONSTANT", + "param": "step", + "value": 1000 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Vector|OrderedPair", + "multiple": false, + "desc": "Optional input that defines the size of the output." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Vector|Scalar", + "desc": "OrderedPair if selected\nx: the x axis generated with size 'step'\ny: the resulting constant with size 'step'\nVector if selected\nv: the resulting constant with size 'step'\nScalar if selected\nc: the resulting constant" + } + ], + "path": "GENERATORS/SIMULATIONS/CONSTANT/CONSTANT.py", + "selected": false + }, + "position": { + "x": -8.824363585712533, + "y": -416.3213586761047 + }, + "selected": false, + "positionAbsolute": { + "x": -8.824363585712533, + "y": -416.3213586761047 + }, + "dragging": true + }, + { + "width": 208, + "height": 96, + "id": "CONSTANT-5c7b7add-63a3-4a3f-aa9f-9c0cf172bb62", + "type": "GENERATORS", + "data": { + "id": "CONSTANT-5c7b7add-63a3-4a3f-aa9f-9c0cf172bb62", + "label": "3.0", + "func": "CONSTANT", + "type": "GENERATORS", + "ctrls": { + "dc_type": { + "type": "select", + "options": [ + "Scalar", + "Vector", + "OrderedPair" + ], + "default": "OrderedPair", + "desc": "The type of DataContainer to return.", + "overload": null, + "functionName": "CONSTANT", + "param": "dc_type", + "value": "OrderedPair" + }, + "constant": { + "type": "float", + "default": 3, + "desc": "The value of the y axis output.", + "overload": null, + "functionName": "CONSTANT", + "param": "constant", + "value": 3 + }, + "step": { + "type": "float", + "default": 1000, + "desc": "The size of the y and x axes.", + "overload": null, + "functionName": "CONSTANT", + "param": "step", + "value": 1000 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Vector|OrderedPair", + "multiple": false, + "desc": "Optional input that defines the size of the output." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Vector|Scalar", + "desc": "OrderedPair if selected\nx: the x axis generated with size 'step'\ny: the resulting constant with size 'step'\nVector if selected\nv: the resulting constant with size 'step'\nScalar if selected\nc: the resulting constant" + } + ], + "path": "GENERATORS/SIMULATIONS/CONSTANT/CONSTANT.py", + "selected": false + }, + "position": { + "x": -11.417226508304964, + "y": 298.92084056266 + }, + "selected": false, + "positionAbsolute": { + "x": -11.417226508304964, + "y": 298.92084056266 + }, + "dragging": true + }, + { + "width": 273, + "height": 160, + "id": "DATACONTAINER_TYPE-21be2d9a-d726-4d66-849c-1988ffb917c1", + "type": "EXTRACTORS", + "data": { + "id": "DATACONTAINER_TYPE-21be2d9a-d726-4d66-849c-1988ffb917c1", + "label": "DATACONTAINER TYPE", + "func": "DATACONTAINER_TYPE", + "type": "EXTRACTORS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "TextBlob:" + } + ], + "path": "EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/DATACONTAINER_TYPE.py", + "selected": false + }, + "position": { + "x": 367.2744596301207, + "y": -266.10188042774996 + }, + "selected": false, + "positionAbsolute": { + "x": 367.2744596301207, + "y": -266.10188042774996 + }, + "dragging": true + }, + { + "width": 160, + "height": 160, + "id": "DC_CONTENT_TYPE-47031b75-f6bb-4cd6-aef3-8f0ccfbfe131", + "type": "EXTRACTORS", + "data": { + "id": "DC_CONTENT_TYPE-47031b75-f6bb-4cd6-aef3-8f0ccfbfe131", + "label": "DC CONTENT TYPE", + "func": "DC_CONTENT_TYPE", + "type": "EXTRACTORS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "TextBlob:" + } + ], + "path": "EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/DC_CONTENT_TYPE.py", + "selected": false + }, + "position": { + "x": 423.04204666204885, + "y": -487.5001186468029 + }, + "selected": false, + "positionAbsolute": { + "x": 423.04204666204885, + "y": -487.5001186468029 + }, + "dragging": true + }, + { + "width": 160, + "height": 160, + "id": "DC_CONTENT_TYPE-194bbb3e-7852-4728-9459-59e9a71777bd", + "type": "EXTRACTORS", + "data": { + "id": "DC_CONTENT_TYPE-194bbb3e-7852-4728-9459-59e9a71777bd", + "label": "DC CONTENT TYPE 1", + "func": "DC_CONTENT_TYPE", + "type": "EXTRACTORS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "TextBlob:" + } + ], + "path": "EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/DC_CONTENT_TYPE.py", + "selected": false + }, + "position": { + "x": 418.8844775231683, + "y": -73.25978257171602 + }, + "selected": false, + "positionAbsolute": { + "x": 418.8844775231683, + "y": -73.25978257171602 + }, + "dragging": true + }, + { + "width": 160, + "height": 160, + "id": "DC_CONTENT_TYPE-e8a4674d-97f1-4a41-ab6d-531839ac16cf", + "type": "EXTRACTORS", + "data": { + "id": "DC_CONTENT_TYPE-e8a4674d-97f1-4a41-ab6d-531839ac16cf", + "label": "DC CONTENT TYPE 2", + "func": "DC_CONTENT_TYPE", + "type": "EXTRACTORS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "TextBlob:" + } + ], + "path": "EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/DC_CONTENT_TYPE.py", + "selected": false + }, + "position": { + "x": 422.58228096141244, + "y": 293.7089447224463 + }, + "selected": false, + "positionAbsolute": { + "x": 422.58228096141244, + "y": 293.7089447224463 + }, + "dragging": true + }, + { + "width": 384, + "height": 288, + "id": "TEXT_VIEW-817997cd-1bc4-469f-a626-ec9638878d86", + "type": "VISUALIZERS", + "data": { + "id": "TEXT_VIEW-817997cd-1bc4-469f-a626-ec9638878d86", + "label": "TEXT VIEW", + "func": "TEXT_VIEW", + "type": "VISUALIZERS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "the DataContainer to be visualized in text format" + } + ], + "path": "VISUALIZERS/DATA_STRUCTURE/TEXT_VIEW/TEXT_VIEW.py", + "selected": false + }, + "position": { + "x": 822.9185133761199, + "y": 19.47337889558895 + }, + "selected": false, + "positionAbsolute": { + "x": 822.9185133761199, + "y": 19.47337889558895 + }, + "dragging": true + }, + { + "width": 384, + "height": 288, + "id": "TEXT_VIEW-c4fb79bf-789e-4aa4-83f6-ab1b7610b5d9", + "type": "VISUALIZERS", + "data": { + "id": "TEXT_VIEW-c4fb79bf-789e-4aa4-83f6-ab1b7610b5d9", + "label": "TEXT VIEW 1", + "func": "TEXT_VIEW", + "type": "VISUALIZERS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "the DataContainer to be visualized in text format" + } + ], + "path": "VISUALIZERS/DATA_STRUCTURE/TEXT_VIEW/TEXT_VIEW.py", + "selected": false + }, + "position": { + "x": 830.5105759175779, + "y": -148.29771160498527 + }, + "selected": false, + "positionAbsolute": { + "x": 830.5105759175779, + "y": -148.29771160498527 + }, + "dragging": true + }, + { + "width": 384, + "height": 288, + "id": "TEXT_VIEW-7a0ff8f6-ca21-481c-95cf-a63e2435f1a4", + "type": "VISUALIZERS", + "data": { + "id": "TEXT_VIEW-7a0ff8f6-ca21-481c-95cf-a63e2435f1a4", + "label": "TEXT VIEW 2", + "func": "TEXT_VIEW", + "type": "VISUALIZERS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "the DataContainer to be visualized in text format" + } + ], + "path": "VISUALIZERS/DATA_STRUCTURE/TEXT_VIEW/TEXT_VIEW.py", + "selected": false + }, + "position": { + "x": 879.935152708707, + "y": -347.8394230588621 + }, + "selected": false, + "positionAbsolute": { + "x": 879.935152708707, + "y": -347.8394230588621 + }, + "dragging": true + }, + { + "width": 384, + "height": 288, + "id": "TEXT_VIEW-1dde52f7-9389-41e3-9a59-159fea3d906b", + "type": "VISUALIZERS", + "data": { + "id": "TEXT_VIEW-1dde52f7-9389-41e3-9a59-159fea3d906b", + "label": "TEXT VIEW 3", + "func": "TEXT_VIEW", + "type": "VISUALIZERS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "the DataContainer to be visualized in text format" + } + ], + "path": "VISUALIZERS/DATA_STRUCTURE/TEXT_VIEW/TEXT_VIEW.py", + "selected": false + }, + "position": { + "x": 832.5997194231193, + "y": -561.8439852192519 + }, + "selected": false, + "positionAbsolute": { + "x": 832.5997194231193, + "y": -561.8439852192519 + }, + "dragging": true + }, + { + "width": 384, + "height": 288, + "id": "TEXT_VIEW-a27f28a7-9db3-4b3b-8558-9c772b38ca7c", + "type": "VISUALIZERS", + "data": { + "id": "TEXT_VIEW-a27f28a7-9db3-4b3b-8558-9c772b38ca7c", + "label": "TEXT VIEW 4", + "func": "TEXT_VIEW", + "type": "VISUALIZERS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "the DataContainer to be visualized in text format" + } + ], + "path": "VISUALIZERS/DATA_STRUCTURE/TEXT_VIEW/TEXT_VIEW.py", + "selected": false + }, + "position": { + "x": 828.6977981693892, + "y": 329.38047402670065 + }, + "selected": false, + "positionAbsolute": { + "x": 828.6977981693892, + "y": 329.38047402670065 + }, + "dragging": true + }, + { + "width": 273, + "height": 160, + "id": "PRINT_DATACONTAINER-f97df0b9-f133-4d4f-b366-9a5c8ed011ec", + "type": "EXTRACTORS", + "data": { + "id": "PRINT_DATACONTAINER-f97df0b9-f133-4d4f-b366-9a5c8ed011ec", + "label": "PRINT DATACONTAINER", + "func": "PRINT_DATACONTAINER", + "type": "EXTRACTORS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "TextBlob:" + } + ], + "path": "EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/PRINT_DATACONTAINER.py", + "selected": false + }, + "position": { + "x": 365.3841640709858, + "y": 103.61032181488429 + }, + "selected": false, + "positionAbsolute": { + "x": 365.3841640709858, + "y": 103.61032181488429 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONSTANT-2136b666-a5c8-491d-9b92-d39109c1735d", + "sourceHandle": "default", + "target": "DC_CONTENT_TYPE-47031b75-f6bb-4cd6-aef3-8f0ccfbfe131", + "targetHandle": "default", + "id": "reactflow__edge-CONSTANT-2136b666-a5c8-491d-9b92-d39109c1735ddefault-DC_CONTENT_TYPE-47031b75-f6bb-4cd6-aef3-8f0ccfbfe131default" + }, + { + "source": "CONSTANT-f360e448-3c26-49f8-a617-a257b2243d86", + "sourceHandle": "default", + "target": "DATACONTAINER_TYPE-21be2d9a-d726-4d66-849c-1988ffb917c1", + "targetHandle": "default", + "id": "reactflow__edge-CONSTANT-f360e448-3c26-49f8-a617-a257b2243d86default-DATACONTAINER_TYPE-21be2d9a-d726-4d66-849c-1988ffb917c1default" + }, + { + "source": "CONSTANT-f360e448-3c26-49f8-a617-a257b2243d86", + "sourceHandle": "default", + "target": "DC_CONTENT_TYPE-194bbb3e-7852-4728-9459-59e9a71777bd", + "targetHandle": "default", + "id": "reactflow__edge-CONSTANT-f360e448-3c26-49f8-a617-a257b2243d86default-DC_CONTENT_TYPE-194bbb3e-7852-4728-9459-59e9a71777bddefault" + }, + { + "source": "CONSTANT-5c7b7add-63a3-4a3f-aa9f-9c0cf172bb62", + "sourceHandle": "default", + "target": "DC_CONTENT_TYPE-e8a4674d-97f1-4a41-ab6d-531839ac16cf", + "targetHandle": "default", + "id": "reactflow__edge-CONSTANT-5c7b7add-63a3-4a3f-aa9f-9c0cf172bb62default-DC_CONTENT_TYPE-e8a4674d-97f1-4a41-ab6d-531839ac16cfdefault" + }, + { + "source": "DC_CONTENT_TYPE-e8a4674d-97f1-4a41-ab6d-531839ac16cf", + "sourceHandle": "default", + "target": "TEXT_VIEW-a27f28a7-9db3-4b3b-8558-9c772b38ca7c", + "targetHandle": "default", + "id": "reactflow__edge-DC_CONTENT_TYPE-e8a4674d-97f1-4a41-ab6d-531839ac16cfdefault-TEXT_VIEW-a27f28a7-9db3-4b3b-8558-9c772b38ca7cdefault" + }, + { + "source": "DC_CONTENT_TYPE-194bbb3e-7852-4728-9459-59e9a71777bd", + "sourceHandle": "default", + "target": "TEXT_VIEW-c4fb79bf-789e-4aa4-83f6-ab1b7610b5d9", + "targetHandle": "default", + "id": "reactflow__edge-DC_CONTENT_TYPE-194bbb3e-7852-4728-9459-59e9a71777bddefault-TEXT_VIEW-c4fb79bf-789e-4aa4-83f6-ab1b7610b5d9default" + }, + { + "source": "DATACONTAINER_TYPE-21be2d9a-d726-4d66-849c-1988ffb917c1", + "sourceHandle": "default", + "target": "TEXT_VIEW-7a0ff8f6-ca21-481c-95cf-a63e2435f1a4", + "targetHandle": "default", + "id": "reactflow__edge-DATACONTAINER_TYPE-21be2d9a-d726-4d66-849c-1988ffb917c1default-TEXT_VIEW-7a0ff8f6-ca21-481c-95cf-a63e2435f1a4default" + }, + { + "source": "DC_CONTENT_TYPE-47031b75-f6bb-4cd6-aef3-8f0ccfbfe131", + "sourceHandle": "default", + "target": "TEXT_VIEW-1dde52f7-9389-41e3-9a59-159fea3d906b", + "targetHandle": "default", + "id": "reactflow__edge-DC_CONTENT_TYPE-47031b75-f6bb-4cd6-aef3-8f0ccfbfe131default-TEXT_VIEW-1dde52f7-9389-41e3-9a59-159fea3d906bdefault" + }, + { + "source": "CONSTANT-f360e448-3c26-49f8-a617-a257b2243d86", + "sourceHandle": "default", + "target": "PRINT_DATACONTAINER-f97df0b9-f133-4d4f-b366-9a5c8ed011ec", + "targetHandle": "default", + "id": "reactflow__edge-CONSTANT-f360e448-3c26-49f8-a617-a257b2243d86default-PRINT_DATACONTAINER-f97df0b9-f133-4d4f-b366-9a5c8ed011ecdefault" + }, + { + "source": "PRINT_DATACONTAINER-f97df0b9-f133-4d4f-b366-9a5c8ed011ec", + "sourceHandle": "default", + "target": "TEXT_VIEW-817997cd-1bc4-469f-a626-ec9638878d86", + "targetHandle": "default", + "id": "reactflow__edge-PRINT_DATACONTAINER-f97df0b9-f133-4d4f-b366-9a5c8ed011ecdefault-TEXT_VIEW-817997cd-1bc4-469f-a626-ec9638878d86default" + } + ], + "viewport": { + "x": 1139.470292881633, + "y": 572.2854272048312, + "zoom": 1.2136444284334926 + } + } +} \ No newline at end of file diff --git a/docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/examples/EX1/example.md b/docs/nodes/EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/examples/EX1/example.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/DC_CONTENT_TYPE.md b/docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/DC_CONTENT_TYPE.md new file mode 100644 index 0000000000..d9a67fee4e --- /dev/null +++ b/docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/DC_CONTENT_TYPE.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/a1-[autogen]/docstring.txt b/docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..b065409cc9 --- /dev/null +++ b/docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/a1-[autogen]/docstring.txt @@ -0,0 +1,8 @@ +The DC_CONTENT_TYPE node returns a TextBlob containing the type of the input DataContainer's content. + + Must use the TEXT_VIEW node to view the text. + + Returns + ------- + DataContainer + TextBlob: Type of the input DataContainer's content (e.g. float) diff --git a/docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/a1-[autogen]/python_code.txt b/docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..7d5e6293dd --- /dev/null +++ b/docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/a1-[autogen]/python_code.txt @@ -0,0 +1,38 @@ +from flojoy import flojoy, DataContainer, TextBlob + + +@flojoy() +def DC_CONTENT_TYPE( + default: DataContainer, +) -> TextBlob: + + + dc_type = str(default.type) + + match dc_type: + case "OrderedPair": + s = f"x: {type(default.x)}, \ny: {type(default.y)}" + case "OrderedTriple": + s = f"x: {type(default.x)}, \ny: {type(default.y)}, \nz: {type(default.z)}" + case "Surface": + s = f"x: {type(default.x)}, \ny: {type(default.y)}, \nz: {type(default.z)}" + case "Vector": + s = f"v: {type(default.v)}" + case "Matrix": + s = f"m: {type(default.m)}" + case "Grayscale": + s = f"m: {type(default.m)}" + case "DataFrame": + s = f"m: {type(default.m)}" + case "Scalar": + s = f"c: {type(default.c)}" + case "Image": + s = f"r: {type(default.r)}, \ng: {type(default.g)}, \nb: {type(default.b)}" + case "TextBlob": + s = f"text_blob: {type(default.text_blob)}" + case _: + raise TypeError( + f"Unsupported DC type {dc_type}. Please add it to the node." + ) + + return TextBlob(text_blob=s) diff --git a/docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/appendix/hardware.md b/docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/appendix/media.md b/docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/appendix/notes.md b/docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/examples/EX1/app.json b/docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/examples/EX1/app.json new file mode 100644 index 0000000000..072a16fff6 --- /dev/null +++ b/docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/examples/EX1/app.json @@ -0,0 +1,701 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 208, + "height": 96, + "id": "CONSTANT-f360e448-3c26-49f8-a617-a257b2243d86", + "type": "GENERATORS", + "data": { + "id": "CONSTANT-f360e448-3c26-49f8-a617-a257b2243d86", + "label": "3.0", + "func": "CONSTANT", + "type": "GENERATORS", + "ctrls": { + "dc_type": { + "type": "select", + "options": [ + "Scalar", + "Vector", + "OrderedPair" + ], + "default": "OrderedPair", + "desc": "The type of DataContainer to return.", + "overload": null, + "functionName": "CONSTANT", + "param": "dc_type", + "value": "Vector" + }, + "constant": { + "type": "float", + "default": 3, + "desc": "The value of the y axis output.", + "overload": null, + "functionName": "CONSTANT", + "param": "constant", + "value": 3 + }, + "step": { + "type": "float", + "default": 1000, + "desc": "The size of the y and x axes.", + "overload": null, + "functionName": "CONSTANT", + "param": "step", + "value": 1000 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Vector|OrderedPair", + "multiple": false, + "desc": "Optional input that defines the size of the output." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Vector|Scalar", + "desc": "OrderedPair if selected\nx: the x axis generated with size 'step'\ny: the resulting constant with size 'step'\nVector if selected\nv: the resulting constant with size 'step'\nScalar if selected\nc: the resulting constant" + } + ], + "path": "GENERATORS/SIMULATIONS/CONSTANT/CONSTANT.py", + "selected": false + }, + "position": { + "x": -4.389812295729584, + "y": -70.22965827413745 + }, + "selected": false, + "positionAbsolute": { + "x": -4.389812295729584, + "y": -70.22965827413745 + }, + "dragging": true + }, + { + "width": 208, + "height": 96, + "id": "CONSTANT-2136b666-a5c8-491d-9b92-d39109c1735d", + "type": "GENERATORS", + "data": { + "id": "CONSTANT-2136b666-a5c8-491d-9b92-d39109c1735d", + "label": "3.0", + "func": "CONSTANT", + "type": "GENERATORS", + "ctrls": { + "dc_type": { + "type": "select", + "options": [ + "Scalar", + "Vector", + "OrderedPair" + ], + "default": "OrderedPair", + "desc": "The type of DataContainer to return.", + "overload": null, + "functionName": "CONSTANT", + "param": "dc_type", + "value": "Scalar" + }, + "constant": { + "type": "float", + "default": 3, + "desc": "The value of the y axis output.", + "overload": null, + "functionName": "CONSTANT", + "param": "constant", + "value": 3 + }, + "step": { + "type": "float", + "default": 1000, + "desc": "The size of the y and x axes.", + "overload": null, + "functionName": "CONSTANT", + "param": "step", + "value": 1000 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Vector|OrderedPair", + "multiple": false, + "desc": "Optional input that defines the size of the output." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Vector|Scalar", + "desc": "OrderedPair if selected\nx: the x axis generated with size 'step'\ny: the resulting constant with size 'step'\nVector if selected\nv: the resulting constant with size 'step'\nScalar if selected\nc: the resulting constant" + } + ], + "path": "GENERATORS/SIMULATIONS/CONSTANT/CONSTANT.py", + "selected": false + }, + "position": { + "x": -8.824363585712533, + "y": -416.3213586761047 + }, + "selected": false, + "positionAbsolute": { + "x": -8.824363585712533, + "y": -416.3213586761047 + }, + "dragging": true + }, + { + "width": 208, + "height": 96, + "id": "CONSTANT-5c7b7add-63a3-4a3f-aa9f-9c0cf172bb62", + "type": "GENERATORS", + "data": { + "id": "CONSTANT-5c7b7add-63a3-4a3f-aa9f-9c0cf172bb62", + "label": "3.0", + "func": "CONSTANT", + "type": "GENERATORS", + "ctrls": { + "dc_type": { + "type": "select", + "options": [ + "Scalar", + "Vector", + "OrderedPair" + ], + "default": "OrderedPair", + "desc": "The type of DataContainer to return.", + "overload": null, + "functionName": "CONSTANT", + "param": "dc_type", + "value": "OrderedPair" + }, + "constant": { + "type": "float", + "default": 3, + "desc": "The value of the y axis output.", + "overload": null, + "functionName": "CONSTANT", + "param": "constant", + "value": 3 + }, + "step": { + "type": "float", + "default": 1000, + "desc": "The size of the y and x axes.", + "overload": null, + "functionName": "CONSTANT", + "param": "step", + "value": 1000 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Vector|OrderedPair", + "multiple": false, + "desc": "Optional input that defines the size of the output." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Vector|Scalar", + "desc": "OrderedPair if selected\nx: the x axis generated with size 'step'\ny: the resulting constant with size 'step'\nVector if selected\nv: the resulting constant with size 'step'\nScalar if selected\nc: the resulting constant" + } + ], + "path": "GENERATORS/SIMULATIONS/CONSTANT/CONSTANT.py", + "selected": false + }, + "position": { + "x": -11.417226508304964, + "y": 298.92084056266 + }, + "selected": false, + "positionAbsolute": { + "x": -11.417226508304964, + "y": 298.92084056266 + }, + "dragging": true + }, + { + "width": 273, + "height": 160, + "id": "DATACONTAINER_TYPE-21be2d9a-d726-4d66-849c-1988ffb917c1", + "type": "EXTRACTORS", + "data": { + "id": "DATACONTAINER_TYPE-21be2d9a-d726-4d66-849c-1988ffb917c1", + "label": "DATACONTAINER TYPE", + "func": "DATACONTAINER_TYPE", + "type": "EXTRACTORS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "TextBlob:" + } + ], + "path": "EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/DATACONTAINER_TYPE.py", + "selected": false + }, + "position": { + "x": 367.2744596301207, + "y": -266.10188042774996 + }, + "selected": false, + "positionAbsolute": { + "x": 367.2744596301207, + "y": -266.10188042774996 + }, + "dragging": true + }, + { + "width": 160, + "height": 160, + "id": "DC_CONTENT_TYPE-47031b75-f6bb-4cd6-aef3-8f0ccfbfe131", + "type": "EXTRACTORS", + "data": { + "id": "DC_CONTENT_TYPE-47031b75-f6bb-4cd6-aef3-8f0ccfbfe131", + "label": "DC CONTENT TYPE", + "func": "DC_CONTENT_TYPE", + "type": "EXTRACTORS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "TextBlob:" + } + ], + "path": "EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/DC_CONTENT_TYPE.py", + "selected": false + }, + "position": { + "x": 423.04204666204885, + "y": -487.5001186468029 + }, + "selected": false, + "positionAbsolute": { + "x": 423.04204666204885, + "y": -487.5001186468029 + }, + "dragging": true + }, + { + "width": 160, + "height": 160, + "id": "DC_CONTENT_TYPE-194bbb3e-7852-4728-9459-59e9a71777bd", + "type": "EXTRACTORS", + "data": { + "id": "DC_CONTENT_TYPE-194bbb3e-7852-4728-9459-59e9a71777bd", + "label": "DC CONTENT TYPE 1", + "func": "DC_CONTENT_TYPE", + "type": "EXTRACTORS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "TextBlob:" + } + ], + "path": "EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/DC_CONTENT_TYPE.py", + "selected": false + }, + "position": { + "x": 418.8844775231683, + "y": -73.25978257171602 + }, + "selected": false, + "positionAbsolute": { + "x": 418.8844775231683, + "y": -73.25978257171602 + }, + "dragging": true + }, + { + "width": 160, + "height": 160, + "id": "DC_CONTENT_TYPE-e8a4674d-97f1-4a41-ab6d-531839ac16cf", + "type": "EXTRACTORS", + "data": { + "id": "DC_CONTENT_TYPE-e8a4674d-97f1-4a41-ab6d-531839ac16cf", + "label": "DC CONTENT TYPE 2", + "func": "DC_CONTENT_TYPE", + "type": "EXTRACTORS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "TextBlob:" + } + ], + "path": "EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/DC_CONTENT_TYPE.py", + "selected": false + }, + "position": { + "x": 422.58228096141244, + "y": 293.7089447224463 + }, + "selected": false, + "positionAbsolute": { + "x": 422.58228096141244, + "y": 293.7089447224463 + }, + "dragging": true + }, + { + "width": 384, + "height": 288, + "id": "TEXT_VIEW-817997cd-1bc4-469f-a626-ec9638878d86", + "type": "VISUALIZERS", + "data": { + "id": "TEXT_VIEW-817997cd-1bc4-469f-a626-ec9638878d86", + "label": "TEXT VIEW", + "func": "TEXT_VIEW", + "type": "VISUALIZERS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "the DataContainer to be visualized in text format" + } + ], + "path": "VISUALIZERS/DATA_STRUCTURE/TEXT_VIEW/TEXT_VIEW.py", + "selected": false + }, + "position": { + "x": 822.9185133761199, + "y": 19.47337889558895 + }, + "selected": false, + "positionAbsolute": { + "x": 822.9185133761199, + "y": 19.47337889558895 + }, + "dragging": true + }, + { + "width": 384, + "height": 288, + "id": "TEXT_VIEW-c4fb79bf-789e-4aa4-83f6-ab1b7610b5d9", + "type": "VISUALIZERS", + "data": { + "id": "TEXT_VIEW-c4fb79bf-789e-4aa4-83f6-ab1b7610b5d9", + "label": "TEXT VIEW 1", + "func": "TEXT_VIEW", + "type": "VISUALIZERS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "the DataContainer to be visualized in text format" + } + ], + "path": "VISUALIZERS/DATA_STRUCTURE/TEXT_VIEW/TEXT_VIEW.py", + "selected": false + }, + "position": { + "x": 830.5105759175779, + "y": -148.29771160498527 + }, + "selected": false, + "positionAbsolute": { + "x": 830.5105759175779, + "y": -148.29771160498527 + }, + "dragging": true + }, + { + "width": 384, + "height": 288, + "id": "TEXT_VIEW-7a0ff8f6-ca21-481c-95cf-a63e2435f1a4", + "type": "VISUALIZERS", + "data": { + "id": "TEXT_VIEW-7a0ff8f6-ca21-481c-95cf-a63e2435f1a4", + "label": "TEXT VIEW 2", + "func": "TEXT_VIEW", + "type": "VISUALIZERS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "the DataContainer to be visualized in text format" + } + ], + "path": "VISUALIZERS/DATA_STRUCTURE/TEXT_VIEW/TEXT_VIEW.py", + "selected": false + }, + "position": { + "x": 879.935152708707, + "y": -347.8394230588621 + }, + "selected": false, + "positionAbsolute": { + "x": 879.935152708707, + "y": -347.8394230588621 + }, + "dragging": true + }, + { + "width": 384, + "height": 288, + "id": "TEXT_VIEW-1dde52f7-9389-41e3-9a59-159fea3d906b", + "type": "VISUALIZERS", + "data": { + "id": "TEXT_VIEW-1dde52f7-9389-41e3-9a59-159fea3d906b", + "label": "TEXT VIEW 3", + "func": "TEXT_VIEW", + "type": "VISUALIZERS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "the DataContainer to be visualized in text format" + } + ], + "path": "VISUALIZERS/DATA_STRUCTURE/TEXT_VIEW/TEXT_VIEW.py", + "selected": false + }, + "position": { + "x": 832.5997194231193, + "y": -561.8439852192519 + }, + "selected": false, + "positionAbsolute": { + "x": 832.5997194231193, + "y": -561.8439852192519 + }, + "dragging": true + }, + { + "width": 384, + "height": 288, + "id": "TEXT_VIEW-a27f28a7-9db3-4b3b-8558-9c772b38ca7c", + "type": "VISUALIZERS", + "data": { + "id": "TEXT_VIEW-a27f28a7-9db3-4b3b-8558-9c772b38ca7c", + "label": "TEXT VIEW 4", + "func": "TEXT_VIEW", + "type": "VISUALIZERS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "the DataContainer to be visualized in text format" + } + ], + "path": "VISUALIZERS/DATA_STRUCTURE/TEXT_VIEW/TEXT_VIEW.py", + "selected": false + }, + "position": { + "x": 828.6977981693892, + "y": 329.38047402670065 + }, + "selected": false, + "positionAbsolute": { + "x": 828.6977981693892, + "y": 329.38047402670065 + }, + "dragging": true + }, + { + "width": 273, + "height": 160, + "id": "PRINT_DATACONTAINER-f97df0b9-f133-4d4f-b366-9a5c8ed011ec", + "type": "EXTRACTORS", + "data": { + "id": "PRINT_DATACONTAINER-f97df0b9-f133-4d4f-b366-9a5c8ed011ec", + "label": "PRINT DATACONTAINER", + "func": "PRINT_DATACONTAINER", + "type": "EXTRACTORS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "TextBlob:" + } + ], + "path": "EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/PRINT_DATACONTAINER.py", + "selected": false + }, + "position": { + "x": 365.3841640709858, + "y": 103.61032181488429 + }, + "selected": false, + "positionAbsolute": { + "x": 365.3841640709858, + "y": 103.61032181488429 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONSTANT-2136b666-a5c8-491d-9b92-d39109c1735d", + "sourceHandle": "default", + "target": "DC_CONTENT_TYPE-47031b75-f6bb-4cd6-aef3-8f0ccfbfe131", + "targetHandle": "default", + "id": "reactflow__edge-CONSTANT-2136b666-a5c8-491d-9b92-d39109c1735ddefault-DC_CONTENT_TYPE-47031b75-f6bb-4cd6-aef3-8f0ccfbfe131default" + }, + { + "source": "CONSTANT-f360e448-3c26-49f8-a617-a257b2243d86", + "sourceHandle": "default", + "target": "DATACONTAINER_TYPE-21be2d9a-d726-4d66-849c-1988ffb917c1", + "targetHandle": "default", + "id": "reactflow__edge-CONSTANT-f360e448-3c26-49f8-a617-a257b2243d86default-DATACONTAINER_TYPE-21be2d9a-d726-4d66-849c-1988ffb917c1default" + }, + { + "source": "CONSTANT-f360e448-3c26-49f8-a617-a257b2243d86", + "sourceHandle": "default", + "target": "DC_CONTENT_TYPE-194bbb3e-7852-4728-9459-59e9a71777bd", + "targetHandle": "default", + "id": "reactflow__edge-CONSTANT-f360e448-3c26-49f8-a617-a257b2243d86default-DC_CONTENT_TYPE-194bbb3e-7852-4728-9459-59e9a71777bddefault" + }, + { + "source": "CONSTANT-5c7b7add-63a3-4a3f-aa9f-9c0cf172bb62", + "sourceHandle": "default", + "target": "DC_CONTENT_TYPE-e8a4674d-97f1-4a41-ab6d-531839ac16cf", + "targetHandle": "default", + "id": "reactflow__edge-CONSTANT-5c7b7add-63a3-4a3f-aa9f-9c0cf172bb62default-DC_CONTENT_TYPE-e8a4674d-97f1-4a41-ab6d-531839ac16cfdefault" + }, + { + "source": "DC_CONTENT_TYPE-e8a4674d-97f1-4a41-ab6d-531839ac16cf", + "sourceHandle": "default", + "target": "TEXT_VIEW-a27f28a7-9db3-4b3b-8558-9c772b38ca7c", + "targetHandle": "default", + "id": "reactflow__edge-DC_CONTENT_TYPE-e8a4674d-97f1-4a41-ab6d-531839ac16cfdefault-TEXT_VIEW-a27f28a7-9db3-4b3b-8558-9c772b38ca7cdefault" + }, + { + "source": "DC_CONTENT_TYPE-194bbb3e-7852-4728-9459-59e9a71777bd", + "sourceHandle": "default", + "target": "TEXT_VIEW-c4fb79bf-789e-4aa4-83f6-ab1b7610b5d9", + "targetHandle": "default", + "id": "reactflow__edge-DC_CONTENT_TYPE-194bbb3e-7852-4728-9459-59e9a71777bddefault-TEXT_VIEW-c4fb79bf-789e-4aa4-83f6-ab1b7610b5d9default" + }, + { + "source": "DATACONTAINER_TYPE-21be2d9a-d726-4d66-849c-1988ffb917c1", + "sourceHandle": "default", + "target": "TEXT_VIEW-7a0ff8f6-ca21-481c-95cf-a63e2435f1a4", + "targetHandle": "default", + "id": "reactflow__edge-DATACONTAINER_TYPE-21be2d9a-d726-4d66-849c-1988ffb917c1default-TEXT_VIEW-7a0ff8f6-ca21-481c-95cf-a63e2435f1a4default" + }, + { + "source": "DC_CONTENT_TYPE-47031b75-f6bb-4cd6-aef3-8f0ccfbfe131", + "sourceHandle": "default", + "target": "TEXT_VIEW-1dde52f7-9389-41e3-9a59-159fea3d906b", + "targetHandle": "default", + "id": "reactflow__edge-DC_CONTENT_TYPE-47031b75-f6bb-4cd6-aef3-8f0ccfbfe131default-TEXT_VIEW-1dde52f7-9389-41e3-9a59-159fea3d906bdefault" + }, + { + "source": "CONSTANT-f360e448-3c26-49f8-a617-a257b2243d86", + "sourceHandle": "default", + "target": "PRINT_DATACONTAINER-f97df0b9-f133-4d4f-b366-9a5c8ed011ec", + "targetHandle": "default", + "id": "reactflow__edge-CONSTANT-f360e448-3c26-49f8-a617-a257b2243d86default-PRINT_DATACONTAINER-f97df0b9-f133-4d4f-b366-9a5c8ed011ecdefault" + }, + { + "source": "PRINT_DATACONTAINER-f97df0b9-f133-4d4f-b366-9a5c8ed011ec", + "sourceHandle": "default", + "target": "TEXT_VIEW-817997cd-1bc4-469f-a626-ec9638878d86", + "targetHandle": "default", + "id": "reactflow__edge-PRINT_DATACONTAINER-f97df0b9-f133-4d4f-b366-9a5c8ed011ecdefault-TEXT_VIEW-817997cd-1bc4-469f-a626-ec9638878d86default" + } + ], + "viewport": { + "x": 1139.470292881633, + "y": 572.2854272048312, + "zoom": 1.2136444284334926 + } + } +} \ No newline at end of file diff --git a/docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/examples/EX1/example.md b/docs/nodes/EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/examples/EX1/example.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/PRINT_DATACONTAINER.md b/docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/PRINT_DATACONTAINER.md new file mode 100644 index 0000000000..4040cdb963 --- /dev/null +++ b/docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/PRINT_DATACONTAINER.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/a1-[autogen]/docstring.txt b/docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..058b4f2e3e --- /dev/null +++ b/docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/a1-[autogen]/docstring.txt @@ -0,0 +1,8 @@ +The PRINT_DATACONTAINER node returns a TextBlob containing input DataContainer information. + + Must use the TEXT_VIEW node to view the text. + + Returns + ------- + DataContainer + TextBlob: Input datacontainer information diff --git a/docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/a1-[autogen]/python_code.txt b/docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..d38ada2936 --- /dev/null +++ b/docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/a1-[autogen]/python_code.txt @@ -0,0 +1,10 @@ +from flojoy import flojoy, DataContainer, TextBlob + + +@flojoy() +def PRINT_DATACONTAINER( + default: DataContainer, +) -> TextBlob: + + + return TextBlob(text_blob=str(default)) diff --git a/docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/appendix/hardware.md b/docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/appendix/media.md b/docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/appendix/notes.md b/docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/examples/EX1/app.json b/docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/examples/EX1/app.json new file mode 100644 index 0000000000..072a16fff6 --- /dev/null +++ b/docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/examples/EX1/app.json @@ -0,0 +1,701 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 208, + "height": 96, + "id": "CONSTANT-f360e448-3c26-49f8-a617-a257b2243d86", + "type": "GENERATORS", + "data": { + "id": "CONSTANT-f360e448-3c26-49f8-a617-a257b2243d86", + "label": "3.0", + "func": "CONSTANT", + "type": "GENERATORS", + "ctrls": { + "dc_type": { + "type": "select", + "options": [ + "Scalar", + "Vector", + "OrderedPair" + ], + "default": "OrderedPair", + "desc": "The type of DataContainer to return.", + "overload": null, + "functionName": "CONSTANT", + "param": "dc_type", + "value": "Vector" + }, + "constant": { + "type": "float", + "default": 3, + "desc": "The value of the y axis output.", + "overload": null, + "functionName": "CONSTANT", + "param": "constant", + "value": 3 + }, + "step": { + "type": "float", + "default": 1000, + "desc": "The size of the y and x axes.", + "overload": null, + "functionName": "CONSTANT", + "param": "step", + "value": 1000 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Vector|OrderedPair", + "multiple": false, + "desc": "Optional input that defines the size of the output." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Vector|Scalar", + "desc": "OrderedPair if selected\nx: the x axis generated with size 'step'\ny: the resulting constant with size 'step'\nVector if selected\nv: the resulting constant with size 'step'\nScalar if selected\nc: the resulting constant" + } + ], + "path": "GENERATORS/SIMULATIONS/CONSTANT/CONSTANT.py", + "selected": false + }, + "position": { + "x": -4.389812295729584, + "y": -70.22965827413745 + }, + "selected": false, + "positionAbsolute": { + "x": -4.389812295729584, + "y": -70.22965827413745 + }, + "dragging": true + }, + { + "width": 208, + "height": 96, + "id": "CONSTANT-2136b666-a5c8-491d-9b92-d39109c1735d", + "type": "GENERATORS", + "data": { + "id": "CONSTANT-2136b666-a5c8-491d-9b92-d39109c1735d", + "label": "3.0", + "func": "CONSTANT", + "type": "GENERATORS", + "ctrls": { + "dc_type": { + "type": "select", + "options": [ + "Scalar", + "Vector", + "OrderedPair" + ], + "default": "OrderedPair", + "desc": "The type of DataContainer to return.", + "overload": null, + "functionName": "CONSTANT", + "param": "dc_type", + "value": "Scalar" + }, + "constant": { + "type": "float", + "default": 3, + "desc": "The value of the y axis output.", + "overload": null, + "functionName": "CONSTANT", + "param": "constant", + "value": 3 + }, + "step": { + "type": "float", + "default": 1000, + "desc": "The size of the y and x axes.", + "overload": null, + "functionName": "CONSTANT", + "param": "step", + "value": 1000 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Vector|OrderedPair", + "multiple": false, + "desc": "Optional input that defines the size of the output." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Vector|Scalar", + "desc": "OrderedPair if selected\nx: the x axis generated with size 'step'\ny: the resulting constant with size 'step'\nVector if selected\nv: the resulting constant with size 'step'\nScalar if selected\nc: the resulting constant" + } + ], + "path": "GENERATORS/SIMULATIONS/CONSTANT/CONSTANT.py", + "selected": false + }, + "position": { + "x": -8.824363585712533, + "y": -416.3213586761047 + }, + "selected": false, + "positionAbsolute": { + "x": -8.824363585712533, + "y": -416.3213586761047 + }, + "dragging": true + }, + { + "width": 208, + "height": 96, + "id": "CONSTANT-5c7b7add-63a3-4a3f-aa9f-9c0cf172bb62", + "type": "GENERATORS", + "data": { + "id": "CONSTANT-5c7b7add-63a3-4a3f-aa9f-9c0cf172bb62", + "label": "3.0", + "func": "CONSTANT", + "type": "GENERATORS", + "ctrls": { + "dc_type": { + "type": "select", + "options": [ + "Scalar", + "Vector", + "OrderedPair" + ], + "default": "OrderedPair", + "desc": "The type of DataContainer to return.", + "overload": null, + "functionName": "CONSTANT", + "param": "dc_type", + "value": "OrderedPair" + }, + "constant": { + "type": "float", + "default": 3, + "desc": "The value of the y axis output.", + "overload": null, + "functionName": "CONSTANT", + "param": "constant", + "value": 3 + }, + "step": { + "type": "float", + "default": 1000, + "desc": "The size of the y and x axes.", + "overload": null, + "functionName": "CONSTANT", + "param": "step", + "value": 1000 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Vector|OrderedPair", + "multiple": false, + "desc": "Optional input that defines the size of the output." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Vector|Scalar", + "desc": "OrderedPair if selected\nx: the x axis generated with size 'step'\ny: the resulting constant with size 'step'\nVector if selected\nv: the resulting constant with size 'step'\nScalar if selected\nc: the resulting constant" + } + ], + "path": "GENERATORS/SIMULATIONS/CONSTANT/CONSTANT.py", + "selected": false + }, + "position": { + "x": -11.417226508304964, + "y": 298.92084056266 + }, + "selected": false, + "positionAbsolute": { + "x": -11.417226508304964, + "y": 298.92084056266 + }, + "dragging": true + }, + { + "width": 273, + "height": 160, + "id": "DATACONTAINER_TYPE-21be2d9a-d726-4d66-849c-1988ffb917c1", + "type": "EXTRACTORS", + "data": { + "id": "DATACONTAINER_TYPE-21be2d9a-d726-4d66-849c-1988ffb917c1", + "label": "DATACONTAINER TYPE", + "func": "DATACONTAINER_TYPE", + "type": "EXTRACTORS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "TextBlob:" + } + ], + "path": "EXTRACTORS/DEBUGGING/DATACONTAINER_TYPE/DATACONTAINER_TYPE.py", + "selected": false + }, + "position": { + "x": 367.2744596301207, + "y": -266.10188042774996 + }, + "selected": false, + "positionAbsolute": { + "x": 367.2744596301207, + "y": -266.10188042774996 + }, + "dragging": true + }, + { + "width": 160, + "height": 160, + "id": "DC_CONTENT_TYPE-47031b75-f6bb-4cd6-aef3-8f0ccfbfe131", + "type": "EXTRACTORS", + "data": { + "id": "DC_CONTENT_TYPE-47031b75-f6bb-4cd6-aef3-8f0ccfbfe131", + "label": "DC CONTENT TYPE", + "func": "DC_CONTENT_TYPE", + "type": "EXTRACTORS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "TextBlob:" + } + ], + "path": "EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/DC_CONTENT_TYPE.py", + "selected": false + }, + "position": { + "x": 423.04204666204885, + "y": -487.5001186468029 + }, + "selected": false, + "positionAbsolute": { + "x": 423.04204666204885, + "y": -487.5001186468029 + }, + "dragging": true + }, + { + "width": 160, + "height": 160, + "id": "DC_CONTENT_TYPE-194bbb3e-7852-4728-9459-59e9a71777bd", + "type": "EXTRACTORS", + "data": { + "id": "DC_CONTENT_TYPE-194bbb3e-7852-4728-9459-59e9a71777bd", + "label": "DC CONTENT TYPE 1", + "func": "DC_CONTENT_TYPE", + "type": "EXTRACTORS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "TextBlob:" + } + ], + "path": "EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/DC_CONTENT_TYPE.py", + "selected": false + }, + "position": { + "x": 418.8844775231683, + "y": -73.25978257171602 + }, + "selected": false, + "positionAbsolute": { + "x": 418.8844775231683, + "y": -73.25978257171602 + }, + "dragging": true + }, + { + "width": 160, + "height": 160, + "id": "DC_CONTENT_TYPE-e8a4674d-97f1-4a41-ab6d-531839ac16cf", + "type": "EXTRACTORS", + "data": { + "id": "DC_CONTENT_TYPE-e8a4674d-97f1-4a41-ab6d-531839ac16cf", + "label": "DC CONTENT TYPE 2", + "func": "DC_CONTENT_TYPE", + "type": "EXTRACTORS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "TextBlob:" + } + ], + "path": "EXTRACTORS/DEBUGGING/DC_CONTENT_TYPE/DC_CONTENT_TYPE.py", + "selected": false + }, + "position": { + "x": 422.58228096141244, + "y": 293.7089447224463 + }, + "selected": false, + "positionAbsolute": { + "x": 422.58228096141244, + "y": 293.7089447224463 + }, + "dragging": true + }, + { + "width": 384, + "height": 288, + "id": "TEXT_VIEW-817997cd-1bc4-469f-a626-ec9638878d86", + "type": "VISUALIZERS", + "data": { + "id": "TEXT_VIEW-817997cd-1bc4-469f-a626-ec9638878d86", + "label": "TEXT VIEW", + "func": "TEXT_VIEW", + "type": "VISUALIZERS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "the DataContainer to be visualized in text format" + } + ], + "path": "VISUALIZERS/DATA_STRUCTURE/TEXT_VIEW/TEXT_VIEW.py", + "selected": false + }, + "position": { + "x": 822.9185133761199, + "y": 19.47337889558895 + }, + "selected": false, + "positionAbsolute": { + "x": 822.9185133761199, + "y": 19.47337889558895 + }, + "dragging": true + }, + { + "width": 384, + "height": 288, + "id": "TEXT_VIEW-c4fb79bf-789e-4aa4-83f6-ab1b7610b5d9", + "type": "VISUALIZERS", + "data": { + "id": "TEXT_VIEW-c4fb79bf-789e-4aa4-83f6-ab1b7610b5d9", + "label": "TEXT VIEW 1", + "func": "TEXT_VIEW", + "type": "VISUALIZERS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "the DataContainer to be visualized in text format" + } + ], + "path": "VISUALIZERS/DATA_STRUCTURE/TEXT_VIEW/TEXT_VIEW.py", + "selected": false + }, + "position": { + "x": 830.5105759175779, + "y": -148.29771160498527 + }, + "selected": false, + "positionAbsolute": { + "x": 830.5105759175779, + "y": -148.29771160498527 + }, + "dragging": true + }, + { + "width": 384, + "height": 288, + "id": "TEXT_VIEW-7a0ff8f6-ca21-481c-95cf-a63e2435f1a4", + "type": "VISUALIZERS", + "data": { + "id": "TEXT_VIEW-7a0ff8f6-ca21-481c-95cf-a63e2435f1a4", + "label": "TEXT VIEW 2", + "func": "TEXT_VIEW", + "type": "VISUALIZERS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "the DataContainer to be visualized in text format" + } + ], + "path": "VISUALIZERS/DATA_STRUCTURE/TEXT_VIEW/TEXT_VIEW.py", + "selected": false + }, + "position": { + "x": 879.935152708707, + "y": -347.8394230588621 + }, + "selected": false, + "positionAbsolute": { + "x": 879.935152708707, + "y": -347.8394230588621 + }, + "dragging": true + }, + { + "width": 384, + "height": 288, + "id": "TEXT_VIEW-1dde52f7-9389-41e3-9a59-159fea3d906b", + "type": "VISUALIZERS", + "data": { + "id": "TEXT_VIEW-1dde52f7-9389-41e3-9a59-159fea3d906b", + "label": "TEXT VIEW 3", + "func": "TEXT_VIEW", + "type": "VISUALIZERS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "the DataContainer to be visualized in text format" + } + ], + "path": "VISUALIZERS/DATA_STRUCTURE/TEXT_VIEW/TEXT_VIEW.py", + "selected": false + }, + "position": { + "x": 832.5997194231193, + "y": -561.8439852192519 + }, + "selected": false, + "positionAbsolute": { + "x": 832.5997194231193, + "y": -561.8439852192519 + }, + "dragging": true + }, + { + "width": 384, + "height": 288, + "id": "TEXT_VIEW-a27f28a7-9db3-4b3b-8558-9c772b38ca7c", + "type": "VISUALIZERS", + "data": { + "id": "TEXT_VIEW-a27f28a7-9db3-4b3b-8558-9c772b38ca7c", + "label": "TEXT VIEW 4", + "func": "TEXT_VIEW", + "type": "VISUALIZERS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "the DataContainer to be visualized in text format" + } + ], + "path": "VISUALIZERS/DATA_STRUCTURE/TEXT_VIEW/TEXT_VIEW.py", + "selected": false + }, + "position": { + "x": 828.6977981693892, + "y": 329.38047402670065 + }, + "selected": false, + "positionAbsolute": { + "x": 828.6977981693892, + "y": 329.38047402670065 + }, + "dragging": true + }, + { + "width": 273, + "height": 160, + "id": "PRINT_DATACONTAINER-f97df0b9-f133-4d4f-b366-9a5c8ed011ec", + "type": "EXTRACTORS", + "data": { + "id": "PRINT_DATACONTAINER-f97df0b9-f133-4d4f-b366-9a5c8ed011ec", + "label": "PRINT DATACONTAINER", + "func": "PRINT_DATACONTAINER", + "type": "EXTRACTORS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "TextBlob:" + } + ], + "path": "EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/PRINT_DATACONTAINER.py", + "selected": false + }, + "position": { + "x": 365.3841640709858, + "y": 103.61032181488429 + }, + "selected": false, + "positionAbsolute": { + "x": 365.3841640709858, + "y": 103.61032181488429 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONSTANT-2136b666-a5c8-491d-9b92-d39109c1735d", + "sourceHandle": "default", + "target": "DC_CONTENT_TYPE-47031b75-f6bb-4cd6-aef3-8f0ccfbfe131", + "targetHandle": "default", + "id": "reactflow__edge-CONSTANT-2136b666-a5c8-491d-9b92-d39109c1735ddefault-DC_CONTENT_TYPE-47031b75-f6bb-4cd6-aef3-8f0ccfbfe131default" + }, + { + "source": "CONSTANT-f360e448-3c26-49f8-a617-a257b2243d86", + "sourceHandle": "default", + "target": "DATACONTAINER_TYPE-21be2d9a-d726-4d66-849c-1988ffb917c1", + "targetHandle": "default", + "id": "reactflow__edge-CONSTANT-f360e448-3c26-49f8-a617-a257b2243d86default-DATACONTAINER_TYPE-21be2d9a-d726-4d66-849c-1988ffb917c1default" + }, + { + "source": "CONSTANT-f360e448-3c26-49f8-a617-a257b2243d86", + "sourceHandle": "default", + "target": "DC_CONTENT_TYPE-194bbb3e-7852-4728-9459-59e9a71777bd", + "targetHandle": "default", + "id": "reactflow__edge-CONSTANT-f360e448-3c26-49f8-a617-a257b2243d86default-DC_CONTENT_TYPE-194bbb3e-7852-4728-9459-59e9a71777bddefault" + }, + { + "source": "CONSTANT-5c7b7add-63a3-4a3f-aa9f-9c0cf172bb62", + "sourceHandle": "default", + "target": "DC_CONTENT_TYPE-e8a4674d-97f1-4a41-ab6d-531839ac16cf", + "targetHandle": "default", + "id": "reactflow__edge-CONSTANT-5c7b7add-63a3-4a3f-aa9f-9c0cf172bb62default-DC_CONTENT_TYPE-e8a4674d-97f1-4a41-ab6d-531839ac16cfdefault" + }, + { + "source": "DC_CONTENT_TYPE-e8a4674d-97f1-4a41-ab6d-531839ac16cf", + "sourceHandle": "default", + "target": "TEXT_VIEW-a27f28a7-9db3-4b3b-8558-9c772b38ca7c", + "targetHandle": "default", + "id": "reactflow__edge-DC_CONTENT_TYPE-e8a4674d-97f1-4a41-ab6d-531839ac16cfdefault-TEXT_VIEW-a27f28a7-9db3-4b3b-8558-9c772b38ca7cdefault" + }, + { + "source": "DC_CONTENT_TYPE-194bbb3e-7852-4728-9459-59e9a71777bd", + "sourceHandle": "default", + "target": "TEXT_VIEW-c4fb79bf-789e-4aa4-83f6-ab1b7610b5d9", + "targetHandle": "default", + "id": "reactflow__edge-DC_CONTENT_TYPE-194bbb3e-7852-4728-9459-59e9a71777bddefault-TEXT_VIEW-c4fb79bf-789e-4aa4-83f6-ab1b7610b5d9default" + }, + { + "source": "DATACONTAINER_TYPE-21be2d9a-d726-4d66-849c-1988ffb917c1", + "sourceHandle": "default", + "target": "TEXT_VIEW-7a0ff8f6-ca21-481c-95cf-a63e2435f1a4", + "targetHandle": "default", + "id": "reactflow__edge-DATACONTAINER_TYPE-21be2d9a-d726-4d66-849c-1988ffb917c1default-TEXT_VIEW-7a0ff8f6-ca21-481c-95cf-a63e2435f1a4default" + }, + { + "source": "DC_CONTENT_TYPE-47031b75-f6bb-4cd6-aef3-8f0ccfbfe131", + "sourceHandle": "default", + "target": "TEXT_VIEW-1dde52f7-9389-41e3-9a59-159fea3d906b", + "targetHandle": "default", + "id": "reactflow__edge-DC_CONTENT_TYPE-47031b75-f6bb-4cd6-aef3-8f0ccfbfe131default-TEXT_VIEW-1dde52f7-9389-41e3-9a59-159fea3d906bdefault" + }, + { + "source": "CONSTANT-f360e448-3c26-49f8-a617-a257b2243d86", + "sourceHandle": "default", + "target": "PRINT_DATACONTAINER-f97df0b9-f133-4d4f-b366-9a5c8ed011ec", + "targetHandle": "default", + "id": "reactflow__edge-CONSTANT-f360e448-3c26-49f8-a617-a257b2243d86default-PRINT_DATACONTAINER-f97df0b9-f133-4d4f-b366-9a5c8ed011ecdefault" + }, + { + "source": "PRINT_DATACONTAINER-f97df0b9-f133-4d4f-b366-9a5c8ed011ec", + "sourceHandle": "default", + "target": "TEXT_VIEW-817997cd-1bc4-469f-a626-ec9638878d86", + "targetHandle": "default", + "id": "reactflow__edge-PRINT_DATACONTAINER-f97df0b9-f133-4d4f-b366-9a5c8ed011ecdefault-TEXT_VIEW-817997cd-1bc4-469f-a626-ec9638878d86default" + } + ], + "viewport": { + "x": 1139.470292881633, + "y": 572.2854272048312, + "zoom": 1.2136444284334926 + } + } +} \ No newline at end of file diff --git a/docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/examples/EX1/example.md b/docs/nodes/EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/examples/EX1/example.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/nodes/GENERATORS/SIMULATIONS/POPULATE/POPULATE.md b/docs/nodes/GENERATORS/SIMULATIONS/POPULATE/POPULATE.md new file mode 100644 index 0000000000..3faf5d95f3 --- /dev/null +++ b/docs/nodes/GENERATORS/SIMULATIONS/POPULATE/POPULATE.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/GENERATORS/SIMULATIONS/POPULATE/a1-[autogen]/docstring.txt b/docs/nodes/GENERATORS/SIMULATIONS/POPULATE/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..9b3910a111 --- /dev/null +++ b/docs/nodes/GENERATORS/SIMULATIONS/POPULATE/a1-[autogen]/docstring.txt @@ -0,0 +1,27 @@ +The POPULATE node generates random numbers, depending on the distribution selected and the input data. + + Inputs + ------ + default : OrderedPair|Vector + Input to use as the x-axis for the random samples. + + Parameters + ---------- + distribution : select + the distribution over the random samples + lower_bound : float + the lower bound of the output interval + upper_bound : float + the upper bound of the output interval + normal_mean : float + the mean or "center" of the normal distribution + normal_standard_deviation : float + the spread or "width" of the normal distribution + poisson_events : float + the expected number of events occurring in a fixed time-interval when distribution is poisson + + Returns + ------- + OrderedPair + x: provided from input data + y: the random samples diff --git a/docs/nodes/GENERATORS/SIMULATIONS/POPULATE/a1-[autogen]/python_code.txt b/docs/nodes/GENERATORS/SIMULATIONS/POPULATE/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..cb65e8388e --- /dev/null +++ b/docs/nodes/GENERATORS/SIMULATIONS/POPULATE/a1-[autogen]/python_code.txt @@ -0,0 +1,58 @@ +import random +import numpy as np +from flojoy import flojoy, OrderedPair, Vector, display +from typing import Literal, Optional + + +@flojoy +def POPULATE( + default: OrderedPair | Vector, + distribution: Literal["normal", "uniform", "poisson"] = "normal", + lower_bound: float = 0, + upper_bound: float = 1, + normal_mean: float = 0, + normal_standard_deviation: float = 1, + poisson_events: float = 1, +) -> OrderedPair: + + + if upper_bound < lower_bound: + upper_bound, lower_bound = lower_bound, upper_bound + + seed = random.randint(1, 10000) + my_generator = np.random.default_rng(seed) + + match default: + case OrderedPair(): + size = len(default.x) + x = default.x + case Vector(): + size = len(default.v) + x = default.v + + match distribution: + case "uniform": + y = my_generator.uniform(low=lower_bound, high=upper_bound, size=size) + case "normal": + y = my_generator.normal( + loc=normal_mean, scale=normal_standard_deviation, size=size + ) + case "poisson": + y = my_generator.poisson(lam=poisson_events, size=size) + + return OrderedPair(x=x, y=y) + + +@display +def OVERLOAD(lower_bound, upper_bound, distribution="uniform") -> None: + return None + + +@display +def OVERLOAD(normal_mean, normal_standard_deviation, distribution="normal") -> None: + return None + + +@display +def OVERLOAD(poisson_events, distribution="poisson") -> None: + return None diff --git a/docs/nodes/GENERATORS/SIMULATIONS/POPULATE/appendix/hardware.md b/docs/nodes/GENERATORS/SIMULATIONS/POPULATE/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/GENERATORS/SIMULATIONS/POPULATE/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/GENERATORS/SIMULATIONS/POPULATE/appendix/media.md b/docs/nodes/GENERATORS/SIMULATIONS/POPULATE/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/GENERATORS/SIMULATIONS/POPULATE/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/GENERATORS/SIMULATIONS/POPULATE/appendix/notes.md b/docs/nodes/GENERATORS/SIMULATIONS/POPULATE/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/GENERATORS/SIMULATIONS/POPULATE/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/GENERATORS/SIMULATIONS/POPULATE/examples/EX1/app.json b/docs/nodes/GENERATORS/SIMULATIONS/POPULATE/examples/EX1/app.json new file mode 100644 index 0000000000..786ebde992 --- /dev/null +++ b/docs/nodes/GENERATORS/SIMULATIONS/POPULATE/examples/EX1/app.json @@ -0,0 +1,444 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 380, + "height": 293, + "id": "HISTOGRAM-c5469532-dd28-4465-b8b0-524174db86e4", + "type": "VISUALIZERS", + "data": { + "id": "HISTOGRAM-c5469532-dd28-4465-b8b0-524174db86e4", + "label": "HISTOGRAM", + "func": "HISTOGRAM", + "type": "VISUALIZERS", + "ctrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|DataFrame|Matrix", + "multiple": false + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Plotly" + } + ], + "path": "PYTHON/nodes/VISUALIZERS/PLOTLY/HISTOGRAM/HISTOGRAM.py", + "selected": false + }, + "position": { + "x": 794.6062406107221, + "y": -355.5689772430068 + }, + "selected": false, + "positionAbsolute": { + "x": 794.6062406107221, + "y": -355.5689772430068 + }, + "dragging": true + }, + { + "width": 208, + "height": 96, + "id": "LINSPACE-14e316a4-dcdb-47ac-868d-d829b0c30678", + "type": "GENERATORS", + "data": { + "id": "LINSPACE-14e316a4-dcdb-47ac-868d-d829b0c30678", + "label": "LINSPACE", + "func": "LINSPACE", + "type": "GENERATORS", + "ctrls": { + "start": { + "type": "float", + "default": 10, + "desc": "The start point of the data.", + "overload": null, + "functionName": "LINSPACE", + "param": "start", + "value": 10 + }, + "end": { + "type": "float", + "default": 0, + "desc": "The end point of the data.", + "overload": null, + "functionName": "LINSPACE", + "param": "end", + "value": 0 + }, + "step": { + "type": "int", + "default": 1000, + "desc": "The number of points in the vector.", + "overload": null, + "functionName": "LINSPACE", + "param": "step", + "value": 1000 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Vector|OrderedPair", + "multiple": false, + "desc": "Optional input in case LINSPACE is used in a loop. Not used." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Vector", + "desc": "v: the vector between 'start' and 'end' with a 'step' number of points." + } + ], + "path": "GENERATORS/SIMULATIONS/LINSPACE/LINSPACE.py", + "selected": false + }, + "position": { + "x": 60.78604888475641, + "y": -72.26608171130152 + }, + "selected": false, + "positionAbsolute": { + "x": 60.78604888475641, + "y": -72.26608171130152 + }, + "dragging": true + }, + { + "width": 208, + "height": 96, + "id": "POPULATE-b27a1155-ccd8-4e60-a0ca-3a0744f6f19c", + "type": "GENERATORS", + "data": { + "id": "POPULATE-b27a1155-ccd8-4e60-a0ca-3a0744f6f19c", + "label": "POPULATE", + "func": "POPULATE", + "type": "GENERATORS", + "ctrls": { + "distribution": { + "type": "select", + "options": [ + "normal", + "uniform", + "poisson" + ], + "default": "normal", + "desc": "the distribution over the random samples", + "overload": { + "uniform": [ + "lower_bound", + "upper_bound" + ], + "normal": [ + "normal_mean", + "normal_standard_deviation" + ], + "poisson": [ + "poisson_events" + ] + }, + "functionName": "POPULATE", + "param": "distribution", + "value": "normal" + }, + "lower_bound": { + "type": "float", + "default": 0, + "desc": "the lower bound of the output interval", + "overload": null, + "functionName": "POPULATE", + "param": "lower_bound", + "value": 0 + }, + "upper_bound": { + "type": "float", + "default": 1, + "desc": "the upper bound of the output interval", + "overload": null, + "functionName": "POPULATE", + "param": "upper_bound", + "value": 1 + }, + "normal_mean": { + "type": "float", + "default": 0, + "desc": "the mean or \"center\" of the normal distribution", + "overload": null, + "functionName": "POPULATE", + "param": "normal_mean", + "value": 0 + }, + "normal_standard_deviation": { + "type": "float", + "default": 1, + "desc": "the spread or \"width\" of the normal distribution", + "overload": null, + "functionName": "POPULATE", + "param": "normal_standard_deviation", + "value": 1 + }, + "poisson_events": { + "type": "float", + "default": 1, + "desc": "the expected number of events occurring in a fixed time-interval when distribution is poisson", + "overload": null, + "functionName": "POPULATE", + "param": "poisson_events", + "value": 1 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Vector", + "multiple": false, + "desc": "Input to use as the x-axis for the random samples." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair", + "desc": "x: provided from input data\ny: the random samples" + } + ], + "path": "GENERATORS/SIMULATIONS/POPULATE/POPULATE.py", + "selected": false + }, + "position": { + "x": 428.99358191180903, + "y": -258.88112365217773 + }, + "selected": false, + "positionAbsolute": { + "x": 428.99358191180903, + "y": -258.88112365217773 + }, + "dragging": true + }, + { + "width": 208, + "height": 96, + "id": "POPULATE-fb436d2a-9db1-4de7-8e25-97b7c56a9f29", + "type": "GENERATORS", + "data": { + "id": "POPULATE-fb436d2a-9db1-4de7-8e25-97b7c56a9f29", + "label": "POPULATE 1", + "func": "POPULATE", + "type": "GENERATORS", + "ctrls": { + "distribution": { + "type": "select", + "options": [ + "normal", + "uniform", + "poisson" + ], + "default": "normal", + "desc": "the distribution over the random samples", + "overload": { + "uniform": [ + "lower_bound", + "upper_bound" + ], + "normal": [ + "normal_mean", + "normal_standard_deviation" + ], + "poisson": [ + "poisson_events" + ] + }, + "functionName": "POPULATE", + "param": "distribution", + "value": "poisson" + }, + "lower_bound": { + "type": "float", + "default": 0, + "desc": "the lower bound of the output interval", + "overload": null, + "functionName": "POPULATE", + "param": "lower_bound", + "value": 0 + }, + "upper_bound": { + "type": "float", + "default": 1, + "desc": "the upper bound of the output interval", + "overload": null, + "functionName": "POPULATE", + "param": "upper_bound", + "value": 1 + }, + "normal_mean": { + "type": "float", + "default": 0, + "desc": "the mean or \"center\" of the normal distribution", + "overload": null, + "functionName": "POPULATE", + "param": "normal_mean", + "value": 0 + }, + "normal_standard_deviation": { + "type": "float", + "default": 1, + "desc": "the spread or \"width\" of the normal distribution", + "overload": null, + "functionName": "POPULATE", + "param": "normal_standard_deviation", + "value": 1 + }, + "poisson_events": { + "type": "float", + "default": 1, + "desc": "the expected number of events occurring in a fixed time-interval when distribution is poisson", + "overload": null, + "functionName": "POPULATE", + "param": "poisson_events", + "value": 1 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Vector", + "multiple": false, + "desc": "Input to use as the x-axis for the random samples." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair", + "desc": "x: provided from input data\ny: the random samples" + } + ], + "path": "GENERATORS/SIMULATIONS/POPULATE/POPULATE.py", + "selected": false + }, + "position": { + "x": 423.735359873562, + "y": 61.2094115519848 + }, + "selected": false, + "positionAbsolute": { + "x": 423.735359873562, + "y": 61.2094115519848 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "HISTOGRAM-e426b844-934e-4b27-983f-68afc25b5659", + "type": "VISUALIZERS", + "data": { + "id": "HISTOGRAM-e426b844-934e-4b27-983f-68afc25b5659", + "label": "HISTOGRAM 1", + "func": "HISTOGRAM", + "type": "VISUALIZERS", + "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 Histogram visualization" + } + ], + "path": "VISUALIZERS/PLOTLY/HISTOGRAM/HISTOGRAM.py", + "selected": false + }, + "position": { + "x": 792.6069096920073, + "y": -29.88744351696306 + }, + "selected": false, + "positionAbsolute": { + "x": 792.6069096920073, + "y": -29.88744351696306 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "LINSPACE-14e316a4-dcdb-47ac-868d-d829b0c30678", + "sourceHandle": "default", + "target": "POPULATE-b27a1155-ccd8-4e60-a0ca-3a0744f6f19c", + "targetHandle": "default", + "id": "reactflow__edge-LINSPACE-14e316a4-dcdb-47ac-868d-d829b0c30678default-POPULATE-b27a1155-ccd8-4e60-a0ca-3a0744f6f19cdefault" + }, + { + "source": "POPULATE-b27a1155-ccd8-4e60-a0ca-3a0744f6f19c", + "sourceHandle": "default", + "target": "HISTOGRAM-c5469532-dd28-4465-b8b0-524174db86e4", + "targetHandle": "default", + "id": "reactflow__edge-POPULATE-b27a1155-ccd8-4e60-a0ca-3a0744f6f19cdefault-HISTOGRAM-c5469532-dd28-4465-b8b0-524174db86e4default" + }, + { + "source": "LINSPACE-14e316a4-dcdb-47ac-868d-d829b0c30678", + "sourceHandle": "default", + "target": "POPULATE-fb436d2a-9db1-4de7-8e25-97b7c56a9f29", + "targetHandle": "default", + "id": "reactflow__edge-LINSPACE-14e316a4-dcdb-47ac-868d-d829b0c30678default-POPULATE-fb436d2a-9db1-4de7-8e25-97b7c56a9f29default" + }, + { + "source": "POPULATE-fb436d2a-9db1-4de7-8e25-97b7c56a9f29", + "sourceHandle": "default", + "target": "HISTOGRAM-e426b844-934e-4b27-983f-68afc25b5659", + "targetHandle": "default", + "id": "reactflow__edge-POPULATE-fb436d2a-9db1-4de7-8e25-97b7c56a9f29default-HISTOGRAM-e426b844-934e-4b27-983f-68afc25b5659default" + } + ], + "viewport": { + "x": -373.4542219202399, + "y": 120.20973884288571, + "zoom": 1.101977389476256 + } + }, + "ctrlsManifest": [ + { + "type": "input", + "name": "Slider", + "id": "INPUT_PLACEHOLDER", + "hidden": false, + "minHeight": 1, + "minWidth": 2, + "layout": { + "x": 0, + "y": 0, + "h": 2, + "w": 2, + "minH": 1, + "minW": 2, + "i": "INPUT_PLACEHOLDER" + } + } + ] +} \ No newline at end of file diff --git a/docs/nodes/GENERATORS/SIMULATIONS/POPULATE/examples/EX1/example.md b/docs/nodes/GENERATORS/SIMULATIONS/POPULATE/examples/EX1/example.md new file mode 100644 index 0000000000..b172aefe60 --- /dev/null +++ b/docs/nodes/GENERATORS/SIMULATIONS/POPULATE/examples/EX1/example.md @@ -0,0 +1,6 @@ +In this example, `LINSPACE` is used to generate a list of 1000 samples, it is then passed into two `POPULATE` nodes, which randomizes the values within the list with a normal (or Gaussian) distribution and a Poisson distribution. + +The distribution is then plotted with `HISTOGRAM` and as expected of a Gaussian distribution, +the output of the `HISTOGRAM` node converges towards a bell curve. The Poisson distribution results in more of a step function. + +The `POPULATE` node requires an input `Vector` or `OrderedPair` to function. diff --git a/docs/nodes/GENERATORS/SIMULATIONS/RAND/a1-[autogen]/docstring.txt b/docs/nodes/GENERATORS/SIMULATIONS/RAND/a1-[autogen]/docstring.txt index 77fa907315..55e1ceeb71 100644 --- a/docs/nodes/GENERATORS/SIMULATIONS/RAND/a1-[autogen]/docstring.txt +++ b/docs/nodes/GENERATORS/SIMULATIONS/RAND/a1-[autogen]/docstring.txt @@ -1,32 +1,32 @@ - The RAND node generates a random number or a list of random numbers, depending on the distribution selected. -Inputs ------- -default : OrderedPair|Vector - Optional input to use as the x-axis for the random samples. + Inputs + ------ + default : DataContainer + unused in this node -Parameters ----------- -distribution : select - the distribution over the random samples -lower_bound : float - the lower bound of the output interval -upper_bound : float - the upper bound of the output interval -normal_mean : float - the mean or "center" of the normal distribution -normal_standard_deviation : float - the spread or "width" of the normal distribution -poisson_events : float - the expected number of events occurring in a fixed time-interval when distribution is poisson + Parameters + ---------- + distribution : select + the distribution over the random samples + size : int + the size of the output. =1 outputs Scalar, >1 outputs Vector + lower_bound : float + the lower bound of the output interval + upper_bound : float + the upper bound of the output interval + normal_mean : float + the mean or "center" of the normal distribution + normal_standard_deviation : float + the spread or "width" of the normal distribution + poisson_events : float + the expected number of events occurring in a fixed time-interval when distribution is poisson -Returns -------- -OrderedPair|Scalar - OrderedPair if there is an input. - x: the x-axis of the input - y: the random samples + Returns + ------- + Scalar|Vector + Vector if size > 1 + v: the random samples - Scalar if there is no input. - c: the random number + Scalar if size = 1 + c: the random number diff --git a/docs/nodes/GENERATORS/SIMULATIONS/RAND/a1-[autogen]/python_code.txt b/docs/nodes/GENERATORS/SIMULATIONS/RAND/a1-[autogen]/python_code.txt index 05c0109177..33ed2bd37e 100644 --- a/docs/nodes/GENERATORS/SIMULATIONS/RAND/a1-[autogen]/python_code.txt +++ b/docs/nodes/GENERATORS/SIMULATIONS/RAND/a1-[autogen]/python_code.txt @@ -1,37 +1,30 @@ import random import numpy as np -from flojoy import flojoy, OrderedPair, Scalar, Vector, display +from flojoy import flojoy, Scalar, Vector, display, DataContainer from typing import Literal, Optional @flojoy def RAND( - default: Optional[OrderedPair | Vector] = None, + default: Optional[DataContainer] = None, distribution: Literal["normal", "uniform", "poisson"] = "normal", + size: int = 1000, lower_bound: float = 0, upper_bound: float = 1, normal_mean: float = 0, normal_standard_deviation: float = 1, poisson_events: float = 1, -) -> OrderedPair | Scalar: +) -> Vector | Scalar: + assert size >= 1, "Size must be greater than or equal to than 1" + if upper_bound < lower_bound: upper_bound, lower_bound = lower_bound, upper_bound seed = random.randint(1, 10000) my_generator = np.random.default_rng(seed) - match default: - case OrderedPair(): - size = len(default.x) - x = default.x - case Vector(): - size = len(default.v) - x = default.v - case _: - size = 1 - match distribution: case "uniform": y = my_generator.uniform(low=lower_bound, high=upper_bound, size=size) @@ -42,19 +35,24 @@ def RAND( case "poisson": y = my_generator.poisson(lam=poisson_events, size=size) - return OrderedPair(x=x, y=y) if default else Scalar(c=y) + if size > 1: + return Vector(v=y) + + return Scalar(c=float(y[0])) @display -def OVERLOAD(lower_bound, upper_bound, distribution="uniform") -> None: +def OVERLOAD(size, lower_bound, upper_bound, distribution="uniform") -> None: return None @display -def OVERLOAD(normal_mean, normal_standard_deviation, distribution="normal") -> None: +def OVERLOAD( + size, normal_mean, normal_standard_deviation, distribution="normal" +) -> None: return None @display -def OVERLOAD(poisson_events, distribution="poisson") -> None: +def OVERLOAD(size, poisson_events, distribution="poisson") -> None: return None diff --git a/docs/nodes/GENERATORS/SIMULATIONS/RAND/examples/EX1/app.json b/docs/nodes/GENERATORS/SIMULATIONS/RAND/examples/EX1/app.json index cc4910b1e8..b4ad89dd4c 100644 --- a/docs/nodes/GENERATORS/SIMULATIONS/RAND/examples/EX1/app.json +++ b/docs/nodes/GENERATORS/SIMULATIONS/RAND/examples/EX1/app.json @@ -2,75 +2,90 @@ "rfInstance": { "nodes": [ { - "width": 150, - "height": 150, - "id": "LINSPACE-cc55781a-14c8-4405-8fd1-0157351b3486", - "type": "default", + "width": 380, + "height": 293, + "id": "HISTOGRAM-c5469532-dd28-4465-b8b0-524174db86e4", + "type": "VISUALIZERS", "data": { - "id": "LINSPACE-cc55781a-14c8-4405-8fd1-0157351b3486", - "label": "LINSPACE", - "func": "LINSPACE", - "type": "default", - "ctrls": { - "start": { - "type": "float", - "default": 10, - "functionName": "LINSPACE", - "param": "start", - "value": "0" - }, - "end": { - "type": "float", - "default": 0, - "functionName": "LINSPACE", - "param": "end", - "value": "2000" - }, - "step": { - "type": "int", - "default": 1000, - "functionName": "LINSPACE", - "param": "step", - "value": "2000" + "id": "HISTOGRAM-c5469532-dd28-4465-b8b0-524174db86e4", + "label": "HISTOGRAM", + "func": "HISTOGRAM", + "type": "VISUALIZERS", + "ctrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|DataFrame|Matrix", + "multiple": false } - }, + ], "outputs": [ { "name": "default", "id": "default", - "type": "OrderedPair" + "type": "Plotly" } ], - "path": "PYTHON/nodes/GENERATORS/SIMULATIONS/LINSPACE/LINSPACE.py", + "path": "PYTHON/nodes/VISUALIZERS/PLOTLY/HISTOGRAM/HISTOGRAM.py", "selected": false }, "position": { - "x": 71.58328955005041, - "y": -121.19469825521614 + "x": 811.2928245068351, + "y": -146.0596461029216 }, "selected": false, "positionAbsolute": { - "x": 71.58328955005041, - "y": -121.19469825521614 + "x": 811.2928245068351, + "y": -146.0596461029216 }, "dragging": true }, { - "width": 250, - "height": 159, - "id": "HISTOGRAM-c5469532-dd28-4465-b8b0-524174db86e4", + "width": 380, + "height": 293, + "id": "BIG_NUMBER-59ecc8d4-f674-4af7-869f-f429f0b1c266", "type": "VISUALIZERS", "data": { - "id": "HISTOGRAM-c5469532-dd28-4465-b8b0-524174db86e4", - "label": "HISTOGRAM", - "func": "HISTOGRAM", + "id": "BIG_NUMBER-59ecc8d4-f674-4af7-869f-f429f0b1c266", + "label": "BIG NUMBER", + "func": "BIG_NUMBER", "type": "VISUALIZERS", - "ctrls": {}, + "ctrls": { + "suffix": { + "type": "str", + "default": null, + "functionName": "BIG_NUMBER", + "param": "suffix", + "value": "" + }, + "prefix": { + "type": "str", + "default": null, + "functionName": "BIG_NUMBER", + "param": "prefix", + "value": "" + }, + "title": { + "type": "str", + "default": null, + "functionName": "BIG_NUMBER", + "param": "title", + "value": "" + }, + "relative_delta": { + "type": "bool", + "default": true, + "functionName": "BIG_NUMBER", + "param": "relative_delta", + "value": true + } + }, "inputs": [ { "name": "default", "id": "default", - "type": "OrderedPair|DataFrame|Matrix", + "type": "OrderedPair", "multiple": false } ], @@ -81,134 +96,201 @@ "type": "Plotly" } ], - "path": "PYTHON/nodes/VISUALIZERS/PLOTLY/HISTOGRAM/HISTOGRAM.py", + "path": "PYTHON/nodes/VISUALIZERS/PLOTLY/BIG_NUMBER/BIG_NUMBER.py", "selected": false }, "position": { - "x": 807.1730016964145, - "y": -111.45313449538975 + "x": 815.0077637293098, + "y": 255.69966488030104 }, "selected": false, "positionAbsolute": { - "x": 807.1730016964145, - "y": -111.45313449538975 + "x": 815.0077637293098, + "y": 255.69966488030104 }, "dragging": true }, { - "width": 130, - "height": 130, - "id": "RAND-1fe43d0a-6b15-49d0-b6e0-35c61744a60a", + "width": 208, + "height": 96, + "id": "RAND-110a9abb-d0df-4b06-9555-6b9e38cdd237", "type": "GENERATORS", "data": { - "id": "RAND-1fe43d0a-6b15-49d0-b6e0-35c61744a60a", + "id": "RAND-110a9abb-d0df-4b06-9555-6b9e38cdd237", "label": "RAND", "func": "RAND", "type": "GENERATORS", "ctrls": { "distribution": { "type": "select", - "default": "normal", "options": [ "normal", "uniform", "poisson" ], + "default": "normal", + "desc": "the distribution over the random samples", + "overload": { + "uniform": [ + "size", + "lower_bound", + "upper_bound" + ], + "normal": [ + "size", + "normal_mean", + "normal_standard_deviation" + ], + "poisson": [ + "size", + "poisson_events" + ] + }, "functionName": "RAND", "param": "distribution", "value": "normal" }, + "size": { + "type": "int", + "default": 1000, + "desc": "the size of the output. =1 outputs Scalar, >1 outputs Vector", + "overload": null, + "functionName": "RAND", + "param": "size", + "value": 1000 + }, "lower_bound": { "type": "float", "default": 0, + "desc": "the lower bound of the output interval", + "overload": null, "functionName": "RAND", "param": "lower_bound", - "value": "0" + "value": 0 }, "upper_bound": { "type": "float", "default": 1, + "desc": "the upper bound of the output interval", + "overload": null, "functionName": "RAND", "param": "upper_bound", - "value": "1" + "value": 1 }, "normal_mean": { "type": "float", "default": 0, + "desc": "the mean or \"center\" of the normal distribution", + "overload": null, "functionName": "RAND", "param": "normal_mean", - "value": "0" + "value": 0 }, "normal_standard_deviation": { "type": "float", "default": 1, + "desc": "the spread or \"width\" of the normal distribution", + "overload": null, "functionName": "RAND", "param": "normal_standard_deviation", - "value": "5" + "value": 1 }, "poisson_events": { "type": "float", "default": 1, + "desc": "the expected number of events occurring in a fixed time-interval when distribution is poisson", + "overload": null, "functionName": "RAND", "param": "poisson_events", - "value": "1" + "value": 1 } }, + "initCtrls": {}, "inputs": [ { "name": "default", "id": "default", - "type": "OrderedPair", - "multiple": false + "type": "Any", + "multiple": false, + "desc": "unused in this node" } ], "outputs": [ { "name": "default", "id": "default", - "type": "OrderedPair|Scalar" + "type": "Vector|Scalar", + "desc": "Vector if size > 1\nv: the random samples\n\nScalar if size = 1\nc: the random number" } ], - "path": "PYTHON/nodes/GENERATORS/SIMULATIONS/RAND/RAND.py", + "path": "GENERATORS/SIMULATIONS/RAND/RAND.py", "selected": false }, "position": { - "x": 454.43802731096747, - "y": -117.22102655068787 + "x": 428.5700838695367, + "y": -49.13895270504895 }, "selected": false, "positionAbsolute": { - "x": 454.43802731096747, - "y": -117.22102655068787 + "x": 428.5700838695367, + "y": -49.13895270504895 }, "dragging": true }, { - "width": 130, - "height": 130, - "id": "RAND-e09e675f-ccaf-44b3-8842-6cea418c4b00", + "width": 208, + "height": 96, + "id": "RAND-d9a6b7da-5ef2-4bb6-bf6d-cd92baca5f7d", "type": "GENERATORS", "data": { - "id": "RAND-e09e675f-ccaf-44b3-8842-6cea418c4b00", + "id": "RAND-d9a6b7da-5ef2-4bb6-bf6d-cd92baca5f7d", "label": "RAND 1", "func": "RAND", "type": "GENERATORS", "ctrls": { "distribution": { "type": "select", - "default": "normal", "options": [ "normal", "uniform", "poisson" ], + "default": "normal", + "desc": "the distribution over the random samples", + "overload": { + "uniform": [ + "size", + "lower_bound", + "upper_bound" + ], + "normal": [ + "size", + "normal_mean", + "normal_standard_deviation" + ], + "poisson": [ + "size", + "poisson_events" + ] + }, "functionName": "RAND", "param": "distribution", "value": "normal" }, + "size": { + "type": "int", + "default": 1000, + "desc": "the size of the output. =1 outputs Scalar, >1 outputs Vector", + "overload": null, + "functionName": "RAND", + "param": "size", + "value": 1 + }, "lower_bound": { "type": "float", "default": 0, + "desc": "the lower bound of the output interval", + "overload": null, "functionName": "RAND", "param": "lower_bound", "value": 0 @@ -216,6 +298,8 @@ "upper_bound": { "type": "float", "default": 1, + "desc": "the upper bound of the output interval", + "overload": null, "functionName": "RAND", "param": "upper_bound", "value": 1 @@ -223,145 +307,78 @@ "normal_mean": { "type": "float", "default": 0, + "desc": "the mean or \"center\" of the normal distribution", + "overload": null, "functionName": "RAND", "param": "normal_mean", - "value": "30" + "value": 0 }, "normal_standard_deviation": { "type": "float", "default": 1, + "desc": "the spread or \"width\" of the normal distribution", + "overload": null, "functionName": "RAND", "param": "normal_standard_deviation", - "value": "50" + "value": 1 }, "poisson_events": { "type": "float", "default": 1, + "desc": "the expected number of events occurring in a fixed time-interval when distribution is poisson", + "overload": null, "functionName": "RAND", "param": "poisson_events", "value": 1 } }, + "initCtrls": {}, "inputs": [ { "name": "default", "id": "default", - "type": "OrderedPair|Vector", - "multiple": false + "type": "Any", + "multiple": false, + "desc": "unused in this node" } ], "outputs": [ { "name": "default", "id": "default", - "type": "OrderedPair|Scalar" + "type": "Vector|Scalar", + "desc": "Vector if size > 1\nv: the random samples\n\nScalar if size = 1\nc: the random number" } ], - "path": "PYTHON/nodes/GENERATORS/SIMULATIONS/RAND/RAND.py", + "path": "GENERATORS/SIMULATIONS/RAND/RAND.py", "selected": false }, "position": { - "x": 385.163294287524, - "y": 328.61362457174704 + "x": 424.11613231809054, + "y": 352.35894002884334 }, "selected": false, "positionAbsolute": { - "x": 385.163294287524, - "y": 328.61362457174704 - }, - "dragging": true - }, - { - "width": 225, - "height": 226, - "id": "BIG_NUMBER-59ecc8d4-f674-4af7-869f-f429f0b1c266", - "type": "VISUALIZERS", - "data": { - "id": "BIG_NUMBER-59ecc8d4-f674-4af7-869f-f429f0b1c266", - "label": "BIG NUMBER", - "func": "BIG_NUMBER", - "type": "VISUALIZERS", - "ctrls": { - "suffix": { - "type": "str", - "default": null, - "functionName": "BIG_NUMBER", - "param": "suffix", - "value": "" - }, - "prefix": { - "type": "str", - "default": null, - "functionName": "BIG_NUMBER", - "param": "prefix", - "value": "" - }, - "title": { - "type": "str", - "default": null, - "functionName": "BIG_NUMBER", - "param": "title", - "value": "" - }, - "relative_delta": { - "type": "bool", - "default": true, - "functionName": "BIG_NUMBER", - "param": "relative_delta", - "value": true - } - }, - "inputs": [ - { - "name": "default", - "id": "default", - "type": "OrderedPair", - "multiple": false - } - ], - "outputs": [ - { - "name": "default", - "id": "default", - "type": "Plotly" - } - ], - "path": "PYTHON/nodes/VISUALIZERS/PLOTLY/BIG_NUMBER/BIG_NUMBER.py", - "selected": false - }, - "position": { - "x": 818.3036219776461, - "y": 287.8342828015806 - }, - "selected": false, - "positionAbsolute": { - "x": 818.3036219776461, - "y": 287.8342828015806 + "x": 424.11613231809054, + "y": 352.35894002884334 }, "dragging": true } ], "edges": [ { - "source": "LINSPACE-cc55781a-14c8-4405-8fd1-0157351b3486", - "sourceHandle": "default", - "target": "RAND-1fe43d0a-6b15-49d0-b6e0-35c61744a60a", - "targetHandle": "default", - "id": "reactflow__edge-LINSPACE-cc55781a-14c8-4405-8fd1-0157351b3486default-RAND-1fe43d0a-6b15-49d0-b6e0-35c61744a60adefault" - }, - { - "source": "RAND-1fe43d0a-6b15-49d0-b6e0-35c61744a60a", + "source": "RAND-110a9abb-d0df-4b06-9555-6b9e38cdd237", "sourceHandle": "default", "target": "HISTOGRAM-c5469532-dd28-4465-b8b0-524174db86e4", "targetHandle": "default", - "id": "reactflow__edge-RAND-1fe43d0a-6b15-49d0-b6e0-35c61744a60adefault-HISTOGRAM-c5469532-dd28-4465-b8b0-524174db86e4default" + "id": "reactflow__edge-RAND-110a9abb-d0df-4b06-9555-6b9e38cdd237default-HISTOGRAM-c5469532-dd28-4465-b8b0-524174db86e4default" }, { - "source": "RAND-e09e675f-ccaf-44b3-8842-6cea418c4b00", + "source": "RAND-d9a6b7da-5ef2-4bb6-bf6d-cd92baca5f7d", "sourceHandle": "default", "target": "BIG_NUMBER-59ecc8d4-f674-4af7-869f-f429f0b1c266", "targetHandle": "default", - "id": "reactflow__edge-RAND-e09e675f-ccaf-44b3-8842-6cea418c4b00default-BIG_NUMBER-59ecc8d4-f674-4af7-869f-f429f0b1c266default" + "id": "reactflow__edge-RAND-d9a6b7da-5ef2-4bb6-bf6d-cd92baca5f7ddefault-BIG_NUMBER-59ecc8d4-f674-4af7-869f-f429f0b1c266default" } ], "viewport": { diff --git a/docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/UNIX_TIMESTAMP.md b/docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/UNIX_TIMESTAMP.md new file mode 100644 index 0000000000..9191531dc8 --- /dev/null +++ b/docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/UNIX_TIMESTAMP.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/a1-[autogen]/docstring.txt b/docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..9dd6a33537 --- /dev/null +++ b/docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/a1-[autogen]/docstring.txt @@ -0,0 +1,17 @@ +Return the current UNIX timestamp as a float (Scalar) or array (Vector) with length equal to 1. + + If a Scalar input is provided, the Scalar is returned with the timestamp as an OrderedPair. + + Inputs + ------ + default : Scalar + A value to timestamp + + Parameters + ---------- + dc_type : select + The type of DataContainer to return. + + Returns + ------- + Scalar|Vector|OrderedPair diff --git a/docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/a1-[autogen]/python_code.txt b/docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..9c66566eb0 --- /dev/null +++ b/docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/a1-[autogen]/python_code.txt @@ -0,0 +1,22 @@ +import time +import datetime +from flojoy import flojoy, Scalar, Vector, OrderedPair +from typing import Optional, Literal + +@flojoy +def UNIX_TIMESTAMP( + default: Optional[Scalar] = None, + dc_type: Literal["Scalar", "Vector"] = "Scalar", +) -> Scalar | Vector | OrderedPair: + + + unix_timestamp = time.mktime(datetime.datetime.now().timetuple()) + + if default is not None: + return OrderedPair(x=[unix_timestamp], y=[default.c]) + + match dc_type: + case "Scalar": + return Scalar(c=unix_timestamp) + case "Vector": + return Vector(v=[unix_timestamp]) diff --git a/docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/appendix/hardware.md b/docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/appendix/media.md b/docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/appendix/notes.md b/docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/examples/EX1/app.json b/docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/examples/EX1/app.json new file mode 100644 index 0000000000..aa772ef8ab --- /dev/null +++ b/docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/examples/EX1/app.json @@ -0,0 +1,763 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 208, + "height": 96, + "id": "RAND-987d9a50-aeff-488c-90f2-23199a00b3b0", + "type": "GENERATORS", + "data": { + "id": "RAND-987d9a50-aeff-488c-90f2-23199a00b3b0", + "label": "RAND", + "func": "RAND", + "type": "GENERATORS", + "ctrls": { + "distribution": { + "type": "select", + "options": [ + "normal", + "uniform", + "poisson" + ], + "default": "normal", + "desc": "the distribution over the random samples", + "overload": { + "uniform": [ + "size", + "lower_bound", + "upper_bound" + ], + "normal": [ + "size", + "normal_mean", + "normal_standard_deviation" + ], + "poisson": [ + "size", + "poisson_events" + ] + }, + "functionName": "RAND", + "param": "distribution", + "value": "normal" + }, + "size": { + "type": "int", + "default": 1000, + "desc": "the size of the output. =1 outputs Scalar, >1 outputs Vector", + "overload": null, + "functionName": "RAND", + "param": "size", + "value": 1 + }, + "lower_bound": { + "type": "float", + "default": 0, + "desc": "the lower bound of the output interval", + "overload": null, + "functionName": "RAND", + "param": "lower_bound", + "value": 0 + }, + "upper_bound": { + "type": "float", + "default": 1, + "desc": "the upper bound of the output interval", + "overload": null, + "functionName": "RAND", + "param": "upper_bound", + "value": 1 + }, + "normal_mean": { + "type": "float", + "default": 0, + "desc": "the mean or \"center\" of the normal distribution", + "overload": null, + "functionName": "RAND", + "param": "normal_mean", + "value": 100 + }, + "normal_standard_deviation": { + "type": "float", + "default": 1, + "desc": "the spread or \"width\" of the normal distribution", + "overload": null, + "functionName": "RAND", + "param": "normal_standard_deviation", + "value": 10 + }, + "poisson_events": { + "type": "float", + "default": 1, + "desc": "the expected number of events occurring in a fixed time-interval when distribution is poisson", + "overload": null, + "functionName": "RAND", + "param": "poisson_events", + "value": 1 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": "unused in this node" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Vector|Scalar", + "desc": "Vector if size > 1\nv: the random samples\n\nScalar if size = 1\nc: the random number" + } + ], + "path": "GENERATORS/SIMULATIONS/RAND/RAND.py", + "selected": false + }, + "position": { + "x": -242.33431249118965, + "y": -637.0697092164855 + }, + "selected": false, + "positionAbsolute": { + "x": -242.33431249118965, + "y": -637.0697092164855 + }, + "dragging": true + }, + { + "width": 96, + "height": 96, + "id": "LOOP-054de831-8b4d-484b-a534-ff2cdb8a7cab", + "type": "LOGIC_GATES", + "data": { + "id": "LOOP-054de831-8b4d-484b-a534-ff2cdb8a7cab", + "label": "LOOP", + "func": "LOOP", + "type": "LOGIC_GATES", + "ctrls": { + "num_loops": { + "type": "int", + "default": -1, + "desc": "number of times to iterate through body nodes, default is \"-1\" meaning infinity.", + "overload": null, + "functionName": "LOOP", + "param": "num_loops", + "value": -1 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "body", + "id": "body", + "type": "Any", + "desc": null + }, + { + "name": "end", + "id": "end", + "type": "Any", + "desc": null + } + ], + "path": "LOGIC_GATES/LOOPS/LOOP/LOOP.py", + "selected": false + }, + "position": { + "x": 504.4038765323662, + "y": -478.8683067596952 + }, + "selected": false, + "positionAbsolute": { + "x": 504.4038765323662, + "y": -478.8683067596952 + }, + "dragging": true + }, + { + "width": 96, + "height": 96, + "id": "APPEND-fc16b70b-1482-4e75-8165-8cd84c9e9e18", + "type": "LOGIC_GATES", + "data": { + "id": "APPEND-fc16b70b-1482-4e75-8165-8cd84c9e9e18", + "label": "APPEND", + "func": "APPEND", + "type": "LOGIC_GATES", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "primary_dp", + "id": "primary_dp", + "type": "OrderedPair|Matrix|DataFrame|Scalar|Vector", + "multiple": false, + "desc": "Input that ends up \"on top\" of the resulting DataContainer." + }, + { + "name": "secondary_dp", + "id": "secondary_dp", + "type": "OrderedPair|Matrix|DataFrame|Scalar|Vector", + "multiple": false, + "desc": "Input that ends up \"on the bottom\" of the resulting DataContainer." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Matrix|DataFrame|Vector", + "desc": null + } + ], + "path": "LOGIC_GATES/LOOPS/APPEND/APPEND.py", + "selected": false + }, + "position": { + "x": 1172.5810645388167, + "y": -497.1805544135991 + }, + "selected": false, + "positionAbsolute": { + "x": 1172.5810645388167, + "y": -497.1805544135991 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "LINE-e852868c-ffba-479b-ab6d-96835ae72744", + "type": "VISUALIZERS", + "data": { + "id": "LINE-e852868c-ffba-479b-ab6d-96835ae72744", + "label": "LINE", + "func": "LINE", + "type": "VISUALIZERS", + "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": "VISUALIZERS/PLOTLY/LINE/LINE.py", + "selected": false + }, + "position": { + "x": 1347.1958561916588, + "y": -596.9591300883288 + }, + "selected": false, + "positionAbsolute": { + "x": 1347.1958561916588, + "y": -596.9591300883288 + }, + "dragging": true + }, + { + "width": 208, + "height": 96, + "id": "UNIX_TIMESTAMP-64abaef5-9f68-495d-81e8-63ebd0dd0323", + "type": "GENERATORS", + "data": { + "id": "UNIX_TIMESTAMP-64abaef5-9f68-495d-81e8-63ebd0dd0323", + "label": "UNIX TIMESTAMP", + "func": "UNIX_TIMESTAMP", + "type": "GENERATORS", + "ctrls": { + "dc_type": { + "type": "select", + "options": [ + "Scalar", + "Vector" + ], + "default": "Scalar", + "desc": "The type of DataContainer to return.", + "overload": null, + "functionName": "UNIX_TIMESTAMP", + "param": "dc_type", + "value": "Scalar" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "multiple": false, + "desc": "A value to timestamp" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar|Vector|OrderedPair", + "desc": null + } + ], + "path": "GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/UNIX_TIMESTAMP.py", + "selected": false + }, + "position": { + "x": 38.753833080484014, + "y": -577.7658714357179 + }, + "selected": false, + "positionAbsolute": { + "x": 38.753833080484014, + "y": -577.7658714357179 + }, + "dragging": true + }, + { + "width": 208, + "height": 96, + "id": "RAND-dfa7d0bb-1484-4702-9e54-7007fc1c0f47", + "type": "GENERATORS", + "data": { + "id": "RAND-dfa7d0bb-1484-4702-9e54-7007fc1c0f47", + "label": "RAND 1", + "func": "RAND", + "type": "GENERATORS", + "ctrls": { + "distribution": { + "type": "select", + "options": [ + "normal", + "uniform", + "poisson" + ], + "default": "normal", + "desc": "the distribution over the random samples", + "overload": { + "uniform": [ + "size", + "lower_bound", + "upper_bound" + ], + "normal": [ + "size", + "normal_mean", + "normal_standard_deviation" + ], + "poisson": [ + "size", + "poisson_events" + ] + }, + "functionName": "RAND", + "param": "distribution", + "value": "normal" + }, + "size": { + "type": "int", + "default": 1000, + "desc": "the size of the output. =1 outputs Scalar, >1 outputs Vector", + "overload": null, + "functionName": "RAND", + "param": "size", + "value": 1 + }, + "lower_bound": { + "type": "float", + "default": 0, + "desc": "the lower bound of the output interval", + "overload": null, + "functionName": "RAND", + "param": "lower_bound", + "value": 0 + }, + "upper_bound": { + "type": "float", + "default": 1, + "desc": "the upper bound of the output interval", + "overload": null, + "functionName": "RAND", + "param": "upper_bound", + "value": 1 + }, + "normal_mean": { + "type": "float", + "default": 0, + "desc": "the mean or \"center\" of the normal distribution", + "overload": null, + "functionName": "RAND", + "param": "normal_mean", + "value": 100 + }, + "normal_standard_deviation": { + "type": "float", + "default": 1, + "desc": "the spread or \"width\" of the normal distribution", + "overload": null, + "functionName": "RAND", + "param": "normal_standard_deviation", + "value": 10 + }, + "poisson_events": { + "type": "float", + "default": 1, + "desc": "the expected number of events occurring in a fixed time-interval when distribution is poisson", + "overload": null, + "functionName": "RAND", + "param": "poisson_events", + "value": 1 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": "unused in this node" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Vector|Scalar", + "desc": "Vector if size > 1\nv: the random samples\n\nScalar if size = 1\nc: the random number" + } + ], + "path": "GENERATORS/SIMULATIONS/RAND/RAND.py", + "selected": false + }, + "position": { + "x": 626.7598156825101, + "y": -630.5123356277638 + }, + "selected": false, + "positionAbsolute": { + "x": 626.7598156825101, + "y": -630.5123356277638 + }, + "dragging": true + }, + { + "width": 208, + "height": 96, + "id": "UNIX_TIMESTAMP-731e7b82-9071-43a9-872f-381ad862ecc5", + "type": "GENERATORS", + "data": { + "id": "UNIX_TIMESTAMP-731e7b82-9071-43a9-872f-381ad862ecc5", + "label": "UNIX TIMESTAMP 1", + "func": "UNIX_TIMESTAMP", + "type": "GENERATORS", + "ctrls": { + "dc_type": { + "type": "select", + "options": [ + "Scalar", + "Vector" + ], + "default": "Scalar", + "desc": "The type of DataContainer to return.", + "overload": null, + "functionName": "UNIX_TIMESTAMP", + "param": "dc_type", + "value": "Scalar" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "multiple": false, + "desc": "A value to timestamp" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar|Vector|OrderedPair", + "desc": null + } + ], + "path": "GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/UNIX_TIMESTAMP.py", + "selected": false + }, + "position": { + "x": 912.2055226400296, + "y": -630.8223776023647 + }, + "selected": false, + "positionAbsolute": { + "x": 912.2055226400296, + "y": -630.8223776023647 + }, + "dragging": true + }, + { + "width": 208, + "height": 96, + "id": "FEEDBACK-6faeef8a-6ce3-4377-ac84-72311b02287a", + "type": "GENERATORS", + "data": { + "id": "FEEDBACK-6faeef8a-6ce3-4377-ac84-72311b02287a", + "label": "FEEDBACK", + "func": "FEEDBACK", + "type": "GENERATORS", + "ctrls": { + "referred_node": { + "type": "NodeReference", + "default": null, + "desc": "The node ID to capture the result from.", + "overload": null, + "functionName": "FEEDBACK", + "param": "referred_node", + "value": "APPEND-fc16b70b-1482-4e75-8165-8cd84c9e9e18" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "desc": null + } + ], + "path": "GENERATORS/SIMULATIONS/FEEDBACK/FEEDBACK.py", + "selected": false + }, + "position": { + "x": 790.8954066879804, + "y": -409.22964244525434 + }, + "selected": false, + "positionAbsolute": { + "x": 790.8954066879804, + "y": -409.22964244525434 + }, + "dragging": true + }, + { + "width": 96, + "height": 96, + "id": "TIMER-1d70971e-c028-4e68-95e1-ed4cc9e1badf", + "type": "LOGIC_GATES", + "data": { + "id": "TIMER-1d70971e-c028-4e68-95e1-ed4cc9e1badf", + "label": "TIMER", + "func": "TIMER", + "type": "LOGIC_GATES", + "ctrls": { + "sleep_time": { + "type": "float", + "default": 0, + "desc": "number of seconds to sleep", + "overload": null, + "functionName": "TIMER", + "param": "sleep_time", + "value": 1 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "desc": null + } + ], + "path": "LOGIC_GATES/TIMERS/TIMER/TIMER.py", + "selected": false + }, + "position": { + "x": 1833.4271235393514, + "y": -513.7129865082782 + }, + "selected": false, + "positionAbsolute": { + "x": 1833.4271235393514, + "y": -513.7129865082782 + }, + "dragging": true + }, + { + "width": 96, + "height": 96, + "id": "TIMER-da8c5336-7f7e-449b-80cb-8da9e66e40c6", + "type": "LOGIC_GATES", + "data": { + "id": "TIMER-da8c5336-7f7e-449b-80cb-8da9e66e40c6", + "label": "TIMER 1", + "func": "TIMER", + "type": "LOGIC_GATES", + "ctrls": { + "sleep_time": { + "type": "float", + "default": 0, + "desc": "number of seconds to sleep", + "overload": null, + "functionName": "TIMER", + "param": "sleep_time", + "value": 1 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "desc": null + } + ], + "path": "LOGIC_GATES/TIMERS/TIMER/TIMER.py", + "selected": false + }, + "position": { + "x": 320.32046713908926, + "y": -528.8507916716401 + }, + "selected": false, + "positionAbsolute": { + "x": 320.32046713908926, + "y": -528.8507916716401 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "LOOP-054de831-8b4d-484b-a534-ff2cdb8a7cab", + "sourceHandle": "body", + "target": "RAND-dfa7d0bb-1484-4702-9e54-7007fc1c0f47", + "targetHandle": "default", + "id": "reactflow__edge-LOOP-054de831-8b4d-484b-a534-ff2cdb8a7cabbody-RAND-dfa7d0bb-1484-4702-9e54-7007fc1c0f47default" + }, + { + "source": "RAND-dfa7d0bb-1484-4702-9e54-7007fc1c0f47", + "sourceHandle": "default", + "target": "UNIX_TIMESTAMP-731e7b82-9071-43a9-872f-381ad862ecc5", + "targetHandle": "default", + "id": "reactflow__edge-RAND-dfa7d0bb-1484-4702-9e54-7007fc1c0f47default-UNIX_TIMESTAMP-731e7b82-9071-43a9-872f-381ad862ecc5default" + }, + { + "source": "UNIX_TIMESTAMP-731e7b82-9071-43a9-872f-381ad862ecc5", + "sourceHandle": "default", + "target": "APPEND-fc16b70b-1482-4e75-8165-8cd84c9e9e18", + "targetHandle": "secondary_dp", + "id": "reactflow__edge-UNIX_TIMESTAMP-731e7b82-9071-43a9-872f-381ad862ecc5default-APPEND-fc16b70b-1482-4e75-8165-8cd84c9e9e18secondary_dp" + }, + { + "source": "APPEND-fc16b70b-1482-4e75-8165-8cd84c9e9e18", + "sourceHandle": "default", + "target": "LINE-e852868c-ffba-479b-ab6d-96835ae72744", + "targetHandle": "default", + "id": "reactflow__edge-APPEND-fc16b70b-1482-4e75-8165-8cd84c9e9e18default-LINE-e852868c-ffba-479b-ab6d-96835ae72744default" + }, + { + "source": "FEEDBACK-6faeef8a-6ce3-4377-ac84-72311b02287a", + "sourceHandle": "default", + "target": "APPEND-fc16b70b-1482-4e75-8165-8cd84c9e9e18", + "targetHandle": "primary_dp", + "id": "reactflow__edge-FEEDBACK-6faeef8a-6ce3-4377-ac84-72311b02287adefault-APPEND-fc16b70b-1482-4e75-8165-8cd84c9e9e18primary_dp" + }, + { + "source": "LINE-e852868c-ffba-479b-ab6d-96835ae72744", + "sourceHandle": "default", + "target": "TIMER-1d70971e-c028-4e68-95e1-ed4cc9e1badf", + "targetHandle": "default", + "id": "reactflow__edge-LINE-e852868c-ffba-479b-ab6d-96835ae72744default-TIMER-1d70971e-c028-4e68-95e1-ed4cc9e1badfdefault" + }, + { + "source": "LOOP-054de831-8b4d-484b-a534-ff2cdb8a7cab", + "sourceHandle": "body", + "target": "FEEDBACK-6faeef8a-6ce3-4377-ac84-72311b02287a", + "targetHandle": "default", + "id": "reactflow__edge-LOOP-054de831-8b4d-484b-a534-ff2cdb8a7cabbody-FEEDBACK-6faeef8a-6ce3-4377-ac84-72311b02287adefault" + }, + { + "source": "RAND-987d9a50-aeff-488c-90f2-23199a00b3b0", + "sourceHandle": "default", + "target": "UNIX_TIMESTAMP-64abaef5-9f68-495d-81e8-63ebd0dd0323", + "targetHandle": "default", + "id": "reactflow__edge-RAND-987d9a50-aeff-488c-90f2-23199a00b3b0default-UNIX_TIMESTAMP-64abaef5-9f68-495d-81e8-63ebd0dd0323default" + }, + { + "source": "UNIX_TIMESTAMP-64abaef5-9f68-495d-81e8-63ebd0dd0323", + "sourceHandle": "default", + "target": "TIMER-da8c5336-7f7e-449b-80cb-8da9e66e40c6", + "targetHandle": "default", + "id": "reactflow__edge-UNIX_TIMESTAMP-64abaef5-9f68-495d-81e8-63ebd0dd0323default-TIMER-da8c5336-7f7e-449b-80cb-8da9e66e40c6default" + }, + { + "source": "TIMER-da8c5336-7f7e-449b-80cb-8da9e66e40c6", + "sourceHandle": "default", + "target": "LOOP-054de831-8b4d-484b-a534-ff2cdb8a7cab", + "targetHandle": "default", + "id": "reactflow__edge-TIMER-da8c5336-7f7e-449b-80cb-8da9e66e40c6default-LOOP-054de831-8b4d-484b-a534-ff2cdb8a7cabdefault" + } + ], + "viewport": { + "x": 283.72679723795954, + "y": 649.7572098262036, + "zoom": 0.5 + } + }, + "textNodes": [] +} \ No newline at end of file diff --git a/docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/examples/EX1/example.md b/docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/examples/EX1/example.md new file mode 100644 index 0000000000..0af132e1e3 --- /dev/null +++ b/docs/nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/examples/EX1/example.md @@ -0,0 +1 @@ +This app generates a random number (centered around 100) once every 1 second and plots the result. The `UNIX_TIMESTAMP` node attaches a timestamp to each random number that the `RAND` node generates. diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/AC_CURRENT_USB4065.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/AC_CURRENT_USB4065.md new file mode 100644 index 0000000000..d5691a0693 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/AC_CURRENT_USB4065.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/a1-[autogen]/docstring.txt b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..6e4a8b0dfd --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/a1-[autogen]/docstring.txt @@ -0,0 +1,28 @@ +The AC_CURRENT_USB4065 node reads the AC current from a USB-4065. + + The USB-4065 is a NI (National Instruments) multimeter. It is possible that + the node will work with other NI DMMs (digital multimeters) such as the + 4070 and 4080 series. + + This instrument will likely only be compatible with Windows systems due to + NI driver availablity. To use the instrument you must install the runtime: + + https://www.ni.com/en/support/downloads/drivers/download.ni-dmm.html + + You must also find the address/resource name for the instrument. You can + find this using the NI MAX programming which can be downloaded when + installing the drivers. + + Parameters + ---------- + NI_address: str + The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1'). + digits: str + The accuracy of the reading in digits. Lower values are faster. + current_limit: str + The maximum current to allow, in Amps. + + Returns + ------- + DataContainer + Scalar: The AC current reading. diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/a1-[autogen]/python_code.txt b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..a1a49734fd --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/a1-[autogen]/python_code.txt @@ -0,0 +1,27 @@ +from flojoy import flojoy, DataContainer, Scalar +from flojoy.connection_manager import DeviceConnectionManager +from typing import Optional, Literal +import nidmm + + +@flojoy(deps={"nidmm": "1.4.6"}) +def AC_CURRENT_USB4065( + NI_address: str = "Dev1", + digits: Literal["4.5", "5.5", "6.5"] = "5.5", + current_limit: Literal["0.01", "0.1", "0.5", "3"] = "3", + default: Optional[DataContainer] = None, +) -> Scalar: + + + connection = DeviceConnectionManager.get_connection(NI_address) + session = connection.get_handle() + + session.configure_measurement_digits( + nidmm.Function.AC_CURRENT, + range=float(current_limit), + resolution_digits=float(digits), + ) + + reading = session.read() + + return Scalar(c=reading) diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/appendix/hardware.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/appendix/media.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/appendix/notes.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/examples/EX1/app.json b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/examples/EX1/app.json new file mode 100644 index 0000000000..ede8f608e3 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/examples/EX1/app.json @@ -0,0 +1,454 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "type": "IO", + "data": { + "id": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "label": "CONNECTION USB4065", + "func": "CONNECTION_USB4065", + "type": "IO", + "ctrls": { + "NI_address": { + "type": "str", + "default": "Dev1", + "desc": "The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1').", + "overload": null, + "functionName": "CONNECTION_USB4065", + "param": "NI_address", + "value": "Dev1" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "desc": "Optional: None" + } + ], + "pip_dependencies": [ + { + "name": "nidmm", + "v": "1.4.6" + } + ], + "path": "IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/CONNECTION_USB4065.py", + "selected": false + }, + "position": { + "x": 4.704499736461486, + "y": -114.58793327290465 + }, + "selected": false, + "positionAbsolute": { + "x": 4.704499736461486, + "y": -114.58793327290465 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-4f55667b-079e-4735-aa52-3bb18be8e06b", + "type": "VISUALIZERS", + "data": { + "id": "BIG_NUMBER-4f55667b-079e-4735-aa52-3bb18be8e06b", + "label": "BIG NUMBER", + "func": "BIG_NUMBER", + "type": "VISUALIZERS", + "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": true + } + }, + "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": "VISUALIZERS/PLOTLY/BIG_NUMBER/BIG_NUMBER.py", + "selected": false + }, + "position": { + "x": 789.5089067672151, + "y": -337.92011150709266 + }, + "selected": false, + "positionAbsolute": { + "x": 789.5089067672151, + "y": -337.92011150709266 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-58ecefea-6da3-4e07-b581-b9796f085dec", + "type": "VISUALIZERS", + "data": { + "id": "BIG_NUMBER-58ecefea-6da3-4e07-b581-b9796f085dec", + "label": "BIG NUMBER 1", + "func": "BIG_NUMBER", + "type": "VISUALIZERS", + "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": true + } + }, + "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": "VISUALIZERS/PLOTLY/BIG_NUMBER/BIG_NUMBER.py", + "selected": false + }, + "position": { + "x": 788.5306367510525, + "y": -17.717544827417925 + }, + "selected": false, + "positionAbsolute": { + "x": 788.5306367510525, + "y": -17.717544827417925 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "AC_CURRENT_USB4065-01f8cd65-f159-48d8-941a-f78f4cf89895", + "type": "IO", + "data": { + "id": "AC_CURRENT_USB4065-01f8cd65-f159-48d8-941a-f78f4cf89895", + "label": "AC CURRENT USB4065", + "func": "AC_CURRENT_USB4065", + "type": "IO", + "ctrls": { + "NI_address": { + "type": "str", + "default": "Dev1", + "desc": "The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1').", + "overload": null, + "functionName": "AC_CURRENT_USB4065", + "param": "NI_address", + "value": "Dev1" + }, + "digits": { + "type": "select", + "options": [ + "4.5", + "5.5", + "6.5" + ], + "default": "5.5", + "desc": "The accuracy of the reading in digits. Lower values are faster.", + "overload": null, + "functionName": "AC_CURRENT_USB4065", + "param": "digits", + "value": "5.5" + }, + "current_limit": { + "type": "select", + "options": [ + "0.01", + "0.1", + "0.5", + "3" + ], + "default": "3", + "desc": "The maximum current to allow, in Amps.", + "overload": null, + "functionName": "AC_CURRENT_USB4065", + "param": "current_limit", + "value": "3" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Scalar: The AC current reading." + } + ], + "pip_dependencies": [ + { + "name": "nidmm", + "v": "1.4.6" + } + ], + "path": "IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/AC_CURRENT_USB4065.py", + "selected": false + }, + "position": { + "x": 409.98201629627056, + "y": 4.911279697871066 + }, + "selected": false, + "positionAbsolute": { + "x": 409.98201629627056, + "y": 4.911279697871066 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "AC_VOLTAGE_USB4065-75a4399f-a1b3-4cfe-b110-3cea79bce7eb", + "type": "IO", + "data": { + "id": "AC_VOLTAGE_USB4065-75a4399f-a1b3-4cfe-b110-3cea79bce7eb", + "label": "AC VOLTAGE USB4065", + "func": "AC_VOLTAGE_USB4065", + "type": "IO", + "ctrls": { + "NI_address": { + "type": "str", + "default": "Dev1", + "desc": "The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1').", + "overload": null, + "functionName": "AC_VOLTAGE_USB4065", + "param": "NI_address", + "value": "Dev1" + }, + "digits": { + "type": "select", + "options": [ + "4.5", + "5.5", + "6.5" + ], + "default": "5.5", + "desc": "The accuracy of the reading in digits. Lower values are faster.", + "overload": null, + "functionName": "AC_VOLTAGE_USB4065", + "param": "digits", + "value": "5.5" + }, + "voltage_limit": { + "type": "select", + "options": [ + "0.2", + "2", + "20", + "300" + ], + "default": "20", + "desc": "The maximum voltage to allow, in Volts.", + "overload": null, + "functionName": "AC_VOLTAGE_USB4065", + "param": "voltage_limit", + "value": "20" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Scalar: The AC voltage reading." + } + ], + "pip_dependencies": [ + { + "name": "nidmm", + "v": "1.4.6" + } + ], + "path": "IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/AC_VOLTAGE_USB4065.py", + "selected": false + }, + "position": { + "x": 411.59905358626946, + "y": -327.4361310374542 + }, + "selected": false, + "positionAbsolute": { + "x": 411.59905358626946, + "y": -327.4361310374542 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "sourceHandle": "default", + "target": "AC_VOLTAGE_USB4065-75a4399f-a1b3-4cfe-b110-3cea79bce7eb", + "targetHandle": "default", + "id": "reactflow__edge-CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1default-AC_VOLTAGE_USB4065-75a4399f-a1b3-4cfe-b110-3cea79bce7ebdefault" + }, + { + "source": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "sourceHandle": "default", + "target": "AC_CURRENT_USB4065-01f8cd65-f159-48d8-941a-f78f4cf89895", + "targetHandle": "default", + "id": "reactflow__edge-CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1default-AC_CURRENT_USB4065-01f8cd65-f159-48d8-941a-f78f4cf89895default" + }, + { + "source": "AC_CURRENT_USB4065-01f8cd65-f159-48d8-941a-f78f4cf89895", + "sourceHandle": "default", + "target": "BIG_NUMBER-58ecefea-6da3-4e07-b581-b9796f085dec", + "targetHandle": "default", + "id": "reactflow__edge-AC_CURRENT_USB4065-01f8cd65-f159-48d8-941a-f78f4cf89895default-BIG_NUMBER-58ecefea-6da3-4e07-b581-b9796f085decdefault" + }, + { + "source": "AC_VOLTAGE_USB4065-75a4399f-a1b3-4cfe-b110-3cea79bce7eb", + "sourceHandle": "default", + "target": "BIG_NUMBER-4f55667b-079e-4735-aa52-3bb18be8e06b", + "targetHandle": "default", + "id": "reactflow__edge-AC_VOLTAGE_USB4065-75a4399f-a1b3-4cfe-b110-3cea79bce7ebdefault-BIG_NUMBER-4f55667b-079e-4735-aa52-3bb18be8e06bdefault" + } + ], + "viewport": { + "x": 1139.470292881633, + "y": 572.2854272048312, + "zoom": 1.2136444284334926 + } + } +} \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/examples/EX1/example.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/examples/EX1/example.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/AC_VOLTAGE_USB4065.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/AC_VOLTAGE_USB4065.md new file mode 100644 index 0000000000..83b8367608 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/AC_VOLTAGE_USB4065.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/a1-[autogen]/docstring.txt b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..2ff2bb5615 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/a1-[autogen]/docstring.txt @@ -0,0 +1,28 @@ +The AC_VOLTAGE_USB4065 node reads the AC voltage from a USB-4065. + + The USB-4065 is a NI (National Instruments) multimeter. It is possible that + the node will work with other NI DMMs (digital multimeters) such as the + 4070 and 4080 series. + + This instrument will likely only be compatible with Windows systems due to + NI driver availablity. To use the instrument you must install the runtime: + + https://www.ni.com/en/support/downloads/drivers/download.ni-dmm.html + + You must also find the address/resource name for the instrument. You can + find this using the NI MAX programming which can be downloaded when + installing the drivers. + + Parameters + ---------- + NI_address: str + The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1'). + digits: str + The accuracy of the reading in digits. Lower values are faster. + voltage_limit: str + The maximum voltage to allow, in Volts. + + Returns + ------- + DataContainer + Scalar: The AC voltage reading. diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/a1-[autogen]/python_code.txt b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..8768ea1972 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/a1-[autogen]/python_code.txt @@ -0,0 +1,27 @@ +from flojoy import flojoy, DataContainer, Scalar +from flojoy.connection_manager import DeviceConnectionManager +from typing import Optional, Literal +import nidmm + + +@flojoy(deps={"nidmm": "1.4.6"}) +def AC_VOLTAGE_USB4065( + NI_address: str = "Dev1", + digits: Literal["4.5", "5.5", "6.5"] = "5.5", + voltage_limit: Literal["0.2", "2", "20", "300"] = "20", + default: Optional[DataContainer] = None, +) -> Scalar: + + + connection = DeviceConnectionManager.get_connection(NI_address) + session = connection.get_handle() + + session.configure_measurement_digits( + nidmm.Function.AC_VOLTS, + range=float(voltage_limit), + resolution_digits=float(digits), + ) + + reading = session.read() + + return Scalar(c=reading) diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/appendix/hardware.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/appendix/media.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/appendix/notes.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/examples/EX1/app.json b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/examples/EX1/app.json new file mode 100644 index 0000000000..ede8f608e3 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/examples/EX1/app.json @@ -0,0 +1,454 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "type": "IO", + "data": { + "id": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "label": "CONNECTION USB4065", + "func": "CONNECTION_USB4065", + "type": "IO", + "ctrls": { + "NI_address": { + "type": "str", + "default": "Dev1", + "desc": "The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1').", + "overload": null, + "functionName": "CONNECTION_USB4065", + "param": "NI_address", + "value": "Dev1" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "desc": "Optional: None" + } + ], + "pip_dependencies": [ + { + "name": "nidmm", + "v": "1.4.6" + } + ], + "path": "IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/CONNECTION_USB4065.py", + "selected": false + }, + "position": { + "x": 4.704499736461486, + "y": -114.58793327290465 + }, + "selected": false, + "positionAbsolute": { + "x": 4.704499736461486, + "y": -114.58793327290465 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-4f55667b-079e-4735-aa52-3bb18be8e06b", + "type": "VISUALIZERS", + "data": { + "id": "BIG_NUMBER-4f55667b-079e-4735-aa52-3bb18be8e06b", + "label": "BIG NUMBER", + "func": "BIG_NUMBER", + "type": "VISUALIZERS", + "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": true + } + }, + "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": "VISUALIZERS/PLOTLY/BIG_NUMBER/BIG_NUMBER.py", + "selected": false + }, + "position": { + "x": 789.5089067672151, + "y": -337.92011150709266 + }, + "selected": false, + "positionAbsolute": { + "x": 789.5089067672151, + "y": -337.92011150709266 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-58ecefea-6da3-4e07-b581-b9796f085dec", + "type": "VISUALIZERS", + "data": { + "id": "BIG_NUMBER-58ecefea-6da3-4e07-b581-b9796f085dec", + "label": "BIG NUMBER 1", + "func": "BIG_NUMBER", + "type": "VISUALIZERS", + "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": true + } + }, + "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": "VISUALIZERS/PLOTLY/BIG_NUMBER/BIG_NUMBER.py", + "selected": false + }, + "position": { + "x": 788.5306367510525, + "y": -17.717544827417925 + }, + "selected": false, + "positionAbsolute": { + "x": 788.5306367510525, + "y": -17.717544827417925 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "AC_CURRENT_USB4065-01f8cd65-f159-48d8-941a-f78f4cf89895", + "type": "IO", + "data": { + "id": "AC_CURRENT_USB4065-01f8cd65-f159-48d8-941a-f78f4cf89895", + "label": "AC CURRENT USB4065", + "func": "AC_CURRENT_USB4065", + "type": "IO", + "ctrls": { + "NI_address": { + "type": "str", + "default": "Dev1", + "desc": "The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1').", + "overload": null, + "functionName": "AC_CURRENT_USB4065", + "param": "NI_address", + "value": "Dev1" + }, + "digits": { + "type": "select", + "options": [ + "4.5", + "5.5", + "6.5" + ], + "default": "5.5", + "desc": "The accuracy of the reading in digits. Lower values are faster.", + "overload": null, + "functionName": "AC_CURRENT_USB4065", + "param": "digits", + "value": "5.5" + }, + "current_limit": { + "type": "select", + "options": [ + "0.01", + "0.1", + "0.5", + "3" + ], + "default": "3", + "desc": "The maximum current to allow, in Amps.", + "overload": null, + "functionName": "AC_CURRENT_USB4065", + "param": "current_limit", + "value": "3" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Scalar: The AC current reading." + } + ], + "pip_dependencies": [ + { + "name": "nidmm", + "v": "1.4.6" + } + ], + "path": "IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_CURRENT_USB4065/AC_CURRENT_USB4065.py", + "selected": false + }, + "position": { + "x": 409.98201629627056, + "y": 4.911279697871066 + }, + "selected": false, + "positionAbsolute": { + "x": 409.98201629627056, + "y": 4.911279697871066 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "AC_VOLTAGE_USB4065-75a4399f-a1b3-4cfe-b110-3cea79bce7eb", + "type": "IO", + "data": { + "id": "AC_VOLTAGE_USB4065-75a4399f-a1b3-4cfe-b110-3cea79bce7eb", + "label": "AC VOLTAGE USB4065", + "func": "AC_VOLTAGE_USB4065", + "type": "IO", + "ctrls": { + "NI_address": { + "type": "str", + "default": "Dev1", + "desc": "The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1').", + "overload": null, + "functionName": "AC_VOLTAGE_USB4065", + "param": "NI_address", + "value": "Dev1" + }, + "digits": { + "type": "select", + "options": [ + "4.5", + "5.5", + "6.5" + ], + "default": "5.5", + "desc": "The accuracy of the reading in digits. Lower values are faster.", + "overload": null, + "functionName": "AC_VOLTAGE_USB4065", + "param": "digits", + "value": "5.5" + }, + "voltage_limit": { + "type": "select", + "options": [ + "0.2", + "2", + "20", + "300" + ], + "default": "20", + "desc": "The maximum voltage to allow, in Volts.", + "overload": null, + "functionName": "AC_VOLTAGE_USB4065", + "param": "voltage_limit", + "value": "20" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Scalar: The AC voltage reading." + } + ], + "pip_dependencies": [ + { + "name": "nidmm", + "v": "1.4.6" + } + ], + "path": "IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/AC_VOLTAGE_USB4065.py", + "selected": false + }, + "position": { + "x": 411.59905358626946, + "y": -327.4361310374542 + }, + "selected": false, + "positionAbsolute": { + "x": 411.59905358626946, + "y": -327.4361310374542 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "sourceHandle": "default", + "target": "AC_VOLTAGE_USB4065-75a4399f-a1b3-4cfe-b110-3cea79bce7eb", + "targetHandle": "default", + "id": "reactflow__edge-CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1default-AC_VOLTAGE_USB4065-75a4399f-a1b3-4cfe-b110-3cea79bce7ebdefault" + }, + { + "source": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "sourceHandle": "default", + "target": "AC_CURRENT_USB4065-01f8cd65-f159-48d8-941a-f78f4cf89895", + "targetHandle": "default", + "id": "reactflow__edge-CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1default-AC_CURRENT_USB4065-01f8cd65-f159-48d8-941a-f78f4cf89895default" + }, + { + "source": "AC_CURRENT_USB4065-01f8cd65-f159-48d8-941a-f78f4cf89895", + "sourceHandle": "default", + "target": "BIG_NUMBER-58ecefea-6da3-4e07-b581-b9796f085dec", + "targetHandle": "default", + "id": "reactflow__edge-AC_CURRENT_USB4065-01f8cd65-f159-48d8-941a-f78f4cf89895default-BIG_NUMBER-58ecefea-6da3-4e07-b581-b9796f085decdefault" + }, + { + "source": "AC_VOLTAGE_USB4065-75a4399f-a1b3-4cfe-b110-3cea79bce7eb", + "sourceHandle": "default", + "target": "BIG_NUMBER-4f55667b-079e-4735-aa52-3bb18be8e06b", + "targetHandle": "default", + "id": "reactflow__edge-AC_VOLTAGE_USB4065-75a4399f-a1b3-4cfe-b110-3cea79bce7ebdefault-BIG_NUMBER-4f55667b-079e-4735-aa52-3bb18be8e06bdefault" + } + ], + "viewport": { + "x": 1139.470292881633, + "y": 572.2854272048312, + "zoom": 1.2136444284334926 + } + } +} \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/examples/EX1/example.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/AC_VOLTAGE_USB4065/examples/EX1/example.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/CONNECTION_USB4065.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/CONNECTION_USB4065.md new file mode 100644 index 0000000000..3ebadba6e8 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/CONNECTION_USB4065.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/a1-[autogen]/docstring.txt b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..f03c50bd32 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/a1-[autogen]/docstring.txt @@ -0,0 +1,11 @@ +The CONNECTION_MDO3XXX node connects Flojoy to a + + Parameters + ---------- + NI_address: str + The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1'). + + Returns + ------- + DataContainer + Optional: None diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/a1-[autogen]/python_code.txt b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..1d210debfd --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/a1-[autogen]/python_code.txt @@ -0,0 +1,17 @@ +from flojoy import flojoy, DataContainer, NIDevice +from flojoy.connection_manager import DeviceConnectionManager +from typing import Optional +import nidmm + + +@flojoy(deps={"nidmm": "1.4.6"}) +def CONNECTION_USB4065( + NI_address: str = "Dev1", + default: Optional[DataContainer] = None, +) -> Optional[DataContainer]: + + + session = nidmm.Session(NI_address) + DeviceConnectionManager.register_connection(NIDevice(NI_address), session) + + return None diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/appendix/hardware.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/appendix/media.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/appendix/notes.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/examples/EX1/app.json b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/examples/EX1/app.json new file mode 100644 index 0000000000..7ee5bc2698 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/examples/EX1/app.json @@ -0,0 +1,266 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "type": "IO", + "data": { + "id": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "label": "CONNECTION USB4065", + "func": "CONNECTION_USB4065", + "type": "IO", + "ctrls": { + "NI_address": { + "type": "str", + "default": "Dev1", + "desc": "The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1').", + "overload": null, + "functionName": "CONNECTION_USB4065", + "param": "NI_address", + "value": "Dev1" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "desc": "Optional: None" + } + ], + "pip_dependencies": [ + { + "name": "nidmm", + "v": "1.4.6" + } + ], + "path": "IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/CONNECTION_USB4065.py", + "selected": false + }, + "position": { + "x": 4.704499736461486, + "y": -114.58793327290465 + }, + "selected": false, + "positionAbsolute": { + "x": 4.704499736461486, + "y": -114.58793327290465 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-58ecefea-6da3-4e07-b581-b9796f085dec", + "type": "VISUALIZERS", + "data": { + "id": "BIG_NUMBER-58ecefea-6da3-4e07-b581-b9796f085dec", + "label": "BIG NUMBER 1", + "func": "BIG_NUMBER", + "type": "VISUALIZERS", + "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": true + } + }, + "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": "VISUALIZERS/PLOTLY/BIG_NUMBER/BIG_NUMBER.py", + "selected": false + }, + "position": { + "x": 779.8328146881206, + "y": -134.05091491913146 + }, + "selected": false, + "positionAbsolute": { + "x": 779.8328146881206, + "y": -134.05091491913146 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "RESISTANCE_USB4065-be7ec375-8dda-4e2a-b1e9-4b25945441d3", + "type": "IO", + "data": { + "id": "RESISTANCE_USB4065-be7ec375-8dda-4e2a-b1e9-4b25945441d3", + "label": "RESISTANCE USB4065", + "func": "RESISTANCE_USB4065", + "type": "IO", + "ctrls": { + "NI_address": { + "type": "str", + "default": "Dev1", + "desc": "The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1').", + "overload": null, + "functionName": "RESISTANCE_USB4065", + "param": "NI_address", + "value": "Dev1" + }, + "digits": { + "type": "select", + "options": [ + "4.5", + "5.5", + "6.5" + ], + "default": "5.5", + "desc": "The accuracy of the reading in digits. Lower values are faster.", + "overload": null, + "functionName": "RESISTANCE_USB4065", + "param": "digits", + "value": "4.5" + }, + "resist_limit": { + "type": "select", + "options": [ + "100", + "1000", + "1e4", + "1e5", + "1e6", + "1e7", + "1e8" + ], + "default": "1e8", + "desc": "The maximum resistance to allow, in Volts.", + "overload": null, + "functionName": "RESISTANCE_USB4065", + "param": "resist_limit", + "value": "100" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Scalar: The DC voltage reading." + } + ], + "pip_dependencies": [ + { + "name": "nidmm", + "v": "1.4.6" + } + ], + "path": "IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/RESISTANCE_USB4065.py", + "selected": false + }, + "position": { + "x": 383.1035717255011, + "y": -122.14124419049455 + }, + "selected": false, + "positionAbsolute": { + "x": 383.1035717255011, + "y": -122.14124419049455 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "sourceHandle": "default", + "target": "RESISTANCE_USB4065-be7ec375-8dda-4e2a-b1e9-4b25945441d3", + "targetHandle": "default", + "id": "reactflow__edge-CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1default-RESISTANCE_USB4065-be7ec375-8dda-4e2a-b1e9-4b25945441d3default" + }, + { + "source": "RESISTANCE_USB4065-be7ec375-8dda-4e2a-b1e9-4b25945441d3", + "sourceHandle": "default", + "target": "BIG_NUMBER-58ecefea-6da3-4e07-b581-b9796f085dec", + "targetHandle": "default", + "id": "reactflow__edge-RESISTANCE_USB4065-be7ec375-8dda-4e2a-b1e9-4b25945441d3default-BIG_NUMBER-58ecefea-6da3-4e07-b581-b9796f085decdefault" + } + ], + "viewport": { + "x": 1139.470292881633, + "y": 572.2854272048312, + "zoom": 1.2136444284334926 + } + } +} \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/examples/EX1/example.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/examples/EX1/example.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/DC_CURRENT_USB4065.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/DC_CURRENT_USB4065.md new file mode 100644 index 0000000000..8dbe2a1ac8 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/DC_CURRENT_USB4065.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/a1-[autogen]/docstring.txt b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..22e1235007 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/a1-[autogen]/docstring.txt @@ -0,0 +1,28 @@ +The DC_CURRENT_USB4065 node reads the DC current from a USB-4065. + + The USB-4065 is a NI (National Instruments) multimeter. It is possible that + the node will work with other NI DMMs (digital multimeters) such as the + 4070 and 4080 series. + + This instrument will likely only be compatible with Windows systems due to + NI driver availablity. To use the instrument you must install the runtime: + + https://www.ni.com/en/support/downloads/drivers/download.ni-dmm.html + + You must also find the address/resource name for the instrument. You can + find this using the NI MAX programming which can be downloaded when + installing the drivers. + + Parameters + ---------- + NI_address: str + The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1'). + digits: str + The accuracy of the reading in digits. Lower values are faster. + current_limit: str + The maximum current to allow, in Amps. + + Returns + ------- + DataContainer + Scalar: The DC current reading. diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/a1-[autogen]/python_code.txt b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..aa895ded68 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/a1-[autogen]/python_code.txt @@ -0,0 +1,27 @@ +from flojoy import flojoy, DataContainer, Scalar +from flojoy.connection_manager import DeviceConnectionManager +from typing import Optional, Literal +import nidmm + + +@flojoy(deps={"nidmm": "1.4.6"}) +def DC_CURRENT_USB4065( + NI_address: str = "Dev1", + digits: Literal["4.5", "5.5", "6.5"] = "5.5", + current_limit: Literal["0.01", "0.1", "1", "3"] = "3", + default: Optional[DataContainer] = None, +) -> Scalar: + + + connection = DeviceConnectionManager.get_connection(NI_address) + session = connection.get_handle() + + session.configure_measurement_digits( + nidmm.Function.DC_CURRENT, + range=float(current_limit), + resolution_digits=float(digits), + ) + + reading = session.read() + + return Scalar(c=reading) diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/appendix/hardware.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/appendix/media.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/appendix/notes.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/examples/EX1/app.json b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/examples/EX1/app.json new file mode 100644 index 0000000000..269fc5f34e --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/examples/EX1/app.json @@ -0,0 +1,456 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "type": "IO", + "data": { + "id": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "label": "CONNECTION USB4065", + "func": "CONNECTION_USB4065", + "type": "IO", + "ctrls": { + "NI_address": { + "type": "str", + "default": "Dev1", + "desc": "The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1').", + "overload": null, + "functionName": "CONNECTION_USB4065", + "param": "NI_address", + "value": "Dev1" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "desc": "Optional: None" + } + ], + "pip_dependencies": [ + { + "name": "nidmm", + "v": "1.4.6" + } + ], + "path": "IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/CONNECTION_USB4065.py", + "selected": false + }, + "position": { + "x": 4.704499736461486, + "y": -114.58793327290465 + }, + "selected": false, + "positionAbsolute": { + "x": 4.704499736461486, + "y": -114.58793327290465 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-4f55667b-079e-4735-aa52-3bb18be8e06b", + "type": "VISUALIZERS", + "data": { + "id": "BIG_NUMBER-4f55667b-079e-4735-aa52-3bb18be8e06b", + "label": "BIG NUMBER", + "func": "BIG_NUMBER", + "type": "VISUALIZERS", + "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": true + } + }, + "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": "VISUALIZERS/PLOTLY/BIG_NUMBER/BIG_NUMBER.py", + "selected": false + }, + "position": { + "x": 789.5089067672151, + "y": -337.92011150709266 + }, + "selected": false, + "positionAbsolute": { + "x": 789.5089067672151, + "y": -337.92011150709266 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "DC_VOLTAGE_USB4065-faabd48b-f783-4ebe-90ec-6a060dad2fbb", + "type": "IO", + "data": { + "id": "DC_VOLTAGE_USB4065-faabd48b-f783-4ebe-90ec-6a060dad2fbb", + "label": "DC VOLTAGE USB4065", + "func": "DC_VOLTAGE_USB4065", + "type": "IO", + "ctrls": { + "NI_address": { + "type": "str", + "default": "Dev1", + "desc": "The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1').", + "overload": null, + "functionName": "DC_VOLTAGE_USB4065", + "param": "NI_address", + "value": "Dev1" + }, + "digits": { + "type": "select", + "options": [ + "4.5", + "5.5", + "6.5" + ], + "default": "5.5", + "desc": "The accuracy of the reading in digits. Lower values are faster.", + "overload": null, + "functionName": "DC_VOLTAGE_USB4065", + "param": "digits", + "value": "5.5" + }, + "voltage_limit": { + "type": "select", + "options": [ + "0.1", + "1", + "10", + "100", + "300" + ], + "default": "10", + "desc": "The maximum voltage to allow, in Volts.", + "overload": null, + "functionName": "DC_VOLTAGE_USB4065", + "param": "voltage_limit", + "value": "10" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Scalar: The DC voltage reading." + } + ], + "pip_dependencies": [ + { + "name": "nidmm", + "v": "1.4.6" + } + ], + "path": "IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/DC_VOLTAGE_USB4065.py", + "selected": false + }, + "position": { + "x": 387.584587312525, + "y": -281.5498028061119 + }, + "selected": false, + "positionAbsolute": { + "x": 387.584587312525, + "y": -281.5498028061119 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-58ecefea-6da3-4e07-b581-b9796f085dec", + "type": "VISUALIZERS", + "data": { + "id": "BIG_NUMBER-58ecefea-6da3-4e07-b581-b9796f085dec", + "label": "BIG NUMBER 1", + "func": "BIG_NUMBER", + "type": "VISUALIZERS", + "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": true + } + }, + "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": "VISUALIZERS/PLOTLY/BIG_NUMBER/BIG_NUMBER.py", + "selected": true + }, + "position": { + "x": 788.5306367510525, + "y": -17.717544827417925 + }, + "selected": true, + "positionAbsolute": { + "x": 788.5306367510525, + "y": -17.717544827417925 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "DC_CURRENT_USB4065-ec7b293a-827e-4d89-86bf-5db062fda09e", + "type": "IO", + "data": { + "id": "DC_CURRENT_USB4065-ec7b293a-827e-4d89-86bf-5db062fda09e", + "label": "DC CURRENT USB4065", + "func": "DC_CURRENT_USB4065", + "type": "IO", + "ctrls": { + "NI_address": { + "type": "str", + "default": "Dev1", + "desc": "The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1').", + "overload": null, + "functionName": "DC_CURRENT_USB4065", + "param": "NI_address", + "value": "Dev1" + }, + "digits": { + "type": "select", + "options": [ + "4.5", + "5.5", + "6.5" + ], + "default": "5.5", + "desc": "The accuracy of the reading in digits. Lower values are faster.", + "overload": null, + "functionName": "DC_CURRENT_USB4065", + "param": "digits", + "value": "4.5" + }, + "current_limit": { + "type": "select", + "options": [ + "0.01", + "0.1", + "1", + "3" + ], + "default": "3", + "desc": "The maximum current to allow, in Amps.", + "overload": null, + "functionName": "DC_CURRENT_USB4065", + "param": "current_limit", + "value": "3" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Scalar: The DC current reading." + } + ], + "pip_dependencies": [ + { + "name": "nidmm", + "v": "1.4.6" + } + ], + "path": "IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/DC_CURRENT_USB4065.py", + "selected": false + }, + "position": { + "x": 383.63040645462985, + "y": 31.065737308753683 + }, + "selected": false, + "positionAbsolute": { + "x": 383.63040645462985, + "y": 31.065737308753683 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "sourceHandle": "default", + "target": "DC_VOLTAGE_USB4065-faabd48b-f783-4ebe-90ec-6a060dad2fbb", + "targetHandle": "default", + "id": "reactflow__edge-CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1default-DC_VOLTAGE_USB4065-faabd48b-f783-4ebe-90ec-6a060dad2fbbdefault", + "selected": false + }, + { + "source": "DC_VOLTAGE_USB4065-faabd48b-f783-4ebe-90ec-6a060dad2fbb", + "sourceHandle": "default", + "target": "BIG_NUMBER-4f55667b-079e-4735-aa52-3bb18be8e06b", + "targetHandle": "default", + "id": "reactflow__edge-DC_VOLTAGE_USB4065-faabd48b-f783-4ebe-90ec-6a060dad2fbbdefault-BIG_NUMBER-4f55667b-079e-4735-aa52-3bb18be8e06bdefault" + }, + { + "source": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "sourceHandle": "default", + "target": "DC_CURRENT_USB4065-ec7b293a-827e-4d89-86bf-5db062fda09e", + "targetHandle": "default", + "id": "reactflow__edge-CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1default-DC_CURRENT_USB4065-ec7b293a-827e-4d89-86bf-5db062fda09edefault" + }, + { + "source": "DC_CURRENT_USB4065-ec7b293a-827e-4d89-86bf-5db062fda09e", + "sourceHandle": "default", + "target": "BIG_NUMBER-58ecefea-6da3-4e07-b581-b9796f085dec", + "targetHandle": "default", + "id": "reactflow__edge-DC_CURRENT_USB4065-ec7b293a-827e-4d89-86bf-5db062fda09edefault-BIG_NUMBER-58ecefea-6da3-4e07-b581-b9796f085decdefault" + } + ], + "viewport": { + "x": 1139.470292881633, + "y": 572.2854272048312, + "zoom": 1.2136444284334926 + } + } +} \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/examples/EX1/example.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/examples/EX1/example.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/DC_VOLTAGE_USB4065.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/DC_VOLTAGE_USB4065.md new file mode 100644 index 0000000000..6cada942e4 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/DC_VOLTAGE_USB4065.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/a1-[autogen]/docstring.txt b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..d448a9fc7c --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/a1-[autogen]/docstring.txt @@ -0,0 +1,28 @@ +The DC_VOLTAGE_USB4065 node reads the DC voltage from a USB-4065. + + The USB-4065 is a NI (National Instruments) multimeter. It is possible that + the node will work with other NI DMMs (digital multimeters) such as the + 4070 and 4080 series. + + This instrument will likely only be compatible with Windows systems due to + NI driver availablity. To use the instrument you must install the runtime: + + https://www.ni.com/en/support/downloads/drivers/download.ni-dmm.html + + You must also find the address/resource name for the instrument. You can + find this using the NI MAX programming which can be downloaded when + installing the drivers. + + Parameters + ---------- + NI_address: str + The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1'). + digits: str + The accuracy of the reading in digits. Lower values are faster. + voltage_limit: str + The maximum voltage to allow, in Volts. + + Returns + ------- + DataContainer + Scalar: The DC voltage reading. diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/a1-[autogen]/python_code.txt b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..c4e8508e73 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/a1-[autogen]/python_code.txt @@ -0,0 +1,27 @@ +from flojoy import flojoy, DataContainer, Scalar +from flojoy.connection_manager import DeviceConnectionManager +from typing import Optional, Literal +import nidmm + + +@flojoy(deps={"nidmm": "1.4.6"}) +def DC_VOLTAGE_USB4065( + NI_address: str = "Dev1", + digits: Literal["4.5", "5.5", "6.5"] = "5.5", + voltage_limit: Literal["0.1", "1", "10", "100", "300"] = "10", + default: Optional[DataContainer] = None, +) -> Scalar: + + + connection = DeviceConnectionManager.get_connection(NI_address) + session = connection.get_handle() + + session.configure_measurement_digits( + nidmm.Function.DC_VOLTS, + range=float(voltage_limit), + resolution_digits=float(digits), + ) + + reading = session.read() + + return Scalar(c=reading) diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/appendix/hardware.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/appendix/media.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/appendix/notes.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/examples/EX1/app.json b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/examples/EX1/app.json new file mode 100644 index 0000000000..269fc5f34e --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/examples/EX1/app.json @@ -0,0 +1,456 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "type": "IO", + "data": { + "id": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "label": "CONNECTION USB4065", + "func": "CONNECTION_USB4065", + "type": "IO", + "ctrls": { + "NI_address": { + "type": "str", + "default": "Dev1", + "desc": "The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1').", + "overload": null, + "functionName": "CONNECTION_USB4065", + "param": "NI_address", + "value": "Dev1" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "desc": "Optional: None" + } + ], + "pip_dependencies": [ + { + "name": "nidmm", + "v": "1.4.6" + } + ], + "path": "IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/CONNECTION_USB4065.py", + "selected": false + }, + "position": { + "x": 4.704499736461486, + "y": -114.58793327290465 + }, + "selected": false, + "positionAbsolute": { + "x": 4.704499736461486, + "y": -114.58793327290465 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-4f55667b-079e-4735-aa52-3bb18be8e06b", + "type": "VISUALIZERS", + "data": { + "id": "BIG_NUMBER-4f55667b-079e-4735-aa52-3bb18be8e06b", + "label": "BIG NUMBER", + "func": "BIG_NUMBER", + "type": "VISUALIZERS", + "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": true + } + }, + "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": "VISUALIZERS/PLOTLY/BIG_NUMBER/BIG_NUMBER.py", + "selected": false + }, + "position": { + "x": 789.5089067672151, + "y": -337.92011150709266 + }, + "selected": false, + "positionAbsolute": { + "x": 789.5089067672151, + "y": -337.92011150709266 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "DC_VOLTAGE_USB4065-faabd48b-f783-4ebe-90ec-6a060dad2fbb", + "type": "IO", + "data": { + "id": "DC_VOLTAGE_USB4065-faabd48b-f783-4ebe-90ec-6a060dad2fbb", + "label": "DC VOLTAGE USB4065", + "func": "DC_VOLTAGE_USB4065", + "type": "IO", + "ctrls": { + "NI_address": { + "type": "str", + "default": "Dev1", + "desc": "The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1').", + "overload": null, + "functionName": "DC_VOLTAGE_USB4065", + "param": "NI_address", + "value": "Dev1" + }, + "digits": { + "type": "select", + "options": [ + "4.5", + "5.5", + "6.5" + ], + "default": "5.5", + "desc": "The accuracy of the reading in digits. Lower values are faster.", + "overload": null, + "functionName": "DC_VOLTAGE_USB4065", + "param": "digits", + "value": "5.5" + }, + "voltage_limit": { + "type": "select", + "options": [ + "0.1", + "1", + "10", + "100", + "300" + ], + "default": "10", + "desc": "The maximum voltage to allow, in Volts.", + "overload": null, + "functionName": "DC_VOLTAGE_USB4065", + "param": "voltage_limit", + "value": "10" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Scalar: The DC voltage reading." + } + ], + "pip_dependencies": [ + { + "name": "nidmm", + "v": "1.4.6" + } + ], + "path": "IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/DC_VOLTAGE_USB4065.py", + "selected": false + }, + "position": { + "x": 387.584587312525, + "y": -281.5498028061119 + }, + "selected": false, + "positionAbsolute": { + "x": 387.584587312525, + "y": -281.5498028061119 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-58ecefea-6da3-4e07-b581-b9796f085dec", + "type": "VISUALIZERS", + "data": { + "id": "BIG_NUMBER-58ecefea-6da3-4e07-b581-b9796f085dec", + "label": "BIG NUMBER 1", + "func": "BIG_NUMBER", + "type": "VISUALIZERS", + "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": true + } + }, + "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": "VISUALIZERS/PLOTLY/BIG_NUMBER/BIG_NUMBER.py", + "selected": true + }, + "position": { + "x": 788.5306367510525, + "y": -17.717544827417925 + }, + "selected": true, + "positionAbsolute": { + "x": 788.5306367510525, + "y": -17.717544827417925 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "DC_CURRENT_USB4065-ec7b293a-827e-4d89-86bf-5db062fda09e", + "type": "IO", + "data": { + "id": "DC_CURRENT_USB4065-ec7b293a-827e-4d89-86bf-5db062fda09e", + "label": "DC CURRENT USB4065", + "func": "DC_CURRENT_USB4065", + "type": "IO", + "ctrls": { + "NI_address": { + "type": "str", + "default": "Dev1", + "desc": "The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1').", + "overload": null, + "functionName": "DC_CURRENT_USB4065", + "param": "NI_address", + "value": "Dev1" + }, + "digits": { + "type": "select", + "options": [ + "4.5", + "5.5", + "6.5" + ], + "default": "5.5", + "desc": "The accuracy of the reading in digits. Lower values are faster.", + "overload": null, + "functionName": "DC_CURRENT_USB4065", + "param": "digits", + "value": "4.5" + }, + "current_limit": { + "type": "select", + "options": [ + "0.01", + "0.1", + "1", + "3" + ], + "default": "3", + "desc": "The maximum current to allow, in Amps.", + "overload": null, + "functionName": "DC_CURRENT_USB4065", + "param": "current_limit", + "value": "3" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Scalar: The DC current reading." + } + ], + "pip_dependencies": [ + { + "name": "nidmm", + "v": "1.4.6" + } + ], + "path": "IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_CURRENT_USB4065/DC_CURRENT_USB4065.py", + "selected": false + }, + "position": { + "x": 383.63040645462985, + "y": 31.065737308753683 + }, + "selected": false, + "positionAbsolute": { + "x": 383.63040645462985, + "y": 31.065737308753683 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "sourceHandle": "default", + "target": "DC_VOLTAGE_USB4065-faabd48b-f783-4ebe-90ec-6a060dad2fbb", + "targetHandle": "default", + "id": "reactflow__edge-CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1default-DC_VOLTAGE_USB4065-faabd48b-f783-4ebe-90ec-6a060dad2fbbdefault", + "selected": false + }, + { + "source": "DC_VOLTAGE_USB4065-faabd48b-f783-4ebe-90ec-6a060dad2fbb", + "sourceHandle": "default", + "target": "BIG_NUMBER-4f55667b-079e-4735-aa52-3bb18be8e06b", + "targetHandle": "default", + "id": "reactflow__edge-DC_VOLTAGE_USB4065-faabd48b-f783-4ebe-90ec-6a060dad2fbbdefault-BIG_NUMBER-4f55667b-079e-4735-aa52-3bb18be8e06bdefault" + }, + { + "source": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "sourceHandle": "default", + "target": "DC_CURRENT_USB4065-ec7b293a-827e-4d89-86bf-5db062fda09e", + "targetHandle": "default", + "id": "reactflow__edge-CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1default-DC_CURRENT_USB4065-ec7b293a-827e-4d89-86bf-5db062fda09edefault" + }, + { + "source": "DC_CURRENT_USB4065-ec7b293a-827e-4d89-86bf-5db062fda09e", + "sourceHandle": "default", + "target": "BIG_NUMBER-58ecefea-6da3-4e07-b581-b9796f085dec", + "targetHandle": "default", + "id": "reactflow__edge-DC_CURRENT_USB4065-ec7b293a-827e-4d89-86bf-5db062fda09edefault-BIG_NUMBER-58ecefea-6da3-4e07-b581-b9796f085decdefault" + } + ], + "viewport": { + "x": 1139.470292881633, + "y": 572.2854272048312, + "zoom": 1.2136444284334926 + } + } +} \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/examples/EX1/example.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DC_VOLTAGE_USB4065/examples/EX1/example.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/DIODE_USB4065.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/DIODE_USB4065.md new file mode 100644 index 0000000000..95453f3866 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/DIODE_USB4065.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/a1-[autogen]/docstring.txt b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..940460f3e6 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/a1-[autogen]/docstring.txt @@ -0,0 +1,28 @@ +The DIODE_USB4065 node reads the voltage drop across a diode. + + The USB-4065 is a NI (National Instruments) multimeter. It is possible that + the node will work with other NI DMMs (digital multimeters) such as the + 4070 and 4080 series. + + This instrument will likely only be compatible with Windows systems due to + NI driver availablity. To use the instrument you must install the runtime: + + https://www.ni.com/en/support/downloads/drivers/download.ni-dmm.html + + You must also find the address/resource name for the instrument. You can + find this using the NI MAX programming which can be downloaded when + installing the drivers. + + Parameters + ---------- + NI_address: str + The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1'). + digits: str + The accuracy of the reading in digits. Lower values are faster. + voltage_limit: str + The maximum voltage to allow, in Volts. + + Returns + ------- + DataContainer + Scalar: The DC voltage reading. diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/a1-[autogen]/python_code.txt b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..e1295085aa --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/a1-[autogen]/python_code.txt @@ -0,0 +1,27 @@ +from flojoy import flojoy, DataContainer, Scalar +from flojoy.connection_manager import DeviceConnectionManager +from typing import Optional, Literal +import nidmm + + +@flojoy(deps={"nidmm": "1.4.6"}) +def DIODE_USB4065( + NI_address: str = "Dev1", + digits: Literal["4.5", "5.5", "6.5"] = "5.5", + voltage_limit: Literal["3.5", "10"] = "10", + default: Optional[DataContainer] = None, +) -> Scalar: + + + connection = DeviceConnectionManager.get_connection(NI_address) + session = connection.get_handle() + + session.configure_measurement_digits( + nidmm.Function.DIODE, + range=float(voltage_limit), + resolution_digits=float(digits), + ) + + reading = session.read() + + return Scalar(c=reading) diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/appendix/hardware.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/appendix/media.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/appendix/notes.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/examples/EX1/app.json b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/examples/EX1/app.json new file mode 100644 index 0000000000..39063c25f1 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/examples/EX1/app.json @@ -0,0 +1,594 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "type": "IO", + "data": { + "id": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "label": "CONNECTION USB4065", + "func": "CONNECTION_USB4065", + "type": "IO", + "ctrls": { + "NI_address": { + "type": "str", + "default": "Dev1", + "desc": "The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1').", + "overload": null, + "functionName": "CONNECTION_USB4065", + "param": "NI_address", + "value": "Dev1" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "desc": "Optional: None" + } + ], + "pip_dependencies": [ + { + "name": "nidmm", + "v": "1.4.6" + } + ], + "path": "IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/CONNECTION_USB4065.py", + "selected": false + }, + "position": { + "x": -407.4314234630916, + "y": -63.38316705720263 + }, + "selected": false, + "positionAbsolute": { + "x": -407.4314234630916, + "y": -63.38316705720263 + }, + "dragging": true + }, + { + "width": 96, + "height": 96, + "id": "LOOP-fdac3e37-4b37-49f0-976b-38ac4759268f", + "type": "LOGIC_GATES", + "data": { + "id": "LOOP-fdac3e37-4b37-49f0-976b-38ac4759268f", + "label": "LOOP", + "func": "LOOP", + "type": "LOGIC_GATES", + "ctrls": { + "num_loops": { + "type": "int", + "default": -1, + "desc": "number of times to iterate through body nodes, default is \"-1\" meaning infinity.", + "overload": null, + "functionName": "LOOP", + "param": "num_loops", + "value": 25 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "body", + "id": "body", + "type": "Any", + "desc": null + }, + { + "name": "end", + "id": "end", + "type": "Any", + "desc": null + } + ], + "path": "LOGIC_GATES/LOOPS/LOOP/LOOP.py", + "selected": true + }, + "position": { + "x": 227.6964774956631, + "y": -20.121881497152287 + }, + "selected": true, + "positionAbsolute": { + "x": 227.6964774956631, + "y": -20.121881497152287 + }, + "dragging": true + }, + { + "width": 96, + "height": 96, + "id": "APPEND-adc5b868-3b2c-41f1-9ec8-ae0a411b1a22", + "type": "LOGIC_GATES", + "data": { + "id": "APPEND-adc5b868-3b2c-41f1-9ec8-ae0a411b1a22", + "label": "APPEND", + "func": "APPEND", + "type": "LOGIC_GATES", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "primary_dp", + "id": "primary_dp", + "type": "OrderedPair|Matrix|DataFrame|Scalar|Vector", + "multiple": false, + "desc": "Input that ends up \"on top\" of the resulting DataContainer." + }, + { + "name": "secondary_dp", + "id": "secondary_dp", + "type": "OrderedPair|Matrix|DataFrame|Scalar|Vector", + "multiple": false, + "desc": "Input that ends up \"on the bottom\" of the resulting DataContainer." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Matrix|DataFrame|Vector", + "desc": null + } + ], + "path": "LOGIC_GATES/LOOPS/APPEND/APPEND.py", + "selected": false + }, + "position": { + "x": 735.3226087858226, + "y": -250.41039060991284 + }, + "selected": false, + "positionAbsolute": { + "x": 735.3226087858226, + "y": -250.41039060991284 + }, + "dragging": true + }, + { + "width": 208, + "height": 96, + "id": "FEEDBACK-dd1c23ff-8f91-4892-9f1c-8d4b91c50aa2", + "type": "GENERATORS", + "data": { + "id": "FEEDBACK-dd1c23ff-8f91-4892-9f1c-8d4b91c50aa2", + "label": "FEEDBACK", + "func": "FEEDBACK", + "type": "GENERATORS", + "ctrls": { + "referred_node": { + "type": "NodeReference", + "default": null, + "desc": "The node ID to capture the result from.", + "overload": null, + "functionName": "FEEDBACK", + "param": "referred_node", + "value": "APPEND-adc5b868-3b2c-41f1-9ec8-ae0a411b1a22" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "desc": null + } + ], + "path": "GENERATORS/SIMULATIONS/FEEDBACK/FEEDBACK.py", + "selected": false + }, + "position": { + "x": 438.29263845094783, + "y": -163.366406533838 + }, + "selected": false, + "positionAbsolute": { + "x": 438.29263845094783, + "y": -163.366406533838 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "LINE-6977d433-f342-4c5a-9035-43961641c18c", + "type": "VISUALIZERS", + "data": { + "id": "LINE-6977d433-f342-4c5a-9035-43961641c18c", + "label": "LINE", + "func": "LINE", + "type": "VISUALIZERS", + "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": "VISUALIZERS/PLOTLY/LINE/LINE.py", + "selected": false + }, + "position": { + "x": 973.9903536635177, + "y": -319.7488298823558 + }, + "selected": false, + "positionAbsolute": { + "x": 973.9903536635177, + "y": -319.7488298823558 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "DIODE_USB4065-83689859-e7b8-42d1-ab55-b5c7130633c9", + "type": "IO", + "data": { + "id": "DIODE_USB4065-83689859-e7b8-42d1-ab55-b5c7130633c9", + "label": "DIODE USB4065", + "func": "DIODE_USB4065", + "type": "IO", + "ctrls": { + "NI_address": { + "type": "str", + "default": "Dev1", + "desc": "The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1').", + "overload": null, + "functionName": "DIODE_USB4065", + "param": "NI_address", + "value": "Dev1" + }, + "digits": { + "type": "select", + "options": [ + "4.5", + "5.5", + "6.5" + ], + "default": "5.5", + "desc": "The accuracy of the reading in digits. Lower values are faster.", + "overload": null, + "functionName": "DIODE_USB4065", + "param": "digits", + "value": "4.5" + }, + "voltage_limit": { + "type": "select", + "options": [ + "3.5", + "10" + ], + "default": "10", + "desc": "The maximum voltage to allow, in Volts.", + "overload": null, + "functionName": "DIODE_USB4065", + "param": "voltage_limit", + "value": "3.5" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Scalar: The DC voltage reading." + } + ], + "pip_dependencies": [ + { + "name": "nidmm", + "v": "1.4.6" + } + ], + "path": "IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/DIODE_USB4065.py", + "selected": false + }, + "position": { + "x": -116.51249844926463, + "y": -66.10396672338652 + }, + "selected": false, + "positionAbsolute": { + "x": -116.51249844926463, + "y": -66.10396672338652 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "DIODE_USB4065-f3d001ec-a80f-4216-886b-a260672a36e3", + "type": "IO", + "data": { + "id": "DIODE_USB4065-f3d001ec-a80f-4216-886b-a260672a36e3", + "label": "DIODE USB4065 1", + "func": "DIODE_USB4065", + "type": "IO", + "ctrls": { + "NI_address": { + "type": "str", + "default": "Dev1", + "desc": "The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1').", + "overload": null, + "functionName": "DIODE_USB4065", + "param": "NI_address", + "value": "Dev1" + }, + "digits": { + "type": "select", + "options": [ + "4.5", + "5.5", + "6.5" + ], + "default": "5.5", + "desc": "The accuracy of the reading in digits. Lower values are faster.", + "overload": null, + "functionName": "DIODE_USB4065", + "param": "digits", + "value": "4.5" + }, + "voltage_limit": { + "type": "select", + "options": [ + "3.5", + "10" + ], + "default": "10", + "desc": "The maximum voltage to allow, in Volts.", + "overload": null, + "functionName": "DIODE_USB4065", + "param": "voltage_limit", + "value": "3.5" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Scalar: The DC voltage reading." + } + ], + "pip_dependencies": [ + { + "name": "nidmm", + "v": "1.4.6" + } + ], + "path": "IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/DIODE_USB4065.py", + "selected": false + }, + "position": { + "x": 451.32763370126673, + "y": -431.75316643155406 + }, + "selected": false, + "positionAbsolute": { + "x": 451.32763370126673, + "y": -431.75316643155406 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-4f55667b-079e-4735-aa52-3bb18be8e06b", + "type": "VISUALIZERS", + "data": { + "id": "BIG_NUMBER-4f55667b-079e-4735-aa52-3bb18be8e06b", + "label": "BIG NUMBER", + "func": "BIG_NUMBER", + "type": "VISUALIZERS", + "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": true + } + }, + "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": "VISUALIZERS/PLOTLY/BIG_NUMBER/BIG_NUMBER.py", + "selected": false + }, + "position": { + "x": 942.0359776564547, + "y": -618.7319046543057 + }, + "selected": false, + "positionAbsolute": { + "x": 942.0359776564547, + "y": -618.7319046543057 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "LOOP-fdac3e37-4b37-49f0-976b-38ac4759268f", + "sourceHandle": "body", + "target": "FEEDBACK-dd1c23ff-8f91-4892-9f1c-8d4b91c50aa2", + "targetHandle": "default", + "id": "reactflow__edge-LOOP-fdac3e37-4b37-49f0-976b-38ac4759268fbody-FEEDBACK-dd1c23ff-8f91-4892-9f1c-8d4b91c50aa2default" + }, + { + "source": "FEEDBACK-dd1c23ff-8f91-4892-9f1c-8d4b91c50aa2", + "sourceHandle": "default", + "target": "APPEND-adc5b868-3b2c-41f1-9ec8-ae0a411b1a22", + "targetHandle": "primary_dp", + "id": "reactflow__edge-FEEDBACK-dd1c23ff-8f91-4892-9f1c-8d4b91c50aa2default-APPEND-adc5b868-3b2c-41f1-9ec8-ae0a411b1a22primary_dp" + }, + { + "source": "APPEND-adc5b868-3b2c-41f1-9ec8-ae0a411b1a22", + "sourceHandle": "default", + "target": "LINE-6977d433-f342-4c5a-9035-43961641c18c", + "targetHandle": "default", + "id": "reactflow__edge-APPEND-adc5b868-3b2c-41f1-9ec8-ae0a411b1a22default-LINE-6977d433-f342-4c5a-9035-43961641c18cdefault" + }, + { + "source": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "sourceHandle": "default", + "target": "DIODE_USB4065-83689859-e7b8-42d1-ab55-b5c7130633c9", + "targetHandle": "default", + "id": "reactflow__edge-CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1default-DIODE_USB4065-83689859-e7b8-42d1-ab55-b5c7130633c9default" + }, + { + "source": "DIODE_USB4065-83689859-e7b8-42d1-ab55-b5c7130633c9", + "sourceHandle": "default", + "target": "LOOP-fdac3e37-4b37-49f0-976b-38ac4759268f", + "targetHandle": "default", + "id": "reactflow__edge-DIODE_USB4065-83689859-e7b8-42d1-ab55-b5c7130633c9default-LOOP-fdac3e37-4b37-49f0-976b-38ac4759268fdefault" + }, + { + "source": "LOOP-fdac3e37-4b37-49f0-976b-38ac4759268f", + "sourceHandle": "body", + "target": "DIODE_USB4065-f3d001ec-a80f-4216-886b-a260672a36e3", + "targetHandle": "default", + "id": "reactflow__edge-LOOP-fdac3e37-4b37-49f0-976b-38ac4759268fbody-DIODE_USB4065-f3d001ec-a80f-4216-886b-a260672a36e3default" + }, + { + "source": "DIODE_USB4065-f3d001ec-a80f-4216-886b-a260672a36e3", + "sourceHandle": "default", + "target": "APPEND-adc5b868-3b2c-41f1-9ec8-ae0a411b1a22", + "targetHandle": "secondary_dp", + "id": "reactflow__edge-DIODE_USB4065-f3d001ec-a80f-4216-886b-a260672a36e3default-APPEND-adc5b868-3b2c-41f1-9ec8-ae0a411b1a22secondary_dp" + }, + { + "source": "DIODE_USB4065-f3d001ec-a80f-4216-886b-a260672a36e3", + "sourceHandle": "default", + "target": "BIG_NUMBER-4f55667b-079e-4735-aa52-3bb18be8e06b", + "targetHandle": "default", + "id": "reactflow__edge-DIODE_USB4065-f3d001ec-a80f-4216-886b-a260672a36e3default-BIG_NUMBER-4f55667b-079e-4735-aa52-3bb18be8e06bdefault" + } + ], + "viewport": { + "x": 1139.470292881633, + "y": 572.2854272048312, + "zoom": 1.2136444284334926 + } + } +} \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/examples/EX1/example.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/DIODE_USB4065/examples/EX1/example.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/RESISTANCE_USB4065.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/RESISTANCE_USB4065.md new file mode 100644 index 0000000000..ecb35fce7d --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/RESISTANCE_USB4065.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/a1-[autogen]/docstring.txt b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..703559d466 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/a1-[autogen]/docstring.txt @@ -0,0 +1,31 @@ +The RESISTANCE_USB4065 node reads the two-wire resistance from a USB-4065. + + The four-wire resistance is more accurate than two-wire and can be measured + with the FOUR_WIRE_RESIST_USB4065 node. + + The USB-4065 is a NI (National Instruments) multimeter. It is possible that + the node will work with other NI DMMs (digital multimeters) such as the + 4070 and 4080 series. + + This instrument will likely only be compatible with Windows systems due to + NI driver availablity. To use the instrument you must install the runtime: + + https://www.ni.com/en/support/downloads/drivers/download.ni-dmm.html + + You must also find the address/resource name for the instrument. You can + find this using the NI MAX programming which can be downloaded when + installing the drivers. + + Parameters + ---------- + NI_address: str + The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1'). + digits: str + The accuracy of the reading in digits. Lower values are faster. + resist_limit: str + The maximum resistance to allow, in Volts. + + Returns + ------- + DataContainer + Scalar: The DC voltage reading. diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/a1-[autogen]/python_code.txt b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..6d6bbb1e3a --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/a1-[autogen]/python_code.txt @@ -0,0 +1,27 @@ +from flojoy import flojoy, DataContainer, Scalar +from flojoy.connection_manager import DeviceConnectionManager +from typing import Optional, Literal +import nidmm + + +@flojoy(deps={"nidmm": "1.4.6"}) +def RESISTANCE_USB4065( + NI_address: str = "Dev1", + digits: Literal["4.5", "5.5", "6.5"] = "5.5", + resist_limit: Literal["100", "1000", "1e4", "1e5", "1e6", "1e7", "1e8"] = "1e8", + default: Optional[DataContainer] = None, +) -> Scalar: + + + connection = DeviceConnectionManager.get_connection(NI_address) + session = connection.get_handle() + + session.configure_measurement_digits( + nidmm.Function.TWO_WIRE_RES, + range=float(resist_limit), + resolution_digits=float(digits), + ) + + reading = session.read() + + return Scalar(c=reading) diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/appendix/hardware.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/appendix/media.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/appendix/notes.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/examples/EX1/app.json b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/examples/EX1/app.json new file mode 100644 index 0000000000..7ee5bc2698 --- /dev/null +++ b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/examples/EX1/app.json @@ -0,0 +1,266 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "type": "IO", + "data": { + "id": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "label": "CONNECTION USB4065", + "func": "CONNECTION_USB4065", + "type": "IO", + "ctrls": { + "NI_address": { + "type": "str", + "default": "Dev1", + "desc": "The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1').", + "overload": null, + "functionName": "CONNECTION_USB4065", + "param": "NI_address", + "value": "Dev1" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "desc": "Optional: None" + } + ], + "pip_dependencies": [ + { + "name": "nidmm", + "v": "1.4.6" + } + ], + "path": "IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/CONNECTION_USB4065/CONNECTION_USB4065.py", + "selected": false + }, + "position": { + "x": 4.704499736461486, + "y": -114.58793327290465 + }, + "selected": false, + "positionAbsolute": { + "x": 4.704499736461486, + "y": -114.58793327290465 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-58ecefea-6da3-4e07-b581-b9796f085dec", + "type": "VISUALIZERS", + "data": { + "id": "BIG_NUMBER-58ecefea-6da3-4e07-b581-b9796f085dec", + "label": "BIG NUMBER 1", + "func": "BIG_NUMBER", + "type": "VISUALIZERS", + "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": true + } + }, + "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": "VISUALIZERS/PLOTLY/BIG_NUMBER/BIG_NUMBER.py", + "selected": false + }, + "position": { + "x": 779.8328146881206, + "y": -134.05091491913146 + }, + "selected": false, + "positionAbsolute": { + "x": 779.8328146881206, + "y": -134.05091491913146 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "RESISTANCE_USB4065-be7ec375-8dda-4e2a-b1e9-4b25945441d3", + "type": "IO", + "data": { + "id": "RESISTANCE_USB4065-be7ec375-8dda-4e2a-b1e9-4b25945441d3", + "label": "RESISTANCE USB4065", + "func": "RESISTANCE_USB4065", + "type": "IO", + "ctrls": { + "NI_address": { + "type": "str", + "default": "Dev1", + "desc": "The NI instrument address for the instrument (e.g. 'Dev0', 'Dev1').", + "overload": null, + "functionName": "RESISTANCE_USB4065", + "param": "NI_address", + "value": "Dev1" + }, + "digits": { + "type": "select", + "options": [ + "4.5", + "5.5", + "6.5" + ], + "default": "5.5", + "desc": "The accuracy of the reading in digits. Lower values are faster.", + "overload": null, + "functionName": "RESISTANCE_USB4065", + "param": "digits", + "value": "4.5" + }, + "resist_limit": { + "type": "select", + "options": [ + "100", + "1000", + "1e4", + "1e5", + "1e6", + "1e7", + "1e8" + ], + "default": "1e8", + "desc": "The maximum resistance to allow, in Volts.", + "overload": null, + "functionName": "RESISTANCE_USB4065", + "param": "resist_limit", + "value": "100" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "desc": "Scalar: The DC voltage reading." + } + ], + "pip_dependencies": [ + { + "name": "nidmm", + "v": "1.4.6" + } + ], + "path": "IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/RESISTANCE_USB4065.py", + "selected": false + }, + "position": { + "x": 383.1035717255011, + "y": -122.14124419049455 + }, + "selected": false, + "positionAbsolute": { + "x": 383.1035717255011, + "y": -122.14124419049455 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1", + "sourceHandle": "default", + "target": "RESISTANCE_USB4065-be7ec375-8dda-4e2a-b1e9-4b25945441d3", + "targetHandle": "default", + "id": "reactflow__edge-CONNECTION_USB4065-33140410-b4f4-4e67-8613-7559b997c8e1default-RESISTANCE_USB4065-be7ec375-8dda-4e2a-b1e9-4b25945441d3default" + }, + { + "source": "RESISTANCE_USB4065-be7ec375-8dda-4e2a-b1e9-4b25945441d3", + "sourceHandle": "default", + "target": "BIG_NUMBER-58ecefea-6da3-4e07-b581-b9796f085dec", + "targetHandle": "default", + "id": "reactflow__edge-RESISTANCE_USB4065-be7ec375-8dda-4e2a-b1e9-4b25945441d3default-BIG_NUMBER-58ecefea-6da3-4e07-b581-b9796f085decdefault" + } + ], + "viewport": { + "x": 1139.470292881633, + "y": 572.2854272048312, + "zoom": 1.2136444284334926 + } + } +} \ No newline at end of file diff --git a/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/examples/EX1/example.md b/docs/nodes/IO/INSTRUMENTS/MULTIMETERS/NI/USB_4065/BASIC/RESISTANCE_USB4065/examples/EX1/example.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/nodes/IO/PROTOCOLS/SCPI/IDN/IDN.md b/docs/nodes/IO/PROTOCOLS/SCPI/IDN/IDN.md new file mode 100644 index 0000000000..dd4403e317 --- /dev/null +++ b/docs/nodes/IO/PROTOCOLS/SCPI/IDN/IDN.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/IO/PROTOCOLS/SCPI/IDN/a1-[autogen]/docstring.txt b/docs/nodes/IO/PROTOCOLS/SCPI/IDN/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..803a6fd65a --- /dev/null +++ b/docs/nodes/IO/PROTOCOLS/SCPI/IDN/a1-[autogen]/docstring.txt @@ -0,0 +1,16 @@ +The IDN node queries a device's identity through the universal *IDN? SCPI command. + + Inputs + ------ + default: TextBlob + A dummy TextBlob DataContainer - likely connected to the output of the OPEN_SERIAL node. This dummy input is intended to connect to the OPEN_SERIAL output to ensure that OPEN_SERIAL is executed first. + + Parameters + ---------- + connection: Serial + The open connection with the device receiving the *IDN? SCPI command. + + Returns + ------- + TextBlob + The result of the *IDN? SCPI command. diff --git a/docs/nodes/IO/PROTOCOLS/SCPI/IDN/a1-[autogen]/python_code.txt b/docs/nodes/IO/PROTOCOLS/SCPI/IDN/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..57600a9658 --- /dev/null +++ b/docs/nodes/IO/PROTOCOLS/SCPI/IDN/a1-[autogen]/python_code.txt @@ -0,0 +1,19 @@ +import serial +from flojoy import flojoy, SerialConnection, TextBlob +from typing import cast, Optional + +@flojoy(deps={"pyserial": "3.5"}, inject_connection=True) +def IDN( + connection: SerialConnection, default: Optional[TextBlob] = None +) -> TextBlob: + + + # Start serial communication with the instrument + ser = cast(serial.Serial, connection.get_handle()) + + if ser is None: + raise ValueError("Serial communication is not open") + + ser.write('*IDN?\n'.encode()) + + return TextBlob(text_blob=ser.readline().decode()) \ No newline at end of file diff --git a/docs/nodes/IO/PROTOCOLS/SCPI/IDN/appendix/hardware.md b/docs/nodes/IO/PROTOCOLS/SCPI/IDN/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/IO/PROTOCOLS/SCPI/IDN/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/IO/PROTOCOLS/SCPI/IDN/appendix/media.md b/docs/nodes/IO/PROTOCOLS/SCPI/IDN/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/IO/PROTOCOLS/SCPI/IDN/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/IO/PROTOCOLS/SCPI/IDN/appendix/notes.md b/docs/nodes/IO/PROTOCOLS/SCPI/IDN/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/IO/PROTOCOLS/SCPI/IDN/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/IO/PROTOCOLS/SCPI/IDN/examples/EX1/app.json b/docs/nodes/IO/PROTOCOLS/SCPI/IDN/examples/EX1/app.json new file mode 100644 index 0000000000..0eb626436a --- /dev/null +++ b/docs/nodes/IO/PROTOCOLS/SCPI/IDN/examples/EX1/app.json @@ -0,0 +1,223 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "OPEN_SERIAL-17411722-e9a1-4e27-ba12-1e75d699e01d", + "type": "IO", + "data": { + "id": "OPEN_SERIAL-17411722-e9a1-4e27-ba12-1e75d699e01d", + "label": "OPEN SERIAL", + "func": "OPEN_SERIAL", + "type": "IO", + "ctrls": { + "device": { + "type": "SerialDevice", + "default": null, + "desc": "The connected serial device.", + "overload": null, + "functionName": "OPEN_SERIAL", + "param": "device", + "value": "/dev/cu.usbserial-PX75GRVT" + }, + "baudrate": { + "type": "int", + "default": 9600, + "desc": null, + "overload": null, + "functionName": "OPEN_SERIAL", + "param": "baudrate", + "value": 9600 + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": null + } + ], + "pip_dependencies": [ + { + "name": "pyserial", + "v": "3.5" + } + ], + "path": "IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/OPEN_SERIAL.py", + "selected": false + }, + "position": { + "x": 163.45278793835485, + "y": -471.31273604271325 + }, + "selected": false, + "positionAbsolute": { + "x": 163.45278793835485, + "y": -471.31273604271325 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "IDN-c161f297-0c02-4397-9227-f3142ad0bb9c", + "type": "IO", + "data": { + "id": "IDN-c161f297-0c02-4397-9227-f3142ad0bb9c", + "label": "IDN", + "func": "IDN", + "type": "IO", + "ctrls": { + "connection": { + "type": "SerialConnection", + "default": null, + "desc": "The open connection with the device receiving the *IDN? SCPI command.", + "overload": null, + "functionName": "IDN", + "param": "connection", + "value": "/dev/cu.usbserial-PX75GRVT" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "A dummy TextBlob DataContainer - likely connected to the output of the OPEN_SERIAL node. This dummy input is intended to connect to the OPEN_SERIAL output to ensure that OPEN_SERIAL is executed first." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The result of the *IDN? SCPI command." + } + ], + "pip_dependencies": [ + { + "name": "pyserial", + "v": "3.5" + } + ], + "path": "IO/PROTOCOLS/SCPI/IDN/IDN.py", + "selected": false + }, + "position": { + "x": 551.0172186571147, + "y": -576.1304008214148 + }, + "selected": false, + "positionAbsolute": { + "x": 551.0172186571147, + "y": -576.1304008214148 + }, + "dragging": true + }, + { + "width": 384, + "height": 288, + "id": "TEXT_VIEW-35658fcd-1613-4ac0-9e6c-321e0289cdb9", + "type": "VISUALIZERS", + "data": { + "id": "TEXT_VIEW-35658fcd-1613-4ac0-9e6c-321e0289cdb9", + "label": "TEXT VIEW", + "func": "TEXT_VIEW", + "type": "VISUALIZERS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "the DataContainer to be visualized in text format" + } + ], + "path": "VISUALIZERS/DATA_STRUCTURE/TEXT_VIEW/TEXT_VIEW.py", + "selected": false + }, + "position": { + "x": 481.65150454274004, + "y": -332.91450740918776 + }, + "selected": false, + "positionAbsolute": { + "x": 481.65150454274004, + "y": -332.91450740918776 + }, + "dragging": true + }, + { + "width": 384, + "height": 288, + "id": "TEXT_VIEW-eedc270e-60d1-43a4-8052-c06d065cda03", + "type": "VISUALIZERS", + "data": { + "id": "TEXT_VIEW-eedc270e-60d1-43a4-8052-c06d065cda03", + "label": "TEXT VIEW 1", + "func": "TEXT_VIEW", + "type": "VISUALIZERS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "the DataContainer to be visualized in text format" + } + ], + "path": "VISUALIZERS/DATA_STRUCTURE/TEXT_VIEW/TEXT_VIEW.py", + "selected": true + }, + "position": { + "x": 879.5415779914551, + "y": -625.7781906340394 + }, + "selected": true, + "positionAbsolute": { + "x": 879.5415779914551, + "y": -625.7781906340394 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "OPEN_SERIAL-17411722-e9a1-4e27-ba12-1e75d699e01d", + "sourceHandle": "default", + "target": "IDN-c161f297-0c02-4397-9227-f3142ad0bb9c", + "targetHandle": "default", + "id": "reactflow__edge-OPEN_SERIAL-17411722-e9a1-4e27-ba12-1e75d699e01ddefault-IDN-c161f297-0c02-4397-9227-f3142ad0bb9cdefault" + }, + { + "source": "IDN-c161f297-0c02-4397-9227-f3142ad0bb9c", + "sourceHandle": "default", + "target": "TEXT_VIEW-eedc270e-60d1-43a4-8052-c06d065cda03", + "targetHandle": "default", + "id": "reactflow__edge-IDN-c161f297-0c02-4397-9227-f3142ad0bb9cdefault-TEXT_VIEW-eedc270e-60d1-43a4-8052-c06d065cda03default" + }, + { + "source": "OPEN_SERIAL-17411722-e9a1-4e27-ba12-1e75d699e01d", + "sourceHandle": "default", + "target": "TEXT_VIEW-35658fcd-1613-4ac0-9e6c-321e0289cdb9", + "targetHandle": "default", + "id": "reactflow__edge-OPEN_SERIAL-17411722-e9a1-4e27-ba12-1e75d699e01ddefault-TEXT_VIEW-35658fcd-1613-4ac0-9e6c-321e0289cdb9default" + } + ], + "viewport": { + "x": 173.54985819173658, + "y": 726.3350510651735, + "zoom": 0.8280007481315924 + } + }, + "textNodes": [] +} \ No newline at end of file diff --git a/docs/nodes/IO/PROTOCOLS/SCPI/IDN/examples/EX1/example.md b/docs/nodes/IO/PROTOCOLS/SCPI/IDN/examples/EX1/example.md new file mode 100644 index 0000000000..42189f985d --- /dev/null +++ b/docs/nodes/IO/PROTOCOLS/SCPI/IDN/examples/EX1/example.md @@ -0,0 +1 @@ +This app opens a serial connection with the `OPEN_SERIAL` node, then queries the identity of the device with the `IDN` node. diff --git a/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/MEASURE_VOLTAGE.md b/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/MEASURE_VOLTAGE.md new file mode 100644 index 0000000000..5bc2aebb8f --- /dev/null +++ b/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/MEASURE_VOLTAGE.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/a1-[autogen]/docstring.txt b/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..ef9d26a33f --- /dev/null +++ b/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/a1-[autogen]/docstring.txt @@ -0,0 +1,16 @@ +The MEASURE_VOLTAGE node queries an instrument's measured output voltage, such as a DMM or power supply. + + Inputs + ------ + default: TextBlob + A dummy TextBlob DataContainer - likely connected to the output of the OPEN_SERIAL node. This dummy input is intended to connect to the OPEN_SERIAL output to ensure that OPEN_SERIAL is executed first. + + Parameters + ---------- + connection: Serial + The open serial connection with the instrument. + + Returns + ------- + Scalar|TextBlob + The measured voltage as a Scalar or an exception error as a TextBlob. diff --git a/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/a1-[autogen]/python_code.txt b/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..043e7e4903 --- /dev/null +++ b/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/a1-[autogen]/python_code.txt @@ -0,0 +1,30 @@ +import serial +import traceback +from flojoy import flojoy, SerialConnection, TextBlob, Scalar +from typing import cast, Optional + +@flojoy(deps={"pyserial": "3.5"}, inject_connection=True) +def MEASURE_VOLTAGE( + connection: SerialConnection, default: Optional[TextBlob] = None +) -> Scalar | TextBlob: + + + # Start serial communication with the instrument + ser = cast(serial.Serial, connection.get_handle()) + + if ser is None: + raise ValueError("Serial communication is not open") + + CMD = 'MEASURE:VOLTAGE:DC?\n\r' + + ser.write(CMD.encode()) + + resp = ser.readline().decode() + + try: + resp = float(resp.rstrip('\n')) + except: + print('Could not convert instrument response to a float', traceback.format_exc()) + return TextBlob(resp) + + return Scalar(resp) diff --git a/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/appendix/hardware.md b/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/appendix/media.md b/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/appendix/notes.md b/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/examples/EX1/app.json b/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/examples/EX1/app.json new file mode 100644 index 0000000000..4f0bd636d4 --- /dev/null +++ b/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/examples/EX1/app.json @@ -0,0 +1,955 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "OPEN_SERIAL-5372b346-c682-4531-b6d0-2dcbcdfe1044", + "type": "IO", + "data": { + "id": "OPEN_SERIAL-5372b346-c682-4531-b6d0-2dcbcdfe1044", + "label": "OPEN SERIAL", + "func": "OPEN_SERIAL", + "type": "IO", + "ctrls": { + "device": { + "type": "SerialDevice", + "default": null, + "desc": "The connected serial device.", + "overload": null, + "functionName": "OPEN_SERIAL", + "param": "device", + "value": "/dev/cu.usbserial-PX75GRVT" + }, + "baudrate": { + "type": "int", + "default": 9600, + "desc": null, + "overload": null, + "functionName": "OPEN_SERIAL", + "param": "baudrate", + "value": 9600 + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "desc": null + } + ], + "pip_dependencies": [ + { + "name": "pyserial", + "v": "3.5" + } + ], + "path": "IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/OPEN_SERIAL.py", + "selected": false + }, + "position": { + "x": -681.6956566487211, + "y": -247.69063910436114 + }, + "selected": false, + "positionAbsolute": { + "x": -681.6956566487211, + "y": -247.69063910436114 + }, + "dragging": true + }, + { + "width": 96, + "height": 96, + "id": "LOOP-65140bf7-e1d6-41c8-9ae7-03739dced34a", + "type": "LOGIC_GATES", + "data": { + "id": "LOOP-65140bf7-e1d6-41c8-9ae7-03739dced34a", + "label": "LOOP", + "func": "LOOP", + "type": "LOGIC_GATES", + "ctrls": { + "num_loops": { + "type": "int", + "default": -1, + "desc": "number of times to iterate through body nodes, default is \"-1\" meaning infinity.", + "overload": null, + "functionName": "LOOP", + "param": "num_loops", + "value": -1 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "body", + "id": "body", + "type": "Any", + "desc": null + }, + { + "name": "end", + "id": "end", + "type": "Any", + "desc": null + } + ], + "path": "LOGIC_GATES/LOOPS/LOOP/LOOP.py", + "selected": false + }, + "position": { + "x": 260.7414301413004, + "y": -208.46115506617377 + }, + "selected": false, + "positionAbsolute": { + "x": 260.7414301413004, + "y": -208.46115506617377 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASURE_VOLTAGE-12dc10b8-4a04-4ad0-8076-8dc1339352ba", + "type": "IO", + "data": { + "id": "MEASURE_VOLTAGE-12dc10b8-4a04-4ad0-8076-8dc1339352ba", + "label": "MEASURE VOLTAGE IN LOOP", + "func": "MEASURE_VOLTAGE", + "type": "IO", + "ctrls": { + "connection": { + "type": "SerialConnection", + "default": null, + "desc": "The open serial connection with the instrument.", + "overload": null, + "functionName": "MEASURE_VOLTAGE", + "param": "connection", + "value": "/dev/cu.usbserial-PX75GRVT" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "An optional SCPI commmand string to override the MEASURE:VOLTAGE:DC? command." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar|TextBlob", + "desc": null + } + ], + "pip_dependencies": [ + { + "name": "pyserial", + "v": "3.5" + } + ], + "path": "IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/MEASURE_VOLTAGE.py", + "selected": false + }, + "position": { + "x": 431.2056306816653, + "y": -523.5297551033295 + }, + "selected": false, + "positionAbsolute": { + "x": 431.2056306816653, + "y": -523.5297551033295 + }, + "dragging": true + }, + { + "width": 208, + "height": 96, + "id": "FEEDBACK-9504a42a-4bce-4f8f-8895-9ea20fe1f209", + "type": "GENERATORS", + "data": { + "id": "FEEDBACK-9504a42a-4bce-4f8f-8895-9ea20fe1f209", + "label": "FEEDBACK", + "func": "FEEDBACK", + "type": "GENERATORS", + "ctrls": { + "referred_node": { + "type": "NodeReference", + "default": null, + "desc": "The node ID to capture the result from.", + "overload": null, + "functionName": "FEEDBACK", + "param": "referred_node", + "value": "APPEND-eff20e49-760e-42ea-95a9-df18202000b6" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "desc": null + } + ], + "path": "GENERATORS/SIMULATIONS/FEEDBACK/FEEDBACK.py", + "selected": false + }, + "position": { + "x": 444.9834925868771, + "y": -236.71468358109905 + }, + "selected": false, + "positionAbsolute": { + "x": 444.9834925868771, + "y": -236.71468358109905 + }, + "dragging": true + }, + { + "width": 96, + "height": 96, + "id": "APPEND-eff20e49-760e-42ea-95a9-df18202000b6", + "type": "LOGIC_GATES", + "data": { + "id": "APPEND-eff20e49-760e-42ea-95a9-df18202000b6", + "label": "APPEND", + "func": "APPEND", + "type": "LOGIC_GATES", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "primary_dp", + "id": "primary_dp", + "type": "OrderedPair|Matrix|DataFrame|Scalar|Vector", + "multiple": false, + "desc": "Input that ends up \"on top\" of the resulting DataContainer." + }, + { + "name": "secondary_dp", + "id": "secondary_dp", + "type": "OrderedPair|Matrix|DataFrame|Scalar|Vector", + "multiple": false, + "desc": "Input that ends up \"on the bottom\" of the resulting DataContainer." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair|Matrix|DataFrame|Vector", + "desc": null + } + ], + "path": "LOGIC_GATES/LOOPS/APPEND/APPEND.py", + "selected": false + }, + "position": { + "x": 1007.3314929693323, + "y": -358.01388237593756 + }, + "selected": false, + "positionAbsolute": { + "x": 1007.3314929693323, + "y": -358.01388237593756 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MEASURE_VOLTAGE-d43b28cb-2578-40da-a246-cd05dbfdf65b", + "type": "IO", + "data": { + "id": "MEASURE_VOLTAGE-d43b28cb-2578-40da-a246-cd05dbfdf65b", + "label": "MEASURE INITIAL VOLTAGE", + "func": "MEASURE_VOLTAGE", + "type": "IO", + "ctrls": { + "connection": { + "type": "SerialConnection", + "default": null, + "desc": "The open serial connection with the instrument.", + "overload": null, + "functionName": "MEASURE_VOLTAGE", + "param": "connection", + "value": "/dev/cu.usbserial-PX75GRVT" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "An optional SCPI commmand string to override the MEASURE:VOLTAGE:DC? command." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar|TextBlob", + "desc": null + } + ], + "pip_dependencies": [ + { + "name": "pyserial", + "v": "3.5" + } + ], + "path": "IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/MEASURE_VOLTAGE.py", + "selected": false + }, + "position": { + "x": -335.1428554920709, + "y": -245.64154172271856 + }, + "selected": false, + "positionAbsolute": { + "x": -335.1428554920709, + "y": -245.64154172271856 + }, + "dragging": true + }, + { + "width": 96, + "height": 96, + "id": "TIMER-ce1b43f2-d9a4-4f83-a1dc-dbde450351fc", + "type": "LOGIC_GATES", + "data": { + "id": "TIMER-ce1b43f2-d9a4-4f83-a1dc-dbde450351fc", + "label": "TIMER", + "func": "TIMER", + "type": "LOGIC_GATES", + "ctrls": { + "sleep_time": { + "type": "float", + "default": 0, + "desc": "number of seconds to sleep", + "overload": null, + "functionName": "TIMER", + "param": "sleep_time", + "value": 1 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "desc": null + } + ], + "path": "LOGIC_GATES/TIMERS/TIMER/TIMER.py", + "selected": false + }, + "position": { + "x": 1695.1744444352219, + "y": -371.98469156311245 + }, + "selected": false, + "positionAbsolute": { + "x": 1695.1744444352219, + "y": -371.98469156311245 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "BIG_NUMBER-a74f5dd6-46ed-4a3b-ad17-148bb06ca462", + "type": "VISUALIZERS", + "data": { + "id": "BIG_NUMBER-a74f5dd6-46ed-4a3b-ad17-148bb06ca462", + "label": "BIG NUMBER", + "func": "BIG_NUMBER", + "type": "VISUALIZERS", + "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": true + } + }, + "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": "VISUALIZERS/PLOTLY/BIG_NUMBER/BIG_NUMBER.py", + "selected": false + }, + "position": { + "x": 728.1982187293316, + "y": -921.1696110250343 + }, + "selected": false, + "positionAbsolute": { + "x": 728.1982187293316, + "y": -921.1696110250343 + }, + "dragging": true + }, + { + "width": 208, + "height": 96, + "id": "UNIX_TIMESTAMP-39d4bf22-daf4-4608-a42b-96c1c47a6fc5", + "type": "GENERATORS", + "data": { + "id": "UNIX_TIMESTAMP-39d4bf22-daf4-4608-a42b-96c1c47a6fc5", + "label": "UNIX TIMESTAMP", + "func": "UNIX_TIMESTAMP", + "type": "GENERATORS", + "ctrls": { + "dc_type": { + "type": "select", + "options": [ + "Scalar", + "Vector" + ], + "default": "Scalar", + "desc": "The type of DataContainer to return.", + "overload": null, + "functionName": "UNIX_TIMESTAMP", + "param": "dc_type", + "value": "Scalar" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "multiple": false, + "desc": "A value to timestamp" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar|Vector|OrderedPair", + "desc": null + } + ], + "path": "GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/UNIX_TIMESTAMP.py", + "selected": false + }, + "position": { + "x": -47.01334381160734, + "y": -201.2378242028975 + }, + "selected": false, + "positionAbsolute": { + "x": -47.01334381160734, + "y": -201.2378242028975 + }, + "dragging": true + }, + { + "width": 208, + "height": 96, + "id": "UNIX_TIMESTAMP-2d1041ac-5659-43f9-82ba-cdfc94aad09c", + "type": "GENERATORS", + "data": { + "id": "UNIX_TIMESTAMP-2d1041ac-5659-43f9-82ba-cdfc94aad09c", + "label": "UNIX TIMESTAMP 1", + "func": "UNIX_TIMESTAMP", + "type": "GENERATORS", + "ctrls": { + "dc_type": { + "type": "select", + "options": [ + "Scalar", + "Vector" + ], + "default": "Scalar", + "desc": "The type of DataContainer to return.", + "overload": null, + "functionName": "UNIX_TIMESTAMP", + "param": "dc_type", + "value": "Scalar" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar", + "multiple": false, + "desc": "A value to timestamp" + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "Scalar|Vector|OrderedPair", + "desc": null + } + ], + "path": "GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/UNIX_TIMESTAMP.py", + "selected": false + }, + "position": { + "x": 720.7321917918136, + "y": -474.75654046293664 + }, + "selected": false, + "positionAbsolute": { + "x": 720.7321917918136, + "y": -474.75654046293664 + }, + "dragging": true + }, + { + "width": 384, + "height": 288, + "id": "TEXT_VIEW-c4eb1db9-4fe2-4e9b-81ea-90d3a7a1e10f", + "type": "VISUALIZERS", + "data": { + "id": "TEXT_VIEW-c4eb1db9-4fe2-4e9b-81ea-90d3a7a1e10f", + "label": "TEXT VIEW", + "func": "TEXT_VIEW", + "type": "VISUALIZERS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "the DataContainer to be visualized in text format" + } + ], + "path": "VISUALIZERS/DATA_STRUCTURE/TEXT_VIEW/TEXT_VIEW.py", + "selected": false + }, + "position": { + "x": -409.4469388443023, + "y": -10.62728849821724 + }, + "selected": false, + "positionAbsolute": { + "x": -409.4469388443023, + "y": -10.62728849821724 + }, + "dragging": true + }, + { + "width": 273, + "height": 160, + "id": "PRINT_DATACONTAINER-e16d40b1-f87a-4e42-84d2-cbd3ff64d5a8", + "type": "EXTRACTORS", + "data": { + "id": "PRINT_DATACONTAINER-e16d40b1-f87a-4e42-84d2-cbd3ff64d5a8", + "label": "PRINT DATACONTAINER", + "func": "PRINT_DATACONTAINER", + "type": "EXTRACTORS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "TextBlob: Input datacontainer information" + } + ], + "path": "EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/PRINT_DATACONTAINER.py", + "selected": false + }, + "position": { + "x": 712.8137216815738, + "y": -140.25395447728823 + }, + "selected": false, + "positionAbsolute": { + "x": 712.8137216815738, + "y": -140.25395447728823 + }, + "dragging": true + }, + { + "width": 384, + "height": 288, + "id": "TEXT_VIEW-68bca17e-1113-47b2-9ca0-fdeeb12b369e", + "type": "VISUALIZERS", + "data": { + "id": "TEXT_VIEW-68bca17e-1113-47b2-9ca0-fdeeb12b369e", + "label": "TEXT VIEW 1", + "func": "TEXT_VIEW", + "type": "VISUALIZERS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "the DataContainer to be visualized in text format" + } + ], + "path": "VISUALIZERS/DATA_STRUCTURE/TEXT_VIEW/TEXT_VIEW.py", + "selected": false + }, + "position": { + "x": 1085.6504829807627, + "y": -118.58394481930316 + }, + "selected": false, + "positionAbsolute": { + "x": 1085.6504829807627, + "y": -118.58394481930316 + }, + "dragging": true + }, + { + "width": 384, + "height": 288, + "id": "TEXT_VIEW-e98aef4b-f278-43b4-aa24-7f5067273060", + "type": "VISUALIZERS", + "data": { + "id": "TEXT_VIEW-e98aef4b-f278-43b4-aa24-7f5067273060", + "label": "TEXT VIEW 2", + "func": "TEXT_VIEW", + "type": "VISUALIZERS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "the DataContainer to be visualized in text format" + } + ], + "path": "VISUALIZERS/DATA_STRUCTURE/TEXT_VIEW/TEXT_VIEW.py", + "selected": false + }, + "position": { + "x": 1413.0803813233645, + "y": -768.80289018579 + }, + "selected": false, + "positionAbsolute": { + "x": 1413.0803813233645, + "y": -768.80289018579 + }, + "dragging": true + }, + { + "width": 273, + "height": 160, + "id": "PRINT_DATACONTAINER-232fba0e-ef01-4535-99a5-a5c62a40d5cd", + "type": "EXTRACTORS", + "data": { + "id": "PRINT_DATACONTAINER-232fba0e-ef01-4535-99a5-a5c62a40d5cd", + "label": "PRINT DATACONTAINER 1", + "func": "PRINT_DATACONTAINER", + "type": "EXTRACTORS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "Any", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "TextBlob: Input datacontainer information" + } + ], + "path": "EXTRACTORS/DEBUGGING/PRINT_DATACONTAINER/PRINT_DATACONTAINER.py", + "selected": false + }, + "position": { + "x": 1044.759869422389, + "y": -700.6321389050217 + }, + "selected": false, + "positionAbsolute": { + "x": 1044.759869422389, + "y": -700.6321389050217 + }, + "dragging": true + }, + { + "width": 380, + "height": 293, + "id": "LINE-219ec912-3d69-41ea-bf6e-6080d8b1bc79", + "type": "VISUALIZERS", + "data": { + "id": "LINE-219ec912-3d69-41ea-bf6e-6080d8b1bc79", + "label": "LINE", + "func": "LINE", + "type": "VISUALIZERS", + "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": "VISUALIZERS/PLOTLY/LINE/LINE.py", + "selected": false + }, + "position": { + "x": 1208.8690545120376, + "y": -456.5439220768478 + }, + "selected": false, + "positionAbsolute": { + "x": 1208.8690545120376, + "y": -456.5439220768478 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "LOOP-65140bf7-e1d6-41c8-9ae7-03739dced34a", + "sourceHandle": "body", + "target": "MEASURE_VOLTAGE-12dc10b8-4a04-4ad0-8076-8dc1339352ba", + "targetHandle": "default", + "id": "reactflow__edge-LOOP-65140bf7-e1d6-41c8-9ae7-03739dced34abody-MEASURE_VOLTAGE-12dc10b8-4a04-4ad0-8076-8dc1339352badefault" + }, + { + "source": "LOOP-65140bf7-e1d6-41c8-9ae7-03739dced34a", + "sourceHandle": "body", + "target": "FEEDBACK-9504a42a-4bce-4f8f-8895-9ea20fe1f209", + "targetHandle": "default", + "id": "reactflow__edge-LOOP-65140bf7-e1d6-41c8-9ae7-03739dced34abody-FEEDBACK-9504a42a-4bce-4f8f-8895-9ea20fe1f209default" + }, + { + "source": "FEEDBACK-9504a42a-4bce-4f8f-8895-9ea20fe1f209", + "sourceHandle": "default", + "target": "APPEND-eff20e49-760e-42ea-95a9-df18202000b6", + "targetHandle": "primary_dp", + "id": "reactflow__edge-FEEDBACK-9504a42a-4bce-4f8f-8895-9ea20fe1f209default-APPEND-eff20e49-760e-42ea-95a9-df18202000b6primary_dp" + }, + { + "source": "OPEN_SERIAL-5372b346-c682-4531-b6d0-2dcbcdfe1044", + "sourceHandle": "default", + "target": "MEASURE_VOLTAGE-d43b28cb-2578-40da-a246-cd05dbfdf65b", + "targetHandle": "default", + "id": "reactflow__edge-OPEN_SERIAL-5372b346-c682-4531-b6d0-2dcbcdfe1044default-MEASURE_VOLTAGE-d43b28cb-2578-40da-a246-cd05dbfdf65bdefault" + }, + { + "source": "OPEN_SERIAL-5372b346-c682-4531-b6d0-2dcbcdfe1044", + "sourceHandle": "default", + "target": "TEXT_VIEW-c4eb1db9-4fe2-4e9b-81ea-90d3a7a1e10f", + "targetHandle": "default", + "id": "reactflow__edge-OPEN_SERIAL-5372b346-c682-4531-b6d0-2dcbcdfe1044default-TEXT_VIEW-c4eb1db9-4fe2-4e9b-81ea-90d3a7a1e10fdefault" + }, + { + "source": "MEASURE_VOLTAGE-d43b28cb-2578-40da-a246-cd05dbfdf65b", + "sourceHandle": "default", + "target": "UNIX_TIMESTAMP-39d4bf22-daf4-4608-a42b-96c1c47a6fc5", + "targetHandle": "default", + "id": "reactflow__edge-MEASURE_VOLTAGE-d43b28cb-2578-40da-a246-cd05dbfdf65bdefault-UNIX_TIMESTAMP-39d4bf22-daf4-4608-a42b-96c1c47a6fc5default" + }, + { + "source": "UNIX_TIMESTAMP-39d4bf22-daf4-4608-a42b-96c1c47a6fc5", + "sourceHandle": "default", + "target": "LOOP-65140bf7-e1d6-41c8-9ae7-03739dced34a", + "targetHandle": "default", + "id": "reactflow__edge-UNIX_TIMESTAMP-39d4bf22-daf4-4608-a42b-96c1c47a6fc5default-LOOP-65140bf7-e1d6-41c8-9ae7-03739dced34adefault" + }, + { + "source": "MEASURE_VOLTAGE-12dc10b8-4a04-4ad0-8076-8dc1339352ba", + "sourceHandle": "default", + "target": "UNIX_TIMESTAMP-2d1041ac-5659-43f9-82ba-cdfc94aad09c", + "targetHandle": "default", + "id": "reactflow__edge-MEASURE_VOLTAGE-12dc10b8-4a04-4ad0-8076-8dc1339352badefault-UNIX_TIMESTAMP-2d1041ac-5659-43f9-82ba-cdfc94aad09cdefault" + }, + { + "source": "UNIX_TIMESTAMP-2d1041ac-5659-43f9-82ba-cdfc94aad09c", + "sourceHandle": "default", + "target": "APPEND-eff20e49-760e-42ea-95a9-df18202000b6", + "targetHandle": "secondary_dp", + "id": "reactflow__edge-UNIX_TIMESTAMP-2d1041ac-5659-43f9-82ba-cdfc94aad09cdefault-APPEND-eff20e49-760e-42ea-95a9-df18202000b6secondary_dp" + }, + { + "source": "MEASURE_VOLTAGE-12dc10b8-4a04-4ad0-8076-8dc1339352ba", + "sourceHandle": "default", + "target": "BIG_NUMBER-a74f5dd6-46ed-4a3b-ad17-148bb06ca462", + "targetHandle": "default", + "id": "reactflow__edge-MEASURE_VOLTAGE-12dc10b8-4a04-4ad0-8076-8dc1339352badefault-BIG_NUMBER-a74f5dd6-46ed-4a3b-ad17-148bb06ca462default" + }, + { + "source": "FEEDBACK-9504a42a-4bce-4f8f-8895-9ea20fe1f209", + "sourceHandle": "default", + "target": "PRINT_DATACONTAINER-e16d40b1-f87a-4e42-84d2-cbd3ff64d5a8", + "targetHandle": "default", + "id": "reactflow__edge-FEEDBACK-9504a42a-4bce-4f8f-8895-9ea20fe1f209default-PRINT_DATACONTAINER-e16d40b1-f87a-4e42-84d2-cbd3ff64d5a8default" + }, + { + "source": "PRINT_DATACONTAINER-e16d40b1-f87a-4e42-84d2-cbd3ff64d5a8", + "sourceHandle": "default", + "target": "TEXT_VIEW-68bca17e-1113-47b2-9ca0-fdeeb12b369e", + "targetHandle": "default", + "id": "reactflow__edge-PRINT_DATACONTAINER-e16d40b1-f87a-4e42-84d2-cbd3ff64d5a8default-TEXT_VIEW-68bca17e-1113-47b2-9ca0-fdeeb12b369edefault" + }, + { + "source": "UNIX_TIMESTAMP-2d1041ac-5659-43f9-82ba-cdfc94aad09c", + "sourceHandle": "default", + "target": "PRINT_DATACONTAINER-232fba0e-ef01-4535-99a5-a5c62a40d5cd", + "targetHandle": "default", + "id": "reactflow__edge-UNIX_TIMESTAMP-2d1041ac-5659-43f9-82ba-cdfc94aad09cdefault-PRINT_DATACONTAINER-232fba0e-ef01-4535-99a5-a5c62a40d5cddefault" + }, + { + "source": "PRINT_DATACONTAINER-232fba0e-ef01-4535-99a5-a5c62a40d5cd", + "sourceHandle": "default", + "target": "TEXT_VIEW-e98aef4b-f278-43b4-aa24-7f5067273060", + "targetHandle": "default", + "id": "reactflow__edge-PRINT_DATACONTAINER-232fba0e-ef01-4535-99a5-a5c62a40d5cddefault-TEXT_VIEW-e98aef4b-f278-43b4-aa24-7f5067273060default" + }, + { + "source": "APPEND-eff20e49-760e-42ea-95a9-df18202000b6", + "sourceHandle": "default", + "target": "LINE-219ec912-3d69-41ea-bf6e-6080d8b1bc79", + "targetHandle": "default", + "id": "reactflow__edge-APPEND-eff20e49-760e-42ea-95a9-df18202000b6default-LINE-219ec912-3d69-41ea-bf6e-6080d8b1bc79default" + }, + { + "source": "LINE-219ec912-3d69-41ea-bf6e-6080d8b1bc79", + "sourceHandle": "default", + "target": "TIMER-ce1b43f2-d9a4-4f83-a1dc-dbde450351fc", + "targetHandle": "default", + "id": "reactflow__edge-LINE-219ec912-3d69-41ea-bf6e-6080d8b1bc79default-TIMER-ce1b43f2-d9a4-4f83-a1dc-dbde450351fcdefault" + } + ], + "viewport": { + "x": 189.53030305337484, + "y": 644.7027881869383, + "zoom": 0.5 + } + }, + "textNodes": [] +} \ No newline at end of file diff --git a/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/examples/EX1/example.md b/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/examples/EX1/example.md new file mode 100644 index 0000000000..a1c2cffed2 --- /dev/null +++ b/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/examples/EX1/example.md @@ -0,0 +1 @@ +This app queries an instrument for a voltage measurement once per second, then appends the result to a line graph. diff --git a/docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/OPEN_SERIAL.md b/docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/OPEN_SERIAL.md new file mode 100644 index 0000000000..506819ec9b --- /dev/null +++ b/docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/OPEN_SERIAL.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/a1-[autogen]/docstring.txt b/docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..c3a9b40fe1 --- /dev/null +++ b/docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/a1-[autogen]/docstring.txt @@ -0,0 +1,10 @@ +The OPEN_SERIAL node opens a serial connection through your computer's USB or RS-232 port. + + Parameters + ---------- + device: Serial + The connected serial device. + + Returns + ------- + TextBlob diff --git a/docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/a1-[autogen]/python_code.txt b/docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..ddf9c85108 --- /dev/null +++ b/docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/a1-[autogen]/python_code.txt @@ -0,0 +1,23 @@ +import json +import serial +from flojoy import SerialDevice, flojoy, TextBlob +from flojoy.connection_manager import DeviceConnectionManager + +@flojoy(deps={"pyserial": "3.5"}) +def OPEN_SERIAL( + device: SerialDevice, baudrate: int = 9600 +) -> TextBlob: + + + ser = serial.Serial( + port=device.get_port(), + baudrate=baudrate, + bytesize=serial.EIGHTBITS, + parity=serial.PARITY_NONE, + stopbits=serial.STOPBITS_ONE, + timeout=1, + ) + + DeviceConnectionManager.register_connection(device, ser) + + return TextBlob(text_blob=json.dumps(ser.get_settings())) \ No newline at end of file diff --git a/docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/appendix/hardware.md b/docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/appendix/media.md b/docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/appendix/notes.md b/docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/examples/EX1/app.json b/docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/examples/EX1/app.json new file mode 100644 index 0000000000..0eb626436a --- /dev/null +++ b/docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/examples/EX1/app.json @@ -0,0 +1,223 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "OPEN_SERIAL-17411722-e9a1-4e27-ba12-1e75d699e01d", + "type": "IO", + "data": { + "id": "OPEN_SERIAL-17411722-e9a1-4e27-ba12-1e75d699e01d", + "label": "OPEN SERIAL", + "func": "OPEN_SERIAL", + "type": "IO", + "ctrls": { + "device": { + "type": "SerialDevice", + "default": null, + "desc": "The connected serial device.", + "overload": null, + "functionName": "OPEN_SERIAL", + "param": "device", + "value": "/dev/cu.usbserial-PX75GRVT" + }, + "baudrate": { + "type": "int", + "default": 9600, + "desc": null, + "overload": null, + "functionName": "OPEN_SERIAL", + "param": "baudrate", + "value": 9600 + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": null + } + ], + "pip_dependencies": [ + { + "name": "pyserial", + "v": "3.5" + } + ], + "path": "IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/OPEN_SERIAL.py", + "selected": false + }, + "position": { + "x": 163.45278793835485, + "y": -471.31273604271325 + }, + "selected": false, + "positionAbsolute": { + "x": 163.45278793835485, + "y": -471.31273604271325 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "IDN-c161f297-0c02-4397-9227-f3142ad0bb9c", + "type": "IO", + "data": { + "id": "IDN-c161f297-0c02-4397-9227-f3142ad0bb9c", + "label": "IDN", + "func": "IDN", + "type": "IO", + "ctrls": { + "connection": { + "type": "SerialConnection", + "default": null, + "desc": "The open connection with the device receiving the *IDN? SCPI command.", + "overload": null, + "functionName": "IDN", + "param": "connection", + "value": "/dev/cu.usbserial-PX75GRVT" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "A dummy TextBlob DataContainer - likely connected to the output of the OPEN_SERIAL node. This dummy input is intended to connect to the OPEN_SERIAL output to ensure that OPEN_SERIAL is executed first." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The result of the *IDN? SCPI command." + } + ], + "pip_dependencies": [ + { + "name": "pyserial", + "v": "3.5" + } + ], + "path": "IO/PROTOCOLS/SCPI/IDN/IDN.py", + "selected": false + }, + "position": { + "x": 551.0172186571147, + "y": -576.1304008214148 + }, + "selected": false, + "positionAbsolute": { + "x": 551.0172186571147, + "y": -576.1304008214148 + }, + "dragging": true + }, + { + "width": 384, + "height": 288, + "id": "TEXT_VIEW-35658fcd-1613-4ac0-9e6c-321e0289cdb9", + "type": "VISUALIZERS", + "data": { + "id": "TEXT_VIEW-35658fcd-1613-4ac0-9e6c-321e0289cdb9", + "label": "TEXT VIEW", + "func": "TEXT_VIEW", + "type": "VISUALIZERS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "the DataContainer to be visualized in text format" + } + ], + "path": "VISUALIZERS/DATA_STRUCTURE/TEXT_VIEW/TEXT_VIEW.py", + "selected": false + }, + "position": { + "x": 481.65150454274004, + "y": -332.91450740918776 + }, + "selected": false, + "positionAbsolute": { + "x": 481.65150454274004, + "y": -332.91450740918776 + }, + "dragging": true + }, + { + "width": 384, + "height": 288, + "id": "TEXT_VIEW-eedc270e-60d1-43a4-8052-c06d065cda03", + "type": "VISUALIZERS", + "data": { + "id": "TEXT_VIEW-eedc270e-60d1-43a4-8052-c06d065cda03", + "label": "TEXT VIEW 1", + "func": "TEXT_VIEW", + "type": "VISUALIZERS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "multiple": false, + "desc": "the DataContainer to be visualized in text format" + } + ], + "path": "VISUALIZERS/DATA_STRUCTURE/TEXT_VIEW/TEXT_VIEW.py", + "selected": true + }, + "position": { + "x": 879.5415779914551, + "y": -625.7781906340394 + }, + "selected": true, + "positionAbsolute": { + "x": 879.5415779914551, + "y": -625.7781906340394 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "OPEN_SERIAL-17411722-e9a1-4e27-ba12-1e75d699e01d", + "sourceHandle": "default", + "target": "IDN-c161f297-0c02-4397-9227-f3142ad0bb9c", + "targetHandle": "default", + "id": "reactflow__edge-OPEN_SERIAL-17411722-e9a1-4e27-ba12-1e75d699e01ddefault-IDN-c161f297-0c02-4397-9227-f3142ad0bb9cdefault" + }, + { + "source": "IDN-c161f297-0c02-4397-9227-f3142ad0bb9c", + "sourceHandle": "default", + "target": "TEXT_VIEW-eedc270e-60d1-43a4-8052-c06d065cda03", + "targetHandle": "default", + "id": "reactflow__edge-IDN-c161f297-0c02-4397-9227-f3142ad0bb9cdefault-TEXT_VIEW-eedc270e-60d1-43a4-8052-c06d065cda03default" + }, + { + "source": "OPEN_SERIAL-17411722-e9a1-4e27-ba12-1e75d699e01d", + "sourceHandle": "default", + "target": "TEXT_VIEW-35658fcd-1613-4ac0-9e6c-321e0289cdb9", + "targetHandle": "default", + "id": "reactflow__edge-OPEN_SERIAL-17411722-e9a1-4e27-ba12-1e75d699e01ddefault-TEXT_VIEW-35658fcd-1613-4ac0-9e6c-321e0289cdb9default" + } + ], + "viewport": { + "x": 173.54985819173658, + "y": 726.3350510651735, + "zoom": 0.8280007481315924 + } + }, + "textNodes": [] +} \ No newline at end of file diff --git a/docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/examples/EX1/example.md b/docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/examples/EX1/example.md new file mode 100644 index 0000000000..42189f985d --- /dev/null +++ b/docs/nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/examples/EX1/example.md @@ -0,0 +1 @@ +This app opens a serial connection with the `OPEN_SERIAL` node, then queries the identity of the device with the `IDN` node. diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/ACTIVATE.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/ACTIVATE.md new file mode 100644 index 0000000000..243769fd76 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/ACTIVATE.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/a1-[autogen]/docstring.txt b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..7bb3db1abd --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/a1-[autogen]/docstring.txt @@ -0,0 +1,18 @@ + +The ACTIVATE node activates the robot arm. + +Inputs +------ +ip_address: TextBlob + The IP address of the robot arm. + +Parameters +------ +simulator + Whether to activate the simulator or not. Defaults to False. + +Returns +------- +ip + The IP address of the robot arm. + diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/a1-[autogen]/python_code.txt b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..d733a5b264 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/a1-[autogen]/python_code.txt @@ -0,0 +1,14 @@ +from flojoy import flojoy, TextBlob +from PYTHON.utils.mecademic_state.mecademic_state import query_for_handle + + +@flojoy(deps={"mecademicpy": "1.4.0"}) +def ACTIVATE(ip_address: TextBlob, simulator: bool = False) -> TextBlob: + + handle = query_for_handle(ip_address) + if simulator: + handle.ActivateSim() + else: + handle.ActivateRobot() + handle.WaitActivated() + return ip_address diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/appendix/hardware.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/appendix/media.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/appendix/notes.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/examples/EX1/app.json b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/examples/EX1/app.json new file mode 100644 index 0000000000..b9409d198e --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/examples/EX1/app.json @@ -0,0 +1,177 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "type": "INSTRUMENTS", + "data": { + "id": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "label": "CONNECT", + "func": "CONNECT", + "type": "INSTRUMENTS", + "ctrls": { + "ip_address": { + "type": "str", + "default": null, + "desc": null, + "overload": null, + "functionName": "CONNECT", + "param": "ip_address", + "value": "" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/CONNECT/CONNECT.py", + "selected": false + }, + "position": { + "x": 149.79183394290823, + "y": -219.99455021662578 + }, + "selected": false, + "positionAbsolute": { + "x": 149.79183394290823, + "y": -219.99455021662578 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "type": "INSTRUMENTS", + "data": { + "id": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "label": "ACTIVATE", + "func": "ACTIVATE", + "type": "INSTRUMENTS", + "ctrls": { + "simulator": { + "type": "bool", + "default": false, + "desc": "Whether to activate the simulator or not. Defaults to False.", + "overload": null, + "functionName": "ACTIVATE", + "param": "simulator", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/ACTIVATE/ACTIVATE.py", + "selected": false + }, + "position": { + "x": 527.703545775578, + "y": -214.68035169098664 + }, + "selected": false, + "positionAbsolute": { + "x": 527.703545775578, + "y": -214.68035169098664 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0d", + "type": "INSTRUMENTS", + "data": { + "id": "DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0d", + "label": "DISCONNECT", + "func": "DISCONNECT", + "type": "INSTRUMENTS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/DISCONNECT/DISCONNECT.py", + "selected": false + }, + "position": { + "x": 877.4514022741033, + "y": -212.57592377531705 + }, + "selected": false, + "positionAbsolute": { + "x": 877.4514022741033, + "y": -212.57592377531705 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "sourceHandle": "default", + "target": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "targetHandle": "ip_address", + "id": "reactflow__edge-CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7default-ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395bip_address" + }, + { + "source": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "sourceHandle": "default", + "target": "DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0d", + "targetHandle": "ip_address", + "id": "reactflow__edge-ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395bdefault-DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0dip_address" + } + ], + "viewport": { + "x": 669.537650867023, + "y": 398.1114317341454, + "zoom": 0.7467072297113905 + } + } +} \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/examples/EX1/example.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/examples/EX1/example.md new file mode 100644 index 0000000000..a6379eacbe --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/ACTIVATE/examples/EX1/example.md @@ -0,0 +1,7 @@ +In this example, the `ACTIVATE` node is responsible for activating the MECADEMIC MECA500 robot arm. + +The node takes in the IP address of the robot arm and an optional parameter to specify if the simulator should be activated instead of the actual robot arm. + +After activation, the node returns the same IP address as an acknowledgment that the robot arm is now active. + +The `ACTIVATE` node is often the first node in a flow, ensuring that the robot arm is ready for subsequent operations. diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/CONNECT.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/CONNECT.md new file mode 100644 index 0000000000..6c6c76f8bd --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/CONNECT.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/a1-[autogen]/docstring.txt b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..a008080159 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/a1-[autogen]/docstring.txt @@ -0,0 +1,7 @@ + +The CONNECT node establishes a connection to the Mecademic robot arm via its API. + +Returns +------- +String + The IP address of the robot arm. diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/a1-[autogen]/python_code.txt b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..ef2828c7e2 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/a1-[autogen]/python_code.txt @@ -0,0 +1,10 @@ +from flojoy import flojoy, TextBlob +from PYTHON.utils.mecademic_state.mecademic_state import add_handle, init_handle_map + + +@flojoy(deps={"mecademicpy": "1.4.0"}) +def CONNECT(ip_address: str) -> TextBlob: + + init_handle_map(allow_reinit=True) + add_handle(ip_address) + return TextBlob(text_blob=ip_address) diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/appendix/hardware.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/appendix/media.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/appendix/notes.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/examples/EX1/app.json b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/examples/EX1/app.json new file mode 100644 index 0000000000..4218544e3a --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/examples/EX1/app.json @@ -0,0 +1,62 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "type": "INSTRUMENTS", + "data": { + "id": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "label": "CONNECT", + "func": "CONNECT", + "type": "INSTRUMENTS", + "ctrls": { + "ip_address": { + "type": "str", + "default": null, + "desc": null, + "overload": null, + "functionName": "CONNECT", + "param": "ip_address", + "value": "" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/CONNECT/CONNECT.py", + "selected": true + }, + "position": { + "x": 147.11340802118116, + "y": -226.6906150209435 + }, + "selected": true, + "positionAbsolute": { + "x": 147.11340802118116, + "y": -226.6906150209435 + }, + "dragging": true + } + ], + "edges": [], + "viewport": { + "x": 669.537650867023, + "y": 398.1114317341454, + "zoom": 0.7467072297113905 + } + } +} \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/examples/EX1/example.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/examples/EX1/example.md new file mode 100644 index 0000000000..5ecbc8a8d5 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/CONNECT/examples/EX1/example.md @@ -0,0 +1,7 @@ +In this example, the `CONNECT` node establishes a connection with the MECADEMIC MECA500 robot arm. + +The node takes in the IP address of the robot arm as an input. It initializes the handle map and adds a handle for the given IP address. + +Upon successful connection, the node returns the IP address, confirming that the robot arm is now connected and ready for further operations. + +The `CONNECT` node is used at the beginning of a workflow to ensure that a connection is established before any other operations are carried out. diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/DELAY.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/DELAY.md new file mode 100644 index 0000000000..1b016211bd --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/DELAY.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/a1-[autogen]/docstring.txt b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..2d48138225 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/a1-[autogen]/docstring.txt @@ -0,0 +1,16 @@ + +The DELAY node delays the action between two nodes. + +Inputs +------ +ip_address: TextBlob + The IP address of the robot arm. + +time: float + The time of delay in seconds. + +Returns +------- +ip_address + The IP address of the robot arm. + diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/a1-[autogen]/python_code.txt b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..28dce71882 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/a1-[autogen]/python_code.txt @@ -0,0 +1,14 @@ +from flojoy import flojoy, TextBlob +from PYTHON.utils.mecademic_state.mecademic_state import query_for_handle + + +@flojoy(deps={"mecademicpy": "1.4.0"}) +def DELAY( + ip_address: TextBlob, + time: float, +) -> TextBlob: + + robot = query_for_handle(ip_address) + robot.Delay(time) + robot.WaitIdle() + return ip_address diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/appendix/hardware.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/appendix/media.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/appendix/notes.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/examples/EX1/app.json b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/examples/EX1/app.json new file mode 100644 index 0000000000..9d24445be5 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/examples/EX1/app.json @@ -0,0 +1,243 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "type": "INSTRUMENTS", + "data": { + "id": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "label": "CONNECT", + "func": "CONNECT", + "type": "INSTRUMENTS", + "ctrls": { + "ip_address": { + "type": "str", + "default": null, + "desc": null, + "overload": null, + "functionName": "CONNECT", + "param": "ip_address", + "value": "" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/CONNECT/CONNECT.py", + "selected": false + }, + "position": { + "x": 149.79183394290823, + "y": -219.99455021662578 + }, + "selected": false, + "positionAbsolute": { + "x": 149.79183394290823, + "y": -219.99455021662578 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "type": "INSTRUMENTS", + "data": { + "id": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "label": "ACTIVATE", + "func": "ACTIVATE", + "type": "INSTRUMENTS", + "ctrls": { + "simulator": { + "type": "bool", + "default": false, + "desc": "Whether to activate the simulator or not. Defaults to False.", + "overload": null, + "functionName": "ACTIVATE", + "param": "simulator", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/ACTIVATE/ACTIVATE.py", + "selected": false + }, + "position": { + "x": 527.703545775578, + "y": -214.68035169098664 + }, + "selected": false, + "positionAbsolute": { + "x": 527.703545775578, + "y": -214.68035169098664 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0d", + "type": "INSTRUMENTS", + "data": { + "id": "DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0d", + "label": "DISCONNECT", + "func": "DISCONNECT", + "type": "INSTRUMENTS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/DISCONNECT/DISCONNECT.py", + "selected": false + }, + "position": { + "x": 1101.099966738314, + "y": -221.9504145013618 + }, + "selected": false, + "positionAbsolute": { + "x": 1101.099966738314, + "y": -221.9504145013618 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "DELAY-224f6b43-7f67-4b99-8e54-b2e59d343dd4", + "type": "INSTRUMENTS", + "data": { + "id": "DELAY-224f6b43-7f67-4b99-8e54-b2e59d343dd4", + "label": "DELAY", + "func": "DELAY", + "type": "INSTRUMENTS", + "ctrls": { + "time": { + "type": "float", + "default": null, + "desc": "The time of delay in seconds.", + "overload": null, + "functionName": "DELAY", + "param": "time", + "value": "" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/DELAY/DELAY.py", + "selected": false + }, + "position": { + "x": 796.8515702097197, + "y": -212.51275859234926 + }, + "selected": false, + "positionAbsolute": { + "x": 796.8515702097197, + "y": -212.51275859234926 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "sourceHandle": "default", + "target": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "targetHandle": "ip_address", + "id": "reactflow__edge-CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7default-ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395bip_address" + }, + { + "source": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "sourceHandle": "default", + "target": "DELAY-224f6b43-7f67-4b99-8e54-b2e59d343dd4", + "targetHandle": "ip_address", + "id": "reactflow__edge-ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395bdefault-DELAY-224f6b43-7f67-4b99-8e54-b2e59d343dd4ip_address" + }, + { + "source": "DELAY-224f6b43-7f67-4b99-8e54-b2e59d343dd4", + "sourceHandle": "default", + "target": "DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0d", + "targetHandle": "ip_address", + "id": "reactflow__edge-DELAY-224f6b43-7f67-4b99-8e54-b2e59d343dd4default-DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0dip_address" + } + ], + "viewport": { + "x": 669.537650867023, + "y": 398.1114317341454, + "zoom": 0.7467072297113905 + } + } +} \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/examples/EX1/example.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/examples/EX1/example.md new file mode 100644 index 0000000000..e0be158693 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DELAY/examples/EX1/example.md @@ -0,0 +1,7 @@ +In this example, the `DELAY` node introduces a pause in the robot arm's operation for a specified duration. + +The node takes in the time for the delay in seconds. + +After initiating the delay, the node waits for the robot arm to become idle before proceeding. + +The `DELAY` node is useful in workflows where you need to introduce a pause between operations, such as waiting for an external sensor to trigger or allowing time for a mechanical process to complete. diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/DISCONNECT.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/DISCONNECT.md new file mode 100644 index 0000000000..4e1b7debfe --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/DISCONNECT.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/a1-[autogen]/docstring.txt b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..b6686fe4bc --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/a1-[autogen]/docstring.txt @@ -0,0 +1,8 @@ + +The DISCONNECT node disconnect the Mecademic robot arm via its API. + +Inputs +------ +ip_address + The IP address of the robot arm. + diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/a1-[autogen]/python_code.txt b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..f44c8698c8 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/a1-[autogen]/python_code.txt @@ -0,0 +1,20 @@ +from flojoy import flojoy, TextBlob +from PYTHON.utils.mecademic_state.mecademic_state import query_for_handle + + +@flojoy(deps={"mecademicpy": "1.4.0"}) +def DISCONNECT(ip_address: TextBlob) -> None: + + + robot = query_for_handle(ip_address.text_blob) + + robot.WaitIdle() + + robot.DeactivateRobot() + robot.WaitDeactivated() + + robot.Disconnect() + robot.WaitSimDeactivated() + robot.WaitDisconnected() + + return None diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/appendix/hardware.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/appendix/media.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/appendix/notes.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/examples/EX1/app.json b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/examples/EX1/app.json new file mode 100644 index 0000000000..39a513e969 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/examples/EX1/app.json @@ -0,0 +1,177 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "type": "INSTRUMENTS", + "data": { + "id": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "label": "CONNECT", + "func": "CONNECT", + "type": "INSTRUMENTS", + "ctrls": { + "ip_address": { + "type": "str", + "default": null, + "desc": null, + "overload": null, + "functionName": "CONNECT", + "param": "ip_address", + "value": "" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/CONNECT/CONNECT.py", + "selected": false + }, + "position": { + "x": 147.11340802118116, + "y": -228.02982798180705 + }, + "selected": false, + "positionAbsolute": { + "x": 147.11340802118116, + "y": -228.02982798180705 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "type": "INSTRUMENTS", + "data": { + "id": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "label": "ACTIVATE", + "func": "ACTIVATE", + "type": "INSTRUMENTS", + "ctrls": { + "simulator": { + "type": "bool", + "default": false, + "desc": "Whether to activate the simulator or not. Defaults to False.", + "overload": null, + "functionName": "ACTIVATE", + "param": "simulator", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/ACTIVATE/ACTIVATE.py", + "selected": false + }, + "position": { + "x": 518.3290550495333, + "y": -229.41169426048555 + }, + "selected": false, + "positionAbsolute": { + "x": 518.3290550495333, + "y": -229.41169426048555 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "DISCONNECT-44ec7a88-2ffa-4642-9578-3259d6035acf", + "type": "INSTRUMENTS", + "data": { + "id": "DISCONNECT-44ec7a88-2ffa-4642-9578-3259d6035acf", + "label": "DISCONNECT", + "func": "DISCONNECT", + "type": "INSTRUMENTS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/DISCONNECT/DISCONNECT.py", + "selected": true + }, + "position": { + "x": 873.82120699744, + "y": -235.86327031832397 + }, + "selected": true, + "positionAbsolute": { + "x": 873.82120699744, + "y": -235.86327031832397 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "sourceHandle": "default", + "target": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "targetHandle": "ip_address", + "id": "reactflow__edge-CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7default-ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395bip_address" + }, + { + "source": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "sourceHandle": "default", + "target": "DISCONNECT-44ec7a88-2ffa-4642-9578-3259d6035acf", + "targetHandle": "ip_address", + "id": "reactflow__edge-ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395bdefault-DISCONNECT-44ec7a88-2ffa-4642-9578-3259d6035acfip_address" + } + ], + "viewport": { + "x": 669.537650867023, + "y": 398.1114317341454, + "zoom": 0.7467072297113905 + } + } +} \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/examples/EX1/example.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/examples/EX1/example.md new file mode 100644 index 0000000000..0b779c166f --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/DISCONNECT/examples/EX1/example.md @@ -0,0 +1,5 @@ +In this example, the `DISCONNECT` node terminates the connection with the MECADEMIC MECA500 robot arm. + +After ensuring the robot arm is idle, the node deactivates the robot and waits for confirmation of deactivation. It then disconnects from the robot arm entirely. + +The `DISCONNECT` node should always used at the end of a workflow to safely terminate the connection and ensure that the robot arm is in a deactivated state. diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/HOME.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/HOME.md new file mode 100644 index 0000000000..dbcb3611ae --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/HOME.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/a1-[autogen]/docstring.txt b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..97a1bc3361 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/a1-[autogen]/docstring.txt @@ -0,0 +1,12 @@ + +The HOME node homes the robot arm. This node is required to be run before any other robot arm movement. It is recommended to run this node immediately after "ACTIVATE". + +Inputs +------ +ip_address + The IP address of the robot arm. + +Returns +------- +ip_address + The IP address of the robot arm. diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/a1-[autogen]/python_code.txt b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..481f95aa41 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/a1-[autogen]/python_code.txt @@ -0,0 +1,11 @@ +from flojoy import flojoy, TextBlob +from PYTHON.utils.mecademic_state.mecademic_state import query_for_handle + + +@flojoy(deps={"mecademicpy": "1.4.0"}) +def HOME(ip_address: TextBlob) -> TextBlob: + + robot = query_for_handle(ip_address) + robot.Home() + robot.WaitHomed() + return ip_address diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/appendix/hardware.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/appendix/media.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/appendix/notes.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/examples/EX1/app.json b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/examples/EX1/app.json new file mode 100644 index 0000000000..eefbaa52c1 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/examples/EX1/app.json @@ -0,0 +1,233 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "type": "INSTRUMENTS", + "data": { + "id": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "label": "CONNECT", + "func": "CONNECT", + "type": "INSTRUMENTS", + "ctrls": { + "ip_address": { + "type": "str", + "default": null, + "desc": null, + "overload": null, + "functionName": "CONNECT", + "param": "ip_address", + "value": "" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/CONNECT/CONNECT.py", + "selected": true + }, + "position": { + "x": 149.79183394290823, + "y": -219.99455021662578 + }, + "selected": true, + "positionAbsolute": { + "x": 149.79183394290823, + "y": -219.99455021662578 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "type": "INSTRUMENTS", + "data": { + "id": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "label": "ACTIVATE", + "func": "ACTIVATE", + "type": "INSTRUMENTS", + "ctrls": { + "simulator": { + "type": "bool", + "default": false, + "desc": "Whether to activate the simulator or not. Defaults to False.", + "overload": null, + "functionName": "ACTIVATE", + "param": "simulator", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/ACTIVATE/ACTIVATE.py", + "selected": false + }, + "position": { + "x": 527.703545775578, + "y": -214.68035169098664 + }, + "selected": false, + "positionAbsolute": { + "x": 527.703545775578, + "y": -214.68035169098664 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "HOME-5d83ba76-5510-4e1c-8dd6-51e6e5e4a150", + "type": "INSTRUMENTS", + "data": { + "id": "HOME-5d83ba76-5510-4e1c-8dd6-51e6e5e4a150", + "label": "HOME", + "func": "HOME", + "type": "INSTRUMENTS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/HOME/HOME.py", + "selected": false + }, + "position": { + "x": 885.8669467295067, + "y": -220.98094200847677 + }, + "selected": false, + "positionAbsolute": { + "x": 885.8669467295067, + "y": -220.98094200847677 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0d", + "type": "INSTRUMENTS", + "data": { + "id": "DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0d", + "label": "DISCONNECT", + "func": "DISCONNECT", + "type": "INSTRUMENTS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/DISCONNECT/DISCONNECT.py", + "selected": false + }, + "position": { + "x": 1273.85843868971, + "y": -224.62884042308886 + }, + "selected": false, + "positionAbsolute": { + "x": 1273.85843868971, + "y": -224.62884042308886 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "sourceHandle": "default", + "target": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "targetHandle": "ip_address", + "id": "reactflow__edge-CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7default-ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395bip_address" + }, + { + "source": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "sourceHandle": "default", + "target": "HOME-5d83ba76-5510-4e1c-8dd6-51e6e5e4a150", + "targetHandle": "ip_address", + "id": "reactflow__edge-ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395bdefault-HOME-5d83ba76-5510-4e1c-8dd6-51e6e5e4a150ip_address" + }, + { + "source": "HOME-5d83ba76-5510-4e1c-8dd6-51e6e5e4a150", + "sourceHandle": "default", + "target": "DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0d", + "targetHandle": "ip_address", + "id": "reactflow__edge-HOME-5d83ba76-5510-4e1c-8dd6-51e6e5e4a150default-DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0dip_address" + } + ], + "viewport": { + "x": 669.537650867023, + "y": 398.1114317341454, + "zoom": 0.7467072297113905 + } + } +} \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/examples/EX1/example.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/examples/EX1/example.md new file mode 100644 index 0000000000..866ed3dbdc --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/HOME/examples/EX1/example.md @@ -0,0 +1,5 @@ +In this example, the `HOME` node homes the robot arm, setting it to its default position. + +This node is essential to run before any other movement operations on the robot arm. It's recommended to use this node immediately after the `ACTIVATE` node to ensure the robot arm is in a known state. + +After the homing process, the node waits for confirmation that the robot arm has been successfully homed. diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/MOVE_JOINT.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/MOVE_JOINT.md new file mode 100644 index 0000000000..0ade6cef08 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/MOVE_JOINT.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/a1-[autogen]/docstring.txt b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..ef4439f6bc --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/a1-[autogen]/docstring.txt @@ -0,0 +1,28 @@ + +The MOVE_JOINT node linearly moves the robot's tool to an absolute Cartesian position. + +Inputs +------ +ip_address: TextBlob + The IP address of the robot arm. + +Parameters +------ +x : float + The x coordinate of the position to move to +y : float + The y coordinate of the position to move to +z : float + The z coordinate of the position to move to +alpha : float, optional + The alpha coordinate (rotation in radians about the x axis) of the position to move to. +beta : float, optional + The beta coordinate (rotation in radians about the y axis) of the position to move to. +gamma : float, optional + The gamma coordinate (rotation in radians about the z axis) of the position to move to. + +Returns +------- +ip_address + The IP address of the robot arm. + diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/a1-[autogen]/python_code.txt b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..e21ca134d7 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/a1-[autogen]/python_code.txt @@ -0,0 +1,20 @@ +from flojoy import flojoy, TextBlob +from typing import Optional +from PYTHON.utils.mecademic_state.mecademic_state import query_for_handle + + +@flojoy(deps={"mecademicpy": "1.4.0"}) +def MOVE_JOINT( + ip_address: TextBlob, + x: float, + y: float, + z: float, + alpha: Optional[float] = 0, + beta: Optional[float] = 0, + gamma: Optional[float] = 0, +) -> TextBlob: + + robot = query_for_handle(ip_address) + robot.MoveJoints(x, y, z, alpha, beta, gamma) + robot.WaitIdle() + return ip_address diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/appendix/hardware.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/appendix/media.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/appendix/notes.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/examples/EX1/app.json b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/examples/EX1/app.json new file mode 100644 index 0000000000..2e535cb1ca --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/examples/EX1/app.json @@ -0,0 +1,344 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "type": "INSTRUMENTS", + "data": { + "id": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "label": "CONNECT", + "func": "CONNECT", + "type": "INSTRUMENTS", + "ctrls": { + "ip_address": { + "type": "str", + "default": null, + "desc": null, + "overload": null, + "functionName": "CONNECT", + "param": "ip_address", + "value": "" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/CONNECT/CONNECT.py", + "selected": false + }, + "position": { + "x": 149.79183394290823, + "y": -219.99455021662578 + }, + "selected": false, + "positionAbsolute": { + "x": 149.79183394290823, + "y": -219.99455021662578 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "type": "INSTRUMENTS", + "data": { + "id": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "label": "ACTIVATE", + "func": "ACTIVATE", + "type": "INSTRUMENTS", + "ctrls": { + "simulator": { + "type": "bool", + "default": false, + "desc": "Whether to activate the simulator or not. Defaults to False.", + "overload": null, + "functionName": "ACTIVATE", + "param": "simulator", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/ACTIVATE/ACTIVATE.py", + "selected": false + }, + "position": { + "x": 527.703545775578, + "y": -214.68035169098664 + }, + "selected": false, + "positionAbsolute": { + "x": 527.703545775578, + "y": -214.68035169098664 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0d", + "type": "INSTRUMENTS", + "data": { + "id": "DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0d", + "label": "DISCONNECT", + "func": "DISCONNECT", + "type": "INSTRUMENTS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/DISCONNECT/DISCONNECT.py", + "selected": true + }, + "position": { + "x": 1340.819086732887, + "y": -239.3601829925878 + }, + "selected": true, + "positionAbsolute": { + "x": 1340.819086732887, + "y": -239.3601829925878 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "HOME-15149cd9-755c-47da-8b07-cb63b74c6443", + "type": "INSTRUMENTS", + "data": { + "id": "HOME-15149cd9-755c-47da-8b07-cb63b74c6443", + "label": "HOME", + "func": "HOME", + "type": "INSTRUMENTS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/HOME/HOME.py", + "selected": false + }, + "position": { + "x": 794.0911798892838, + "y": -216.0856892468523 + }, + "selected": false, + "positionAbsolute": { + "x": 794.0911798892838, + "y": -216.0856892468523 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MOVE_JOINT-8a2342cd-08bc-44a9-b780-1543b2652601", + "type": "INSTRUMENTS", + "data": { + "id": "MOVE_JOINT-8a2342cd-08bc-44a9-b780-1543b2652601", + "label": "MOVE JOINT", + "func": "MOVE_JOINT", + "type": "INSTRUMENTS", + "ctrls": { + "x": { + "type": "float", + "default": null, + "desc": "The x coordinate of the position to move to", + "overload": null, + "functionName": "MOVE_JOINT", + "param": "x", + "value": "" + }, + "y": { + "type": "float", + "default": null, + "desc": "The y coordinate of the position to move to", + "overload": null, + "functionName": "MOVE_JOINT", + "param": "y", + "value": "" + }, + "z": { + "type": "float", + "default": null, + "desc": "The z coordinate of the position to move to", + "overload": null, + "functionName": "MOVE_JOINT", + "param": "z", + "value": "" + }, + "alpha": { + "type": "float", + "default": 0, + "desc": "The alpha coordinate (rotation in radians about the x axis) of the position to move to.", + "overload": null, + "functionName": "MOVE_JOINT", + "param": "alpha", + "value": 0 + }, + "beta": { + "type": "float", + "default": 0, + "desc": "The beta coordinate (rotation in radians about the y axis) of the position to move to.", + "overload": null, + "functionName": "MOVE_JOINT", + "param": "beta", + "value": 0 + }, + "gamma": { + "type": "float", + "default": 0, + "desc": "The gamma coordinate (rotation in radians about the z axis) of the position to move to.", + "overload": null, + "functionName": "MOVE_JOINT", + "param": "gamma", + "value": 0 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/MOVE_JOINT/MOVE_JOINT.py", + "selected": false + }, + "position": { + "x": 1043.533227125186, + "y": -245.56497455650612 + }, + "selected": false, + "positionAbsolute": { + "x": 1043.533227125186, + "y": -245.56497455650612 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "sourceHandle": "default", + "target": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "targetHandle": "ip_address", + "id": "reactflow__edge-CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7default-ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395bip_address" + }, + { + "source": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "sourceHandle": "default", + "target": "HOME-15149cd9-755c-47da-8b07-cb63b74c6443", + "targetHandle": "ip_address", + "id": "reactflow__edge-ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395bdefault-HOME-15149cd9-755c-47da-8b07-cb63b74c6443ip_address" + }, + { + "source": "HOME-15149cd9-755c-47da-8b07-cb63b74c6443", + "sourceHandle": "default", + "target": "MOVE_JOINT-8a2342cd-08bc-44a9-b780-1543b2652601", + "targetHandle": "ip_address", + "id": "reactflow__edge-HOME-15149cd9-755c-47da-8b07-cb63b74c6443default-MOVE_JOINT-8a2342cd-08bc-44a9-b780-1543b2652601ip_address" + }, + { + "source": "MOVE_JOINT-8a2342cd-08bc-44a9-b780-1543b2652601", + "sourceHandle": "default", + "target": "DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0d", + "targetHandle": "ip_address", + "id": "reactflow__edge-MOVE_JOINT-8a2342cd-08bc-44a9-b780-1543b2652601default-DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0dip_address" + } + ], + "viewport": { + "x": 669.537650867023, + "y": 398.1114317341454, + "zoom": 0.7467072297113905 + } + } +} \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/examples/EX1/example.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/examples/EX1/example.md new file mode 100644 index 0000000000..d84c356981 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_JOINT/examples/EX1/example.md @@ -0,0 +1,7 @@ +In this example, the `MOVE_JOINT` node moves the robot arm to a specified Cartesian position. + +The node takes in the x, y, and z coordinates, along with optional alpha, beta, and gamma rotations in radians. + +After initiating the movement, the node waits for the robot arm to become idle, indicating that the movement is complete. + +The `MOVE_JOINT` node is commonly used in workflows where precise positioning of the robot arm is required, such as picking up an object or performing a specific task. diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/MOVE_LIN.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/MOVE_LIN.md new file mode 100644 index 0000000000..1ba54fb60c --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/MOVE_LIN.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/a1-[autogen]/docstring.txt b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..44e67936f3 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/a1-[autogen]/docstring.txt @@ -0,0 +1,28 @@ + +The MOVE_LIN node linearly moves the robot's tool to an absolute Cartesian position. + +Inputs +------ +ip_address: TextBlob + The IP address of the robot arm. + +Parameters +------ +x : float + The x coordinate of the position to move to +y : float + The y coordinate of the position to move to +z : float + The z coordinate of the position to move to +alpha : float, optional + The alpha coordinate (rotation in radians about the x axis) of the position to move to. +beta : float, optional + The beta coordinate (rotation in radians about the y axis) of the position to move to. +gamma : float, optional + The gamma coordinate (rotation in radians about the z axis) of the position to move to. + +Returns +------- +ip_address + The IP address of the robot arm. + diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/a1-[autogen]/python_code.txt b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..2ee1855ed2 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/a1-[autogen]/python_code.txt @@ -0,0 +1,20 @@ +from flojoy import flojoy, TextBlob +from typing import Optional +from PYTHON.utils.mecademic_state.mecademic_state import query_for_handle + + +@flojoy(deps={"mecademicpy": "1.4.0"}) +def MOVE_LIN( + ip_address: TextBlob, + x: float, + y: float, + z: float, + alpha: Optional[float] = 0, + beta: Optional[float] = 0, + gamma: Optional[float] = 0, +) -> TextBlob: + + robot = query_for_handle(ip_address) + robot.MoveLin(x=x, y=y, z=z, alpha=alpha, beta=beta, gamma=gamma) + robot.WaitIdle() + return ip_address diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/appendix/hardware.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/appendix/media.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/appendix/notes.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/examples/EX1/app.json b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/examples/EX1/app.json new file mode 100644 index 0000000000..ce0d262ea7 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/examples/EX1/app.json @@ -0,0 +1,344 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "type": "INSTRUMENTS", + "data": { + "id": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "label": "CONNECT", + "func": "CONNECT", + "type": "INSTRUMENTS", + "ctrls": { + "ip_address": { + "type": "str", + "default": null, + "desc": null, + "overload": null, + "functionName": "CONNECT", + "param": "ip_address", + "value": "" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/CONNECT/CONNECT.py", + "selected": false + }, + "position": { + "x": 149.79183394290823, + "y": -219.99455021662578 + }, + "selected": false, + "positionAbsolute": { + "x": 149.79183394290823, + "y": -219.99455021662578 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "type": "INSTRUMENTS", + "data": { + "id": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "label": "ACTIVATE", + "func": "ACTIVATE", + "type": "INSTRUMENTS", + "ctrls": { + "simulator": { + "type": "bool", + "default": false, + "desc": "Whether to activate the simulator or not. Defaults to False.", + "overload": null, + "functionName": "ACTIVATE", + "param": "simulator", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/ACTIVATE/ACTIVATE.py", + "selected": false + }, + "position": { + "x": 527.703545775578, + "y": -214.68035169098664 + }, + "selected": false, + "positionAbsolute": { + "x": 527.703545775578, + "y": -214.68035169098664 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0d", + "type": "INSTRUMENTS", + "data": { + "id": "DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0d", + "label": "DISCONNECT", + "func": "DISCONNECT", + "type": "INSTRUMENTS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/DISCONNECT/DISCONNECT.py", + "selected": true + }, + "position": { + "x": 1359.5680681849765, + "y": -215.25434969704412 + }, + "selected": true, + "positionAbsolute": { + "x": 1359.5680681849765, + "y": -215.25434969704412 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "HOME-15149cd9-755c-47da-8b07-cb63b74c6443", + "type": "INSTRUMENTS", + "data": { + "id": "HOME-15149cd9-755c-47da-8b07-cb63b74c6443", + "label": "HOME", + "func": "HOME", + "type": "INSTRUMENTS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/HOME/HOME.py", + "selected": false + }, + "position": { + "x": 794.0911798892838, + "y": -216.0856892468523 + }, + "selected": false, + "positionAbsolute": { + "x": 794.0911798892838, + "y": -216.0856892468523 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MOVE_LIN-35a46f14-64c0-4744-b6c1-d8db200cd9bd", + "type": "INSTRUMENTS", + "data": { + "id": "MOVE_LIN-35a46f14-64c0-4744-b6c1-d8db200cd9bd", + "label": "MOVE LIN", + "func": "MOVE_LIN", + "type": "INSTRUMENTS", + "ctrls": { + "x": { + "type": "float", + "default": null, + "desc": "The x coordinate of the position to move to", + "overload": null, + "functionName": "MOVE_LIN", + "param": "x", + "value": "" + }, + "y": { + "type": "float", + "default": null, + "desc": "The y coordinate of the position to move to", + "overload": null, + "functionName": "MOVE_LIN", + "param": "y", + "value": "" + }, + "z": { + "type": "float", + "default": null, + "desc": "The z coordinate of the position to move to", + "overload": null, + "functionName": "MOVE_LIN", + "param": "z", + "value": "" + }, + "alpha": { + "type": "float", + "default": 0, + "desc": "The alpha coordinate (rotation in radians about the x axis) of the position to move to.", + "overload": null, + "functionName": "MOVE_LIN", + "param": "alpha", + "value": 0 + }, + "beta": { + "type": "float", + "default": 0, + "desc": "The beta coordinate (rotation in radians about the y axis) of the position to move to.", + "overload": null, + "functionName": "MOVE_LIN", + "param": "beta", + "value": 0 + }, + "gamma": { + "type": "float", + "default": 0, + "desc": "The gamma coordinate (rotation in radians about the z axis) of the position to move to.", + "overload": null, + "functionName": "MOVE_LIN", + "param": "gamma", + "value": 0 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/MOVE_LIN/MOVE_LIN.py", + "selected": false + }, + "position": { + "x": 1086.8498227608254, + "y": -228.4510184768089 + }, + "selected": false, + "positionAbsolute": { + "x": 1086.8498227608254, + "y": -228.4510184768089 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "sourceHandle": "default", + "target": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "targetHandle": "ip_address", + "id": "reactflow__edge-CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7default-ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395bip_address" + }, + { + "source": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "sourceHandle": "default", + "target": "HOME-15149cd9-755c-47da-8b07-cb63b74c6443", + "targetHandle": "ip_address", + "id": "reactflow__edge-ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395bdefault-HOME-15149cd9-755c-47da-8b07-cb63b74c6443ip_address" + }, + { + "source": "HOME-15149cd9-755c-47da-8b07-cb63b74c6443", + "sourceHandle": "default", + "target": "MOVE_LIN-35a46f14-64c0-4744-b6c1-d8db200cd9bd", + "targetHandle": "ip_address", + "id": "reactflow__edge-HOME-15149cd9-755c-47da-8b07-cb63b74c6443default-MOVE_LIN-35a46f14-64c0-4744-b6c1-d8db200cd9bdip_address" + }, + { + "source": "MOVE_LIN-35a46f14-64c0-4744-b6c1-d8db200cd9bd", + "sourceHandle": "default", + "target": "DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0d", + "targetHandle": "ip_address", + "id": "reactflow__edge-MOVE_LIN-35a46f14-64c0-4744-b6c1-d8db200cd9bddefault-DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0dip_address" + } + ], + "viewport": { + "x": 669.537650867023, + "y": 398.1114317341454, + "zoom": 0.7467072297113905 + } + } +} \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/examples/EX1/example.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/examples/EX1/example.md new file mode 100644 index 0000000000..21f09554bc --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_LIN/examples/EX1/example.md @@ -0,0 +1,7 @@ +In this example, the `MOVE_LIN` node moves the robot arm in a straight line to a specified Cartesian position. + +The node takes in the x, y, and z coordinates, along with optional alpha, beta, and gamma rotations in radians. + +After initiating the linear movement, the node waits for the robot arm to become idle, indicating that the movement is complete. + +The `MOVE_LIN` node is useful in workflows where linear movements are required, such as drawing a straight line or moving from one point to another in a straight path. diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/MOVE_POSE.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/MOVE_POSE.md new file mode 100644 index 0000000000..750f59daf1 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/MOVE_POSE.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/a1-[autogen]/docstring.txt b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..c077ea8c63 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/a1-[autogen]/docstring.txt @@ -0,0 +1,28 @@ + +The MOVE_POSE node moves the robot to a specified pose in space. + +Inputs +------ +ip_address + The IP address of the robot arm. + +Parameters +------ +x : float + The x coordinate of the position to move to +y : float + The y coordinate of the position to move to +z : float + The z coordinate of the position to move to +alpha : float, optional + The alpha coordinate (rotation in radians about the x axis) of the position to move to. +beta : float, optional + The beta coordinate (rotation in radians about the y axis) of the position to move to. +gamma : float, optional + The gamma coordinate (rotation in radians about the z axis) of the position to move to. + +Returns +------- +ip_address + The IP address of the robot arm. + diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/a1-[autogen]/python_code.txt b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..39ac3caf4b --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/a1-[autogen]/python_code.txt @@ -0,0 +1,20 @@ +from flojoy import flojoy, TextBlob +from typing import Optional +from PYTHON.utils.mecademic_state.mecademic_state import query_for_handle + + +@flojoy(deps={"mecademicpy": "1.4.0"}) +def MOVE_POSE( + ip_address: TextBlob, + x: float, + y: float, + z: float, + alpha: Optional[float] = 0, + beta: Optional[float] = 0, + gamma: Optional[float] = 0, +) -> TextBlob: + + robot = query_for_handle(ip_address) + robot.MovePose(x=x, y=y, z=z, alpha=alpha, beta=beta, gamma=gamma) + robot.WaitIdle() + return ip_address diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/appendix/hardware.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/appendix/media.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/appendix/notes.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/examples/EX1/app.json b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/examples/EX1/app.json new file mode 100644 index 0000000000..214aafe525 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/examples/EX1/app.json @@ -0,0 +1,344 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "type": "INSTRUMENTS", + "data": { + "id": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "label": "CONNECT", + "func": "CONNECT", + "type": "INSTRUMENTS", + "ctrls": { + "ip_address": { + "type": "str", + "default": null, + "desc": null, + "overload": null, + "functionName": "CONNECT", + "param": "ip_address", + "value": "" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/CONNECT/CONNECT.py", + "selected": false + }, + "position": { + "x": 149.79183394290823, + "y": -219.99455021662578 + }, + "selected": false, + "positionAbsolute": { + "x": 149.79183394290823, + "y": -219.99455021662578 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "type": "INSTRUMENTS", + "data": { + "id": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "label": "ACTIVATE", + "func": "ACTIVATE", + "type": "INSTRUMENTS", + "ctrls": { + "simulator": { + "type": "bool", + "default": false, + "desc": "Whether to activate the simulator or not. Defaults to False.", + "overload": null, + "functionName": "ACTIVATE", + "param": "simulator", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/ACTIVATE/ACTIVATE.py", + "selected": false + }, + "position": { + "x": 527.703545775578, + "y": -214.68035169098664 + }, + "selected": false, + "positionAbsolute": { + "x": 527.703545775578, + "y": -214.68035169098664 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0d", + "type": "INSTRUMENTS", + "data": { + "id": "DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0d", + "label": "DISCONNECT", + "func": "DISCONNECT", + "type": "INSTRUMENTS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/DISCONNECT/DISCONNECT.py", + "selected": false + }, + "position": { + "x": 1359.5680681849765, + "y": -215.25434969704412 + }, + "selected": false, + "positionAbsolute": { + "x": 1359.5680681849765, + "y": -215.25434969704412 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "HOME-15149cd9-755c-47da-8b07-cb63b74c6443", + "type": "INSTRUMENTS", + "data": { + "id": "HOME-15149cd9-755c-47da-8b07-cb63b74c6443", + "label": "HOME", + "func": "HOME", + "type": "INSTRUMENTS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/HOME/HOME.py", + "selected": false + }, + "position": { + "x": 794.0911798892838, + "y": -216.0856892468523 + }, + "selected": false, + "positionAbsolute": { + "x": 794.0911798892838, + "y": -216.0856892468523 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "MOVE_POSE-b2c91211-689a-4575-9b81-3a3dcb8e336d", + "type": "INSTRUMENTS", + "data": { + "id": "MOVE_POSE-b2c91211-689a-4575-9b81-3a3dcb8e336d", + "label": "MOVE POSE", + "func": "MOVE_POSE", + "type": "INSTRUMENTS", + "ctrls": { + "x": { + "type": "float", + "default": null, + "desc": "The x coordinate of the position to move to", + "overload": null, + "functionName": "MOVE_POSE", + "param": "x", + "value": "" + }, + "y": { + "type": "float", + "default": null, + "desc": "The y coordinate of the position to move to", + "overload": null, + "functionName": "MOVE_POSE", + "param": "y", + "value": "" + }, + "z": { + "type": "float", + "default": null, + "desc": "The z coordinate of the position to move to", + "overload": null, + "functionName": "MOVE_POSE", + "param": "z", + "value": "" + }, + "alpha": { + "type": "float", + "default": 0, + "desc": "The alpha coordinate (rotation in radians about the x axis) of the position to move to.", + "overload": null, + "functionName": "MOVE_POSE", + "param": "alpha", + "value": 0 + }, + "beta": { + "type": "float", + "default": 0, + "desc": "The beta coordinate (rotation in radians about the y axis) of the position to move to.", + "overload": null, + "functionName": "MOVE_POSE", + "param": "beta", + "value": 0 + }, + "gamma": { + "type": "float", + "default": 0, + "desc": "The gamma coordinate (rotation in radians about the z axis) of the position to move to.", + "overload": null, + "functionName": "MOVE_POSE", + "param": "gamma", + "value": 0 + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/MOVE_POSE/MOVE_POSE.py", + "selected": true + }, + "position": { + "x": 1088.750702493049, + "y": -226.9880767820448 + }, + "selected": true, + "positionAbsolute": { + "x": 1088.750702493049, + "y": -226.9880767820448 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "sourceHandle": "default", + "target": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "targetHandle": "ip_address", + "id": "reactflow__edge-CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7default-ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395bip_address" + }, + { + "source": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "sourceHandle": "default", + "target": "HOME-15149cd9-755c-47da-8b07-cb63b74c6443", + "targetHandle": "ip_address", + "id": "reactflow__edge-ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395bdefault-HOME-15149cd9-755c-47da-8b07-cb63b74c6443ip_address" + }, + { + "source": "HOME-15149cd9-755c-47da-8b07-cb63b74c6443", + "sourceHandle": "default", + "target": "MOVE_POSE-b2c91211-689a-4575-9b81-3a3dcb8e336d", + "targetHandle": "ip_address", + "id": "reactflow__edge-HOME-15149cd9-755c-47da-8b07-cb63b74c6443default-MOVE_POSE-b2c91211-689a-4575-9b81-3a3dcb8e336dip_address" + }, + { + "source": "MOVE_POSE-b2c91211-689a-4575-9b81-3a3dcb8e336d", + "sourceHandle": "default", + "target": "DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0d", + "targetHandle": "ip_address", + "id": "reactflow__edge-MOVE_POSE-b2c91211-689a-4575-9b81-3a3dcb8e336ddefault-DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0dip_address" + } + ], + "viewport": { + "x": 669.537650867023, + "y": 398.1114317341454, + "zoom": 0.7467072297113905 + } + } +} \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/examples/EX1/example.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/examples/EX1/example.md new file mode 100644 index 0000000000..dac228711c --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/MOVE_POSE/examples/EX1/example.md @@ -0,0 +1,7 @@ +In this example, the `MOVE_POSE` node moves the robot arm to a specified Cartesian position while also considering the orientation of the tool. + +The node takes in the x, y, and z coordinates, along with optional alpha, beta, and gamma rotations in radians. + +After initiating the movement, the node waits for the robot arm to become idle, indicating that the movement is complete. + +The `MOVE_POSE` node is particularly useful in workflows where both the position and orientation of the robot arm are crucial, such as aligning the arm with an object before picking it up. diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/SET_CART_LIN_VEL.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/SET_CART_LIN_VEL.md new file mode 100644 index 0000000000..199dcca1fa --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/SET_CART_LIN_VEL.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/a1-[autogen]/docstring.txt b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..7050853732 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/a1-[autogen]/docstring.txt @@ -0,0 +1,17 @@ + +The SET_CART_LIN_VEL node sets the robot arm's linear velocity in Cartesian coordinates. + +Inputs +------ +ip_address: TextBlob + The IP address of the robot arm. + +Parameters +------ +v : float + The velocity to be set. + +Returns +------- +ip_address + The IP address of the robot arm. diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/a1-[autogen]/python_code.txt b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..800e49466c --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/a1-[autogen]/python_code.txt @@ -0,0 +1,11 @@ +from flojoy import flojoy, TextBlob +from PYTHON.utils.mecademic_state.mecademic_state import query_for_handle + + +@flojoy(deps={"mecademicpy": "1.4.0"}) +def SET_CART_LIN_VEL(ip_address: TextBlob, v: float) -> TextBlob: + + + robot = query_for_handle(ip_address) + robot.SetCartLinVel(v) + return ip_address diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/appendix/hardware.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/appendix/media.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/appendix/notes.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/examples/EX1/app.json b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/examples/EX1/app.json new file mode 100644 index 0000000000..37c322a597 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/examples/EX1/app.json @@ -0,0 +1,299 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "type": "INSTRUMENTS", + "data": { + "id": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "label": "CONNECT", + "func": "CONNECT", + "type": "INSTRUMENTS", + "ctrls": { + "ip_address": { + "type": "str", + "default": null, + "desc": null, + "overload": null, + "functionName": "CONNECT", + "param": "ip_address", + "value": "" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/CONNECT/CONNECT.py", + "selected": false + }, + "position": { + "x": 149.79183394290823, + "y": -219.99455021662578 + }, + "selected": false, + "positionAbsolute": { + "x": 149.79183394290823, + "y": -219.99455021662578 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "type": "INSTRUMENTS", + "data": { + "id": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "label": "ACTIVATE", + "func": "ACTIVATE", + "type": "INSTRUMENTS", + "ctrls": { + "simulator": { + "type": "bool", + "default": false, + "desc": "Whether to activate the simulator or not. Defaults to False.", + "overload": null, + "functionName": "ACTIVATE", + "param": "simulator", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/ACTIVATE/ACTIVATE.py", + "selected": false + }, + "position": { + "x": 527.703545775578, + "y": -214.68035169098664 + }, + "selected": false, + "positionAbsolute": { + "x": 527.703545775578, + "y": -214.68035169098664 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0d", + "type": "INSTRUMENTS", + "data": { + "id": "DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0d", + "label": "DISCONNECT", + "func": "DISCONNECT", + "type": "INSTRUMENTS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/DISCONNECT/DISCONNECT.py", + "selected": false + }, + "position": { + "x": 1359.5680681849765, + "y": -215.25434969704412 + }, + "selected": false, + "positionAbsolute": { + "x": 1359.5680681849765, + "y": -215.25434969704412 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "HOME-15149cd9-755c-47da-8b07-cb63b74c6443", + "type": "INSTRUMENTS", + "data": { + "id": "HOME-15149cd9-755c-47da-8b07-cb63b74c6443", + "label": "HOME", + "func": "HOME", + "type": "INSTRUMENTS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/HOME/HOME.py", + "selected": false + }, + "position": { + "x": 794.0911798892838, + "y": -216.0856892468523 + }, + "selected": false, + "positionAbsolute": { + "x": 794.0911798892838, + "y": -216.0856892468523 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "SET_CART_LIN_VEL-da61252e-3cd6-48a0-b784-b69508eb7cfd", + "type": "INSTRUMENTS", + "data": { + "id": "SET_CART_LIN_VEL-da61252e-3cd6-48a0-b784-b69508eb7cfd", + "label": "SET CART LIN VEL", + "func": "SET_CART_LIN_VEL", + "type": "INSTRUMENTS", + "ctrls": { + "v": { + "type": "float", + "default": null, + "desc": "The velocity to be set.", + "overload": null, + "functionName": "SET_CART_LIN_VEL", + "param": "v", + "value": "" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/SET_CART_LIN_VEL/SET_CART_LIN_VEL.py", + "selected": false + }, + "position": { + "x": 1061.2726259973933, + "y": -217.83129616269082 + }, + "selected": false, + "positionAbsolute": { + "x": 1061.2726259973933, + "y": -217.83129616269082 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "sourceHandle": "default", + "target": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "targetHandle": "ip_address", + "id": "reactflow__edge-CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7default-ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395bip_address" + }, + { + "source": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "sourceHandle": "default", + "target": "HOME-15149cd9-755c-47da-8b07-cb63b74c6443", + "targetHandle": "ip_address", + "id": "reactflow__edge-ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395bdefault-HOME-15149cd9-755c-47da-8b07-cb63b74c6443ip_address" + }, + { + "source": "HOME-15149cd9-755c-47da-8b07-cb63b74c6443", + "sourceHandle": "default", + "target": "SET_CART_LIN_VEL-da61252e-3cd6-48a0-b784-b69508eb7cfd", + "targetHandle": "ip_address", + "id": "reactflow__edge-HOME-15149cd9-755c-47da-8b07-cb63b74c6443default-SET_CART_LIN_VEL-da61252e-3cd6-48a0-b784-b69508eb7cfdip_address" + }, + { + "source": "SET_CART_LIN_VEL-da61252e-3cd6-48a0-b784-b69508eb7cfd", + "sourceHandle": "default", + "target": "DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0d", + "targetHandle": "ip_address", + "id": "reactflow__edge-SET_CART_LIN_VEL-da61252e-3cd6-48a0-b784-b69508eb7cfddefault-DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0dip_address" + } + ], + "viewport": { + "x": 669.537650867023, + "y": 398.1114317341454, + "zoom": 0.7467072297113905 + } + } +} \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/examples/EX1/example.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/examples/EX1/example.md new file mode 100644 index 0000000000..5bb5a155aa --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_CART_LIN_VEL/examples/EX1/example.md @@ -0,0 +1,7 @@ +In this example, the `SET_CART_LIN_VEL` node sets the linear velocity of the robot arm in Cartesian coordinates. + +The node takes in a single parameter, v, which is the velocity to be set for the robot arm's movements. + +After setting the velocity, the node doesn't wait for any specific state, meaning it's often used in conjunction with other movement nodes to control the speed of those movements. + +The `SET_CART_LIN_VEL` node is useful in workflows where you need to control the speed of the robot arm's linear movements, such as when you're trying to synchronize the robot arm with another moving object. diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/SET_JOINT_VEL.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/SET_JOINT_VEL.md new file mode 100644 index 0000000000..aea18186e2 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/SET_JOINT_VEL.md @@ -0,0 +1,57 @@ + +[//]: # (Custom component imports) + +import DocString from '@site/src/components/DocString'; +import PythonCode from '@site/src/components/PythonCode'; +import AppDisplay from '@site/src/components/AppDisplay'; +import SectionBreak from '@site/src/components/SectionBreak'; +import AppendixSection from '@site/src/components/AppendixSection'; + +[//]: # (Docstring) + +import DocstringSource from '!!raw-loader!./a1-[autogen]/docstring.txt'; +import PythonSource from '!!raw-loader!./a1-[autogen]/python_code.txt'; + +{DocstringSource} +{PythonSource} + + + + + +[//]: # (Examples) + +## Examples + +import Example1 from './examples/EX1/example.md'; +import App1 from '!!raw-loader!./examples/EX1/app.json'; + + + + + {App1} + + + + + + + + +[//]: # (Appendix) + +import Notes from './appendix/notes.md'; +import Hardware from './appendix/hardware.md'; +import Media from './appendix/media.md'; + +## Appendix + + + + + + diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/a1-[autogen]/docstring.txt b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/a1-[autogen]/docstring.txt new file mode 100644 index 0000000000..d6723aa9e7 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/a1-[autogen]/docstring.txt @@ -0,0 +1,18 @@ + + The SET_JOINT_VEL node sets the robot arm's angular velocity for its joints. + + Inputs + ------ + ip_address + The IP address of the robot arm. + + Parameters + ------ + v : float + The angular velocity to be set for each joint. + +Returns + ------- + ip_address + The IP address of the robot arm. + diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/a1-[autogen]/python_code.txt b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/a1-[autogen]/python_code.txt new file mode 100644 index 0000000000..3e04ed34d8 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/a1-[autogen]/python_code.txt @@ -0,0 +1,11 @@ +from flojoy import flojoy, TextBlob +from typing import Optional +from PYTHON.utils.mecademic_state.mecademic_state import query_for_handle + + +@flojoy(deps={"mecademicpy": "1.4.0"}) +def SET_JOINT_VEL(ip_address: TextBlob, v: float) -> TextBlob: + + robot = query_for_handle(ip_address) + robot.SetJointVel(v) + return ip_address diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/appendix/hardware.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/appendix/hardware.md new file mode 100644 index 0000000000..7f78a555c4 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/appendix/hardware.md @@ -0,0 +1 @@ +This node does not require any peripheral hardware to operate. Please see INSTRUMENTS for nodes that interact with the physical world through connected hardware. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/appendix/media.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/appendix/media.md new file mode 100644 index 0000000000..8bcee9be90 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/appendix/media.md @@ -0,0 +1 @@ +No supporting screenshots, photos, or videos have been added to the media.md file for this node. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/appendix/notes.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/appendix/notes.md new file mode 100644 index 0000000000..04aded2ec9 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/appendix/notes.md @@ -0,0 +1 @@ +No theory or technical notes have been contributed for this node yet. \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/examples/EX1/app.json b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/examples/EX1/app.json new file mode 100644 index 0000000000..eb80fdb4f3 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/examples/EX1/app.json @@ -0,0 +1,299 @@ +{ + "rfInstance": { + "nodes": [ + { + "width": 192, + "height": 192, + "id": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "type": "INSTRUMENTS", + "data": { + "id": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "label": "CONNECT", + "func": "CONNECT", + "type": "INSTRUMENTS", + "ctrls": { + "ip_address": { + "type": "str", + "default": null, + "desc": null, + "overload": null, + "functionName": "CONNECT", + "param": "ip_address", + "value": "" + } + }, + "initCtrls": {}, + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/CONNECT/CONNECT.py", + "selected": false + }, + "position": { + "x": 149.79183394290823, + "y": -219.99455021662578 + }, + "selected": false, + "positionAbsolute": { + "x": 149.79183394290823, + "y": -219.99455021662578 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "type": "INSTRUMENTS", + "data": { + "id": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "label": "ACTIVATE", + "func": "ACTIVATE", + "type": "INSTRUMENTS", + "ctrls": { + "simulator": { + "type": "bool", + "default": false, + "desc": "Whether to activate the simulator or not. Defaults to False.", + "overload": null, + "functionName": "ACTIVATE", + "param": "simulator", + "value": false + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/ACTIVATE/ACTIVATE.py", + "selected": false + }, + "position": { + "x": 527.703545775578, + "y": -214.68035169098664 + }, + "selected": false, + "positionAbsolute": { + "x": 527.703545775578, + "y": -214.68035169098664 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0d", + "type": "INSTRUMENTS", + "data": { + "id": "DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0d", + "label": "DISCONNECT", + "func": "DISCONNECT", + "type": "INSTRUMENTS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/DISCONNECT/DISCONNECT.py", + "selected": false + }, + "position": { + "x": 1359.5680681849765, + "y": -215.25434969704412 + }, + "selected": false, + "positionAbsolute": { + "x": 1359.5680681849765, + "y": -215.25434969704412 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "HOME-15149cd9-755c-47da-8b07-cb63b74c6443", + "type": "INSTRUMENTS", + "data": { + "id": "HOME-15149cd9-755c-47da-8b07-cb63b74c6443", + "label": "HOME", + "func": "HOME", + "type": "INSTRUMENTS", + "ctrls": {}, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": "The IP address of the robot arm." + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": "The IP address of the robot arm." + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/HOME/HOME.py", + "selected": false + }, + "position": { + "x": 794.0911798892838, + "y": -216.0856892468523 + }, + "selected": false, + "positionAbsolute": { + "x": 794.0911798892838, + "y": -216.0856892468523 + }, + "dragging": true + }, + { + "width": 192, + "height": 192, + "id": "SET_JOINT_VEL-a2576ed8-f0e6-407f-a674-322e180c09ac", + "type": "INSTRUMENTS", + "data": { + "id": "SET_JOINT_VEL-a2576ed8-f0e6-407f-a674-322e180c09ac", + "label": "SET JOINT VEL", + "func": "SET_JOINT_VEL", + "type": "INSTRUMENTS", + "ctrls": { + "v": { + "type": "float", + "default": null, + "desc": null, + "overload": null, + "functionName": "SET_JOINT_VEL", + "param": "v", + "value": "" + } + }, + "initCtrls": {}, + "inputs": [ + { + "name": "ip_address", + "id": "ip_address", + "type": "TextBlob", + "multiple": false, + "desc": null + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "TextBlob", + "desc": null + } + ], + "pip_dependencies": [ + { + "name": "mecademicpy", + "v": "1.4.0" + } + ], + "path": "PYTHON/nodes/INSTRUMENTS/MECADEMIC/SET_JOINT_VEL/SET_JOINT_VEL.py", + "selected": false + }, + "position": { + "x": 1090.1561206221243, + "y": -238.30986226761058 + }, + "selected": false, + "positionAbsolute": { + "x": 1090.1561206221243, + "y": -238.30986226761058 + }, + "dragging": true + } + ], + "edges": [ + { + "source": "CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7", + "sourceHandle": "default", + "target": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "targetHandle": "ip_address", + "id": "reactflow__edge-CONNECT-7ca02405-664b-43f0-a498-ef3ddecbd2b7default-ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395bip_address" + }, + { + "source": "ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395b", + "sourceHandle": "default", + "target": "HOME-15149cd9-755c-47da-8b07-cb63b74c6443", + "targetHandle": "ip_address", + "id": "reactflow__edge-ACTIVATE-83ad0faf-16a9-42c9-bcd2-fc0e0f25395bdefault-HOME-15149cd9-755c-47da-8b07-cb63b74c6443ip_address" + }, + { + "source": "HOME-15149cd9-755c-47da-8b07-cb63b74c6443", + "sourceHandle": "default", + "target": "SET_JOINT_VEL-a2576ed8-f0e6-407f-a674-322e180c09ac", + "targetHandle": "ip_address", + "id": "reactflow__edge-HOME-15149cd9-755c-47da-8b07-cb63b74c6443default-SET_JOINT_VEL-a2576ed8-f0e6-407f-a674-322e180c09acip_address" + }, + { + "source": "SET_JOINT_VEL-a2576ed8-f0e6-407f-a674-322e180c09ac", + "sourceHandle": "default", + "target": "DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0d", + "targetHandle": "ip_address", + "id": "reactflow__edge-SET_JOINT_VEL-a2576ed8-f0e6-407f-a674-322e180c09acdefault-DISCONNECT-508704f3-6da0-4541-8590-21a3b4318e0dip_address" + } + ], + "viewport": { + "x": 669.537650867023, + "y": 398.1114317341454, + "zoom": 0.7467072297113905 + } + } +} \ No newline at end of file diff --git a/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/examples/EX1/example.md b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/examples/EX1/example.md new file mode 100644 index 0000000000..b535eb6f93 --- /dev/null +++ b/docs/nodes/IO/ROBOTICS/ARMS/MECADEMIC/SET_JOINT_VEL/examples/EX1/example.md @@ -0,0 +1,7 @@ +In this example, the `SET_JOINT_VEL` node sets the angular velocity for the joints of the robot arm. + +The node takes in a single parameter, v, which is the angular velocity to be set for each joint of the robot arm. + +After setting the velocity, the node doesn't wait for any specific state, meaning it's often used in conjunction with other movement nodes to control the speed of those movements. + +The `SET_JOINT_VEL` node is useful in workflows where you need to control the speed of the robot arm's joint movements, such as when performing tasks that require varying speeds for different joints. diff --git a/docs/nodes/LOADERS/LOCAL_FILE_SYSTEM/LOCAL_FILE/a1-[autogen]/docstring.txt b/docs/nodes/LOADERS/LOCAL_FILE_SYSTEM/LOCAL_FILE/a1-[autogen]/docstring.txt index ae310eab3f..b4e8a6d8dd 100644 --- a/docs/nodes/LOADERS/LOCAL_FILE_SYSTEM/LOCAL_FILE/a1-[autogen]/docstring.txt +++ b/docs/nodes/LOADERS/LOCAL_FILE_SYSTEM/LOCAL_FILE/a1-[autogen]/docstring.txt @@ -23,4 +23,3 @@ The LOCAL_FILE node loads a local file of a different type and converts it to a Image for file_type 'image'. Grayscale from file_type 'Grayscale'. DataFrame for file_type 'json', 'csv'. - DataFrame for file_type 'json', 'csv', 'excel', and 'xml'. diff --git a/docs/nodes/LOGIC_GATES/LOOPS/APPEND/a1-[autogen]/python_code.txt b/docs/nodes/LOGIC_GATES/LOOPS/APPEND/a1-[autogen]/python_code.txt index a7b4574ac3..8ac3b9fe5a 100644 --- a/docs/nodes/LOGIC_GATES/LOOPS/APPEND/a1-[autogen]/python_code.txt +++ b/docs/nodes/LOGIC_GATES/LOOPS/APPEND/a1-[autogen]/python_code.txt @@ -58,8 +58,9 @@ def APPEND( return Vector(v=v) else: - df0 = primary_dp.m - df1 = secondary_dp.m - - df = append(df0, df1, axis=0) - return DataFrame(df=df) + raise ValueError( + ( + "The APPEND node requires the two inputs to be the same type. " + f"The types passed were: {type(primary_dp)} and {type(secondary_dp)}" + ) + ) diff --git a/docs/nodes/TRANSFORMERS/SIGNAL_PROCESSING/IFFT/examples/EX1/app.json b/docs/nodes/TRANSFORMERS/SIGNAL_PROCESSING/IFFT/examples/EX1/app.json index 077a80bfba..1135651832 100644 --- a/docs/nodes/TRANSFORMERS/SIGNAL_PROCESSING/IFFT/examples/EX1/app.json +++ b/docs/nodes/TRANSFORMERS/SIGNAL_PROCESSING/IFFT/examples/EX1/app.json @@ -2,83 +2,66 @@ "rfInstance": { "nodes": [ { - "width": 208, - "height": 96, - "id": "LINSPACE-688e9d5d-5693-459e-8ae7-2dd2435355e2", - "type": "GENERATORS", + "width": 150, + "height": 150, + "id": "LINSPACE-eb9f6c8b-1208-4626-ab2c-4085ee112529", + "type": "default", "data": { - "id": "LINSPACE-688e9d5d-5693-459e-8ae7-2dd2435355e2", + "id": "LINSPACE-eb9f6c8b-1208-4626-ab2c-4085ee112529", "label": "LINSPACE", "func": "LINSPACE", - "type": "GENERATORS", + "type": "default", "ctrls": { "start": { "type": "float", "default": 10, - "desc": "The start point of the data.", - "overload": null, "functionName": "LINSPACE", "param": "start", - "value": 10 + "value": "0" }, "end": { "type": "float", "default": 0, - "desc": "The end point of the data.", - "overload": null, "functionName": "LINSPACE", "param": "end", - "value": 0 + "value": "0.75" }, "step": { "type": "int", "default": 1000, - "desc": "The number of points in the vector.", - "overload": null, "functionName": "LINSPACE", "param": "step", - "value": 1000 + "value": "600" } }, - "initCtrls": {}, - "inputs": [ - { - "name": "default", - "id": "default", - "type": "Vector|OrderedPair", - "multiple": false, - "desc": "Optional input in case LINSPACE is used in a loop. Not used." - } - ], "outputs": [ { "name": "default", "id": "default", - "type": "Vector", - "desc": "v: the vector between 'start' and 'end' with a 'step' number of points." + "type": "OrderedPair" } ], - "path": "GENERATORS/SIMULATIONS/LINSPACE/LINSPACE.py", + "path": "PYTHON/nodes/GENERATORS/SIMULATIONS/LINSPACE/LINSPACE.py", "selected": false }, "position": { - "x": -481.46188279413127, - "y": 7.555946322933295 + "x": 659.2411239313864, + "y": 277.0385130388363 }, "selected": false, "positionAbsolute": { - "x": -481.46188279413127, - "y": 7.555946322933295 + "x": 659.2411239313864, + "y": 277.0385130388363 }, "dragging": true }, { - "width": 208, - "height": 96, - "id": "SINE-eef7ed84-fff8-43ef-a721-141a14359320", + "width": 130, + "height": 130, + "id": "SINE-12238ccc-90fc-47f9-a679-50e628d4f156", "type": "GENERATORS", "data": { - "id": "SINE-eef7ed84-fff8-43ef-a721-141a14359320", + "id": "SINE-12238ccc-90fc-47f9-a679-50e628d4f156", "label": "SINE", "func": "SINE", "type": "GENERATORS", @@ -86,8 +69,6 @@ "amplitude": { "type": "float", "default": 1, - "desc": "The amplitude of the wave.", - "overload": null, "functionName": "SINE", "param": "amplitude", "value": 1 @@ -95,17 +76,13 @@ "frequency": { "type": "float", "default": 1, - "desc": "The wave frequency in radians/2pi.", - "overload": null, "functionName": "SINE", "param": "frequency", - "value": 1 + "value": "50" }, "offset": { "type": "float", "default": 0, - "desc": "The y axis offset of the function.", - "overload": null, "functionName": "SINE", "param": "offset", "value": 0 @@ -113,67 +90,60 @@ "phase": { "type": "float", "default": 0, - "desc": "The x axis offset of the function.", - "overload": null, "functionName": "SINE", "param": "phase", "value": 0 }, "waveform": { "type": "select", + "default": "sine", "options": [ "sine", "square", "triangle", "sawtooth" ], - "default": "sine", - "desc": "The waveform type of the wave.", - "overload": null, "functionName": "SINE", "param": "waveform", "value": "sine" } }, - "initCtrls": {}, "inputs": [ { "name": "default", "id": "default", - "type": "OrderedPair|Vector", - "multiple": false, - "desc": "Input that defines the x-axis values of the function and output." + "type": "OrderedPair", + "multiple": false } ], "outputs": [ { "name": "default", "id": "default", - "type": "OrderedPair", - "desc": "x: the input v or x values\ny: the resulting sine function" + "type": "OrderedPair" } ], - "path": "GENERATORS/SIMULATIONS/SINE/SINE.py", + "path": "PYTHON/nodes/GENERATORS/SIMULATIONS/SINE/SINE.py", "selected": false }, "position": { - "x": -143.45794672491223, - "y": -192.40136881278335 + "x": 966.6153929478581, + "y": 155.08348117188388 }, "selected": false, "positionAbsolute": { - "x": -143.45794672491223, - "y": -192.40136881278335 + "x": 966.6153929478581, + "y": 155.08348117188388 }, "dragging": true }, { - "width": 208, - "height": 96, - "id": "SINE-eaa2e65c-4273-486b-b38c-a0bbab96c785", + "width": 130, + "height": 130, + "id": "SINE-5569968e-4541-4ce2-88ad-ab72600b2f97", "type": "GENERATORS", "data": { - "id": "SINE-eaa2e65c-4273-486b-b38c-a0bbab96c785", + "id": "SINE-5569968e-4541-4ce2-88ad-ab72600b2f97", "label": "SINE 1", "func": "SINE", "type": "GENERATORS", @@ -181,26 +151,20 @@ "amplitude": { "type": "float", "default": 1, - "desc": "The amplitude of the wave.", - "overload": null, "functionName": "SINE", "param": "amplitude", - "value": 1 + "value": "0.5" }, "frequency": { "type": "float", "default": 1, - "desc": "The wave frequency in radians/2pi.", - "overload": null, "functionName": "SINE", "param": "frequency", - "value": 5 + "value": "80" }, "offset": { "type": "float", "default": 0, - "desc": "The y axis offset of the function.", - "overload": null, "functionName": "SINE", "param": "offset", "value": 0 @@ -208,125 +172,162 @@ "phase": { "type": "float", "default": 0, - "desc": "The x axis offset of the function.", - "overload": null, "functionName": "SINE", "param": "phase", "value": 0 }, "waveform": { "type": "select", + "default": "sine", "options": [ "sine", "square", "triangle", "sawtooth" ], - "default": "sine", - "desc": "The waveform type of the wave.", - "overload": null, "functionName": "SINE", "param": "waveform", "value": "sine" } }, - "initCtrls": {}, "inputs": [ { "name": "default", "id": "default", - "type": "OrderedPair|Vector", - "multiple": false, - "desc": "Input that defines the x-axis values of the function and output." + "type": "OrderedPair", + "multiple": false } ], "outputs": [ { "name": "default", "id": "default", - "type": "OrderedPair", - "desc": "x: the input v or x values\ny: the resulting sine function" + "type": "OrderedPair" } ], - "path": "GENERATORS/SIMULATIONS/SINE/SINE.py", + "path": "PYTHON/nodes/GENERATORS/SIMULATIONS/SINE/SINE.py", "selected": false }, "position": { - "x": -151.39793934107087, - "y": 172.50901971737648 + "x": 976.5177254541807, + "y": 461.56436690031467 }, "selected": false, "positionAbsolute": { - "x": -151.39793934107087, - "y": 172.50901971737648 + "x": 976.5177254541807, + "y": 461.56436690031467 }, "dragging": true }, { - "width": 72, - "height": 72, - "id": "ADD-be8487e2-f7d9-4bc0-81ff-05e2eb157343", + "width": 99, + "height": 130, + "id": "ADD-82417b86-8493-4cdc-867b-21e962e7ad69", "type": "ARITHMETIC", "data": { - "id": "ADD-be8487e2-f7d9-4bc0-81ff-05e2eb157343", + "id": "ADD-82417b86-8493-4cdc-867b-21e962e7ad69", "label": "ADD", "func": "ADD", "type": "ARITHMETIC", "ctrls": {}, - "initCtrls": {}, "inputs": [ { "name": "a", "id": "a", - "type": "OrderedPair|Scalar|Vector", - "multiple": false, - "desc": "The input a use to compute the sum of a and b." + "type": "OrderedPair", + "multiple": false }, { "name": "b", "id": "b", - "type": "OrderedPair|Scalar|Vector", - "multiple": true, - "desc": "The input b use to compute the sum of a and b." + "type": "OrderedPair", + "multiple": true } ], "outputs": [ { "name": "default", "id": "default", - "type": "OrderedPair|Scalar|Vector", - "desc": "OrderedPair if a is an OrderedPair.\nx: the x-axis of input a.\ny: the sum of input a and input b.\n\nScalar if a is a Scalar.\nc: the sum of input a and input b.\n\nVector if a is a Vector.\nv: the sum of input a and input b." + "type": "OrderedPair" } ], - "path": "TRANSFORMERS/ARITHMETIC/ADD/ADD.py", + "path": "PYTHON/nodes/TRANSFORMERS/ARITHMETIC/ADD/ADD.py", "selected": false }, "position": { - "x": 226.46256870136506, - "y": -9.434062344733775 + "x": 1245.6568513725451, + "y": 268.7960720927382 }, "selected": false, "positionAbsolute": { - "x": 226.46256870136506, - "y": -9.434062344733775 + "x": 1245.6568513725451, + "y": 268.7960720927382 }, "dragging": true }, { - "width": 160, - "height": 160, - "id": "FFT-c4c35637-7e14-429c-bc35-05ce3b9e3ead", + "width": 150, + "height": 150, + "id": "IFFT-d72d7f91-82ce-4591-991b-fe72f96c6cb4", "type": "TRANSFORMERS", "data": { - "id": "FFT-c4c35637-7e14-429c-bc35-05ce3b9e3ead", + "id": "IFFT-d72d7f91-82ce-4591-991b-fe72f96c6cb4", + "label": "IFFT", + "func": "IFFT", + "type": "TRANSFORMERS", + "ctrls": { + "real_signal": { + "type": "bool", + "default": true, + "functionName": "IFFT", + "param": "real_signal", + "value": false + } + }, + "inputs": [ + { + "name": "default", + "id": "default", + "type": "DataFrame", + "multiple": false + } + ], + "outputs": [ + { + "name": "default", + "id": "default", + "type": "OrderedPair" + } + ], + "path": "PYTHON/nodes/TRANSFORMERS/SIGNAL_PROCESSING/IFFT/IFFT.py", + "selected": false + }, + "position": { + "x": 1793.8922242783192, + "y": 259.52225362918335 + }, + "selected": false, + "positionAbsolute": { + "x": 1793.8922242783192, + "y": 259.52225362918335 + }, + "dragging": true + }, + { + "width": 150, + "height": 150, + "id": "FFT-44f7c803-706f-469a-8c6f-bab3b3dea659", + "type": "TRANSFORMERS", + "data": { + "id": "FFT-44f7c803-706f-469a-8c6f-bab3b3dea659", "label": "FFT", "func": "FFT", "type": "TRANSFORMERS", "ctrls": { "window": { "type": "select", + "default": "hann", "options": [ - "none", "boxcar", "triang", "blackman", @@ -345,9 +346,6 @@ "taylor", "lanczos" ], - "default": "hann", - "desc": "the node will apply a window to the signal to avoid spectral leakage", - "overload": null, "functionName": "FFT", "param": "window", "value": "hann" @@ -355,78 +353,69 @@ "real_signal": { "type": "bool", "default": true, - "desc": "whether the input signal is real or complex", - "overload": null, "functionName": "FFT", "param": "real_signal", - "value": true + "value": false }, "sample_rate": { "type": "int", "default": 1, - "desc": "the sample rate of the signal, defaults to 1", - "overload": null, "functionName": "FFT", "param": "sample_rate", - "value": 1 + "value": "800" }, "display": { "type": "bool", "default": true, - "desc": "whether the output would be graphed, set to false for pure data and true for data that is more suitable to be graphed", - "overload": null, "functionName": "FFT", "param": "display", "value": false } }, - "initCtrls": {}, "inputs": [ { "name": "default", "id": "default", "type": "OrderedPair", - "multiple": false, - "desc": "The data to apply FFT to." + "multiple": false } ], "outputs": [ { "name": "default", "id": "default", - "type": "OrderedPair|DataFrame", - "desc": "x: frequency\ny: spectrum of the signal" + "type": "OrderedPair|DataFrame" } ], - "path": "TRANSFORMERS/SIGNAL_PROCESSING/FFT/FFT.py", + "path": "PYTHON/nodes/TRANSFORMERS/SIGNAL_PROCESSING/FFT/FFT.py", "selected": false }, "position": { - "x": 507.52085138760117, - "y": 47.901771921899524 + "x": 1464.2878556534379, + "y": 261.0235491472342 }, "selected": false, "positionAbsolute": { - "x": 507.52085138760117, - "y": 47.901771921899524 + "x": 1464.2878556534379, + "y": 261.0235491472342 }, "dragging": true }, { - "width": 160, - "height": 160, - "id": "FFT-e321c6d0-5904-4038-8688-f6766d282202", + "width": 150, + "height": 150, + "id": "FFT-db612181-529c-4e66-924e-fa820d90f450", "type": "TRANSFORMERS", "data": { - "id": "FFT-e321c6d0-5904-4038-8688-f6766d282202", + "id": "FFT-db612181-529c-4e66-924e-fa820d90f450", "label": "FFT 1", "func": "FFT", "type": "TRANSFORMERS", "ctrls": { "window": { "type": "select", + "default": "hann", "options": [ - "none", "boxcar", "triang", "blackman", @@ -445,9 +434,6 @@ "taylor", "lanczos" ], - "default": "hann", - "desc": "the node will apply a window to the signal to avoid spectral leakage", - "overload": null, "functionName": "FFT", "param": "window", "value": "hann" @@ -455,8 +441,6 @@ "real_signal": { "type": "bool", "default": true, - "desc": "whether the input signal is real or complex", - "overload": null, "functionName": "FFT", "param": "real_signal", "value": true @@ -464,314 +448,263 @@ "sample_rate": { "type": "int", "default": 1, - "desc": "the sample rate of the signal, defaults to 1", - "overload": null, "functionName": "FFT", "param": "sample_rate", - "value": 100 + "value": "800" }, "display": { "type": "bool", "default": true, - "desc": "whether the output would be graphed, set to false for pure data and true for data that is more suitable to be graphed", - "overload": null, "functionName": "FFT", "param": "display", "value": true } }, - "initCtrls": {}, "inputs": [ { "name": "default", "id": "default", "type": "OrderedPair", - "multiple": false, - "desc": "The data to apply FFT to." - } - ], - "outputs": [ - { - "name": "default", - "id": "default", - "type": "OrderedPair|DataFrame", - "desc": "x: frequency\ny: spectrum of the signal" - } - ], - "path": "TRANSFORMERS/SIGNAL_PROCESSING/FFT/FFT.py", - "selected": false - }, - "position": { - "x": 506.2595204192054, - "y": -243.95048385514394 - }, - "selected": false, - "positionAbsolute": { - "x": 506.2595204192054, - "y": -243.95048385514394 - }, - "dragging": true - }, - { - "width": 160, - "height": 160, - "id": "IFFT-4dd29aaa-d28a-45f9-b7d0-19aaf123dac4", - "type": "TRANSFORMERS", - "data": { - "id": "IFFT-4dd29aaa-d28a-45f9-b7d0-19aaf123dac4", - "label": "IFFT", - "func": "IFFT", - "type": "TRANSFORMERS", - "ctrls": { - "real_signal": { - "type": "bool", - "default": true, - "desc": "whether the input signal is real (true) or complex (false)", - "overload": null, - "functionName": "IFFT", - "param": "real_signal", - "value": false - } - }, - "initCtrls": {}, - "inputs": [ - { - "name": "default", - "id": "default", - "type": "DataFrame", - "multiple": false, - "desc": "The data to apply inverse FFT to." + "multiple": false } ], "outputs": [ { "name": "default", "id": "default", - "type": "OrderedPair", - "desc": "x = time\ny = reconstructed signal" + "type": "OrderedPair|DataFrame" } ], - "path": "TRANSFORMERS/SIGNAL_PROCESSING/IFFT/IFFT.py", + "path": "PYTHON/nodes/TRANSFORMERS/SIGNAL_PROCESSING/FFT/FFT.py", "selected": false }, "position": { - "x": 788.4133726338497, - "y": 52.16343597626485 + "x": 1484.7537327043515, + "y": 3.2160607945140214 }, "selected": false, "positionAbsolute": { - "x": 788.4133726338497, - "y": 52.16343597626485 + "x": 1484.7537327043515, + "y": 3.2160607945140214 }, "dragging": true }, { - "width": 380, - "height": 293, - "id": "LINE-4eadb2b2-adbc-4850-8ec4-2ec91fc18657", + "width": 225, + "height": 226, + "id": "LINE-eff15f6c-5cae-4dc5-afcf-595347396018", "type": "VISUALIZERS", "data": { - "id": "LINE-4eadb2b2-adbc-4850-8ec4-2ec91fc18657", + "id": "LINE-eff15f6c-5cae-4dc5-afcf-595347396018", "label": "LINE", "func": "LINE", "type": "VISUALIZERS", "ctrls": {}, - "initCtrls": {}, "inputs": [ { "name": "default", "id": "default", - "type": "OrderedPair|DataFrame|Matrix|Vector", - "multiple": false, - "desc": "the DataContainer to be visualized" + "type": "OrderedPair|DataFrame|Matrix", + "multiple": false } ], "outputs": [ { "name": "default", "id": "default", - "type": "Plotly", - "desc": "the DataContainer containing the Plotly Line visualization of the input data" + "type": "Plotly" } ], - "path": "VISUALIZERS/PLOTLY/LINE/LINE.py", + "path": "PYTHON/nodes/VISUALIZERS/PLOTLY/LINE/LINE.py", "selected": false }, "position": { - "x": 480.1093506633156, - "y": 308.2498639439158 + "x": 1403.243110386921, + "y": 502.7598748760134 }, "selected": false, "positionAbsolute": { - "x": 480.1093506633156, - "y": 308.2498639439158 + "x": 1403.243110386921, + "y": 502.7598748760134 }, "dragging": true }, { - "width": 380, - "height": 293, - "id": "LINE-d8df1a6c-d5c5-4185-a79d-8c9d79af28b5", + "width": 225, + "height": 226, + "id": "LINE-e08d8338-6374-4f4d-8477-775f633ebe6d", "type": "VISUALIZERS", "data": { - "id": "LINE-d8df1a6c-d5c5-4185-a79d-8c9d79af28b5", + "id": "LINE-e08d8338-6374-4f4d-8477-775f633ebe6d", "label": "LINE 1", "func": "LINE", "type": "VISUALIZERS", "ctrls": {}, - "initCtrls": {}, "inputs": [ { "name": "default", "id": "default", - "type": "OrderedPair|DataFrame|Matrix|Vector", - "multiple": false, - "desc": "the DataContainer to be visualized" + "type": "OrderedPair|DataFrame|Matrix", + "multiple": false } ], "outputs": [ { "name": "default", "id": "default", - "type": "Plotly", - "desc": "the DataContainer containing the Plotly Line visualization of the input data" + "type": "Plotly" } ], - "path": "VISUALIZERS/PLOTLY/LINE/LINE.py", + "path": "PYTHON/nodes/VISUALIZERS/PLOTLY/LINE/LINE.py", "selected": false }, "position": { - "x": 1093.298043331849, - "y": 21.702705256949457 + "x": 1814.1043615213298, + "y": -47.270850465781166 }, "selected": false, "positionAbsolute": { - "x": 1093.298043331849, - "y": 21.702705256949457 + "x": 1814.1043615213298, + "y": -47.270850465781166 }, "dragging": true }, { - "width": 380, - "height": 293, - "id": "LINE-1e8012f3-11d6-4985-8a74-6cdb9230d9dd", + "width": 225, + "height": 226, + "id": "LINE-bcc4b83a-9f6e-4444-ab14-b993716503ed", "type": "VISUALIZERS", "data": { - "id": "LINE-1e8012f3-11d6-4985-8a74-6cdb9230d9dd", + "id": "LINE-bcc4b83a-9f6e-4444-ab14-b993716503ed", "label": "LINE 2", "func": "LINE", "type": "VISUALIZERS", "ctrls": {}, - "initCtrls": {}, "inputs": [ { "name": "default", "id": "default", - "type": "OrderedPair|DataFrame|Matrix|Vector", - "multiple": false, - "desc": "the DataContainer to be visualized" + "type": "OrderedPair|DataFrame|Matrix", + "multiple": false } ], "outputs": [ { "name": "default", "id": "default", - "type": "Plotly", - "desc": "the DataContainer containing the Plotly Line visualization of the input data" + "type": "Plotly" } ], - "path": "VISUALIZERS/PLOTLY/LINE/LINE.py", + "path": "PYTHON/nodes/VISUALIZERS/PLOTLY/LINE/LINE.py", "selected": false }, "position": { - "x": 828.293803822491, - "y": -300.76979025425135 + "x": 2112.172067313177, + "y": 474.1261265472838 }, "selected": false, "positionAbsolute": { - "x": 828.293803822491, - "y": -300.76979025425135 + "x": 2112.172067313177, + "y": 474.1261265472838 }, "dragging": true } ], "edges": [ { - "source": "LINSPACE-688e9d5d-5693-459e-8ae7-2dd2435355e2", + "source": "LINSPACE-eb9f6c8b-1208-4626-ab2c-4085ee112529", "sourceHandle": "default", - "target": "SINE-eef7ed84-fff8-43ef-a721-141a14359320", + "target": "SINE-12238ccc-90fc-47f9-a679-50e628d4f156", "targetHandle": "default", - "id": "reactflow__edge-LINSPACE-688e9d5d-5693-459e-8ae7-2dd2435355e2default-SINE-eef7ed84-fff8-43ef-a721-141a14359320default" + "id": "reactflow__edge-LINSPACE-eb9f6c8b-1208-4626-ab2c-4085ee112529default-SINE-12238ccc-90fc-47f9-a679-50e628d4f156default" }, { - "source": "LINSPACE-688e9d5d-5693-459e-8ae7-2dd2435355e2", + "source": "LINSPACE-eb9f6c8b-1208-4626-ab2c-4085ee112529", "sourceHandle": "default", - "target": "SINE-eaa2e65c-4273-486b-b38c-a0bbab96c785", + "target": "SINE-5569968e-4541-4ce2-88ad-ab72600b2f97", "targetHandle": "default", - "id": "reactflow__edge-LINSPACE-688e9d5d-5693-459e-8ae7-2dd2435355e2default-SINE-eaa2e65c-4273-486b-b38c-a0bbab96c785default" + "id": "reactflow__edge-LINSPACE-eb9f6c8b-1208-4626-ab2c-4085ee112529default-SINE-5569968e-4541-4ce2-88ad-ab72600b2f97default" }, { - "source": "SINE-eef7ed84-fff8-43ef-a721-141a14359320", + "source": "SINE-12238ccc-90fc-47f9-a679-50e628d4f156", "sourceHandle": "default", - "target": "ADD-be8487e2-f7d9-4bc0-81ff-05e2eb157343", + "target": "ADD-82417b86-8493-4cdc-867b-21e962e7ad69", "targetHandle": "a", - "id": "reactflow__edge-SINE-eef7ed84-fff8-43ef-a721-141a14359320default-ADD-be8487e2-f7d9-4bc0-81ff-05e2eb157343a" + "id": "reactflow__edge-SINE-12238ccc-90fc-47f9-a679-50e628d4f156default-ADD-82417b86-8493-4cdc-867b-21e962e7ad69a" }, { - "source": "SINE-eaa2e65c-4273-486b-b38c-a0bbab96c785", + "source": "SINE-5569968e-4541-4ce2-88ad-ab72600b2f97", "sourceHandle": "default", - "target": "ADD-be8487e2-f7d9-4bc0-81ff-05e2eb157343", + "target": "ADD-82417b86-8493-4cdc-867b-21e962e7ad69", "targetHandle": "b", - "id": "reactflow__edge-SINE-eaa2e65c-4273-486b-b38c-a0bbab96c785default-ADD-be8487e2-f7d9-4bc0-81ff-05e2eb157343b" + "id": "reactflow__edge-SINE-5569968e-4541-4ce2-88ad-ab72600b2f97default-ADD-82417b86-8493-4cdc-867b-21e962e7ad69b" }, { - "source": "ADD-be8487e2-f7d9-4bc0-81ff-05e2eb157343", + "source": "ADD-82417b86-8493-4cdc-867b-21e962e7ad69", "sourceHandle": "default", - "target": "FFT-e321c6d0-5904-4038-8688-f6766d282202", + "target": "FFT-44f7c803-706f-469a-8c6f-bab3b3dea659", "targetHandle": "default", - "id": "reactflow__edge-ADD-be8487e2-f7d9-4bc0-81ff-05e2eb157343default-FFT-e321c6d0-5904-4038-8688-f6766d282202default" + "id": "reactflow__edge-ADD-82417b86-8493-4cdc-867b-21e962e7ad69default-FFT-44f7c803-706f-469a-8c6f-bab3b3dea659default" }, { - "source": "ADD-be8487e2-f7d9-4bc0-81ff-05e2eb157343", + "source": "FFT-44f7c803-706f-469a-8c6f-bab3b3dea659", "sourceHandle": "default", - "target": "FFT-c4c35637-7e14-429c-bc35-05ce3b9e3ead", + "target": "IFFT-d72d7f91-82ce-4591-991b-fe72f96c6cb4", "targetHandle": "default", - "id": "reactflow__edge-ADD-be8487e2-f7d9-4bc0-81ff-05e2eb157343default-FFT-c4c35637-7e14-429c-bc35-05ce3b9e3eaddefault" + "id": "reactflow__edge-FFT-44f7c803-706f-469a-8c6f-bab3b3dea659default-IFFT-d72d7f91-82ce-4591-991b-fe72f96c6cb4default" }, { - "source": "ADD-be8487e2-f7d9-4bc0-81ff-05e2eb157343", + "source": "ADD-82417b86-8493-4cdc-867b-21e962e7ad69", "sourceHandle": "default", - "target": "LINE-4eadb2b2-adbc-4850-8ec4-2ec91fc18657", + "target": "FFT-db612181-529c-4e66-924e-fa820d90f450", "targetHandle": "default", - "id": "reactflow__edge-ADD-be8487e2-f7d9-4bc0-81ff-05e2eb157343default-LINE-4eadb2b2-adbc-4850-8ec4-2ec91fc18657default" + "id": "reactflow__edge-ADD-82417b86-8493-4cdc-867b-21e962e7ad69default-FFT-db612181-529c-4e66-924e-fa820d90f450default" }, { - "source": "FFT-c4c35637-7e14-429c-bc35-05ce3b9e3ead", + "source": "IFFT-d72d7f91-82ce-4591-991b-fe72f96c6cb4", "sourceHandle": "default", - "target": "IFFT-4dd29aaa-d28a-45f9-b7d0-19aaf123dac4", + "target": "LINE-bcc4b83a-9f6e-4444-ab14-b993716503ed", "targetHandle": "default", - "id": "reactflow__edge-FFT-c4c35637-7e14-429c-bc35-05ce3b9e3eaddefault-IFFT-4dd29aaa-d28a-45f9-b7d0-19aaf123dac4default" + "id": "reactflow__edge-IFFT-d72d7f91-82ce-4591-991b-fe72f96c6cb4default-LINE-bcc4b83a-9f6e-4444-ab14-b993716503eddefault" }, { - "source": "IFFT-4dd29aaa-d28a-45f9-b7d0-19aaf123dac4", + "source": "FFT-db612181-529c-4e66-924e-fa820d90f450", "sourceHandle": "default", - "target": "LINE-d8df1a6c-d5c5-4185-a79d-8c9d79af28b5", + "target": "LINE-e08d8338-6374-4f4d-8477-775f633ebe6d", "targetHandle": "default", - "id": "reactflow__edge-IFFT-4dd29aaa-d28a-45f9-b7d0-19aaf123dac4default-LINE-d8df1a6c-d5c5-4185-a79d-8c9d79af28b5default", - "selected": false + "id": "reactflow__edge-FFT-db612181-529c-4e66-924e-fa820d90f450default-LINE-e08d8338-6374-4f4d-8477-775f633ebe6ddefault" }, { - "source": "FFT-e321c6d0-5904-4038-8688-f6766d282202", + "source": "ADD-82417b86-8493-4cdc-867b-21e962e7ad69", "sourceHandle": "default", - "target": "LINE-1e8012f3-11d6-4985-8a74-6cdb9230d9dd", + "target": "LINE-eff15f6c-5cae-4dc5-afcf-595347396018", "targetHandle": "default", - "id": "reactflow__edge-FFT-e321c6d0-5904-4038-8688-f6766d282202default-LINE-1e8012f3-11d6-4985-8a74-6cdb9230d9dddefault" + "id": "reactflow__edge-ADD-82417b86-8493-4cdc-867b-21e962e7ad69default-LINE-eff15f6c-5cae-4dc5-afcf-595347396018default" } ], "viewport": { - "x": 1139.470292881633, - "y": 572.2854272048312, - "zoom": 1.2136444284334926 + "x": -373.4542219202399, + "y": 120.20973884288571, + "zoom": 1.101977389476256 + } + }, + "ctrlsManifest": [ + { + "type": "input", + "name": "Slider", + "id": "INPUT_PLACEHOLDER", + "hidden": false, + "minHeight": 1, + "minWidth": 2, + "layout": { + "x": 0, + "y": 0, + "h": 2, + "w": 2, + "minH": 1, + "minW": 2, + "i": "INPUT_PLACEHOLDER" + } } - } -} + ] +} \ No newline at end of file diff --git a/nodeSidebar.json b/nodeSidebar.json index 6b4da632bc..eb40cc36ba 100644 --- a/nodeSidebar.json +++ b/nodeSidebar.json @@ -33,12 +33,14 @@ "nodes/GENERATORS/SIMULATIONS/FEEDBACK/FEEDBACK", "nodes/GENERATORS/SIMULATIONS/LINSPACE/LINSPACE", "nodes/GENERATORS/SIMULATIONS/MATRIX/MATRIX", + "nodes/GENERATORS/SIMULATIONS/POPULATE/POPULATE", "nodes/GENERATORS/SIMULATIONS/RAND/RAND", "nodes/GENERATORS/SIMULATIONS/SCALAR/SCALAR", "nodes/GENERATORS/SIMULATIONS/SECOND_ORDER_SYSTEM/SECOND_ORDER_SYSTEM", "nodes/GENERATORS/SIMULATIONS/SINE/SINE", "nodes/GENERATORS/SIMULATIONS/TEXT/TEXT", "nodes/GENERATORS/SIMULATIONS/TIMESERIES/TIMESERIES", + "nodes/GENERATORS/SIMULATIONS/UNIX_TIMESTAMP/UNIX_TIMESTAMP", "nodes/GENERATORS/SIMULATIONS/WAVEPACKET/WAVEPACKET" ], "Data > Generate > Synthetic Data > DATAFRAMES": [ @@ -186,7 +188,9 @@ ], "I/O > Protocols": [ "nodes/IO/PROTOCOLS/CAN/CAN", - "nodes/IO/PROTOCOLS/SCPI/SCPI", + "nodes/IO/PROTOCOLS/SCPI/IDN/IDN", + "nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/MEASURE_VOLTAGE", + "nodes/IO/PROTOCOLS/SERIAL/BASIC/OPEN_SERIAL/OPEN_SERIAL", "nodes/IO/PROTOCOLS/SERIAL/BASIC/SERIAL_SINGLE_MEASUREMENT/SERIAL_SINGLE_MEASUREMENT", "nodes/IO/PROTOCOLS/SERIAL/BASIC/SERIAL_TIMESERIES/SERIAL_TIMESERIES", "nodes/IO/PROTOCOLS/SERIAL/BASIC/SINGLE_MEASUREMENT/SINGLE_MEASUREMENT", From 324b133964deb6ca975a765b86832859f7e4c2d6 Mon Sep 17 00:00:00 2001 From: jackparmer Date: Tue, 3 Oct 2023 04:08:39 +0000 Subject: [PATCH 2/4] update: Merge branch 'SCPI-nodes' of https://github.com/flojoy-ai/nodes into SCPI-nodes --- .../SCPI/IDN/a1-[autogen]/python_code.txt | 13 ++++++------- .../a1-[autogen]/python_code.txt | 17 ++++++++++------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/docs/nodes/IO/PROTOCOLS/SCPI/IDN/a1-[autogen]/python_code.txt b/docs/nodes/IO/PROTOCOLS/SCPI/IDN/a1-[autogen]/python_code.txt index 57600a9658..9c49951fa5 100644 --- a/docs/nodes/IO/PROTOCOLS/SCPI/IDN/a1-[autogen]/python_code.txt +++ b/docs/nodes/IO/PROTOCOLS/SCPI/IDN/a1-[autogen]/python_code.txt @@ -2,18 +2,17 @@ import serial from flojoy import flojoy, SerialConnection, TextBlob from typing import cast, Optional + @flojoy(deps={"pyserial": "3.5"}, inject_connection=True) -def IDN( - connection: SerialConnection, default: Optional[TextBlob] = None -) -> TextBlob: - +def IDN(connection: SerialConnection, default: Optional[TextBlob] = None) -> TextBlob: + # Start serial communication with the instrument ser = cast(serial.Serial, connection.get_handle()) if ser is None: raise ValueError("Serial communication is not open") - - ser.write('*IDN?\n'.encode()) - return TextBlob(text_blob=ser.readline().decode()) \ No newline at end of file + ser.write("*IDN?\n".encode()) + + return TextBlob(text_blob=ser.readline().decode()) diff --git a/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/a1-[autogen]/python_code.txt b/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/a1-[autogen]/python_code.txt index 043e7e4903..c31657b694 100644 --- a/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/a1-[autogen]/python_code.txt +++ b/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/a1-[autogen]/python_code.txt @@ -3,28 +3,31 @@ import traceback from flojoy import flojoy, SerialConnection, TextBlob, Scalar from typing import cast, Optional + @flojoy(deps={"pyserial": "3.5"}, inject_connection=True) def MEASURE_VOLTAGE( connection: SerialConnection, default: Optional[TextBlob] = None ) -> Scalar | TextBlob: - + # Start serial communication with the instrument ser = cast(serial.Serial, connection.get_handle()) if ser is None: raise ValueError("Serial communication is not open") - - CMD = 'MEASURE:VOLTAGE:DC?\n\r' - + + CMD = "MEASURE:VOLTAGE:DC?\n\r" + ser.write(CMD.encode()) resp = ser.readline().decode() try: - resp = float(resp.rstrip('\n')) + resp = float(resp.rstrip("\n")) except: - print('Could not convert instrument response to a float', traceback.format_exc()) + print( + "Could not convert instrument response to a float", traceback.format_exc() + ) return TextBlob(resp) - + return Scalar(resp) From c1c8779196e4f321ef3c02b26d5b3a4e72322909 Mon Sep 17 00:00:00 2001 From: jackparmer Date: Tue, 3 Oct 2023 18:13:39 +0000 Subject: [PATCH 3/4] update: Update IDN.py --- docs/nodes/IO/PROTOCOLS/SCPI/IDN/a1-[autogen]/docstring.txt | 4 ++-- docs/nodes/IO/PROTOCOLS/SCPI/IDN/a1-[autogen]/python_code.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/nodes/IO/PROTOCOLS/SCPI/IDN/a1-[autogen]/docstring.txt b/docs/nodes/IO/PROTOCOLS/SCPI/IDN/a1-[autogen]/docstring.txt index 803a6fd65a..8acb6346fe 100644 --- a/docs/nodes/IO/PROTOCOLS/SCPI/IDN/a1-[autogen]/docstring.txt +++ b/docs/nodes/IO/PROTOCOLS/SCPI/IDN/a1-[autogen]/docstring.txt @@ -2,8 +2,8 @@ The IDN node queries a device's identity through the universal *IDN? SCPI comman Inputs ------ - default: TextBlob - A dummy TextBlob DataContainer - likely connected to the output of the OPEN_SERIAL node. This dummy input is intended to connect to the OPEN_SERIAL output to ensure that OPEN_SERIAL is executed first. + default: DataContainer + Any DataContainer - likely connected to the output of the OPEN_SERIAL node. Parameters ---------- diff --git a/docs/nodes/IO/PROTOCOLS/SCPI/IDN/a1-[autogen]/python_code.txt b/docs/nodes/IO/PROTOCOLS/SCPI/IDN/a1-[autogen]/python_code.txt index 9c49951fa5..82925b4f1e 100644 --- a/docs/nodes/IO/PROTOCOLS/SCPI/IDN/a1-[autogen]/python_code.txt +++ b/docs/nodes/IO/PROTOCOLS/SCPI/IDN/a1-[autogen]/python_code.txt @@ -4,7 +4,7 @@ from typing import cast, Optional @flojoy(deps={"pyserial": "3.5"}, inject_connection=True) -def IDN(connection: SerialConnection, default: Optional[TextBlob] = None) -> TextBlob: +def IDN(connection: SerialConnection, default: Optional[DataContainer] = None) -> TextBlob: # Start serial communication with the instrument From 7f5b824d27e580ed4a95b0e2ac751bbe4646654b Mon Sep 17 00:00:00 2001 From: jackparmer Date: Tue, 3 Oct 2023 18:14:27 +0000 Subject: [PATCH 4/4] update: Update MEASURE_VOLTAGE.py --- .../PROTOCOLS/SCPI/MEASURE_VOLTAGE/a1-[autogen]/docstring.txt | 4 ++-- .../SCPI/MEASURE_VOLTAGE/a1-[autogen]/python_code.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/a1-[autogen]/docstring.txt b/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/a1-[autogen]/docstring.txt index ef9d26a33f..e3ac7be820 100644 --- a/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/a1-[autogen]/docstring.txt +++ b/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/a1-[autogen]/docstring.txt @@ -2,8 +2,8 @@ The MEASURE_VOLTAGE node queries an instrument's measured output voltage, such a Inputs ------ - default: TextBlob - A dummy TextBlob DataContainer - likely connected to the output of the OPEN_SERIAL node. This dummy input is intended to connect to the OPEN_SERIAL output to ensure that OPEN_SERIAL is executed first. + default: DataContainer + Any DataContainer - likely connected to the output of the OPEN_SERIAL node. Parameters ---------- diff --git a/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/a1-[autogen]/python_code.txt b/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/a1-[autogen]/python_code.txt index c31657b694..e1e1d59927 100644 --- a/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/a1-[autogen]/python_code.txt +++ b/docs/nodes/IO/PROTOCOLS/SCPI/MEASURE_VOLTAGE/a1-[autogen]/python_code.txt @@ -6,7 +6,7 @@ from typing import cast, Optional @flojoy(deps={"pyserial": "3.5"}, inject_connection=True) def MEASURE_VOLTAGE( - connection: SerialConnection, default: Optional[TextBlob] = None + connection: SerialConnection, default: Optional[DataContainer] = None ) -> Scalar | TextBlob: