zaber-motion 7.13.0__py3-none-win32.whl → 7.14.0__py3-none-win32.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- zaber_motion/__init__.py +103 -103
- zaber_motion/ascii/__init__.py +73 -73
- zaber_motion/ascii/all_axes.py +352 -352
- zaber_motion/ascii/axis.py +1673 -1673
- zaber_motion/ascii/axis_group.py +391 -391
- zaber_motion/ascii/axis_settings.py +752 -752
- zaber_motion/ascii/connection.py +1174 -1174
- zaber_motion/ascii/device.py +908 -908
- zaber_motion/ascii/device_io.py +1170 -1170
- zaber_motion/ascii/device_settings.py +735 -735
- zaber_motion/ascii/lockstep.py +1184 -1184
- zaber_motion/ascii/oscilloscope.py +635 -635
- zaber_motion/ascii/oscilloscope_data.py +240 -240
- zaber_motion/ascii/pvt.py +105 -105
- zaber_motion/ascii/pvt_buffer.py +146 -146
- zaber_motion/ascii/pvt_io.py +630 -630
- zaber_motion/ascii/pvt_sequence.py +1530 -1530
- zaber_motion/ascii/servo_tuner.py +637 -637
- zaber_motion/ascii/setting_constants.py +1755 -1755
- zaber_motion/ascii/storage.py +905 -905
- zaber_motion/ascii/stream.py +2182 -2182
- zaber_motion/ascii/stream_buffer.py +101 -101
- zaber_motion/ascii/stream_io.py +700 -700
- zaber_motion/ascii/streams.py +105 -105
- zaber_motion/ascii/transport.py +202 -202
- zaber_motion/ascii/trigger.py +886 -886
- zaber_motion/ascii/triggers.py +241 -241
- zaber_motion/ascii/warning_flags.py +178 -178
- zaber_motion/ascii/warnings.py +152 -152
- zaber_motion/async_utils.py +46 -46
- zaber_motion/binary/__init__.py +14 -14
- zaber_motion/binary/connection.py +648 -648
- zaber_motion/binary/device.py +924 -924
- zaber_motion/binary/device_settings.py +121 -121
- zaber_motion/bindings.py +50 -50
- zaber_motion/call.py +198 -198
- zaber_motion/convert_exception.py +138 -138
- zaber_motion/dto/__init__.py +11 -11
- zaber_motion/dto/ascii/__init__.py +46 -46
- zaber_motion/dto/ascii/alert_event.py +110 -110
- zaber_motion/dto/ascii/axis_identity.py +134 -134
- zaber_motion/dto/ascii/axis_type.py +14 -14
- zaber_motion/dto/ascii/can_set_state_axis_response.py +69 -69
- zaber_motion/dto/ascii/can_set_state_device_response.py +75 -75
- zaber_motion/dto/ascii/conversion_factor.py +81 -81
- zaber_motion/dto/ascii/device_identity.py +136 -136
- zaber_motion/dto/ascii/device_io_info.py +108 -108
- zaber_motion/dto/ascii/digital_output_action.py +13 -13
- zaber_motion/dto/ascii/get_axis_setting.py +64 -64
- zaber_motion/dto/ascii/get_axis_setting_result.py +81 -81
- zaber_motion/dto/ascii/get_setting.py +88 -88
- zaber_motion/dto/ascii/get_setting_result.py +87 -87
- zaber_motion/dto/ascii/io_port_label.py +84 -84
- zaber_motion/dto/ascii/io_port_type.py +14 -14
- zaber_motion/dto/ascii/lockstep_axes.py +108 -108
- zaber_motion/dto/ascii/measurement_sequence.py +73 -73
- zaber_motion/dto/ascii/message_type.py +14 -14
- zaber_motion/dto/ascii/optional_measurement_sequence.py +71 -71
- zaber_motion/dto/ascii/oscilloscope_capture_properties.py +116 -116
- zaber_motion/dto/ascii/oscilloscope_data_source.py +11 -11
- zaber_motion/dto/ascii/paramset_info.py +92 -92
- zaber_motion/dto/ascii/pid_tuning.py +125 -125
- zaber_motion/dto/ascii/pvt_axis_definition.py +70 -70
- zaber_motion/dto/ascii/pvt_axis_type.py +11 -11
- zaber_motion/dto/ascii/pvt_csv_data.py +75 -75
- zaber_motion/dto/ascii/pvt_mode.py +12 -12
- zaber_motion/dto/ascii/pvt_sequence_data.py +99 -99
- zaber_motion/dto/ascii/response.py +137 -137
- zaber_motion/dto/ascii/servo_tuning_param.py +66 -66
- zaber_motion/dto/ascii/servo_tuning_paramset.py +21 -21
- zaber_motion/dto/ascii/set_state_axis_response.py +75 -75
- zaber_motion/dto/ascii/set_state_device_response.py +80 -80
- zaber_motion/dto/ascii/simple_tuning.py +118 -118
- zaber_motion/dto/ascii/simple_tuning_param_definition.py +100 -100
- zaber_motion/dto/ascii/stream_axis_definition.py +70 -70
- zaber_motion/dto/ascii/stream_axis_type.py +11 -11
- zaber_motion/dto/ascii/stream_mode.py +13 -13
- zaber_motion/dto/ascii/trigger_action.py +12 -12
- zaber_motion/dto/ascii/trigger_condition.py +15 -15
- zaber_motion/dto/ascii/trigger_enabled_state.py +68 -68
- zaber_motion/dto/ascii/trigger_operation.py +12 -12
- zaber_motion/dto/ascii/trigger_state.py +114 -114
- zaber_motion/dto/ascii/unknown_response_event.py +137 -137
- zaber_motion/dto/axis_address.py +74 -74
- zaber_motion/dto/binary/__init__.py +11 -11
- zaber_motion/dto/binary/binary_settings.py +74 -74
- zaber_motion/dto/binary/command_code.py +106 -106
- zaber_motion/dto/binary/device_identity.py +156 -156
- zaber_motion/dto/binary/device_type.py +12 -12
- zaber_motion/dto/binary/error_code.py +101 -101
- zaber_motion/dto/binary/message.py +91 -91
- zaber_motion/dto/binary/reply_code.py +16 -16
- zaber_motion/dto/binary/reply_only_event.py +91 -91
- zaber_motion/dto/binary/unknown_response_event.py +91 -91
- zaber_motion/dto/channel_address.py +74 -74
- zaber_motion/dto/device_db_source.py +66 -66
- zaber_motion/dto/device_db_source_type.py +11 -11
- zaber_motion/dto/exceptions/__init__.py +24 -24
- zaber_motion/dto/exceptions/binary_command_failed_exception_data.py +57 -57
- zaber_motion/dto/exceptions/command_failed_exception_data.py +151 -151
- zaber_motion/dto/exceptions/command_too_long_exception_data.py +98 -98
- zaber_motion/dto/exceptions/device_address_conflict_exception_data.py +63 -63
- zaber_motion/dto/exceptions/device_db_failed_exception_data.py +74 -74
- zaber_motion/dto/exceptions/device_db_inner_error.py +85 -85
- zaber_motion/dto/exceptions/g_code_execution_exception_data.py +75 -75
- zaber_motion/dto/exceptions/g_code_syntax_exception_data.py +75 -75
- zaber_motion/dto/exceptions/invalid_packet_exception_data.py +63 -63
- zaber_motion/dto/exceptions/invalid_pvt_point.py +69 -69
- zaber_motion/dto/exceptions/invalid_response_exception_data.py +51 -51
- zaber_motion/dto/exceptions/movement_failed_exception_data.py +104 -104
- zaber_motion/dto/exceptions/movement_interrupted_exception_data.py +104 -104
- zaber_motion/dto/exceptions/operation_failed_exception_data.py +104 -104
- zaber_motion/dto/exceptions/pvt_execution_exception_data.py +86 -86
- zaber_motion/dto/exceptions/pvt_movement_failed_exception_data.py +69 -69
- zaber_motion/dto/exceptions/pvt_movement_interrupted_exception_data.py +69 -69
- zaber_motion/dto/exceptions/set_device_state_exception_data.py +176 -176
- zaber_motion/dto/exceptions/set_peripheral_state_exception_data.py +121 -121
- zaber_motion/dto/exceptions/stream_execution_exception_data.py +63 -63
- zaber_motion/dto/exceptions/stream_movement_failed_exception_data.py +69 -69
- zaber_motion/dto/exceptions/stream_movement_interrupted_exception_data.py +69 -69
- zaber_motion/dto/firmware_version.py +91 -91
- zaber_motion/dto/gcode/__init__.py +9 -9
- zaber_motion/dto/gcode/axis_definition.py +74 -74
- zaber_motion/dto/gcode/axis_mapping.py +69 -69
- zaber_motion/dto/gcode/axis_transformation.py +79 -79
- zaber_motion/dto/gcode/device_definition.py +99 -99
- zaber_motion/dto/gcode/translate_message.py +87 -87
- zaber_motion/dto/gcode/translate_result.py +79 -79
- zaber_motion/dto/gcode/translator_config.py +84 -84
- zaber_motion/dto/log_output_mode.py +13 -13
- zaber_motion/dto/measurement.py +67 -67
- zaber_motion/dto/microscopy/__init__.py +6 -6
- zaber_motion/dto/microscopy/autofocus_status.py +57 -57
- zaber_motion/dto/microscopy/microscope_config.py +159 -159
- zaber_motion/dto/microscopy/third_party_components.py +55 -55
- zaber_motion/dto/microscopy/wdi_autofocus_provider_status.py +57 -57
- zaber_motion/dto/named_parameter.py +64 -64
- zaber_motion/dto/product/__init__.py +5 -5
- zaber_motion/dto/product/process_controller_mode.py +13 -13
- zaber_motion/dto/product/process_controller_source.py +72 -72
- zaber_motion/dto/product/process_controller_source_sensor.py +11 -11
- zaber_motion/dto/requests/__init__.py +256 -254
- zaber_motion/dto/requests/alert_event_wrapper.py +82 -82
- zaber_motion/dto/requests/autofocus_focus_request.py +131 -131
- zaber_motion/dto/requests/autofocus_get_objective_params_request.py +121 -121
- zaber_motion/dto/requests/autofocus_get_objective_params_response.py +56 -56
- zaber_motion/dto/requests/autofocus_get_status_response.py +50 -50
- zaber_motion/dto/requests/autofocus_set_objective_params_request.py +141 -141
- zaber_motion/dto/requests/axes_empty_request.py +95 -95
- zaber_motion/dto/requests/axes_get_setting_request.py +121 -121
- zaber_motion/dto/requests/axes_move_request.py +114 -114
- zaber_motion/dto/requests/axis_empty_request.py +79 -79
- zaber_motion/dto/requests/axis_move_type.py +12 -12
- zaber_motion/dto/requests/axis_to_string_request.py +88 -88
- zaber_motion/dto/requests/binary_device_detect_request.py +56 -56
- zaber_motion/dto/requests/binary_device_detect_response.py +57 -57
- zaber_motion/dto/requests/binary_device_get_setting_request.py +89 -89
- zaber_motion/dto/requests/binary_device_home_request.py +88 -88
- zaber_motion/dto/requests/binary_device_move_request.py +111 -111
- zaber_motion/dto/requests/binary_device_set_setting_request.py +100 -100
- zaber_motion/dto/requests/binary_device_stop_request.py +88 -88
- zaber_motion/dto/requests/binary_generic_with_units_request.py +122 -122
- zaber_motion/dto/requests/binary_message_collection.py +56 -56
- zaber_motion/dto/requests/binary_reply_only_event_wrapper.py +82 -82
- zaber_motion/dto/requests/bool_response.py +43 -43
- zaber_motion/dto/requests/can_set_state_axis_response.py +60 -60
- zaber_motion/dto/requests/can_set_state_request.py +100 -100
- zaber_motion/dto/requests/channel_on.py +84 -84
- zaber_motion/dto/requests/channel_set_intensity.py +90 -90
- zaber_motion/dto/requests/check_version_request.py +54 -54
- zaber_motion/dto/requests/custom_interface_close_request.py +60 -60
- zaber_motion/dto/requests/custom_interface_open_response.py +51 -51
- zaber_motion/dto/requests/custom_interface_read_request.py +51 -51
- zaber_motion/dto/requests/custom_interface_write_request.py +60 -60
- zaber_motion/dto/requests/device_cancel_all_outputs_schedule_request.py +80 -80
- zaber_motion/dto/requests/device_cancel_output_schedule_request.py +84 -84
- zaber_motion/dto/requests/device_convert_setting_request.py +116 -116
- zaber_motion/dto/requests/device_detect_request.py +68 -68
- zaber_motion/dto/requests/device_detect_response.py +57 -57
- zaber_motion/dto/requests/device_empty_request.py +65 -65
- zaber_motion/dto/requests/device_get_all_analog_io_request.py +74 -74
- zaber_motion/dto/requests/device_get_all_analog_io_response.py +54 -54
- zaber_motion/dto/requests/device_get_all_digital_io_request.py +74 -74
- zaber_motion/dto/requests/device_get_all_digital_io_response.py +46 -46
- zaber_motion/dto/requests/device_get_analog_io_request.py +88 -88
- zaber_motion/dto/requests/device_get_digital_io_request.py +88 -88
- zaber_motion/dto/requests/device_get_setting_request.py +100 -100
- zaber_motion/dto/requests/device_get_storage_request.py +93 -93
- zaber_motion/dto/requests/device_get_warnings_request.py +84 -84
- zaber_motion/dto/requests/device_get_warnings_response.py +51 -51
- zaber_motion/dto/requests/device_home_request.py +84 -84
- zaber_motion/dto/requests/device_identify_request.py +77 -77
- zaber_motion/dto/requests/device_move_request.py +177 -177
- zaber_motion/dto/requests/device_move_sin_request.py +140 -140
- zaber_motion/dto/requests/device_multi_get_setting_request.py +118 -118
- zaber_motion/dto/requests/device_on_all_request.py +56 -56
- zaber_motion/dto/requests/device_on_all_response.py +57 -57
- zaber_motion/dto/requests/device_restore_request.py +84 -84
- zaber_motion/dto/requests/device_set_all_analog_outputs_request.py +82 -82
- zaber_motion/dto/requests/device_set_all_analog_outputs_schedule_request.py +121 -121
- zaber_motion/dto/requests/device_set_all_digital_outputs_request.py +83 -83
- zaber_motion/dto/requests/device_set_all_digital_outputs_schedule_request.py +122 -122
- zaber_motion/dto/requests/device_set_analog_output_request.py +90 -90
- zaber_motion/dto/requests/device_set_analog_output_schedule_request.py +124 -124
- zaber_motion/dto/requests/device_set_digital_output_request.py +91 -91
- zaber_motion/dto/requests/device_set_digital_output_schedule_request.py +125 -125
- zaber_motion/dto/requests/device_set_lowpass_filter_request.py +102 -102
- zaber_motion/dto/requests/device_set_setting_bool_request.py +93 -93
- zaber_motion/dto/requests/device_set_setting_int_request.py +102 -102
- zaber_motion/dto/requests/device_set_setting_request.py +111 -111
- zaber_motion/dto/requests/device_set_setting_str_request.py +97 -97
- zaber_motion/dto/requests/device_set_storage_bool_request.py +93 -93
- zaber_motion/dto/requests/device_set_storage_number_request.py +99 -99
- zaber_motion/dto/requests/device_set_storage_request.py +102 -102
- zaber_motion/dto/requests/device_set_unit_conversions_request.py +108 -108
- zaber_motion/dto/requests/device_stop_request.py +84 -84
- zaber_motion/dto/requests/device_storage_list_keys_request.py +88 -88
- zaber_motion/dto/requests/device_storage_request.py +88 -88
- zaber_motion/dto/requests/device_type.py +8 -8
- zaber_motion/dto/requests/device_wait_until_idle_request.py +84 -84
- zaber_motion/dto/requests/disconnected_event.py +101 -101
- zaber_motion/dto/requests/double_array_response.py +54 -54
- zaber_motion/dto/requests/double_response.py +48 -48
- zaber_motion/dto/requests/driver_enable_request.py +90 -90
- zaber_motion/dto/requests/empty_autofocus_request.py +107 -107
- zaber_motion/dto/requests/empty_request.py +38 -38
- zaber_motion/dto/requests/errors.py +68 -68
- zaber_motion/dto/requests/find_device_request.py +65 -65
- zaber_motion/dto/requests/find_device_response.py +51 -51
- zaber_motion/dto/requests/forget_devices_request.py +71 -71
- zaber_motion/dto/requests/gateway_event.py +45 -45
- zaber_motion/dto/requests/gateway_request.py +45 -45
- zaber_motion/dto/requests/gateway_response.py +69 -69
- zaber_motion/dto/requests/generic_binary_request.py +107 -107
- zaber_motion/dto/requests/generic_command_request.py +107 -107
- zaber_motion/dto/requests/generic_command_response_collection.py +56 -56
- zaber_motion/dto/requests/get_all_io_port_labels_response.py +56 -56
- zaber_motion/dto/requests/get_axis_setting_results.py +56 -56
- zaber_motion/dto/requests/get_io_port_label_request.py +91 -91
- zaber_motion/dto/requests/get_setting_results.py +56 -56
- zaber_motion/dto/requests/get_simple_tuning_param_definition_response.py +56 -56
- zaber_motion/dto/requests/int_64_response.py +51 -51
- zaber_motion/dto/requests/int_array_response.py +57 -57
- zaber_motion/dto/requests/int_request.py +51 -51
- zaber_motion/dto/requests/int_response.py +51 -51
- zaber_motion/dto/requests/interface_empty_request.py +51 -51
- zaber_motion/dto/requests/interface_type.py +11 -11
- zaber_motion/dto/requests/load_paramset.py +102 -102
- zaber_motion/dto/requests/lockstep_disable_request.py +84 -84
- zaber_motion/dto/requests/lockstep_empty_request.py +79 -79
- zaber_motion/dto/requests/lockstep_enable_request.py +99 -99
- zaber_motion/dto/requests/lockstep_get_axis_numbers_response.py +57 -57
- zaber_motion/dto/requests/lockstep_get_request.py +91 -91
- zaber_motion/dto/requests/lockstep_home_request.py +84 -84
- zaber_motion/dto/requests/lockstep_move_request.py +163 -163
- zaber_motion/dto/requests/lockstep_move_sin_request.py +140 -140
- zaber_motion/dto/requests/lockstep_set_request.py +116 -116
- zaber_motion/dto/requests/lockstep_stop_request.py +84 -84
- zaber_motion/dto/requests/lockstep_wait_until_idle_request.py +84 -84
- zaber_motion/dto/requests/microscope_config_response.py +50 -50
- zaber_motion/dto/requests/microscope_empty_request.py +65 -65
- zaber_motion/dto/requests/microscope_find_request.py +63 -63
- zaber_motion/dto/requests/microscope_init_request.py +70 -70
- zaber_motion/dto/requests/microscope_trigger_camera_request.py +107 -107
- zaber_motion/dto/requests/objective_changer_change_request.py +119 -119
- zaber_motion/dto/requests/objective_changer_create_response.py +79 -79
- zaber_motion/dto/requests/objective_changer_get_current_response.py +51 -51
- zaber_motion/dto/requests/objective_changer_request.py +93 -93
- zaber_motion/dto/requests/objective_changer_set_request.py +116 -116
- zaber_motion/dto/requests/open_binary_interface_request.py +100 -100
- zaber_motion/dto/requests/open_interface_request.py +159 -159
- zaber_motion/dto/requests/open_interface_response.py +51 -51
- zaber_motion/dto/requests/oscilloscope_add_io_channel_request.py +91 -91
- zaber_motion/dto/requests/oscilloscope_add_setting_channel_request.py +88 -88
- zaber_motion/dto/requests/oscilloscope_data_get_request.py +63 -63
- zaber_motion/dto/requests/oscilloscope_data_get_sample_time_request.py +77 -77
- zaber_motion/dto/requests/oscilloscope_data_get_samples_response.py +54 -54
- zaber_motion/dto/requests/oscilloscope_data_identifier.py +51 -51
- zaber_motion/dto/requests/oscilloscope_read_response.py +57 -57
- zaber_motion/dto/requests/oscilloscope_request.py +65 -65
- zaber_motion/dto/requests/oscilloscope_start_request.py +79 -79
- zaber_motion/dto/requests/prepare_command_request.py +108 -108
- zaber_motion/dto/requests/process_on.py +107 -107
- zaber_motion/dto/requests/pvt_buffer_get_sequence_data_request.py +79 -79
- zaber_motion/dto/requests/pvt_csv_request.py +59 -59
- zaber_motion/dto/requests/pvt_generate_positions_request.py +74 -74
- zaber_motion/dto/requests/pvt_generate_velocities_and_times_request.py +96 -96
- zaber_motion/dto/requests/pvt_generate_velocities_request.py +93 -93
- zaber_motion/dto/requests/pvt_load_csv_request.py +45 -45
- zaber_motion/dto/requests/pvt_point_request.py +145 -145
- zaber_motion/dto/requests/pvt_points_request.py +147 -147
- zaber_motion/dto/requests/pvt_save_csv_request.py +74 -74
- zaber_motion/dto/requests/pvt_submit_sequence_data_request.py +93 -93
- zaber_motion/dto/requests/renumber_request.py +79 -79
- zaber_motion/dto/requests/response_type.py +8 -8
- zaber_motion/dto/requests/servo_tuning_paramset_response.py +48 -48
- zaber_motion/dto/requests/servo_tuning_request.py +91 -91
- zaber_motion/dto/requests/set_device_db_layered_sources_request.py +56 -56
- zaber_motion/dto/requests/set_device_db_source_request.py +63 -63
- zaber_motion/dto/requests/set_interface_checksum_enabled_request.py +56 -56
- zaber_motion/dto/requests/set_interface_timeout_request.py +65 -65
- zaber_motion/dto/requests/set_internal_mode_request.py +43 -43
- zaber_motion/dto/requests/set_io_port_label_request.py +100 -100
- zaber_motion/dto/requests/set_log_output_request.py +57 -57
- zaber_motion/dto/requests/set_process_controller_source.py +93 -93
- zaber_motion/dto/requests/set_servo_tuning_pid_request.py +135 -135
- zaber_motion/dto/requests/set_servo_tuning_request.py +116 -116
- zaber_motion/dto/requests/set_simple_tuning.py +174 -174
- zaber_motion/dto/requests/set_state_request.py +93 -93
- zaber_motion/dto/requests/stream_arc_request.py +199 -199
- zaber_motion/dto/requests/stream_buffer_erase_request.py +84 -84
- zaber_motion/dto/requests/stream_buffer_get_content_request.py +84 -84
- zaber_motion/dto/requests/stream_buffer_get_content_response.py +51 -51
- zaber_motion/dto/requests/stream_buffer_list.py +70 -70
- zaber_motion/dto/requests/stream_call_request.py +112 -112
- zaber_motion/dto/requests/stream_cancel_all_outputs_schedule_request.py +99 -99
- zaber_motion/dto/requests/stream_cancel_output_schedule_request.py +103 -103
- zaber_motion/dto/requests/stream_circle_request.py +155 -155
- zaber_motion/dto/requests/stream_empty_request.py +84 -84
- zaber_motion/dto/requests/stream_generic_command_batch_request.py +99 -99
- zaber_motion/dto/requests/stream_generic_command_request.py +93 -93
- zaber_motion/dto/requests/stream_get_axes_response.py +75 -75
- zaber_motion/dto/requests/stream_get_max_centripetal_acceleration_request.py +96 -96
- zaber_motion/dto/requests/stream_get_max_speed_request.py +96 -96
- zaber_motion/dto/requests/stream_get_max_tangential_acceleration_request.py +96 -96
- zaber_motion/dto/requests/stream_line_request.py +135 -135
- zaber_motion/dto/requests/stream_mode_response.py +60 -60
- zaber_motion/dto/requests/stream_segment_type.py +8 -8
- zaber_motion/dto/requests/stream_set_all_analog_outputs_request.py +101 -101
- zaber_motion/dto/requests/stream_set_all_analog_outputs_schedule_request.py +140 -140
- zaber_motion/dto/requests/stream_set_all_digital_outputs_request.py +102 -102
- zaber_motion/dto/requests/stream_set_all_digital_outputs_schedule_request.py +141 -141
- zaber_motion/dto/requests/stream_set_analog_output_request.py +109 -109
- zaber_motion/dto/requests/stream_set_analog_output_schedule_request.py +143 -143
- zaber_motion/dto/requests/stream_set_digital_output_request.py +110 -110
- zaber_motion/dto/requests/stream_set_digital_output_schedule_request.py +144 -144
- zaber_motion/dto/requests/stream_set_hold_request.py +89 -89
- zaber_motion/dto/requests/stream_set_max_centripetal_acceleration_request.py +107 -107
- zaber_motion/dto/requests/stream_set_max_speed_request.py +107 -107
- zaber_motion/dto/requests/stream_set_max_tangential_acceleration_request.py +107 -107
- zaber_motion/dto/requests/stream_setup_live_composite_request.py +123 -123
- zaber_motion/dto/requests/stream_setup_live_request.py +104 -104
- zaber_motion/dto/requests/stream_setup_store_arbitrary_axes_request.py +126 -126
- zaber_motion/dto/requests/stream_setup_store_composite_request.py +151 -151
- zaber_motion/dto/requests/stream_setup_store_request.py +132 -132
- zaber_motion/dto/requests/stream_wait_analog_input_request.py +118 -118
- zaber_motion/dto/requests/stream_wait_digital_input_request.py +103 -103
- zaber_motion/dto/requests/stream_wait_request.py +107 -107
- zaber_motion/dto/requests/stream_wait_until_idle_request.py +89 -89
- zaber_motion/dto/requests/string_array_response.py +51 -51
- zaber_motion/dto/requests/string_response.py +45 -45
- zaber_motion/dto/requests/test_event.py +45 -45
- zaber_motion/dto/requests/test_request.py +55 -55
- zaber_motion/dto/requests/test_request_complex.py +57 -0
- zaber_motion/dto/requests/test_response.py +45 -45
- zaber_motion/dto/requests/test_response_long.py +51 -51
- zaber_motion/dto/requests/toggle_device_db_store_request.py +50 -50
- zaber_motion/dto/requests/tools_list_serial_ports_response.py +51 -51
- zaber_motion/dto/requests/translator_create_from_device_request.py +97 -97
- zaber_motion/dto/requests/translator_create_live_request.py +91 -91
- zaber_motion/dto/requests/translator_create_request.py +62 -62
- zaber_motion/dto/requests/translator_create_response.py +51 -51
- zaber_motion/dto/requests/translator_empty_request.py +51 -51
- zaber_motion/dto/requests/translator_flush_live_request.py +56 -56
- zaber_motion/dto/requests/translator_flush_response.py +51 -51
- zaber_motion/dto/requests/translator_get_axis_offset_request.py +81 -81
- zaber_motion/dto/requests/translator_get_axis_position_request.py +72 -72
- zaber_motion/dto/requests/translator_set_axis_position_request.py +83 -83
- zaber_motion/dto/requests/translator_set_feed_rate_override_request.py +62 -62
- zaber_motion/dto/requests/translator_set_traverse_rate_request.py +74 -74
- zaber_motion/dto/requests/translator_translate_request.py +60 -60
- zaber_motion/dto/requests/trigger_clear_action_request.py +91 -91
- zaber_motion/dto/requests/trigger_empty_request.py +79 -79
- zaber_motion/dto/requests/trigger_enable_request.py +93 -93
- zaber_motion/dto/requests/trigger_enabled_states.py +56 -56
- zaber_motion/dto/requests/trigger_fire_at_interval_request.py +102 -102
- zaber_motion/dto/requests/trigger_fire_when_distance_travelled_request.py +116 -116
- zaber_motion/dto/requests/trigger_fire_when_io_request.py +128 -128
- zaber_motion/dto/requests/trigger_fire_when_request.py +88 -88
- zaber_motion/dto/requests/trigger_fire_when_setting_request.py +137 -137
- zaber_motion/dto/requests/trigger_on_fire_request.py +114 -114
- zaber_motion/dto/requests/trigger_on_fire_set_request.py +149 -149
- zaber_motion/dto/requests/trigger_on_fire_set_to_setting_request.py +149 -149
- zaber_motion/dto/requests/trigger_set_label_request.py +88 -88
- zaber_motion/dto/requests/trigger_states.py +56 -56
- zaber_motion/dto/requests/unit_convert_unit_request.py +71 -71
- zaber_motion/dto/requests/unit_get_enum_request.py +45 -45
- zaber_motion/dto/requests/unit_get_enum_response.py +48 -48
- zaber_motion/dto/requests/unit_get_symbol_request.py +48 -48
- zaber_motion/dto/requests/unit_get_symbol_response.py +45 -45
- zaber_motion/dto/requests/unknown_binary_response_event_wrapper.py +82 -82
- zaber_motion/dto/requests/unknown_response_event_wrapper.py +82 -82
- zaber_motion/dto/requests/wait_to_clear_warnings_request.py +105 -105
- zaber_motion/dto/requests/wait_to_respond_request.py +76 -76
- zaber_motion/dto/requests/wdi_generic_float_request.py +119 -0
- zaber_motion/dto/requests/wdi_generic_request.py +136 -136
- zaber_motion/dto/requests/wdi_get_status_response.py +50 -50
- zaber_motion/dto/rotation_direction.py +13 -13
- zaber_motion/dto_object.py +18 -18
- zaber_motion/events.py +112 -112
- zaber_motion/exceptions/__init__.py +87 -87
- zaber_motion/exceptions/bad_command_exception.py +10 -10
- zaber_motion/exceptions/bad_data_exception.py +10 -10
- zaber_motion/exceptions/binary_command_failed_exception.py +27 -27
- zaber_motion/exceptions/command_failed_exception.py +27 -27
- zaber_motion/exceptions/command_preempted_exception.py +10 -10
- zaber_motion/exceptions/command_too_long_exception.py +27 -27
- zaber_motion/exceptions/connection_closed_exception.py +10 -10
- zaber_motion/exceptions/connection_failed_exception.py +10 -10
- zaber_motion/exceptions/conversion_failed_exception.py +10 -10
- zaber_motion/exceptions/device_address_conflict_exception.py +27 -27
- zaber_motion/exceptions/device_busy_exception.py +10 -10
- zaber_motion/exceptions/device_db_failed_exception.py +27 -27
- zaber_motion/exceptions/device_detection_failed_exception.py +10 -10
- zaber_motion/exceptions/device_failed_exception.py +11 -11
- zaber_motion/exceptions/device_not_identified_exception.py +10 -10
- zaber_motion/exceptions/driver_disabled_exception.py +10 -10
- zaber_motion/exceptions/g_code_execution_exception.py +27 -27
- zaber_motion/exceptions/g_code_syntax_exception.py +27 -27
- zaber_motion/exceptions/incompatible_shared_library_exception.py +11 -11
- zaber_motion/exceptions/internal_error_exception.py +10 -10
- zaber_motion/exceptions/invalid_argument_exception.py +10 -10
- zaber_motion/exceptions/invalid_csv_data_exception.py +10 -10
- zaber_motion/exceptions/invalid_data_exception.py +10 -10
- zaber_motion/exceptions/invalid_operation_exception.py +10 -10
- zaber_motion/exceptions/invalid_packet_exception.py +27 -27
- zaber_motion/exceptions/invalid_park_state_exception.py +10 -10
- zaber_motion/exceptions/invalid_request_data_exception.py +11 -11
- zaber_motion/exceptions/invalid_response_exception.py +27 -27
- zaber_motion/exceptions/io_channel_out_of_range_exception.py +10 -10
- zaber_motion/exceptions/io_failed_exception.py +10 -10
- zaber_motion/exceptions/lockstep_enabled_exception.py +10 -10
- zaber_motion/exceptions/lockstep_not_enabled_exception.py +10 -10
- zaber_motion/exceptions/motion_lib_exception.py +18 -18
- zaber_motion/exceptions/movement_failed_exception.py +27 -27
- zaber_motion/exceptions/movement_interrupted_exception.py +27 -27
- zaber_motion/exceptions/no_device_found_exception.py +10 -10
- zaber_motion/exceptions/no_value_for_key_exception.py +10 -10
- zaber_motion/exceptions/not_supported_exception.py +10 -10
- zaber_motion/exceptions/operation_failed_exception.py +27 -27
- zaber_motion/exceptions/os_failed_exception.py +10 -10
- zaber_motion/exceptions/out_of_request_ids_exception.py +10 -10
- zaber_motion/exceptions/pvt_discontinuity_exception.py +10 -10
- zaber_motion/exceptions/pvt_execution_exception.py +27 -27
- zaber_motion/exceptions/pvt_mode_exception.py +10 -10
- zaber_motion/exceptions/pvt_movement_failed_exception.py +27 -27
- zaber_motion/exceptions/pvt_movement_interrupted_exception.py +27 -27
- zaber_motion/exceptions/pvt_sequence_generation_failed_exception.py +10 -10
- zaber_motion/exceptions/pvt_setup_failed_exception.py +10 -10
- zaber_motion/exceptions/remote_mode_exception.py +11 -11
- zaber_motion/exceptions/request_timeout_exception.py +10 -10
- zaber_motion/exceptions/serial_port_busy_exception.py +10 -10
- zaber_motion/exceptions/set_device_state_failed_exception.py +27 -27
- zaber_motion/exceptions/set_peripheral_state_failed_exception.py +27 -27
- zaber_motion/exceptions/setting_not_found_exception.py +10 -10
- zaber_motion/exceptions/stream_discontinuity_exception.py +10 -10
- zaber_motion/exceptions/stream_execution_exception.py +27 -27
- zaber_motion/exceptions/stream_mode_exception.py +10 -10
- zaber_motion/exceptions/stream_movement_failed_exception.py +27 -27
- zaber_motion/exceptions/stream_movement_interrupted_exception.py +27 -27
- zaber_motion/exceptions/stream_setup_failed_exception.py +10 -10
- zaber_motion/exceptions/timeout_exception.py +10 -10
- zaber_motion/exceptions/transport_already_used_exception.py +10 -10
- zaber_motion/exceptions/unknown_request_exception.py +10 -10
- zaber_motion/gcode/__init__.py +11 -11
- zaber_motion/gcode/offline_translator.py +401 -401
- zaber_motion/gcode/translator.py +424 -424
- zaber_motion/library.py +179 -179
- zaber_motion/microscopy/__init__.py +14 -14
- zaber_motion/microscopy/autofocus.py +645 -645
- zaber_motion/microscopy/camera_trigger.py +108 -108
- zaber_motion/microscopy/filter_changer.py +167 -167
- zaber_motion/microscopy/illuminator.py +139 -139
- zaber_motion/microscopy/illuminator_channel.py +616 -616
- zaber_motion/microscopy/microscope.py +315 -315
- zaber_motion/microscopy/objective_changer.py +403 -403
- zaber_motion/microscopy/wdi_autofocus_provider.py +536 -396
- zaber_motion/product/__init__.py +7 -7
- zaber_motion/product/process.py +818 -818
- zaber_motion/product/process_controller.py +134 -134
- zaber_motion/serialization.py +32 -32
- zaber_motion/tools.py +78 -78
- zaber_motion/unit_table.py +86 -86
- zaber_motion/units.py +206 -206
- zaber_motion/version.py +1 -1
- {zaber_motion-7.13.0.dist-info → zaber_motion-7.14.0.dist-info}/LICENSE.txt +2119 -2119
- {zaber_motion-7.13.0.dist-info → zaber_motion-7.14.0.dist-info}/METADATA +1 -1
- zaber_motion-7.14.0.dist-info/RECORD +496 -0
- zaber_motion_bindings/zaber-motion-core-windows-386.dll +0 -0
- zaber_motion-7.13.0.dist-info/RECORD +0 -494
- {zaber_motion-7.13.0.dist-info → zaber_motion-7.14.0.dist-info}/WHEEL +0 -0
- {zaber_motion-7.13.0.dist-info → zaber_motion-7.14.0.dist-info}/top_level.txt +0 -0
|
@@ -1,635 +1,635 @@
|
|
|
1
|
-
# ===== THIS FILE IS GENERATED FROM A TEMPLATE ===== #
|
|
2
|
-
# ============== DO NOT EDIT DIRECTLY ============== #
|
|
3
|
-
from typing import TYPE_CHECKING, List
|
|
4
|
-
from ..dto import requests as dto
|
|
5
|
-
from ..units import Units, TimeUnits, FrequencyUnits
|
|
6
|
-
from ..call import call, call_async
|
|
7
|
-
from ..dto.ascii.io_port_type import IoPortType
|
|
8
|
-
from .oscilloscope_data import OscilloscopeData
|
|
9
|
-
|
|
10
|
-
if TYPE_CHECKING:
|
|
11
|
-
from .device import Device
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class Oscilloscope:
|
|
15
|
-
"""
|
|
16
|
-
Provides a convenient way to control the oscilloscope data recording feature of some devices.
|
|
17
|
-
The oscilloscope can record the values of some settings over time at high resolution.
|
|
18
|
-
Requires at least Firmware 7.00.
|
|
19
|
-
"""
|
|
20
|
-
|
|
21
|
-
@property
|
|
22
|
-
def device(self) -> 'Device':
|
|
23
|
-
"""
|
|
24
|
-
Device that this Oscilloscope measures.
|
|
25
|
-
"""
|
|
26
|
-
return self._device
|
|
27
|
-
|
|
28
|
-
def __init__(self, device: 'Device'):
|
|
29
|
-
self._device: 'Device' = device
|
|
30
|
-
|
|
31
|
-
def add_channel(
|
|
32
|
-
self,
|
|
33
|
-
axis: int,
|
|
34
|
-
setting: str
|
|
35
|
-
) -> None:
|
|
36
|
-
"""
|
|
37
|
-
Select a setting to be recorded.
|
|
38
|
-
|
|
39
|
-
Args:
|
|
40
|
-
axis: The 1-based index of the axis to record the value from.
|
|
41
|
-
setting: The name of a setting to record.
|
|
42
|
-
"""
|
|
43
|
-
request = dto.OscilloscopeAddSettingChannelRequest(
|
|
44
|
-
interface_id=self.device.connection.interface_id,
|
|
45
|
-
device=self.device.device_address,
|
|
46
|
-
axis=axis,
|
|
47
|
-
setting=setting,
|
|
48
|
-
)
|
|
49
|
-
call("oscilloscope/add_setting_channel", request)
|
|
50
|
-
|
|
51
|
-
async def add_channel_async(
|
|
52
|
-
self,
|
|
53
|
-
axis: int,
|
|
54
|
-
setting: str
|
|
55
|
-
) -> None:
|
|
56
|
-
"""
|
|
57
|
-
Select a setting to be recorded.
|
|
58
|
-
|
|
59
|
-
Args:
|
|
60
|
-
axis: The 1-based index of the axis to record the value from.
|
|
61
|
-
setting: The name of a setting to record.
|
|
62
|
-
"""
|
|
63
|
-
request = dto.OscilloscopeAddSettingChannelRequest(
|
|
64
|
-
interface_id=self.device.connection.interface_id,
|
|
65
|
-
device=self.device.device_address,
|
|
66
|
-
axis=axis,
|
|
67
|
-
setting=setting,
|
|
68
|
-
)
|
|
69
|
-
await call_async("oscilloscope/add_setting_channel", request)
|
|
70
|
-
|
|
71
|
-
def add_io_channel(
|
|
72
|
-
self,
|
|
73
|
-
io_type: IoPortType,
|
|
74
|
-
io_channel: int
|
|
75
|
-
) -> None:
|
|
76
|
-
"""
|
|
77
|
-
Select an I/O pin to be recorded.
|
|
78
|
-
Requires at least Firmware 7.33.
|
|
79
|
-
|
|
80
|
-
Args:
|
|
81
|
-
io_type: The I/O port type to read data from.
|
|
82
|
-
io_channel: The 1-based index of the I/O pin to read from.
|
|
83
|
-
"""
|
|
84
|
-
request = dto.OscilloscopeAddIoChannelRequest(
|
|
85
|
-
interface_id=self.device.connection.interface_id,
|
|
86
|
-
device=self.device.device_address,
|
|
87
|
-
io_type=io_type,
|
|
88
|
-
io_channel=io_channel,
|
|
89
|
-
)
|
|
90
|
-
call("oscilloscope/add_io_channel", request)
|
|
91
|
-
|
|
92
|
-
async def add_io_channel_async(
|
|
93
|
-
self,
|
|
94
|
-
io_type: IoPortType,
|
|
95
|
-
io_channel: int
|
|
96
|
-
) -> None:
|
|
97
|
-
"""
|
|
98
|
-
Select an I/O pin to be recorded.
|
|
99
|
-
Requires at least Firmware 7.33.
|
|
100
|
-
|
|
101
|
-
Args:
|
|
102
|
-
io_type: The I/O port type to read data from.
|
|
103
|
-
io_channel: The 1-based index of the I/O pin to read from.
|
|
104
|
-
"""
|
|
105
|
-
request = dto.OscilloscopeAddIoChannelRequest(
|
|
106
|
-
interface_id=self.device.connection.interface_id,
|
|
107
|
-
device=self.device.device_address,
|
|
108
|
-
io_type=io_type,
|
|
109
|
-
io_channel=io_channel,
|
|
110
|
-
)
|
|
111
|
-
await call_async("oscilloscope/add_io_channel", request)
|
|
112
|
-
|
|
113
|
-
def clear(
|
|
114
|
-
self
|
|
115
|
-
) -> None:
|
|
116
|
-
"""
|
|
117
|
-
Clear the list of channels to record.
|
|
118
|
-
"""
|
|
119
|
-
request = dto.DeviceEmptyRequest(
|
|
120
|
-
interface_id=self.device.connection.interface_id,
|
|
121
|
-
device=self.device.device_address,
|
|
122
|
-
)
|
|
123
|
-
call("oscilloscope/clear_channels", request)
|
|
124
|
-
|
|
125
|
-
async def clear_async(
|
|
126
|
-
self
|
|
127
|
-
) -> None:
|
|
128
|
-
"""
|
|
129
|
-
Clear the list of channels to record.
|
|
130
|
-
"""
|
|
131
|
-
request = dto.DeviceEmptyRequest(
|
|
132
|
-
interface_id=self.device.connection.interface_id,
|
|
133
|
-
device=self.device.device_address,
|
|
134
|
-
)
|
|
135
|
-
await call_async("oscilloscope/clear_channels", request)
|
|
136
|
-
|
|
137
|
-
def get_timebase(
|
|
138
|
-
self,
|
|
139
|
-
unit: TimeUnits = Units.NATIVE
|
|
140
|
-
) -> float:
|
|
141
|
-
"""
|
|
142
|
-
Get the current sampling interval.
|
|
143
|
-
|
|
144
|
-
Args:
|
|
145
|
-
unit: Unit of measure to represent the timebase in.
|
|
146
|
-
|
|
147
|
-
Returns:
|
|
148
|
-
The current sampling interval in the selected time units.
|
|
149
|
-
"""
|
|
150
|
-
request = dto.DeviceGetSettingRequest(
|
|
151
|
-
interface_id=self.device.connection.interface_id,
|
|
152
|
-
device=self.device.device_address,
|
|
153
|
-
setting="scope.timebase",
|
|
154
|
-
unit=unit,
|
|
155
|
-
)
|
|
156
|
-
response = call(
|
|
157
|
-
"device/get_setting",
|
|
158
|
-
request,
|
|
159
|
-
dto.DoubleResponse.from_binary)
|
|
160
|
-
return response.value
|
|
161
|
-
|
|
162
|
-
async def get_timebase_async(
|
|
163
|
-
self,
|
|
164
|
-
unit: TimeUnits = Units.NATIVE
|
|
165
|
-
) -> float:
|
|
166
|
-
"""
|
|
167
|
-
Get the current sampling interval.
|
|
168
|
-
|
|
169
|
-
Args:
|
|
170
|
-
unit: Unit of measure to represent the timebase in.
|
|
171
|
-
|
|
172
|
-
Returns:
|
|
173
|
-
The current sampling interval in the selected time units.
|
|
174
|
-
"""
|
|
175
|
-
request = dto.DeviceGetSettingRequest(
|
|
176
|
-
interface_id=self.device.connection.interface_id,
|
|
177
|
-
device=self.device.device_address,
|
|
178
|
-
setting="scope.timebase",
|
|
179
|
-
unit=unit,
|
|
180
|
-
)
|
|
181
|
-
response = await call_async(
|
|
182
|
-
"device/get_setting",
|
|
183
|
-
request,
|
|
184
|
-
dto.DoubleResponse.from_binary)
|
|
185
|
-
return response.value
|
|
186
|
-
|
|
187
|
-
def set_timebase(
|
|
188
|
-
self,
|
|
189
|
-
interval: float,
|
|
190
|
-
unit: TimeUnits = Units.NATIVE
|
|
191
|
-
) -> None:
|
|
192
|
-
"""
|
|
193
|
-
Set the sampling interval.
|
|
194
|
-
|
|
195
|
-
Args:
|
|
196
|
-
interval: Sample interval for the next oscilloscope recording. Minimum value is 100µs.
|
|
197
|
-
unit: Unit of measure the timebase is represented in.
|
|
198
|
-
"""
|
|
199
|
-
request = dto.DeviceSetSettingRequest(
|
|
200
|
-
interface_id=self.device.connection.interface_id,
|
|
201
|
-
device=self.device.device_address,
|
|
202
|
-
setting="scope.timebase",
|
|
203
|
-
value=interval,
|
|
204
|
-
unit=unit,
|
|
205
|
-
)
|
|
206
|
-
call("device/set_setting", request)
|
|
207
|
-
|
|
208
|
-
async def set_timebase_async(
|
|
209
|
-
self,
|
|
210
|
-
interval: float,
|
|
211
|
-
unit: TimeUnits = Units.NATIVE
|
|
212
|
-
) -> None:
|
|
213
|
-
"""
|
|
214
|
-
Set the sampling interval.
|
|
215
|
-
|
|
216
|
-
Args:
|
|
217
|
-
interval: Sample interval for the next oscilloscope recording. Minimum value is 100µs.
|
|
218
|
-
unit: Unit of measure the timebase is represented in.
|
|
219
|
-
"""
|
|
220
|
-
request = dto.DeviceSetSettingRequest(
|
|
221
|
-
interface_id=self.device.connection.interface_id,
|
|
222
|
-
device=self.device.device_address,
|
|
223
|
-
setting="scope.timebase",
|
|
224
|
-
value=interval,
|
|
225
|
-
unit=unit,
|
|
226
|
-
)
|
|
227
|
-
await call_async("device/set_setting", request)
|
|
228
|
-
|
|
229
|
-
def get_frequency(
|
|
230
|
-
self,
|
|
231
|
-
unit: FrequencyUnits = Units.NATIVE
|
|
232
|
-
) -> float:
|
|
233
|
-
"""
|
|
234
|
-
Get the current sampling frequency.
|
|
235
|
-
The values is calculated as the inverse of the current sampling interval.
|
|
236
|
-
|
|
237
|
-
Args:
|
|
238
|
-
unit: Unit of measure to represent the frequency in.
|
|
239
|
-
|
|
240
|
-
Returns:
|
|
241
|
-
The inverse of current sampling interval in the selected units.
|
|
242
|
-
"""
|
|
243
|
-
request = dto.DeviceGetSettingRequest(
|
|
244
|
-
interface_id=self.device.connection.interface_id,
|
|
245
|
-
device=self.device.device_address,
|
|
246
|
-
setting="scope.timebase",
|
|
247
|
-
unit=unit,
|
|
248
|
-
)
|
|
249
|
-
response = call(
|
|
250
|
-
"oscilloscope/get_frequency",
|
|
251
|
-
request,
|
|
252
|
-
dto.DoubleResponse.from_binary)
|
|
253
|
-
return response.value
|
|
254
|
-
|
|
255
|
-
async def get_frequency_async(
|
|
256
|
-
self,
|
|
257
|
-
unit: FrequencyUnits = Units.NATIVE
|
|
258
|
-
) -> float:
|
|
259
|
-
"""
|
|
260
|
-
Get the current sampling frequency.
|
|
261
|
-
The values is calculated as the inverse of the current sampling interval.
|
|
262
|
-
|
|
263
|
-
Args:
|
|
264
|
-
unit: Unit of measure to represent the frequency in.
|
|
265
|
-
|
|
266
|
-
Returns:
|
|
267
|
-
The inverse of current sampling interval in the selected units.
|
|
268
|
-
"""
|
|
269
|
-
request = dto.DeviceGetSettingRequest(
|
|
270
|
-
interface_id=self.device.connection.interface_id,
|
|
271
|
-
device=self.device.device_address,
|
|
272
|
-
setting="scope.timebase",
|
|
273
|
-
unit=unit,
|
|
274
|
-
)
|
|
275
|
-
response = await call_async(
|
|
276
|
-
"oscilloscope/get_frequency",
|
|
277
|
-
request,
|
|
278
|
-
dto.DoubleResponse.from_binary)
|
|
279
|
-
return response.value
|
|
280
|
-
|
|
281
|
-
def set_frequency(
|
|
282
|
-
self,
|
|
283
|
-
frequency: float,
|
|
284
|
-
unit: FrequencyUnits = Units.NATIVE
|
|
285
|
-
) -> None:
|
|
286
|
-
"""
|
|
287
|
-
Set the sampling frequency (inverse of the sampling interval).
|
|
288
|
-
The value is quantized to the next closest value supported by the firmware.
|
|
289
|
-
|
|
290
|
-
Args:
|
|
291
|
-
frequency: Sample frequency for the next oscilloscope recording.
|
|
292
|
-
unit: Unit of measure the frequency is represented in.
|
|
293
|
-
"""
|
|
294
|
-
request = dto.DeviceSetSettingRequest(
|
|
295
|
-
interface_id=self.device.connection.interface_id,
|
|
296
|
-
device=self.device.device_address,
|
|
297
|
-
setting="scope.timebase",
|
|
298
|
-
value=frequency,
|
|
299
|
-
unit=unit,
|
|
300
|
-
)
|
|
301
|
-
call("oscilloscope/set_frequency", request)
|
|
302
|
-
|
|
303
|
-
async def set_frequency_async(
|
|
304
|
-
self,
|
|
305
|
-
frequency: float,
|
|
306
|
-
unit: FrequencyUnits = Units.NATIVE
|
|
307
|
-
) -> None:
|
|
308
|
-
"""
|
|
309
|
-
Set the sampling frequency (inverse of the sampling interval).
|
|
310
|
-
The value is quantized to the next closest value supported by the firmware.
|
|
311
|
-
|
|
312
|
-
Args:
|
|
313
|
-
frequency: Sample frequency for the next oscilloscope recording.
|
|
314
|
-
unit: Unit of measure the frequency is represented in.
|
|
315
|
-
"""
|
|
316
|
-
request = dto.DeviceSetSettingRequest(
|
|
317
|
-
interface_id=self.device.connection.interface_id,
|
|
318
|
-
device=self.device.device_address,
|
|
319
|
-
setting="scope.timebase",
|
|
320
|
-
value=frequency,
|
|
321
|
-
unit=unit,
|
|
322
|
-
)
|
|
323
|
-
await call_async("oscilloscope/set_frequency", request)
|
|
324
|
-
|
|
325
|
-
def get_delay(
|
|
326
|
-
self,
|
|
327
|
-
unit: TimeUnits = Units.NATIVE
|
|
328
|
-
) -> float:
|
|
329
|
-
"""
|
|
330
|
-
Get the delay before oscilloscope recording starts.
|
|
331
|
-
|
|
332
|
-
Args:
|
|
333
|
-
unit: Unit of measure to represent the delay in.
|
|
334
|
-
|
|
335
|
-
Returns:
|
|
336
|
-
The current start delay in the selected time units.
|
|
337
|
-
"""
|
|
338
|
-
request = dto.DeviceGetSettingRequest(
|
|
339
|
-
interface_id=self.device.connection.interface_id,
|
|
340
|
-
device=self.device.device_address,
|
|
341
|
-
setting="scope.delay",
|
|
342
|
-
unit=unit,
|
|
343
|
-
)
|
|
344
|
-
response = call(
|
|
345
|
-
"device/get_setting",
|
|
346
|
-
request,
|
|
347
|
-
dto.DoubleResponse.from_binary)
|
|
348
|
-
return response.value
|
|
349
|
-
|
|
350
|
-
async def get_delay_async(
|
|
351
|
-
self,
|
|
352
|
-
unit: TimeUnits = Units.NATIVE
|
|
353
|
-
) -> float:
|
|
354
|
-
"""
|
|
355
|
-
Get the delay before oscilloscope recording starts.
|
|
356
|
-
|
|
357
|
-
Args:
|
|
358
|
-
unit: Unit of measure to represent the delay in.
|
|
359
|
-
|
|
360
|
-
Returns:
|
|
361
|
-
The current start delay in the selected time units.
|
|
362
|
-
"""
|
|
363
|
-
request = dto.DeviceGetSettingRequest(
|
|
364
|
-
interface_id=self.device.connection.interface_id,
|
|
365
|
-
device=self.device.device_address,
|
|
366
|
-
setting="scope.delay",
|
|
367
|
-
unit=unit,
|
|
368
|
-
)
|
|
369
|
-
response = await call_async(
|
|
370
|
-
"device/get_setting",
|
|
371
|
-
request,
|
|
372
|
-
dto.DoubleResponse.from_binary)
|
|
373
|
-
return response.value
|
|
374
|
-
|
|
375
|
-
def set_delay(
|
|
376
|
-
self,
|
|
377
|
-
interval: float,
|
|
378
|
-
unit: TimeUnits = Units.NATIVE
|
|
379
|
-
) -> None:
|
|
380
|
-
"""
|
|
381
|
-
Set the sampling start delay.
|
|
382
|
-
|
|
383
|
-
Args:
|
|
384
|
-
interval: Delay time between triggering a recording and the first data point being recorded.
|
|
385
|
-
unit: Unit of measure the delay is represented in.
|
|
386
|
-
"""
|
|
387
|
-
request = dto.DeviceSetSettingRequest(
|
|
388
|
-
interface_id=self.device.connection.interface_id,
|
|
389
|
-
device=self.device.device_address,
|
|
390
|
-
setting="scope.delay",
|
|
391
|
-
value=interval,
|
|
392
|
-
unit=unit,
|
|
393
|
-
)
|
|
394
|
-
call("device/set_setting", request)
|
|
395
|
-
|
|
396
|
-
async def set_delay_async(
|
|
397
|
-
self,
|
|
398
|
-
interval: float,
|
|
399
|
-
unit: TimeUnits = Units.NATIVE
|
|
400
|
-
) -> None:
|
|
401
|
-
"""
|
|
402
|
-
Set the sampling start delay.
|
|
403
|
-
|
|
404
|
-
Args:
|
|
405
|
-
interval: Delay time between triggering a recording and the first data point being recorded.
|
|
406
|
-
unit: Unit of measure the delay is represented in.
|
|
407
|
-
"""
|
|
408
|
-
request = dto.DeviceSetSettingRequest(
|
|
409
|
-
interface_id=self.device.connection.interface_id,
|
|
410
|
-
device=self.device.device_address,
|
|
411
|
-
setting="scope.delay",
|
|
412
|
-
value=interval,
|
|
413
|
-
unit=unit,
|
|
414
|
-
)
|
|
415
|
-
await call_async("device/set_setting", request)
|
|
416
|
-
|
|
417
|
-
def get_max_channels(
|
|
418
|
-
self
|
|
419
|
-
) -> int:
|
|
420
|
-
"""
|
|
421
|
-
Get the maximum number of channels that can be recorded.
|
|
422
|
-
|
|
423
|
-
Returns:
|
|
424
|
-
The maximum number of channels that can be added to an Oscilloscope recording.
|
|
425
|
-
"""
|
|
426
|
-
request = dto.DeviceGetSettingRequest(
|
|
427
|
-
interface_id=self.device.connection.interface_id,
|
|
428
|
-
device=self.device.device_address,
|
|
429
|
-
setting="scope.numchannels",
|
|
430
|
-
)
|
|
431
|
-
response = call(
|
|
432
|
-
"oscilloscope/get_setting",
|
|
433
|
-
request,
|
|
434
|
-
dto.IntResponse.from_binary)
|
|
435
|
-
return response.value
|
|
436
|
-
|
|
437
|
-
async def get_max_channels_async(
|
|
438
|
-
self
|
|
439
|
-
) -> int:
|
|
440
|
-
"""
|
|
441
|
-
Get the maximum number of channels that can be recorded.
|
|
442
|
-
|
|
443
|
-
Returns:
|
|
444
|
-
The maximum number of channels that can be added to an Oscilloscope recording.
|
|
445
|
-
"""
|
|
446
|
-
request = dto.DeviceGetSettingRequest(
|
|
447
|
-
interface_id=self.device.connection.interface_id,
|
|
448
|
-
device=self.device.device_address,
|
|
449
|
-
setting="scope.numchannels",
|
|
450
|
-
)
|
|
451
|
-
response = await call_async(
|
|
452
|
-
"oscilloscope/get_setting",
|
|
453
|
-
request,
|
|
454
|
-
dto.IntResponse.from_binary)
|
|
455
|
-
return response.value
|
|
456
|
-
|
|
457
|
-
def get_max_buffer_size(
|
|
458
|
-
self
|
|
459
|
-
) -> int:
|
|
460
|
-
"""
|
|
461
|
-
Get the maximum number of samples that can be recorded per Oscilloscope channel.
|
|
462
|
-
|
|
463
|
-
Returns:
|
|
464
|
-
The maximum number of samples that can be recorded per Oscilloscope channel.
|
|
465
|
-
"""
|
|
466
|
-
request = dto.DeviceGetSettingRequest(
|
|
467
|
-
interface_id=self.device.connection.interface_id,
|
|
468
|
-
device=self.device.device_address,
|
|
469
|
-
setting="scope.channel.size.max",
|
|
470
|
-
)
|
|
471
|
-
response = call(
|
|
472
|
-
"oscilloscope/get_setting",
|
|
473
|
-
request,
|
|
474
|
-
dto.IntResponse.from_binary)
|
|
475
|
-
return response.value
|
|
476
|
-
|
|
477
|
-
async def get_max_buffer_size_async(
|
|
478
|
-
self
|
|
479
|
-
) -> int:
|
|
480
|
-
"""
|
|
481
|
-
Get the maximum number of samples that can be recorded per Oscilloscope channel.
|
|
482
|
-
|
|
483
|
-
Returns:
|
|
484
|
-
The maximum number of samples that can be recorded per Oscilloscope channel.
|
|
485
|
-
"""
|
|
486
|
-
request = dto.DeviceGetSettingRequest(
|
|
487
|
-
interface_id=self.device.connection.interface_id,
|
|
488
|
-
device=self.device.device_address,
|
|
489
|
-
setting="scope.channel.size.max",
|
|
490
|
-
)
|
|
491
|
-
response = await call_async(
|
|
492
|
-
"oscilloscope/get_setting",
|
|
493
|
-
request,
|
|
494
|
-
dto.IntResponse.from_binary)
|
|
495
|
-
return response.value
|
|
496
|
-
|
|
497
|
-
def get_buffer_size(
|
|
498
|
-
self
|
|
499
|
-
) -> int:
|
|
500
|
-
"""
|
|
501
|
-
Get the number of samples that can be recorded per channel given the current number of channels added.
|
|
502
|
-
|
|
503
|
-
Returns:
|
|
504
|
-
Number of samples that will be recorded per channel with the current channels. Zero if none have been added.
|
|
505
|
-
"""
|
|
506
|
-
request = dto.DeviceGetSettingRequest(
|
|
507
|
-
interface_id=self.device.connection.interface_id,
|
|
508
|
-
device=self.device.device_address,
|
|
509
|
-
setting="scope.channel.size",
|
|
510
|
-
)
|
|
511
|
-
response = call(
|
|
512
|
-
"oscilloscope/get_setting",
|
|
513
|
-
request,
|
|
514
|
-
dto.IntResponse.from_binary)
|
|
515
|
-
return response.value
|
|
516
|
-
|
|
517
|
-
async def get_buffer_size_async(
|
|
518
|
-
self
|
|
519
|
-
) -> int:
|
|
520
|
-
"""
|
|
521
|
-
Get the number of samples that can be recorded per channel given the current number of channels added.
|
|
522
|
-
|
|
523
|
-
Returns:
|
|
524
|
-
Number of samples that will be recorded per channel with the current channels. Zero if none have been added.
|
|
525
|
-
"""
|
|
526
|
-
request = dto.DeviceGetSettingRequest(
|
|
527
|
-
interface_id=self.device.connection.interface_id,
|
|
528
|
-
device=self.device.device_address,
|
|
529
|
-
setting="scope.channel.size",
|
|
530
|
-
)
|
|
531
|
-
response = await call_async(
|
|
532
|
-
"oscilloscope/get_setting",
|
|
533
|
-
request,
|
|
534
|
-
dto.IntResponse.from_binary)
|
|
535
|
-
return response.value
|
|
536
|
-
|
|
537
|
-
def start(
|
|
538
|
-
self,
|
|
539
|
-
capture_length: int = 0
|
|
540
|
-
) -> None:
|
|
541
|
-
"""
|
|
542
|
-
Trigger data recording.
|
|
543
|
-
|
|
544
|
-
Args:
|
|
545
|
-
capture_length: Optional number of samples to record per channel.
|
|
546
|
-
If left empty, the device records samples until the buffer fills.
|
|
547
|
-
Requires at least Firmware 7.29.
|
|
548
|
-
"""
|
|
549
|
-
request = dto.OscilloscopeStartRequest(
|
|
550
|
-
interface_id=self.device.connection.interface_id,
|
|
551
|
-
device=self.device.device_address,
|
|
552
|
-
capture_length=capture_length,
|
|
553
|
-
)
|
|
554
|
-
call("oscilloscope/start", request)
|
|
555
|
-
|
|
556
|
-
async def start_async(
|
|
557
|
-
self,
|
|
558
|
-
capture_length: int = 0
|
|
559
|
-
) -> None:
|
|
560
|
-
"""
|
|
561
|
-
Trigger data recording.
|
|
562
|
-
|
|
563
|
-
Args:
|
|
564
|
-
capture_length: Optional number of samples to record per channel.
|
|
565
|
-
If left empty, the device records samples until the buffer fills.
|
|
566
|
-
Requires at least Firmware 7.29.
|
|
567
|
-
"""
|
|
568
|
-
request = dto.OscilloscopeStartRequest(
|
|
569
|
-
interface_id=self.device.connection.interface_id,
|
|
570
|
-
device=self.device.device_address,
|
|
571
|
-
capture_length=capture_length,
|
|
572
|
-
)
|
|
573
|
-
await call_async("oscilloscope/start", request)
|
|
574
|
-
|
|
575
|
-
def stop(
|
|
576
|
-
self
|
|
577
|
-
) -> None:
|
|
578
|
-
"""
|
|
579
|
-
End data recording if currently in progress.
|
|
580
|
-
"""
|
|
581
|
-
request = dto.OscilloscopeRequest(
|
|
582
|
-
interface_id=self.device.connection.interface_id,
|
|
583
|
-
device=self.device.device_address,
|
|
584
|
-
)
|
|
585
|
-
call("oscilloscope/stop", request)
|
|
586
|
-
|
|
587
|
-
async def stop_async(
|
|
588
|
-
self
|
|
589
|
-
) -> None:
|
|
590
|
-
"""
|
|
591
|
-
End data recording if currently in progress.
|
|
592
|
-
"""
|
|
593
|
-
request = dto.OscilloscopeRequest(
|
|
594
|
-
interface_id=self.device.connection.interface_id,
|
|
595
|
-
device=self.device.device_address,
|
|
596
|
-
)
|
|
597
|
-
await call_async("oscilloscope/stop", request)
|
|
598
|
-
|
|
599
|
-
def read(
|
|
600
|
-
self
|
|
601
|
-
) -> List[OscilloscopeData]:
|
|
602
|
-
"""
|
|
603
|
-
Reads the last-recorded data from the oscilloscope. Will block until any in-progress recording completes.
|
|
604
|
-
|
|
605
|
-
Returns:
|
|
606
|
-
Array of recorded channel data arrays, in the order added.
|
|
607
|
-
"""
|
|
608
|
-
request = dto.DeviceEmptyRequest(
|
|
609
|
-
interface_id=self.device.connection.interface_id,
|
|
610
|
-
device=self.device.device_address,
|
|
611
|
-
)
|
|
612
|
-
response = call(
|
|
613
|
-
"oscilloscope/read",
|
|
614
|
-
request,
|
|
615
|
-
dto.OscilloscopeReadResponse.from_binary)
|
|
616
|
-
return list(map(OscilloscopeData, response.data_ids))
|
|
617
|
-
|
|
618
|
-
async def read_async(
|
|
619
|
-
self
|
|
620
|
-
) -> List[OscilloscopeData]:
|
|
621
|
-
"""
|
|
622
|
-
Reads the last-recorded data from the oscilloscope. Will block until any in-progress recording completes.
|
|
623
|
-
|
|
624
|
-
Returns:
|
|
625
|
-
Array of recorded channel data arrays, in the order added.
|
|
626
|
-
"""
|
|
627
|
-
request = dto.DeviceEmptyRequest(
|
|
628
|
-
interface_id=self.device.connection.interface_id,
|
|
629
|
-
device=self.device.device_address,
|
|
630
|
-
)
|
|
631
|
-
response = await call_async(
|
|
632
|
-
"oscilloscope/read",
|
|
633
|
-
request,
|
|
634
|
-
dto.OscilloscopeReadResponse.from_binary)
|
|
635
|
-
return list(map(OscilloscopeData, response.data_ids))
|
|
1
|
+
# ===== THIS FILE IS GENERATED FROM A TEMPLATE ===== #
|
|
2
|
+
# ============== DO NOT EDIT DIRECTLY ============== #
|
|
3
|
+
from typing import TYPE_CHECKING, List
|
|
4
|
+
from ..dto import requests as dto
|
|
5
|
+
from ..units import Units, TimeUnits, FrequencyUnits
|
|
6
|
+
from ..call import call, call_async
|
|
7
|
+
from ..dto.ascii.io_port_type import IoPortType
|
|
8
|
+
from .oscilloscope_data import OscilloscopeData
|
|
9
|
+
|
|
10
|
+
if TYPE_CHECKING:
|
|
11
|
+
from .device import Device
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class Oscilloscope:
|
|
15
|
+
"""
|
|
16
|
+
Provides a convenient way to control the oscilloscope data recording feature of some devices.
|
|
17
|
+
The oscilloscope can record the values of some settings over time at high resolution.
|
|
18
|
+
Requires at least Firmware 7.00.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
@property
|
|
22
|
+
def device(self) -> 'Device':
|
|
23
|
+
"""
|
|
24
|
+
Device that this Oscilloscope measures.
|
|
25
|
+
"""
|
|
26
|
+
return self._device
|
|
27
|
+
|
|
28
|
+
def __init__(self, device: 'Device'):
|
|
29
|
+
self._device: 'Device' = device
|
|
30
|
+
|
|
31
|
+
def add_channel(
|
|
32
|
+
self,
|
|
33
|
+
axis: int,
|
|
34
|
+
setting: str
|
|
35
|
+
) -> None:
|
|
36
|
+
"""
|
|
37
|
+
Select a setting to be recorded.
|
|
38
|
+
|
|
39
|
+
Args:
|
|
40
|
+
axis: The 1-based index of the axis to record the value from.
|
|
41
|
+
setting: The name of a setting to record.
|
|
42
|
+
"""
|
|
43
|
+
request = dto.OscilloscopeAddSettingChannelRequest(
|
|
44
|
+
interface_id=self.device.connection.interface_id,
|
|
45
|
+
device=self.device.device_address,
|
|
46
|
+
axis=axis,
|
|
47
|
+
setting=setting,
|
|
48
|
+
)
|
|
49
|
+
call("oscilloscope/add_setting_channel", request)
|
|
50
|
+
|
|
51
|
+
async def add_channel_async(
|
|
52
|
+
self,
|
|
53
|
+
axis: int,
|
|
54
|
+
setting: str
|
|
55
|
+
) -> None:
|
|
56
|
+
"""
|
|
57
|
+
Select a setting to be recorded.
|
|
58
|
+
|
|
59
|
+
Args:
|
|
60
|
+
axis: The 1-based index of the axis to record the value from.
|
|
61
|
+
setting: The name of a setting to record.
|
|
62
|
+
"""
|
|
63
|
+
request = dto.OscilloscopeAddSettingChannelRequest(
|
|
64
|
+
interface_id=self.device.connection.interface_id,
|
|
65
|
+
device=self.device.device_address,
|
|
66
|
+
axis=axis,
|
|
67
|
+
setting=setting,
|
|
68
|
+
)
|
|
69
|
+
await call_async("oscilloscope/add_setting_channel", request)
|
|
70
|
+
|
|
71
|
+
def add_io_channel(
|
|
72
|
+
self,
|
|
73
|
+
io_type: IoPortType,
|
|
74
|
+
io_channel: int
|
|
75
|
+
) -> None:
|
|
76
|
+
"""
|
|
77
|
+
Select an I/O pin to be recorded.
|
|
78
|
+
Requires at least Firmware 7.33.
|
|
79
|
+
|
|
80
|
+
Args:
|
|
81
|
+
io_type: The I/O port type to read data from.
|
|
82
|
+
io_channel: The 1-based index of the I/O pin to read from.
|
|
83
|
+
"""
|
|
84
|
+
request = dto.OscilloscopeAddIoChannelRequest(
|
|
85
|
+
interface_id=self.device.connection.interface_id,
|
|
86
|
+
device=self.device.device_address,
|
|
87
|
+
io_type=io_type,
|
|
88
|
+
io_channel=io_channel,
|
|
89
|
+
)
|
|
90
|
+
call("oscilloscope/add_io_channel", request)
|
|
91
|
+
|
|
92
|
+
async def add_io_channel_async(
|
|
93
|
+
self,
|
|
94
|
+
io_type: IoPortType,
|
|
95
|
+
io_channel: int
|
|
96
|
+
) -> None:
|
|
97
|
+
"""
|
|
98
|
+
Select an I/O pin to be recorded.
|
|
99
|
+
Requires at least Firmware 7.33.
|
|
100
|
+
|
|
101
|
+
Args:
|
|
102
|
+
io_type: The I/O port type to read data from.
|
|
103
|
+
io_channel: The 1-based index of the I/O pin to read from.
|
|
104
|
+
"""
|
|
105
|
+
request = dto.OscilloscopeAddIoChannelRequest(
|
|
106
|
+
interface_id=self.device.connection.interface_id,
|
|
107
|
+
device=self.device.device_address,
|
|
108
|
+
io_type=io_type,
|
|
109
|
+
io_channel=io_channel,
|
|
110
|
+
)
|
|
111
|
+
await call_async("oscilloscope/add_io_channel", request)
|
|
112
|
+
|
|
113
|
+
def clear(
|
|
114
|
+
self
|
|
115
|
+
) -> None:
|
|
116
|
+
"""
|
|
117
|
+
Clear the list of channels to record.
|
|
118
|
+
"""
|
|
119
|
+
request = dto.DeviceEmptyRequest(
|
|
120
|
+
interface_id=self.device.connection.interface_id,
|
|
121
|
+
device=self.device.device_address,
|
|
122
|
+
)
|
|
123
|
+
call("oscilloscope/clear_channels", request)
|
|
124
|
+
|
|
125
|
+
async def clear_async(
|
|
126
|
+
self
|
|
127
|
+
) -> None:
|
|
128
|
+
"""
|
|
129
|
+
Clear the list of channels to record.
|
|
130
|
+
"""
|
|
131
|
+
request = dto.DeviceEmptyRequest(
|
|
132
|
+
interface_id=self.device.connection.interface_id,
|
|
133
|
+
device=self.device.device_address,
|
|
134
|
+
)
|
|
135
|
+
await call_async("oscilloscope/clear_channels", request)
|
|
136
|
+
|
|
137
|
+
def get_timebase(
|
|
138
|
+
self,
|
|
139
|
+
unit: TimeUnits = Units.NATIVE
|
|
140
|
+
) -> float:
|
|
141
|
+
"""
|
|
142
|
+
Get the current sampling interval.
|
|
143
|
+
|
|
144
|
+
Args:
|
|
145
|
+
unit: Unit of measure to represent the timebase in.
|
|
146
|
+
|
|
147
|
+
Returns:
|
|
148
|
+
The current sampling interval in the selected time units.
|
|
149
|
+
"""
|
|
150
|
+
request = dto.DeviceGetSettingRequest(
|
|
151
|
+
interface_id=self.device.connection.interface_id,
|
|
152
|
+
device=self.device.device_address,
|
|
153
|
+
setting="scope.timebase",
|
|
154
|
+
unit=unit,
|
|
155
|
+
)
|
|
156
|
+
response = call(
|
|
157
|
+
"device/get_setting",
|
|
158
|
+
request,
|
|
159
|
+
dto.DoubleResponse.from_binary)
|
|
160
|
+
return response.value
|
|
161
|
+
|
|
162
|
+
async def get_timebase_async(
|
|
163
|
+
self,
|
|
164
|
+
unit: TimeUnits = Units.NATIVE
|
|
165
|
+
) -> float:
|
|
166
|
+
"""
|
|
167
|
+
Get the current sampling interval.
|
|
168
|
+
|
|
169
|
+
Args:
|
|
170
|
+
unit: Unit of measure to represent the timebase in.
|
|
171
|
+
|
|
172
|
+
Returns:
|
|
173
|
+
The current sampling interval in the selected time units.
|
|
174
|
+
"""
|
|
175
|
+
request = dto.DeviceGetSettingRequest(
|
|
176
|
+
interface_id=self.device.connection.interface_id,
|
|
177
|
+
device=self.device.device_address,
|
|
178
|
+
setting="scope.timebase",
|
|
179
|
+
unit=unit,
|
|
180
|
+
)
|
|
181
|
+
response = await call_async(
|
|
182
|
+
"device/get_setting",
|
|
183
|
+
request,
|
|
184
|
+
dto.DoubleResponse.from_binary)
|
|
185
|
+
return response.value
|
|
186
|
+
|
|
187
|
+
def set_timebase(
|
|
188
|
+
self,
|
|
189
|
+
interval: float,
|
|
190
|
+
unit: TimeUnits = Units.NATIVE
|
|
191
|
+
) -> None:
|
|
192
|
+
"""
|
|
193
|
+
Set the sampling interval.
|
|
194
|
+
|
|
195
|
+
Args:
|
|
196
|
+
interval: Sample interval for the next oscilloscope recording. Minimum value is 100µs.
|
|
197
|
+
unit: Unit of measure the timebase is represented in.
|
|
198
|
+
"""
|
|
199
|
+
request = dto.DeviceSetSettingRequest(
|
|
200
|
+
interface_id=self.device.connection.interface_id,
|
|
201
|
+
device=self.device.device_address,
|
|
202
|
+
setting="scope.timebase",
|
|
203
|
+
value=interval,
|
|
204
|
+
unit=unit,
|
|
205
|
+
)
|
|
206
|
+
call("device/set_setting", request)
|
|
207
|
+
|
|
208
|
+
async def set_timebase_async(
|
|
209
|
+
self,
|
|
210
|
+
interval: float,
|
|
211
|
+
unit: TimeUnits = Units.NATIVE
|
|
212
|
+
) -> None:
|
|
213
|
+
"""
|
|
214
|
+
Set the sampling interval.
|
|
215
|
+
|
|
216
|
+
Args:
|
|
217
|
+
interval: Sample interval for the next oscilloscope recording. Minimum value is 100µs.
|
|
218
|
+
unit: Unit of measure the timebase is represented in.
|
|
219
|
+
"""
|
|
220
|
+
request = dto.DeviceSetSettingRequest(
|
|
221
|
+
interface_id=self.device.connection.interface_id,
|
|
222
|
+
device=self.device.device_address,
|
|
223
|
+
setting="scope.timebase",
|
|
224
|
+
value=interval,
|
|
225
|
+
unit=unit,
|
|
226
|
+
)
|
|
227
|
+
await call_async("device/set_setting", request)
|
|
228
|
+
|
|
229
|
+
def get_frequency(
|
|
230
|
+
self,
|
|
231
|
+
unit: FrequencyUnits = Units.NATIVE
|
|
232
|
+
) -> float:
|
|
233
|
+
"""
|
|
234
|
+
Get the current sampling frequency.
|
|
235
|
+
The values is calculated as the inverse of the current sampling interval.
|
|
236
|
+
|
|
237
|
+
Args:
|
|
238
|
+
unit: Unit of measure to represent the frequency in.
|
|
239
|
+
|
|
240
|
+
Returns:
|
|
241
|
+
The inverse of current sampling interval in the selected units.
|
|
242
|
+
"""
|
|
243
|
+
request = dto.DeviceGetSettingRequest(
|
|
244
|
+
interface_id=self.device.connection.interface_id,
|
|
245
|
+
device=self.device.device_address,
|
|
246
|
+
setting="scope.timebase",
|
|
247
|
+
unit=unit,
|
|
248
|
+
)
|
|
249
|
+
response = call(
|
|
250
|
+
"oscilloscope/get_frequency",
|
|
251
|
+
request,
|
|
252
|
+
dto.DoubleResponse.from_binary)
|
|
253
|
+
return response.value
|
|
254
|
+
|
|
255
|
+
async def get_frequency_async(
|
|
256
|
+
self,
|
|
257
|
+
unit: FrequencyUnits = Units.NATIVE
|
|
258
|
+
) -> float:
|
|
259
|
+
"""
|
|
260
|
+
Get the current sampling frequency.
|
|
261
|
+
The values is calculated as the inverse of the current sampling interval.
|
|
262
|
+
|
|
263
|
+
Args:
|
|
264
|
+
unit: Unit of measure to represent the frequency in.
|
|
265
|
+
|
|
266
|
+
Returns:
|
|
267
|
+
The inverse of current sampling interval in the selected units.
|
|
268
|
+
"""
|
|
269
|
+
request = dto.DeviceGetSettingRequest(
|
|
270
|
+
interface_id=self.device.connection.interface_id,
|
|
271
|
+
device=self.device.device_address,
|
|
272
|
+
setting="scope.timebase",
|
|
273
|
+
unit=unit,
|
|
274
|
+
)
|
|
275
|
+
response = await call_async(
|
|
276
|
+
"oscilloscope/get_frequency",
|
|
277
|
+
request,
|
|
278
|
+
dto.DoubleResponse.from_binary)
|
|
279
|
+
return response.value
|
|
280
|
+
|
|
281
|
+
def set_frequency(
|
|
282
|
+
self,
|
|
283
|
+
frequency: float,
|
|
284
|
+
unit: FrequencyUnits = Units.NATIVE
|
|
285
|
+
) -> None:
|
|
286
|
+
"""
|
|
287
|
+
Set the sampling frequency (inverse of the sampling interval).
|
|
288
|
+
The value is quantized to the next closest value supported by the firmware.
|
|
289
|
+
|
|
290
|
+
Args:
|
|
291
|
+
frequency: Sample frequency for the next oscilloscope recording.
|
|
292
|
+
unit: Unit of measure the frequency is represented in.
|
|
293
|
+
"""
|
|
294
|
+
request = dto.DeviceSetSettingRequest(
|
|
295
|
+
interface_id=self.device.connection.interface_id,
|
|
296
|
+
device=self.device.device_address,
|
|
297
|
+
setting="scope.timebase",
|
|
298
|
+
value=frequency,
|
|
299
|
+
unit=unit,
|
|
300
|
+
)
|
|
301
|
+
call("oscilloscope/set_frequency", request)
|
|
302
|
+
|
|
303
|
+
async def set_frequency_async(
|
|
304
|
+
self,
|
|
305
|
+
frequency: float,
|
|
306
|
+
unit: FrequencyUnits = Units.NATIVE
|
|
307
|
+
) -> None:
|
|
308
|
+
"""
|
|
309
|
+
Set the sampling frequency (inverse of the sampling interval).
|
|
310
|
+
The value is quantized to the next closest value supported by the firmware.
|
|
311
|
+
|
|
312
|
+
Args:
|
|
313
|
+
frequency: Sample frequency for the next oscilloscope recording.
|
|
314
|
+
unit: Unit of measure the frequency is represented in.
|
|
315
|
+
"""
|
|
316
|
+
request = dto.DeviceSetSettingRequest(
|
|
317
|
+
interface_id=self.device.connection.interface_id,
|
|
318
|
+
device=self.device.device_address,
|
|
319
|
+
setting="scope.timebase",
|
|
320
|
+
value=frequency,
|
|
321
|
+
unit=unit,
|
|
322
|
+
)
|
|
323
|
+
await call_async("oscilloscope/set_frequency", request)
|
|
324
|
+
|
|
325
|
+
def get_delay(
|
|
326
|
+
self,
|
|
327
|
+
unit: TimeUnits = Units.NATIVE
|
|
328
|
+
) -> float:
|
|
329
|
+
"""
|
|
330
|
+
Get the delay before oscilloscope recording starts.
|
|
331
|
+
|
|
332
|
+
Args:
|
|
333
|
+
unit: Unit of measure to represent the delay in.
|
|
334
|
+
|
|
335
|
+
Returns:
|
|
336
|
+
The current start delay in the selected time units.
|
|
337
|
+
"""
|
|
338
|
+
request = dto.DeviceGetSettingRequest(
|
|
339
|
+
interface_id=self.device.connection.interface_id,
|
|
340
|
+
device=self.device.device_address,
|
|
341
|
+
setting="scope.delay",
|
|
342
|
+
unit=unit,
|
|
343
|
+
)
|
|
344
|
+
response = call(
|
|
345
|
+
"device/get_setting",
|
|
346
|
+
request,
|
|
347
|
+
dto.DoubleResponse.from_binary)
|
|
348
|
+
return response.value
|
|
349
|
+
|
|
350
|
+
async def get_delay_async(
|
|
351
|
+
self,
|
|
352
|
+
unit: TimeUnits = Units.NATIVE
|
|
353
|
+
) -> float:
|
|
354
|
+
"""
|
|
355
|
+
Get the delay before oscilloscope recording starts.
|
|
356
|
+
|
|
357
|
+
Args:
|
|
358
|
+
unit: Unit of measure to represent the delay in.
|
|
359
|
+
|
|
360
|
+
Returns:
|
|
361
|
+
The current start delay in the selected time units.
|
|
362
|
+
"""
|
|
363
|
+
request = dto.DeviceGetSettingRequest(
|
|
364
|
+
interface_id=self.device.connection.interface_id,
|
|
365
|
+
device=self.device.device_address,
|
|
366
|
+
setting="scope.delay",
|
|
367
|
+
unit=unit,
|
|
368
|
+
)
|
|
369
|
+
response = await call_async(
|
|
370
|
+
"device/get_setting",
|
|
371
|
+
request,
|
|
372
|
+
dto.DoubleResponse.from_binary)
|
|
373
|
+
return response.value
|
|
374
|
+
|
|
375
|
+
def set_delay(
|
|
376
|
+
self,
|
|
377
|
+
interval: float,
|
|
378
|
+
unit: TimeUnits = Units.NATIVE
|
|
379
|
+
) -> None:
|
|
380
|
+
"""
|
|
381
|
+
Set the sampling start delay.
|
|
382
|
+
|
|
383
|
+
Args:
|
|
384
|
+
interval: Delay time between triggering a recording and the first data point being recorded.
|
|
385
|
+
unit: Unit of measure the delay is represented in.
|
|
386
|
+
"""
|
|
387
|
+
request = dto.DeviceSetSettingRequest(
|
|
388
|
+
interface_id=self.device.connection.interface_id,
|
|
389
|
+
device=self.device.device_address,
|
|
390
|
+
setting="scope.delay",
|
|
391
|
+
value=interval,
|
|
392
|
+
unit=unit,
|
|
393
|
+
)
|
|
394
|
+
call("device/set_setting", request)
|
|
395
|
+
|
|
396
|
+
async def set_delay_async(
|
|
397
|
+
self,
|
|
398
|
+
interval: float,
|
|
399
|
+
unit: TimeUnits = Units.NATIVE
|
|
400
|
+
) -> None:
|
|
401
|
+
"""
|
|
402
|
+
Set the sampling start delay.
|
|
403
|
+
|
|
404
|
+
Args:
|
|
405
|
+
interval: Delay time between triggering a recording and the first data point being recorded.
|
|
406
|
+
unit: Unit of measure the delay is represented in.
|
|
407
|
+
"""
|
|
408
|
+
request = dto.DeviceSetSettingRequest(
|
|
409
|
+
interface_id=self.device.connection.interface_id,
|
|
410
|
+
device=self.device.device_address,
|
|
411
|
+
setting="scope.delay",
|
|
412
|
+
value=interval,
|
|
413
|
+
unit=unit,
|
|
414
|
+
)
|
|
415
|
+
await call_async("device/set_setting", request)
|
|
416
|
+
|
|
417
|
+
def get_max_channels(
|
|
418
|
+
self
|
|
419
|
+
) -> int:
|
|
420
|
+
"""
|
|
421
|
+
Get the maximum number of channels that can be recorded.
|
|
422
|
+
|
|
423
|
+
Returns:
|
|
424
|
+
The maximum number of channels that can be added to an Oscilloscope recording.
|
|
425
|
+
"""
|
|
426
|
+
request = dto.DeviceGetSettingRequest(
|
|
427
|
+
interface_id=self.device.connection.interface_id,
|
|
428
|
+
device=self.device.device_address,
|
|
429
|
+
setting="scope.numchannels",
|
|
430
|
+
)
|
|
431
|
+
response = call(
|
|
432
|
+
"oscilloscope/get_setting",
|
|
433
|
+
request,
|
|
434
|
+
dto.IntResponse.from_binary)
|
|
435
|
+
return response.value
|
|
436
|
+
|
|
437
|
+
async def get_max_channels_async(
|
|
438
|
+
self
|
|
439
|
+
) -> int:
|
|
440
|
+
"""
|
|
441
|
+
Get the maximum number of channels that can be recorded.
|
|
442
|
+
|
|
443
|
+
Returns:
|
|
444
|
+
The maximum number of channels that can be added to an Oscilloscope recording.
|
|
445
|
+
"""
|
|
446
|
+
request = dto.DeviceGetSettingRequest(
|
|
447
|
+
interface_id=self.device.connection.interface_id,
|
|
448
|
+
device=self.device.device_address,
|
|
449
|
+
setting="scope.numchannels",
|
|
450
|
+
)
|
|
451
|
+
response = await call_async(
|
|
452
|
+
"oscilloscope/get_setting",
|
|
453
|
+
request,
|
|
454
|
+
dto.IntResponse.from_binary)
|
|
455
|
+
return response.value
|
|
456
|
+
|
|
457
|
+
def get_max_buffer_size(
|
|
458
|
+
self
|
|
459
|
+
) -> int:
|
|
460
|
+
"""
|
|
461
|
+
Get the maximum number of samples that can be recorded per Oscilloscope channel.
|
|
462
|
+
|
|
463
|
+
Returns:
|
|
464
|
+
The maximum number of samples that can be recorded per Oscilloscope channel.
|
|
465
|
+
"""
|
|
466
|
+
request = dto.DeviceGetSettingRequest(
|
|
467
|
+
interface_id=self.device.connection.interface_id,
|
|
468
|
+
device=self.device.device_address,
|
|
469
|
+
setting="scope.channel.size.max",
|
|
470
|
+
)
|
|
471
|
+
response = call(
|
|
472
|
+
"oscilloscope/get_setting",
|
|
473
|
+
request,
|
|
474
|
+
dto.IntResponse.from_binary)
|
|
475
|
+
return response.value
|
|
476
|
+
|
|
477
|
+
async def get_max_buffer_size_async(
|
|
478
|
+
self
|
|
479
|
+
) -> int:
|
|
480
|
+
"""
|
|
481
|
+
Get the maximum number of samples that can be recorded per Oscilloscope channel.
|
|
482
|
+
|
|
483
|
+
Returns:
|
|
484
|
+
The maximum number of samples that can be recorded per Oscilloscope channel.
|
|
485
|
+
"""
|
|
486
|
+
request = dto.DeviceGetSettingRequest(
|
|
487
|
+
interface_id=self.device.connection.interface_id,
|
|
488
|
+
device=self.device.device_address,
|
|
489
|
+
setting="scope.channel.size.max",
|
|
490
|
+
)
|
|
491
|
+
response = await call_async(
|
|
492
|
+
"oscilloscope/get_setting",
|
|
493
|
+
request,
|
|
494
|
+
dto.IntResponse.from_binary)
|
|
495
|
+
return response.value
|
|
496
|
+
|
|
497
|
+
def get_buffer_size(
|
|
498
|
+
self
|
|
499
|
+
) -> int:
|
|
500
|
+
"""
|
|
501
|
+
Get the number of samples that can be recorded per channel given the current number of channels added.
|
|
502
|
+
|
|
503
|
+
Returns:
|
|
504
|
+
Number of samples that will be recorded per channel with the current channels. Zero if none have been added.
|
|
505
|
+
"""
|
|
506
|
+
request = dto.DeviceGetSettingRequest(
|
|
507
|
+
interface_id=self.device.connection.interface_id,
|
|
508
|
+
device=self.device.device_address,
|
|
509
|
+
setting="scope.channel.size",
|
|
510
|
+
)
|
|
511
|
+
response = call(
|
|
512
|
+
"oscilloscope/get_setting",
|
|
513
|
+
request,
|
|
514
|
+
dto.IntResponse.from_binary)
|
|
515
|
+
return response.value
|
|
516
|
+
|
|
517
|
+
async def get_buffer_size_async(
|
|
518
|
+
self
|
|
519
|
+
) -> int:
|
|
520
|
+
"""
|
|
521
|
+
Get the number of samples that can be recorded per channel given the current number of channels added.
|
|
522
|
+
|
|
523
|
+
Returns:
|
|
524
|
+
Number of samples that will be recorded per channel with the current channels. Zero if none have been added.
|
|
525
|
+
"""
|
|
526
|
+
request = dto.DeviceGetSettingRequest(
|
|
527
|
+
interface_id=self.device.connection.interface_id,
|
|
528
|
+
device=self.device.device_address,
|
|
529
|
+
setting="scope.channel.size",
|
|
530
|
+
)
|
|
531
|
+
response = await call_async(
|
|
532
|
+
"oscilloscope/get_setting",
|
|
533
|
+
request,
|
|
534
|
+
dto.IntResponse.from_binary)
|
|
535
|
+
return response.value
|
|
536
|
+
|
|
537
|
+
def start(
|
|
538
|
+
self,
|
|
539
|
+
capture_length: int = 0
|
|
540
|
+
) -> None:
|
|
541
|
+
"""
|
|
542
|
+
Trigger data recording.
|
|
543
|
+
|
|
544
|
+
Args:
|
|
545
|
+
capture_length: Optional number of samples to record per channel.
|
|
546
|
+
If left empty, the device records samples until the buffer fills.
|
|
547
|
+
Requires at least Firmware 7.29.
|
|
548
|
+
"""
|
|
549
|
+
request = dto.OscilloscopeStartRequest(
|
|
550
|
+
interface_id=self.device.connection.interface_id,
|
|
551
|
+
device=self.device.device_address,
|
|
552
|
+
capture_length=capture_length,
|
|
553
|
+
)
|
|
554
|
+
call("oscilloscope/start", request)
|
|
555
|
+
|
|
556
|
+
async def start_async(
|
|
557
|
+
self,
|
|
558
|
+
capture_length: int = 0
|
|
559
|
+
) -> None:
|
|
560
|
+
"""
|
|
561
|
+
Trigger data recording.
|
|
562
|
+
|
|
563
|
+
Args:
|
|
564
|
+
capture_length: Optional number of samples to record per channel.
|
|
565
|
+
If left empty, the device records samples until the buffer fills.
|
|
566
|
+
Requires at least Firmware 7.29.
|
|
567
|
+
"""
|
|
568
|
+
request = dto.OscilloscopeStartRequest(
|
|
569
|
+
interface_id=self.device.connection.interface_id,
|
|
570
|
+
device=self.device.device_address,
|
|
571
|
+
capture_length=capture_length,
|
|
572
|
+
)
|
|
573
|
+
await call_async("oscilloscope/start", request)
|
|
574
|
+
|
|
575
|
+
def stop(
|
|
576
|
+
self
|
|
577
|
+
) -> None:
|
|
578
|
+
"""
|
|
579
|
+
End data recording if currently in progress.
|
|
580
|
+
"""
|
|
581
|
+
request = dto.OscilloscopeRequest(
|
|
582
|
+
interface_id=self.device.connection.interface_id,
|
|
583
|
+
device=self.device.device_address,
|
|
584
|
+
)
|
|
585
|
+
call("oscilloscope/stop", request)
|
|
586
|
+
|
|
587
|
+
async def stop_async(
|
|
588
|
+
self
|
|
589
|
+
) -> None:
|
|
590
|
+
"""
|
|
591
|
+
End data recording if currently in progress.
|
|
592
|
+
"""
|
|
593
|
+
request = dto.OscilloscopeRequest(
|
|
594
|
+
interface_id=self.device.connection.interface_id,
|
|
595
|
+
device=self.device.device_address,
|
|
596
|
+
)
|
|
597
|
+
await call_async("oscilloscope/stop", request)
|
|
598
|
+
|
|
599
|
+
def read(
|
|
600
|
+
self
|
|
601
|
+
) -> List[OscilloscopeData]:
|
|
602
|
+
"""
|
|
603
|
+
Reads the last-recorded data from the oscilloscope. Will block until any in-progress recording completes.
|
|
604
|
+
|
|
605
|
+
Returns:
|
|
606
|
+
Array of recorded channel data arrays, in the order added.
|
|
607
|
+
"""
|
|
608
|
+
request = dto.DeviceEmptyRequest(
|
|
609
|
+
interface_id=self.device.connection.interface_id,
|
|
610
|
+
device=self.device.device_address,
|
|
611
|
+
)
|
|
612
|
+
response = call(
|
|
613
|
+
"oscilloscope/read",
|
|
614
|
+
request,
|
|
615
|
+
dto.OscilloscopeReadResponse.from_binary)
|
|
616
|
+
return list(map(OscilloscopeData, response.data_ids))
|
|
617
|
+
|
|
618
|
+
async def read_async(
|
|
619
|
+
self
|
|
620
|
+
) -> List[OscilloscopeData]:
|
|
621
|
+
"""
|
|
622
|
+
Reads the last-recorded data from the oscilloscope. Will block until any in-progress recording completes.
|
|
623
|
+
|
|
624
|
+
Returns:
|
|
625
|
+
Array of recorded channel data arrays, in the order added.
|
|
626
|
+
"""
|
|
627
|
+
request = dto.DeviceEmptyRequest(
|
|
628
|
+
interface_id=self.device.connection.interface_id,
|
|
629
|
+
device=self.device.device_address,
|
|
630
|
+
)
|
|
631
|
+
response = await call_async(
|
|
632
|
+
"oscilloscope/read",
|
|
633
|
+
request,
|
|
634
|
+
dto.OscilloscopeReadResponse.from_binary)
|
|
635
|
+
return list(map(OscilloscopeData, response.data_ids))
|