6.3. Совместимость с ПО для 8SMC1-USBhF

Новые контроллеры можно использовать с программами, написанными для контроллеров 8SMC1-USBhF. Для этого есть две возможности:

  1. Рекомендуемая. Использование версии ПО MicroSMC, которая поддерживает как 8SMC1-USBhF так и новые контроллеры. В этом случае ПО MicroSMC открывает все найденные новые контроллеры в режиме эксклюзивного доступа для обеспечения разделения доступа и взаимодействие с ними возможно только с помощью функций API контроллеров 8SMC1-USBhF через библиотеку USMCDLL, использующую MicroSMC. Скачать версию MicroSMC с поддержкой новых контроллеров можно на странице Программное обеспечение.
  2. Управление только новыми контроллерами без ПО MicroSMC с помощью переходной библиотеки USMCDLL/libximc. Используйте эту возможность, если вам требуется одновременная работа ПО MicroSMC (для управления контроллерами 8SMC1-USBhF) и работа с контроллерами новыми с помощью библиотеки libximc. Скачать переходную библиотеку USMCDLL/libximc можно по этой ссылке.

Ниже в таблице описано соответствие функций API контроллеров 8SMC1-USBhF и новых контроллеров: в первом столбце указана функция библиотеки USMCDLL, во втором - соответствующий параграф в описании контроллера 8SMC1-USBhF, в третьем - особенности этой функции в переходной библиотеке при использовании с новыми контроллерами.

Функция 8SMC1-USBhF Новый контроллер
USMC_Init 7.5.3 Использует функцию libximc enumerate_devices, которая опрашивает все COM-порты в системе, а также функции get_enumerate_device_information,* get_enumerate_device_serial, get_device_count*, get_device_name, open_device.
USMC_GetState 7.5.4 Использует функции libximc get_status и get_engine_settings. Флаги AReset, EMReset, RotTrErr возвращаемой структуры USMC_State всегда принимают значение false.
USMC_SaveParametersToFlash 7.5.5 Использует функцию libximc command_save_settings.
USMC_GetMode 7.5.6 Использует функции libximc get_edges_settings, get_power_settings, get_control_settings, get_ctp_settings, get_sync_out_settings. В возвращаемой структуре USMC_Mode флаги EMReset, ResetRT, SyncOUTR, EncoderEn, EncoderInv, ResBEnc, ResEnc всегда принимают значение false, флаг SyncINOp всегда равен true.
USMC_SetMode 7.5.7 Использует те же функции, что и USMC_GetMode, а также их «set_» аналоги, игнорирует флаги RotTeEn, RotTrOp, ResetRT, SyncOUTR, SyncINOp, EncoderEn.
USMC_GetParameters 7.5.8 Использует функции libximc get_secure_settings, get_engine_settings, get_move_settings, get_feedback_settings, get_power_settings, get_control_settings, get_ctp_settings, get_home_settings, get_sync_out_settings. Возвращает нулевые значения параметров BTimeoutR, BTimeoutD, MinP, MaxLoft, StartPos.
USMC_SetParameters 7.5.9 Использует те же функции, что и USMC_GetParameters, а также их «set_» аналоги, игнорирует параметры BTimeoutR, BTimeoutD, MinP, MaxLoft, StartPos.
USMC_GetStartParameters 7.5.10 Использует функции libximc get_move_settings, get_engine_settings. Флаги WSyncIN, SyncOUTR, ForceLoft возвращаемой структуры USMC_StartParameters всегда принимают значение false.
USMC_Start 7.5.11 Использует функции libximc get_move_settings, get_engine_settings, а также их «set_» аналоги и функцию command_move.
USMC_Stop 7.5.12 Использует функцию libximc command_stop.
USMC_SetCurrentPosition 7.5.13 Использует функцию libximc set_position.
USMC_GetEncoderState 7.5.14 Использует функцию libximc get_status.
USMC_GetLastErr 7.5.15 Не модифицирует передаваемый ей параметр. Ошибку выполнения функций USMC_ можно отследить по ненулевому коду возврата.
USMC_Close 7.5.16 Использует функцию libximc close_device.

Переходная библиотека USMCDLL не требует для своей работы запущенного в фоне приложения MicroSMC.exe и использует библиотеку libximc.dll для взаимодействия с новыми контроллерами.

Все функции USMC_, включающие в себя несколько вызовов функций libximc, прерывают своё выполнение, если одна из составляющих их функций libximc возвращает ошибку. В этом случае возможна неполная запись настроек в контроллер. Ненулевой код возврата функции USMC_ равен коду возврата выполненной с ошибкой функции libximc.

Тестовая программа: usmcdll_libximc_test.zip