zaber-motion 7.13.0__py3-none-win_amd64.whl → 7.14.0__py3-none-win_amd64.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-amd64.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
zaber_motion/gcode/translator.py
CHANGED
|
@@ -1,424 +1,424 @@
|
|
|
1
|
-
# ===== THIS FILE IS GENERATED FROM A TEMPLATE ===== #
|
|
2
|
-
# ============== DO NOT EDIT DIRECTLY ============== #
|
|
3
|
-
|
|
4
|
-
from typing import List, Optional
|
|
5
|
-
from ..call import call, call_async, call_sync
|
|
6
|
-
|
|
7
|
-
from ..dto import requests as dto
|
|
8
|
-
from ..units import LengthUnits, VelocityUnits
|
|
9
|
-
from ..ascii import Stream
|
|
10
|
-
from ..dto.gcode.translator_config import TranslatorConfig
|
|
11
|
-
from ..dto.gcode.translate_result import TranslateResult
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class Translator:
|
|
15
|
-
"""
|
|
16
|
-
Represents a live G-Code translator.
|
|
17
|
-
It allows to stream G-Code blocks to a connected device.
|
|
18
|
-
It requires a stream to be setup on the device.
|
|
19
|
-
Requires at least Firmware 7.11.
|
|
20
|
-
"""
|
|
21
|
-
|
|
22
|
-
@property
|
|
23
|
-
def translator_id(self) -> int:
|
|
24
|
-
"""
|
|
25
|
-
The ID of the translator that serves to identify native resources.
|
|
26
|
-
"""
|
|
27
|
-
return self._translator_id
|
|
28
|
-
|
|
29
|
-
@property
|
|
30
|
-
def coordinate_system(self) -> str:
|
|
31
|
-
"""
|
|
32
|
-
Current coordinate system.
|
|
33
|
-
"""
|
|
34
|
-
return self.__get_current_coordinate_system()
|
|
35
|
-
|
|
36
|
-
def __init__(self, translator_id: int):
|
|
37
|
-
self._translator_id: int = translator_id
|
|
38
|
-
|
|
39
|
-
@staticmethod
|
|
40
|
-
def setup(
|
|
41
|
-
stream: Stream,
|
|
42
|
-
config: Optional[TranslatorConfig] = None
|
|
43
|
-
) -> 'Translator':
|
|
44
|
-
"""
|
|
45
|
-
Sets up the translator on top of a provided stream.
|
|
46
|
-
|
|
47
|
-
Args:
|
|
48
|
-
stream: The stream to setup the translator on.
|
|
49
|
-
The stream must be already setup in a live or a store mode.
|
|
50
|
-
config: Configuration of the translator.
|
|
51
|
-
|
|
52
|
-
Returns:
|
|
53
|
-
New instance of translator.
|
|
54
|
-
"""
|
|
55
|
-
request = dto.TranslatorCreateLiveRequest(
|
|
56
|
-
device=stream.device.device_address,
|
|
57
|
-
interface_id=stream.device.connection.interface_id,
|
|
58
|
-
stream_id=stream.stream_id,
|
|
59
|
-
config=config,
|
|
60
|
-
)
|
|
61
|
-
response = call(
|
|
62
|
-
"gcode/create_live",
|
|
63
|
-
request,
|
|
64
|
-
dto.TranslatorCreateResponse.from_binary)
|
|
65
|
-
return Translator(response.translator_id)
|
|
66
|
-
|
|
67
|
-
@staticmethod
|
|
68
|
-
async def setup_async(
|
|
69
|
-
stream: Stream,
|
|
70
|
-
config: Optional[TranslatorConfig] = None
|
|
71
|
-
) -> 'Translator':
|
|
72
|
-
"""
|
|
73
|
-
Sets up the translator on top of a provided stream.
|
|
74
|
-
|
|
75
|
-
Args:
|
|
76
|
-
stream: The stream to setup the translator on.
|
|
77
|
-
The stream must be already setup in a live or a store mode.
|
|
78
|
-
config: Configuration of the translator.
|
|
79
|
-
|
|
80
|
-
Returns:
|
|
81
|
-
New instance of translator.
|
|
82
|
-
"""
|
|
83
|
-
request = dto.TranslatorCreateLiveRequest(
|
|
84
|
-
device=stream.device.device_address,
|
|
85
|
-
interface_id=stream.device.connection.interface_id,
|
|
86
|
-
stream_id=stream.stream_id,
|
|
87
|
-
config=config,
|
|
88
|
-
)
|
|
89
|
-
response = await call_async(
|
|
90
|
-
"gcode/create_live",
|
|
91
|
-
request,
|
|
92
|
-
dto.TranslatorCreateResponse.from_binary)
|
|
93
|
-
return Translator(response.translator_id)
|
|
94
|
-
|
|
95
|
-
def translate(
|
|
96
|
-
self,
|
|
97
|
-
block: str
|
|
98
|
-
) -> TranslateResult:
|
|
99
|
-
"""
|
|
100
|
-
Translates a single block (line) of G-code.
|
|
101
|
-
The commands are queued in the underlying stream to ensure smooth continues movement.
|
|
102
|
-
Returning of this method indicates that the commands are queued (not necessarily executed).
|
|
103
|
-
|
|
104
|
-
Args:
|
|
105
|
-
block: Block (line) of G-code.
|
|
106
|
-
|
|
107
|
-
Returns:
|
|
108
|
-
Result of translation containing the commands sent to the device.
|
|
109
|
-
"""
|
|
110
|
-
request = dto.TranslatorTranslateRequest(
|
|
111
|
-
translator_id=self.translator_id,
|
|
112
|
-
block=block,
|
|
113
|
-
)
|
|
114
|
-
response = call(
|
|
115
|
-
"gcode/translate_live",
|
|
116
|
-
request,
|
|
117
|
-
TranslateResult.from_binary)
|
|
118
|
-
return response
|
|
119
|
-
|
|
120
|
-
async def translate_async(
|
|
121
|
-
self,
|
|
122
|
-
block: str
|
|
123
|
-
) -> TranslateResult:
|
|
124
|
-
"""
|
|
125
|
-
Translates a single block (line) of G-code.
|
|
126
|
-
The commands are queued in the underlying stream to ensure smooth continues movement.
|
|
127
|
-
Returning of this method indicates that the commands are queued (not necessarily executed).
|
|
128
|
-
|
|
129
|
-
Args:
|
|
130
|
-
block: Block (line) of G-code.
|
|
131
|
-
|
|
132
|
-
Returns:
|
|
133
|
-
Result of translation containing the commands sent to the device.
|
|
134
|
-
"""
|
|
135
|
-
request = dto.TranslatorTranslateRequest(
|
|
136
|
-
translator_id=self.translator_id,
|
|
137
|
-
block=block,
|
|
138
|
-
)
|
|
139
|
-
response = await call_async(
|
|
140
|
-
"gcode/translate_live",
|
|
141
|
-
request,
|
|
142
|
-
TranslateResult.from_binary)
|
|
143
|
-
return response
|
|
144
|
-
|
|
145
|
-
def flush(
|
|
146
|
-
self,
|
|
147
|
-
wait_until_idle: bool = True
|
|
148
|
-
) -> List[str]:
|
|
149
|
-
"""
|
|
150
|
-
Flushes the remaining stream commands waiting in optimization buffer into the underlying stream.
|
|
151
|
-
The flush is also performed by M2 and M30 codes.
|
|
152
|
-
|
|
153
|
-
Args:
|
|
154
|
-
wait_until_idle: Determines whether to wait for the stream to finish all the movements.
|
|
155
|
-
|
|
156
|
-
Returns:
|
|
157
|
-
The remaining stream commands.
|
|
158
|
-
"""
|
|
159
|
-
request = dto.TranslatorFlushLiveRequest(
|
|
160
|
-
translator_id=self.translator_id,
|
|
161
|
-
wait_until_idle=wait_until_idle,
|
|
162
|
-
)
|
|
163
|
-
response = call(
|
|
164
|
-
"gcode/flush_live",
|
|
165
|
-
request,
|
|
166
|
-
dto.TranslatorFlushResponse.from_binary)
|
|
167
|
-
return response.commands
|
|
168
|
-
|
|
169
|
-
async def flush_async(
|
|
170
|
-
self,
|
|
171
|
-
wait_until_idle: bool = True
|
|
172
|
-
) -> List[str]:
|
|
173
|
-
"""
|
|
174
|
-
Flushes the remaining stream commands waiting in optimization buffer into the underlying stream.
|
|
175
|
-
The flush is also performed by M2 and M30 codes.
|
|
176
|
-
|
|
177
|
-
Args:
|
|
178
|
-
wait_until_idle: Determines whether to wait for the stream to finish all the movements.
|
|
179
|
-
|
|
180
|
-
Returns:
|
|
181
|
-
The remaining stream commands.
|
|
182
|
-
"""
|
|
183
|
-
request = dto.TranslatorFlushLiveRequest(
|
|
184
|
-
translator_id=self.translator_id,
|
|
185
|
-
wait_until_idle=wait_until_idle,
|
|
186
|
-
)
|
|
187
|
-
response = await call_async(
|
|
188
|
-
"gcode/flush_live",
|
|
189
|
-
request,
|
|
190
|
-
dto.TranslatorFlushResponse.from_binary)
|
|
191
|
-
return response.commands
|
|
192
|
-
|
|
193
|
-
def reset_position(
|
|
194
|
-
self
|
|
195
|
-
) -> None:
|
|
196
|
-
"""
|
|
197
|
-
Resets position of the translator from the underlying stream.
|
|
198
|
-
Call this method after performing a movement outside of translator.
|
|
199
|
-
"""
|
|
200
|
-
request = dto.TranslatorEmptyRequest(
|
|
201
|
-
translator_id=self.translator_id,
|
|
202
|
-
)
|
|
203
|
-
call("gcode/reset_position_from_stream", request)
|
|
204
|
-
|
|
205
|
-
async def reset_position_async(
|
|
206
|
-
self
|
|
207
|
-
) -> None:
|
|
208
|
-
"""
|
|
209
|
-
Resets position of the translator from the underlying stream.
|
|
210
|
-
Call this method after performing a movement outside of translator.
|
|
211
|
-
"""
|
|
212
|
-
request = dto.TranslatorEmptyRequest(
|
|
213
|
-
translator_id=self.translator_id,
|
|
214
|
-
)
|
|
215
|
-
await call_async("gcode/reset_position_from_stream", request)
|
|
216
|
-
|
|
217
|
-
def set_traverse_rate(
|
|
218
|
-
self,
|
|
219
|
-
traverse_rate: float,
|
|
220
|
-
unit: VelocityUnits
|
|
221
|
-
) -> None:
|
|
222
|
-
"""
|
|
223
|
-
Sets the speed at which the device moves when traversing (G0).
|
|
224
|
-
|
|
225
|
-
Args:
|
|
226
|
-
traverse_rate: The traverse rate.
|
|
227
|
-
unit: Units of the traverse rate.
|
|
228
|
-
"""
|
|
229
|
-
request = dto.TranslatorSetTraverseRateRequest(
|
|
230
|
-
translator_id=self.translator_id,
|
|
231
|
-
traverse_rate=traverse_rate,
|
|
232
|
-
unit=unit,
|
|
233
|
-
)
|
|
234
|
-
call_sync("gcode/set_traverse_rate", request)
|
|
235
|
-
|
|
236
|
-
def set_axis_position(
|
|
237
|
-
self,
|
|
238
|
-
axis: str,
|
|
239
|
-
position: float,
|
|
240
|
-
unit: LengthUnits
|
|
241
|
-
) -> None:
|
|
242
|
-
"""
|
|
243
|
-
Sets position of translator's axis.
|
|
244
|
-
Use this method to set position after performing movement outside of the translator.
|
|
245
|
-
This method does not cause any movement.
|
|
246
|
-
|
|
247
|
-
Args:
|
|
248
|
-
axis: Letter of the axis.
|
|
249
|
-
position: The position.
|
|
250
|
-
unit: Units of position.
|
|
251
|
-
"""
|
|
252
|
-
request = dto.TranslatorSetAxisPositionRequest(
|
|
253
|
-
translator_id=self.translator_id,
|
|
254
|
-
axis=axis,
|
|
255
|
-
position=position,
|
|
256
|
-
unit=unit,
|
|
257
|
-
)
|
|
258
|
-
call_sync("gcode/set_axis_position", request)
|
|
259
|
-
|
|
260
|
-
def get_axis_position(
|
|
261
|
-
self,
|
|
262
|
-
axis: str,
|
|
263
|
-
unit: LengthUnits
|
|
264
|
-
) -> float:
|
|
265
|
-
"""
|
|
266
|
-
Gets position of translator's axis.
|
|
267
|
-
This method does not query device but returns value from translator's state.
|
|
268
|
-
|
|
269
|
-
Args:
|
|
270
|
-
axis: Letter of the axis.
|
|
271
|
-
unit: Units of position.
|
|
272
|
-
|
|
273
|
-
Returns:
|
|
274
|
-
Position of translator's axis.
|
|
275
|
-
"""
|
|
276
|
-
request = dto.TranslatorGetAxisPositionRequest(
|
|
277
|
-
translator_id=self.translator_id,
|
|
278
|
-
axis=axis,
|
|
279
|
-
unit=unit,
|
|
280
|
-
)
|
|
281
|
-
response = call_sync(
|
|
282
|
-
"gcode/get_axis_position",
|
|
283
|
-
request,
|
|
284
|
-
dto.DoubleResponse.from_binary)
|
|
285
|
-
return response.value
|
|
286
|
-
|
|
287
|
-
def set_axis_home_position(
|
|
288
|
-
self,
|
|
289
|
-
axis: str,
|
|
290
|
-
position: float,
|
|
291
|
-
unit: LengthUnits
|
|
292
|
-
) -> None:
|
|
293
|
-
"""
|
|
294
|
-
Sets the home position of translator's axis.
|
|
295
|
-
This position is used by G28.
|
|
296
|
-
|
|
297
|
-
Args:
|
|
298
|
-
axis: Letter of the axis.
|
|
299
|
-
position: The home position.
|
|
300
|
-
unit: Units of position.
|
|
301
|
-
"""
|
|
302
|
-
request = dto.TranslatorSetAxisPositionRequest(
|
|
303
|
-
translator_id=self.translator_id,
|
|
304
|
-
axis=axis,
|
|
305
|
-
position=position,
|
|
306
|
-
unit=unit,
|
|
307
|
-
)
|
|
308
|
-
call_sync("gcode/set_axis_home", request)
|
|
309
|
-
|
|
310
|
-
def set_axis_secondary_home_position(
|
|
311
|
-
self,
|
|
312
|
-
axis: str,
|
|
313
|
-
position: float,
|
|
314
|
-
unit: LengthUnits
|
|
315
|
-
) -> None:
|
|
316
|
-
"""
|
|
317
|
-
Sets the secondary home position of translator's axis.
|
|
318
|
-
This position is used by G30.
|
|
319
|
-
|
|
320
|
-
Args:
|
|
321
|
-
axis: Letter of the axis.
|
|
322
|
-
position: The home position.
|
|
323
|
-
unit: Units of position.
|
|
324
|
-
"""
|
|
325
|
-
request = dto.TranslatorSetAxisPositionRequest(
|
|
326
|
-
translator_id=self.translator_id,
|
|
327
|
-
axis=axis,
|
|
328
|
-
position=position,
|
|
329
|
-
unit=unit,
|
|
330
|
-
)
|
|
331
|
-
call_sync("gcode/set_axis_secondary_home", request)
|
|
332
|
-
|
|
333
|
-
def get_axis_coordinate_system_offset(
|
|
334
|
-
self,
|
|
335
|
-
coordinate_system: str,
|
|
336
|
-
axis: str,
|
|
337
|
-
unit: LengthUnits
|
|
338
|
-
) -> float:
|
|
339
|
-
"""
|
|
340
|
-
Gets offset of an axis in a given coordinate system.
|
|
341
|
-
|
|
342
|
-
Args:
|
|
343
|
-
coordinate_system: Coordinate system (e.g. G54).
|
|
344
|
-
axis: Letter of the axis.
|
|
345
|
-
unit: Units of position.
|
|
346
|
-
|
|
347
|
-
Returns:
|
|
348
|
-
Offset in translator units of the axis.
|
|
349
|
-
"""
|
|
350
|
-
request = dto.TranslatorGetAxisOffsetRequest(
|
|
351
|
-
translator_id=self.translator_id,
|
|
352
|
-
coordinate_system=coordinate_system,
|
|
353
|
-
axis=axis,
|
|
354
|
-
unit=unit,
|
|
355
|
-
)
|
|
356
|
-
response = call_sync(
|
|
357
|
-
"gcode/get_axis_offset",
|
|
358
|
-
request,
|
|
359
|
-
dto.DoubleResponse.from_binary)
|
|
360
|
-
return response.value
|
|
361
|
-
|
|
362
|
-
def reset_after_stream_error(
|
|
363
|
-
self
|
|
364
|
-
) -> None:
|
|
365
|
-
"""
|
|
366
|
-
Resets internal state after device rejected generated command.
|
|
367
|
-
Axis positions become uninitialized.
|
|
368
|
-
"""
|
|
369
|
-
request = dto.TranslatorEmptyRequest(
|
|
370
|
-
translator_id=self.translator_id,
|
|
371
|
-
)
|
|
372
|
-
call_sync("gcode/reset_after_stream_error", request)
|
|
373
|
-
|
|
374
|
-
def set_feed_rate_override(
|
|
375
|
-
self,
|
|
376
|
-
coefficient: float
|
|
377
|
-
) -> None:
|
|
378
|
-
"""
|
|
379
|
-
Allows to scale feed rate of the translated code by a coefficient.
|
|
380
|
-
|
|
381
|
-
Args:
|
|
382
|
-
coefficient: Coefficient of the original feed rate.
|
|
383
|
-
"""
|
|
384
|
-
request = dto.TranslatorSetFeedRateOverrideRequest(
|
|
385
|
-
translator_id=self.translator_id,
|
|
386
|
-
coefficient=coefficient,
|
|
387
|
-
)
|
|
388
|
-
call_sync("gcode/set_feed_rate_override", request)
|
|
389
|
-
|
|
390
|
-
@staticmethod
|
|
391
|
-
def __free(
|
|
392
|
-
translator_id: int
|
|
393
|
-
) -> None:
|
|
394
|
-
"""
|
|
395
|
-
Releases native resources of a translator.
|
|
396
|
-
|
|
397
|
-
Args:
|
|
398
|
-
translator_id: The ID of the translator.
|
|
399
|
-
"""
|
|
400
|
-
request = dto.TranslatorEmptyRequest(
|
|
401
|
-
translator_id=translator_id,
|
|
402
|
-
)
|
|
403
|
-
call_sync("gcode/free", request)
|
|
404
|
-
|
|
405
|
-
def __get_current_coordinate_system(
|
|
406
|
-
self
|
|
407
|
-
) -> str:
|
|
408
|
-
"""
|
|
409
|
-
Gets current coordinate system (e.g. G54).
|
|
410
|
-
|
|
411
|
-
Returns:
|
|
412
|
-
Current coordinate system.
|
|
413
|
-
"""
|
|
414
|
-
request = dto.TranslatorEmptyRequest(
|
|
415
|
-
translator_id=self.translator_id,
|
|
416
|
-
)
|
|
417
|
-
response = call_sync(
|
|
418
|
-
"gcode/get_current_coordinate_system",
|
|
419
|
-
request,
|
|
420
|
-
dto.StringResponse.from_binary)
|
|
421
|
-
return response.value
|
|
422
|
-
|
|
423
|
-
def __del__(self) -> None:
|
|
424
|
-
Translator.__free(self.translator_id)
|
|
1
|
+
# ===== THIS FILE IS GENERATED FROM A TEMPLATE ===== #
|
|
2
|
+
# ============== DO NOT EDIT DIRECTLY ============== #
|
|
3
|
+
|
|
4
|
+
from typing import List, Optional
|
|
5
|
+
from ..call import call, call_async, call_sync
|
|
6
|
+
|
|
7
|
+
from ..dto import requests as dto
|
|
8
|
+
from ..units import LengthUnits, VelocityUnits
|
|
9
|
+
from ..ascii import Stream
|
|
10
|
+
from ..dto.gcode.translator_config import TranslatorConfig
|
|
11
|
+
from ..dto.gcode.translate_result import TranslateResult
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class Translator:
|
|
15
|
+
"""
|
|
16
|
+
Represents a live G-Code translator.
|
|
17
|
+
It allows to stream G-Code blocks to a connected device.
|
|
18
|
+
It requires a stream to be setup on the device.
|
|
19
|
+
Requires at least Firmware 7.11.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
@property
|
|
23
|
+
def translator_id(self) -> int:
|
|
24
|
+
"""
|
|
25
|
+
The ID of the translator that serves to identify native resources.
|
|
26
|
+
"""
|
|
27
|
+
return self._translator_id
|
|
28
|
+
|
|
29
|
+
@property
|
|
30
|
+
def coordinate_system(self) -> str:
|
|
31
|
+
"""
|
|
32
|
+
Current coordinate system.
|
|
33
|
+
"""
|
|
34
|
+
return self.__get_current_coordinate_system()
|
|
35
|
+
|
|
36
|
+
def __init__(self, translator_id: int):
|
|
37
|
+
self._translator_id: int = translator_id
|
|
38
|
+
|
|
39
|
+
@staticmethod
|
|
40
|
+
def setup(
|
|
41
|
+
stream: Stream,
|
|
42
|
+
config: Optional[TranslatorConfig] = None
|
|
43
|
+
) -> 'Translator':
|
|
44
|
+
"""
|
|
45
|
+
Sets up the translator on top of a provided stream.
|
|
46
|
+
|
|
47
|
+
Args:
|
|
48
|
+
stream: The stream to setup the translator on.
|
|
49
|
+
The stream must be already setup in a live or a store mode.
|
|
50
|
+
config: Configuration of the translator.
|
|
51
|
+
|
|
52
|
+
Returns:
|
|
53
|
+
New instance of translator.
|
|
54
|
+
"""
|
|
55
|
+
request = dto.TranslatorCreateLiveRequest(
|
|
56
|
+
device=stream.device.device_address,
|
|
57
|
+
interface_id=stream.device.connection.interface_id,
|
|
58
|
+
stream_id=stream.stream_id,
|
|
59
|
+
config=config,
|
|
60
|
+
)
|
|
61
|
+
response = call(
|
|
62
|
+
"gcode/create_live",
|
|
63
|
+
request,
|
|
64
|
+
dto.TranslatorCreateResponse.from_binary)
|
|
65
|
+
return Translator(response.translator_id)
|
|
66
|
+
|
|
67
|
+
@staticmethod
|
|
68
|
+
async def setup_async(
|
|
69
|
+
stream: Stream,
|
|
70
|
+
config: Optional[TranslatorConfig] = None
|
|
71
|
+
) -> 'Translator':
|
|
72
|
+
"""
|
|
73
|
+
Sets up the translator on top of a provided stream.
|
|
74
|
+
|
|
75
|
+
Args:
|
|
76
|
+
stream: The stream to setup the translator on.
|
|
77
|
+
The stream must be already setup in a live or a store mode.
|
|
78
|
+
config: Configuration of the translator.
|
|
79
|
+
|
|
80
|
+
Returns:
|
|
81
|
+
New instance of translator.
|
|
82
|
+
"""
|
|
83
|
+
request = dto.TranslatorCreateLiveRequest(
|
|
84
|
+
device=stream.device.device_address,
|
|
85
|
+
interface_id=stream.device.connection.interface_id,
|
|
86
|
+
stream_id=stream.stream_id,
|
|
87
|
+
config=config,
|
|
88
|
+
)
|
|
89
|
+
response = await call_async(
|
|
90
|
+
"gcode/create_live",
|
|
91
|
+
request,
|
|
92
|
+
dto.TranslatorCreateResponse.from_binary)
|
|
93
|
+
return Translator(response.translator_id)
|
|
94
|
+
|
|
95
|
+
def translate(
|
|
96
|
+
self,
|
|
97
|
+
block: str
|
|
98
|
+
) -> TranslateResult:
|
|
99
|
+
"""
|
|
100
|
+
Translates a single block (line) of G-code.
|
|
101
|
+
The commands are queued in the underlying stream to ensure smooth continues movement.
|
|
102
|
+
Returning of this method indicates that the commands are queued (not necessarily executed).
|
|
103
|
+
|
|
104
|
+
Args:
|
|
105
|
+
block: Block (line) of G-code.
|
|
106
|
+
|
|
107
|
+
Returns:
|
|
108
|
+
Result of translation containing the commands sent to the device.
|
|
109
|
+
"""
|
|
110
|
+
request = dto.TranslatorTranslateRequest(
|
|
111
|
+
translator_id=self.translator_id,
|
|
112
|
+
block=block,
|
|
113
|
+
)
|
|
114
|
+
response = call(
|
|
115
|
+
"gcode/translate_live",
|
|
116
|
+
request,
|
|
117
|
+
TranslateResult.from_binary)
|
|
118
|
+
return response
|
|
119
|
+
|
|
120
|
+
async def translate_async(
|
|
121
|
+
self,
|
|
122
|
+
block: str
|
|
123
|
+
) -> TranslateResult:
|
|
124
|
+
"""
|
|
125
|
+
Translates a single block (line) of G-code.
|
|
126
|
+
The commands are queued in the underlying stream to ensure smooth continues movement.
|
|
127
|
+
Returning of this method indicates that the commands are queued (not necessarily executed).
|
|
128
|
+
|
|
129
|
+
Args:
|
|
130
|
+
block: Block (line) of G-code.
|
|
131
|
+
|
|
132
|
+
Returns:
|
|
133
|
+
Result of translation containing the commands sent to the device.
|
|
134
|
+
"""
|
|
135
|
+
request = dto.TranslatorTranslateRequest(
|
|
136
|
+
translator_id=self.translator_id,
|
|
137
|
+
block=block,
|
|
138
|
+
)
|
|
139
|
+
response = await call_async(
|
|
140
|
+
"gcode/translate_live",
|
|
141
|
+
request,
|
|
142
|
+
TranslateResult.from_binary)
|
|
143
|
+
return response
|
|
144
|
+
|
|
145
|
+
def flush(
|
|
146
|
+
self,
|
|
147
|
+
wait_until_idle: bool = True
|
|
148
|
+
) -> List[str]:
|
|
149
|
+
"""
|
|
150
|
+
Flushes the remaining stream commands waiting in optimization buffer into the underlying stream.
|
|
151
|
+
The flush is also performed by M2 and M30 codes.
|
|
152
|
+
|
|
153
|
+
Args:
|
|
154
|
+
wait_until_idle: Determines whether to wait for the stream to finish all the movements.
|
|
155
|
+
|
|
156
|
+
Returns:
|
|
157
|
+
The remaining stream commands.
|
|
158
|
+
"""
|
|
159
|
+
request = dto.TranslatorFlushLiveRequest(
|
|
160
|
+
translator_id=self.translator_id,
|
|
161
|
+
wait_until_idle=wait_until_idle,
|
|
162
|
+
)
|
|
163
|
+
response = call(
|
|
164
|
+
"gcode/flush_live",
|
|
165
|
+
request,
|
|
166
|
+
dto.TranslatorFlushResponse.from_binary)
|
|
167
|
+
return response.commands
|
|
168
|
+
|
|
169
|
+
async def flush_async(
|
|
170
|
+
self,
|
|
171
|
+
wait_until_idle: bool = True
|
|
172
|
+
) -> List[str]:
|
|
173
|
+
"""
|
|
174
|
+
Flushes the remaining stream commands waiting in optimization buffer into the underlying stream.
|
|
175
|
+
The flush is also performed by M2 and M30 codes.
|
|
176
|
+
|
|
177
|
+
Args:
|
|
178
|
+
wait_until_idle: Determines whether to wait for the stream to finish all the movements.
|
|
179
|
+
|
|
180
|
+
Returns:
|
|
181
|
+
The remaining stream commands.
|
|
182
|
+
"""
|
|
183
|
+
request = dto.TranslatorFlushLiveRequest(
|
|
184
|
+
translator_id=self.translator_id,
|
|
185
|
+
wait_until_idle=wait_until_idle,
|
|
186
|
+
)
|
|
187
|
+
response = await call_async(
|
|
188
|
+
"gcode/flush_live",
|
|
189
|
+
request,
|
|
190
|
+
dto.TranslatorFlushResponse.from_binary)
|
|
191
|
+
return response.commands
|
|
192
|
+
|
|
193
|
+
def reset_position(
|
|
194
|
+
self
|
|
195
|
+
) -> None:
|
|
196
|
+
"""
|
|
197
|
+
Resets position of the translator from the underlying stream.
|
|
198
|
+
Call this method after performing a movement outside of translator.
|
|
199
|
+
"""
|
|
200
|
+
request = dto.TranslatorEmptyRequest(
|
|
201
|
+
translator_id=self.translator_id,
|
|
202
|
+
)
|
|
203
|
+
call("gcode/reset_position_from_stream", request)
|
|
204
|
+
|
|
205
|
+
async def reset_position_async(
|
|
206
|
+
self
|
|
207
|
+
) -> None:
|
|
208
|
+
"""
|
|
209
|
+
Resets position of the translator from the underlying stream.
|
|
210
|
+
Call this method after performing a movement outside of translator.
|
|
211
|
+
"""
|
|
212
|
+
request = dto.TranslatorEmptyRequest(
|
|
213
|
+
translator_id=self.translator_id,
|
|
214
|
+
)
|
|
215
|
+
await call_async("gcode/reset_position_from_stream", request)
|
|
216
|
+
|
|
217
|
+
def set_traverse_rate(
|
|
218
|
+
self,
|
|
219
|
+
traverse_rate: float,
|
|
220
|
+
unit: VelocityUnits
|
|
221
|
+
) -> None:
|
|
222
|
+
"""
|
|
223
|
+
Sets the speed at which the device moves when traversing (G0).
|
|
224
|
+
|
|
225
|
+
Args:
|
|
226
|
+
traverse_rate: The traverse rate.
|
|
227
|
+
unit: Units of the traverse rate.
|
|
228
|
+
"""
|
|
229
|
+
request = dto.TranslatorSetTraverseRateRequest(
|
|
230
|
+
translator_id=self.translator_id,
|
|
231
|
+
traverse_rate=traverse_rate,
|
|
232
|
+
unit=unit,
|
|
233
|
+
)
|
|
234
|
+
call_sync("gcode/set_traverse_rate", request)
|
|
235
|
+
|
|
236
|
+
def set_axis_position(
|
|
237
|
+
self,
|
|
238
|
+
axis: str,
|
|
239
|
+
position: float,
|
|
240
|
+
unit: LengthUnits
|
|
241
|
+
) -> None:
|
|
242
|
+
"""
|
|
243
|
+
Sets position of translator's axis.
|
|
244
|
+
Use this method to set position after performing movement outside of the translator.
|
|
245
|
+
This method does not cause any movement.
|
|
246
|
+
|
|
247
|
+
Args:
|
|
248
|
+
axis: Letter of the axis.
|
|
249
|
+
position: The position.
|
|
250
|
+
unit: Units of position.
|
|
251
|
+
"""
|
|
252
|
+
request = dto.TranslatorSetAxisPositionRequest(
|
|
253
|
+
translator_id=self.translator_id,
|
|
254
|
+
axis=axis,
|
|
255
|
+
position=position,
|
|
256
|
+
unit=unit,
|
|
257
|
+
)
|
|
258
|
+
call_sync("gcode/set_axis_position", request)
|
|
259
|
+
|
|
260
|
+
def get_axis_position(
|
|
261
|
+
self,
|
|
262
|
+
axis: str,
|
|
263
|
+
unit: LengthUnits
|
|
264
|
+
) -> float:
|
|
265
|
+
"""
|
|
266
|
+
Gets position of translator's axis.
|
|
267
|
+
This method does not query device but returns value from translator's state.
|
|
268
|
+
|
|
269
|
+
Args:
|
|
270
|
+
axis: Letter of the axis.
|
|
271
|
+
unit: Units of position.
|
|
272
|
+
|
|
273
|
+
Returns:
|
|
274
|
+
Position of translator's axis.
|
|
275
|
+
"""
|
|
276
|
+
request = dto.TranslatorGetAxisPositionRequest(
|
|
277
|
+
translator_id=self.translator_id,
|
|
278
|
+
axis=axis,
|
|
279
|
+
unit=unit,
|
|
280
|
+
)
|
|
281
|
+
response = call_sync(
|
|
282
|
+
"gcode/get_axis_position",
|
|
283
|
+
request,
|
|
284
|
+
dto.DoubleResponse.from_binary)
|
|
285
|
+
return response.value
|
|
286
|
+
|
|
287
|
+
def set_axis_home_position(
|
|
288
|
+
self,
|
|
289
|
+
axis: str,
|
|
290
|
+
position: float,
|
|
291
|
+
unit: LengthUnits
|
|
292
|
+
) -> None:
|
|
293
|
+
"""
|
|
294
|
+
Sets the home position of translator's axis.
|
|
295
|
+
This position is used by G28.
|
|
296
|
+
|
|
297
|
+
Args:
|
|
298
|
+
axis: Letter of the axis.
|
|
299
|
+
position: The home position.
|
|
300
|
+
unit: Units of position.
|
|
301
|
+
"""
|
|
302
|
+
request = dto.TranslatorSetAxisPositionRequest(
|
|
303
|
+
translator_id=self.translator_id,
|
|
304
|
+
axis=axis,
|
|
305
|
+
position=position,
|
|
306
|
+
unit=unit,
|
|
307
|
+
)
|
|
308
|
+
call_sync("gcode/set_axis_home", request)
|
|
309
|
+
|
|
310
|
+
def set_axis_secondary_home_position(
|
|
311
|
+
self,
|
|
312
|
+
axis: str,
|
|
313
|
+
position: float,
|
|
314
|
+
unit: LengthUnits
|
|
315
|
+
) -> None:
|
|
316
|
+
"""
|
|
317
|
+
Sets the secondary home position of translator's axis.
|
|
318
|
+
This position is used by G30.
|
|
319
|
+
|
|
320
|
+
Args:
|
|
321
|
+
axis: Letter of the axis.
|
|
322
|
+
position: The home position.
|
|
323
|
+
unit: Units of position.
|
|
324
|
+
"""
|
|
325
|
+
request = dto.TranslatorSetAxisPositionRequest(
|
|
326
|
+
translator_id=self.translator_id,
|
|
327
|
+
axis=axis,
|
|
328
|
+
position=position,
|
|
329
|
+
unit=unit,
|
|
330
|
+
)
|
|
331
|
+
call_sync("gcode/set_axis_secondary_home", request)
|
|
332
|
+
|
|
333
|
+
def get_axis_coordinate_system_offset(
|
|
334
|
+
self,
|
|
335
|
+
coordinate_system: str,
|
|
336
|
+
axis: str,
|
|
337
|
+
unit: LengthUnits
|
|
338
|
+
) -> float:
|
|
339
|
+
"""
|
|
340
|
+
Gets offset of an axis in a given coordinate system.
|
|
341
|
+
|
|
342
|
+
Args:
|
|
343
|
+
coordinate_system: Coordinate system (e.g. G54).
|
|
344
|
+
axis: Letter of the axis.
|
|
345
|
+
unit: Units of position.
|
|
346
|
+
|
|
347
|
+
Returns:
|
|
348
|
+
Offset in translator units of the axis.
|
|
349
|
+
"""
|
|
350
|
+
request = dto.TranslatorGetAxisOffsetRequest(
|
|
351
|
+
translator_id=self.translator_id,
|
|
352
|
+
coordinate_system=coordinate_system,
|
|
353
|
+
axis=axis,
|
|
354
|
+
unit=unit,
|
|
355
|
+
)
|
|
356
|
+
response = call_sync(
|
|
357
|
+
"gcode/get_axis_offset",
|
|
358
|
+
request,
|
|
359
|
+
dto.DoubleResponse.from_binary)
|
|
360
|
+
return response.value
|
|
361
|
+
|
|
362
|
+
def reset_after_stream_error(
|
|
363
|
+
self
|
|
364
|
+
) -> None:
|
|
365
|
+
"""
|
|
366
|
+
Resets internal state after device rejected generated command.
|
|
367
|
+
Axis positions become uninitialized.
|
|
368
|
+
"""
|
|
369
|
+
request = dto.TranslatorEmptyRequest(
|
|
370
|
+
translator_id=self.translator_id,
|
|
371
|
+
)
|
|
372
|
+
call_sync("gcode/reset_after_stream_error", request)
|
|
373
|
+
|
|
374
|
+
def set_feed_rate_override(
|
|
375
|
+
self,
|
|
376
|
+
coefficient: float
|
|
377
|
+
) -> None:
|
|
378
|
+
"""
|
|
379
|
+
Allows to scale feed rate of the translated code by a coefficient.
|
|
380
|
+
|
|
381
|
+
Args:
|
|
382
|
+
coefficient: Coefficient of the original feed rate.
|
|
383
|
+
"""
|
|
384
|
+
request = dto.TranslatorSetFeedRateOverrideRequest(
|
|
385
|
+
translator_id=self.translator_id,
|
|
386
|
+
coefficient=coefficient,
|
|
387
|
+
)
|
|
388
|
+
call_sync("gcode/set_feed_rate_override", request)
|
|
389
|
+
|
|
390
|
+
@staticmethod
|
|
391
|
+
def __free(
|
|
392
|
+
translator_id: int
|
|
393
|
+
) -> None:
|
|
394
|
+
"""
|
|
395
|
+
Releases native resources of a translator.
|
|
396
|
+
|
|
397
|
+
Args:
|
|
398
|
+
translator_id: The ID of the translator.
|
|
399
|
+
"""
|
|
400
|
+
request = dto.TranslatorEmptyRequest(
|
|
401
|
+
translator_id=translator_id,
|
|
402
|
+
)
|
|
403
|
+
call_sync("gcode/free", request)
|
|
404
|
+
|
|
405
|
+
def __get_current_coordinate_system(
|
|
406
|
+
self
|
|
407
|
+
) -> str:
|
|
408
|
+
"""
|
|
409
|
+
Gets current coordinate system (e.g. G54).
|
|
410
|
+
|
|
411
|
+
Returns:
|
|
412
|
+
Current coordinate system.
|
|
413
|
+
"""
|
|
414
|
+
request = dto.TranslatorEmptyRequest(
|
|
415
|
+
translator_id=self.translator_id,
|
|
416
|
+
)
|
|
417
|
+
response = call_sync(
|
|
418
|
+
"gcode/get_current_coordinate_system",
|
|
419
|
+
request,
|
|
420
|
+
dto.StringResponse.from_binary)
|
|
421
|
+
return response.value
|
|
422
|
+
|
|
423
|
+
def __del__(self) -> None:
|
|
424
|
+
Translator.__free(self.translator_id)
|