libximc 3.0.4__tar.gz → 3.1.2__tar.gz

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.
Files changed (57) hide show
  1. {libximc-3.0.4 → libximc-3.1.2}/PKG-INFO +1 -1
  2. {libximc-3.0.4 → libximc-3.1.2}/pyproject.toml +1 -1
  3. {libximc-3.0.4 → libximc-3.1.2}/src/libximc/highlevel/_flag_enumerations.py +9 -8
  4. {libximc-3.0.4 → libximc-3.1.2}/src/libximc/highlevel/_highlevel.py +8 -4
  5. {libximc-3.0.4 → libximc-3.1.2}/src/libximc/highlevel/_structure_types.py +29 -2
  6. {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/debian-amd64/libbindy.so +0 -0
  7. libximc-3.1.2/src/libximc/library-files/debian-amd64/libjximc.so +0 -0
  8. libximc-3.1.2/src/libximc/library-files/debian-amd64/libjximc.so.7 +0 -0
  9. libximc-3.1.2/src/libximc/library-files/debian-amd64/libjximc.so.7.0.0 +0 -0
  10. {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/debian-amd64/libximc.so +0 -0
  11. {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/debian-amd64/libximc.so.7 +0 -0
  12. {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/debian-amd64/libximc.so.7.0.0 +0 -0
  13. {libximc-3.0.4/src/libximc/library-files/macosx/libximc.framework/Versions/7 → libximc-3.1.2/src/libximc/library-files/macosx/libximc.framework}/Headers/ximc.h +14 -11
  14. {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/macosx/libximc.framework/Versions/7/Frameworks/libbindy.dylib +0 -0
  15. {libximc-3.0.4/src/libximc/library-files/macosx/libximc.framework/Versions/Current → libximc-3.1.2/src/libximc/library-files/macosx/libximc.framework/Versions/7}/Headers/ximc.h +14 -11
  16. {libximc-3.0.4/src/libximc/library-files/macosx/libximc.framework → libximc-3.1.2/src/libximc/library-files/macosx/libximc.framework/Versions/7}/libximc +0 -0
  17. {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/macosx/libximc.framework/Versions/Current/Frameworks/libbindy.dylib +0 -0
  18. {libximc-3.0.4/src/libximc/library-files/macosx/libximc.framework → libximc-3.1.2/src/libximc/library-files/macosx/libximc.framework/Versions/Current}/Headers/ximc.h +14 -11
  19. {libximc-3.0.4/src/libximc/library-files/macosx/libximc.framework/Versions/7 → libximc-3.1.2/src/libximc/library-files/macosx/libximc.framework/Versions/Current}/libximc +0 -0
  20. {libximc-3.0.4/src/libximc/library-files/macosx/libximc.framework/Versions/Current → libximc-3.1.2/src/libximc/library-files/macosx/libximc.framework}/libximc +0 -0
  21. libximc-3.1.2/src/libximc/library-files/win32/bindy.dll +0 -0
  22. {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/win32/bindy.lib +0 -0
  23. libximc-3.1.2/src/libximc/library-files/win32/libjximc.dll +0 -0
  24. libximc-3.1.2/src/libximc/library-files/win32/libximc.dll +0 -0
  25. {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/win32/libximc.lib +0 -0
  26. libximc-3.1.2/src/libximc/library-files/win32/xiwrapper.dll +0 -0
  27. libximc-3.1.2/src/libximc/library-files/win64/bindy.dll +0 -0
  28. {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/win64/bindy.lib +0 -0
  29. libximc-3.1.2/src/libximc/library-files/win64/libjximc.dll +0 -0
  30. libximc-3.1.2/src/libximc/library-files/win64/libximc.dll +0 -0
  31. libximc-3.1.2/src/libximc/library-files/win64/libximc.lib +0 -0
  32. libximc-3.1.2/src/libximc/library-files/win64/xiwrapper.dll +0 -0
  33. {libximc-3.0.4 → libximc-3.1.2}/src/libximc/lowlevel/_lowlevel.py +31 -8
  34. libximc-3.0.4/src/libximc/library-files/debian-amd64/libjximc.so +0 -0
  35. libximc-3.0.4/src/libximc/library-files/debian-amd64/libjximc.so.7 +0 -0
  36. libximc-3.0.4/src/libximc/library-files/debian-amd64/libjximc.so.7.0.0 +0 -0
  37. libximc-3.0.4/src/libximc/library-files/win32/bindy.dll +0 -0
  38. libximc-3.0.4/src/libximc/library-files/win32/libjximc.dll +0 -0
  39. libximc-3.0.4/src/libximc/library-files/win32/libximc.dll +0 -0
  40. libximc-3.0.4/src/libximc/library-files/win32/xiwrapper.dll +0 -0
  41. libximc-3.0.4/src/libximc/library-files/win64/bindy.dll +0 -0
  42. libximc-3.0.4/src/libximc/library-files/win64/libjximc.dll +0 -0
  43. libximc-3.0.4/src/libximc/library-files/win64/libximc.dll +0 -0
  44. libximc-3.0.4/src/libximc/library-files/win64/libximc.lib +0 -0
  45. libximc-3.0.4/src/libximc/library-files/win64/xiwrapper.dll +0 -0
  46. {libximc-3.0.4 → libximc-3.1.2}/.flake8 +0 -0
  47. {libximc-3.0.4 → libximc-3.1.2}/LICENSE +0 -0
  48. {libximc-3.0.4 → libximc-3.1.2}/README.md +0 -0
  49. {libximc-3.0.4 → libximc-3.1.2}/src/libximc/__init__.py +0 -0
  50. {libximc-3.0.4 → libximc-3.1.2}/src/libximc/highlevel/__init__.py +0 -0
  51. {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/debian-amd64/libxiwrapper.so +0 -0
  52. {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/macosx/libximc.framework/Resources/Info.plist +0 -0
  53. {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/macosx/libximc.framework/Versions/7/Frameworks/libxiwrapper.dylib +0 -0
  54. {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/macosx/libximc.framework/Versions/7/Resources/Info.plist +0 -0
  55. {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/macosx/libximc.framework/Versions/Current/Frameworks/libxiwrapper.dylib +0 -0
  56. {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/macosx/libximc.framework/Versions/Current/Resources/Info.plist +0 -0
  57. {libximc-3.0.4 → libximc-3.1.2}/src/libximc/lowlevel/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: libximc
3
- Version: 3.0.4
3
+ Version: 3.1.2
4
4
  Summary: Package for operating STANDA 8SMC5 controllers
5
5
  Author-email: STANDA LTD <8smc4@standa.lt>
6
6
  License: Copyright (c) 2023 STANDA LTD
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "libximc"
7
- version = "3.0.4"
7
+ version = "3.1.2"
8
8
  authors = [
9
9
  { name="STANDA LTD", email="8smc4@standa.lt" },
10
10
  ]
@@ -155,14 +155,15 @@ class MoveFlags(StrictIntFlag):
155
155
 
156
156
 
157
157
  class EngineFlags(StrictIntFlag):
158
- ENGINE_REVERSE = 0x01
159
- ENGINE_CURRENT_AS_RMS = 0x02
160
- ENGINE_MAX_SPEED = 0x04
161
- ENGINE_ANTIPLAY = 0x08
162
- ENGINE_ACCEL_ON = 0x10
163
- ENGINE_LIMIT_VOLT = 0x20
164
- ENGINE_LIMIT_CURR = 0x40
165
- ENGINE_LIMIT_RPM = 0x80
158
+ ENGINE_REVERSE = 0x001
159
+ ENGINE_CURRENT_AS_RMS = 0x002
160
+ ENGINE_MAX_SPEED = 0x004
161
+ ENGINE_ANTIPLAY = 0x008
162
+ ENGINE_ACCEL_ON = 0x010
163
+ ENGINE_LIMIT_VOLT = 0x020
164
+ ENGINE_LIMIT_CURR = 0x040
165
+ ENGINE_LIMIT_RPM = 0x080
166
+ ENGINE_USE_PEAK_CURRENT = 0x100
166
167
 
167
168
 
168
169
  class MicrostepMode(IntEnum):
@@ -376,7 +376,8 @@ class Axis:
376
376
  int(settings.EngineFlags),
377
377
  settings.Antiplay,
378
378
  int(settings.MicrostepMode),
379
- settings.StepsPerRev)
379
+ settings.StepsPerRev,
380
+ settings.PeakCurrent)
380
381
  _check_result(lib.set_engine_settings(self._device_id, byref(engine_settings)))
381
382
 
382
383
  def set_engine_settings_calb(self, settings: engine_settings_calb_t) -> None:
@@ -400,7 +401,8 @@ class Axis:
400
401
  int(settings.EngineFlags),
401
402
  settings.Antiplay,
402
403
  int(settings.MicrostepMode),
403
- settings.StepsPerRev)
404
+ settings.StepsPerRev,
405
+ settings.PeakCurrent)
404
406
  _check_result(lib.set_engine_settings_calb(self._device_id, byref(engine_settings), byref(self._calib)))
405
407
 
406
408
  def get_engine_settings(self) -> engine_settings_t:
@@ -422,7 +424,8 @@ class Axis:
422
424
  engine_settings.EngineFlags,
423
425
  engine_settings.Antiplay,
424
426
  engine_settings.MicrostepMode,
425
- engine_settings.StepsPerRev)
427
+ engine_settings.StepsPerRev,
428
+ engine_settings.PeakCurrent)
426
429
 
427
430
  def get_engine_settings_calb(self) -> engine_settings_calb_t:
428
431
  """Read user unit engine settings.
@@ -442,7 +445,8 @@ class Axis:
442
445
  engine_settings.EngineFlags,
443
446
  engine_settings.Antiplay,
444
447
  engine_settings.MicrostepMode,
445
- engine_settings.StepsPerRev)
448
+ engine_settings.StepsPerRev,
449
+ engine_settings.PeakCurrent)
446
450
 
447
451
  def set_entype_settings(self, settings: entype_settings_t) -> None:
448
452
  """Set engine type and driver type.
@@ -700,7 +700,8 @@ class engine_settings_t:
700
700
  EngineFlags: flag_enumerations.EngineFlags = NOT_INITIALIZED,
701
701
  Antiplay: int = NOT_INITIALIZED,
702
702
  MicrostepMode: flag_enumerations.MicrostepMode = NOT_INITIALIZED,
703
- StepsPerRev: int = NOT_INITIALIZED):
703
+ StepsPerRev: int = NOT_INITIALIZED,
704
+ PeakCurrent: int = NOT_INITIALIZED):
704
705
  """Movement limitations and settings related to the motor.
705
706
 
706
707
  This structure contains useful motor settings. These settings specify the motor shaft movement algorithm, list
@@ -734,6 +735,8 @@ class engine_settings_t:
734
735
  :type MicrostepMode: libximc.highlevel.MicrostepMode
735
736
  :param StepsPerRev: Number of full steps per revolution (Used with stepper motor only). Range: 1..65535.
736
737
  :type StepsPerRev: int
738
+ :param PeakCurrent: Peak current value, mA. Current can be increased up to this value for short periods of time if ENGINE_USE_PEAK_CURRENT is set
739
+ :type PeakCurrent: int
737
740
  """
738
741
  self.NomVoltage = NomVoltage
739
742
  self.NomCurrent = NomCurrent
@@ -743,6 +746,7 @@ class engine_settings_t:
743
746
  self.Antiplay = Antiplay
744
747
  self.MicrostepMode = MicrostepMode
745
748
  self.StepsPerRev = StepsPerRev
749
+ self.PeakCurrent = PeakCurrent
746
750
 
747
751
  # getters
748
752
  @property
@@ -776,6 +780,10 @@ class engine_settings_t:
776
780
  @property
777
781
  def StepsPerRev(self) -> int:
778
782
  return self._StepsPerRev
783
+
784
+ @property
785
+ def PeakCurrent(self) -> int:
786
+ return self._PeakCurrent
779
787
 
780
788
  # setters
781
789
  @NomVoltage.setter
@@ -830,6 +838,11 @@ class engine_settings_t:
830
838
  _check_noncontainer_castability(val, c_uint16, varname="StepsPerRev")
831
839
  self._StepsPerRev = val
832
840
 
841
+ @PeakCurrent.setter
842
+ def PeakCurrent(self, val):
843
+ _check_noncontainer_castability(val, c_uint16, varname="PeakCurrent")
844
+ self._PeakCurrent = val
845
+
833
846
  def __repr__(self) -> str:
834
847
  result = ""
835
848
  for key_value_pair in self.__dict__.items():
@@ -846,7 +859,8 @@ class engine_settings_calb_t:
846
859
  EngineFlags: flag_enumerations.EngineFlags = NOT_INITIALIZED,
847
860
  Antiplay: float = NOT_INITIALIZED,
848
861
  MicrostepMode: flag_enumerations.MicrostepMode = NOT_INITIALIZED,
849
- StepsPerRev: int = NOT_INITIALIZED):
862
+ StepsPerRev: int = NOT_INITIALIZED,
863
+ PeakCurrent: int = NOT_INITIALIZED):
850
864
  """Movement limitations and settings, related to the motor. In user units.
851
865
 
852
866
  This structure contains useful motor settings. These settings specify the motor shaft movement algorithm, list
@@ -876,6 +890,8 @@ class engine_settings_calb_t:
876
890
  :type MicrostepMode: libximc.highlevel.MicrostepMode
877
891
  :param StepsPerRev: Number of full steps per revolution (Used with stepper motor only). Range: 1..65535.
878
892
  :type StepsPerRev: int
893
+ :param PeakCurrent: Peak current value, mA. Current can be increased up to this value for short periods of time if ENGINE_USE_PEAK_CURRENT is set
894
+ :type PeakCurrent: int
879
895
  """
880
896
  self.NomVoltage = NomVoltage
881
897
  self.NomCurrent = NomCurrent
@@ -884,6 +900,7 @@ class engine_settings_calb_t:
884
900
  self.Antiplay = Antiplay
885
901
  self.MicrostepMode = MicrostepMode
886
902
  self.StepsPerRev = StepsPerRev
903
+ self.PeakCurrent = PeakCurrent
887
904
 
888
905
  # getters
889
906
  @property
@@ -914,6 +931,10 @@ class engine_settings_calb_t:
914
931
  def StepsPerRev(self) -> int:
915
932
  return self._StepsPerRev
916
933
 
934
+ @property
935
+ def PeakCurrent(self) -> int:
936
+ return self._PeakCurrent
937
+
917
938
  # setters
918
939
  @NomVoltage.setter
919
940
  def NomVoltage(self, val):
@@ -962,6 +983,12 @@ class engine_settings_calb_t:
962
983
  _check_noncontainer_castability(val, c_uint16, varname="StepsPerRev")
963
984
  self._StepsPerRev = val
964
985
 
986
+ @PeakCurrent.setter
987
+ def PeakCurrent(self, val):
988
+ _check_noncontainer_castability(val, c_uint16, varname="PeakCurrent")
989
+ self._PeakCurrent = val
990
+
991
+
965
992
  def __repr__(self) -> str:
966
993
  result = ""
967
994
  for key_value_pair in self.__dict__.items():
@@ -347,12 +347,12 @@ extern "C"
347
347
 
348
348
 
349
349
  /** @cond DO_NOT_WANT */
350
- #define LIBXIMC_VERSION 3.0.4
350
+ #define LIBXIMC_VERSION 3.1.2
351
351
  /** @endcond */
352
352
 
353
353
 
354
354
  /** @cond DO_NOT_WANT */
355
- #define LIBXIMC_PROTOCOL_VERSION 20.14
355
+ #define LIBXIMC_PROTOCOL_VERSION 20.15
356
356
  /** @endcond */
357
357
 
358
358
 
@@ -660,14 +660,15 @@ extern "C"
660
660
  * @see engine_settings_t::EngineFlags, get_engine_settings, set_engine_settings
661
661
  */
662
662
  //@{
663
- #define ENGINE_REVERSE 0x01 /**< \english Reverse flag. It determines motor shaft rotation direction that corresponds to feedback counts increasing. If not set (default), motor shaft rotation direction under positive voltage corresponds to feedback counts increasing and vice versa. Change it if you see that positive directions on motor and feedback are opposite. \endenglish \russian Флаг реверса. Связывает направление вращения мотора с направлением счета текущей позиции. При сброшенном флаге (по умолчанию) прикладываемое к мотору положительное напряжение увеличивает счетчик позиции. И наоборот, при установленном флаге счетчик позиции увеличивается, когда к мотору приложено отрицательное напряжение. Измените состояние флага, если положительное вращение мотора уменьшает счетчик позиции. \endrussian */
664
- #define ENGINE_CURRENT_AS_RMS 0x02 /**< \english Engine current meaning flag. If the flag is unset, then the engine's current value is interpreted as the maximum amplitude value. If the flag is set, then the engine current value is interpreted as the root-mean-square current value (for stepper) or as the current value calculated from the maximum heat dissipation (BLDC). \endenglish \russian Флаг интерпретации значения тока. Если флаг снят, то задаваемое значение тока интерпретируется как максимальная амплитуда тока. Если флаг установлен, то задаваемое значение тока интерпретируется как среднеквадратичное значение тока (для шагового) или как значение тока, посчитанное из максимального тепловыделения (BLDC). \endrussian */
665
- #define ENGINE_MAX_SPEED 0x04 /**< \english Max speed flag. If it is set, the engine uses the maximum speed achievable with the present engine settings as its nominal speed. \endenglish \russian Флаг максимальной скорости. Если флаг установлен, движение происходит на максимальной скорости. \endrussian */
666
- #define ENGINE_ANTIPLAY 0x08 /**< \english Play compensation flag. If it is set, the engine makes backlash (play) compensation and reaches the predetermined position accurately at low speed. \endenglish \russian Компенсация люфта. Если флаг установлен, позиционер будет подходить к заданной точке всегда с одной стороны. Например, при подходе слева никаких дополнительных действий не совершается, а при подходе справа позиционер проходит целевую позицию на заданное расстояния и возвращается к ней опять же справа. \endrussian */
667
- #define ENGINE_ACCEL_ON 0x10 /**< \english Acceleration enable flag. If it set, motion begins with acceleration and ends with deceleration. \endenglish \russian Ускорение. Если флаг установлен, движение происходит с ускорением. \endrussian */
668
- #define ENGINE_LIMIT_VOLT 0x20 /**< \english Maximum motor voltage limit enable flag (is only used with DC motor). \endenglish \russian Номинальное напряжение мотора. Если флаг установлен, напряжение на моторе ограничивается заданным номинальным значением (используется только с DC-двигателем). \endrussian */
669
- #define ENGINE_LIMIT_CURR 0x40 /**< \english Maximum motor current limit enable flag (is only used with DC motor). \endenglish \russian Номинальный ток мотора. Если флаг установлен, ток через мотор ограничивается заданным номинальным значением (используется только с DC-двигателем). \endrussian */
670
- #define ENGINE_LIMIT_RPM 0x80 /**< \english Maximum motor speed limit enable flag. \endenglish \russian Номинальная частота вращения мотора. Если флаг установлен, частота вращения ограничивается заданным номинальным значением. \endrussian */
663
+ #define ENGINE_REVERSE 0x001 /**< \english Reverse flag. It determines motor shaft rotation direction that corresponds to feedback counts increasing. If not set (default), motor shaft rotation direction under positive voltage corresponds to feedback counts increasing and vice versa. Change it if you see that positive directions on motor and feedback are opposite. \endenglish \russian Флаг реверса. Связывает направление вращения мотора с направлением счета текущей позиции. При сброшенном флаге (по умолчанию) прикладываемое к мотору положительное напряжение увеличивает счетчик позиции. И наоборот, при установленном флаге счетчик позиции увеличивается, когда к мотору приложено отрицательное напряжение. Измените состояние флага, если положительное вращение мотора уменьшает счетчик позиции. \endrussian */
664
+ #define ENGINE_CURRENT_AS_RMS 0x002 /**< \english Engine current meaning flag. If the flag is unset, then the engine's current value is interpreted as the maximum amplitude value. If the flag is set, then the engine current value is interpreted as the root-mean-square current value (for stepper) or as the current value calculated from the maximum heat dissipation (BLDC). \endenglish \russian Флаг интерпретации значения тока. Если флаг снят, то задаваемое значение тока интерпретируется как максимальная амплитуда тока. Если флаг установлен, то задаваемое значение тока интерпретируется как среднеквадратичное значение тока (для шагового) или как значение тока, посчитанное из максимального тепловыделения (BLDC). \endrussian */
665
+ #define ENGINE_MAX_SPEED 0x004 /**< \english Max speed flag. If it is set, the engine uses the maximum speed achievable with the present engine settings as its nominal speed. \endenglish \russian Флаг максимальной скорости. Если флаг установлен, движение происходит на максимальной скорости. \endrussian */
666
+ #define ENGINE_ANTIPLAY 0x008 /**< \english Play compensation flag. If it is set, the engine makes backlash (play) compensation and reaches the predetermined position accurately at low speed. \endenglish \russian Компенсация люфта. Если флаг установлен, позиционер будет подходить к заданной точке всегда с одной стороны. Например, при подходе слева никаких дополнительных действий не совершается, а при подходе справа позиционер проходит целевую позицию на заданное расстояния и возвращается к ней опять же справа. \endrussian */
667
+ #define ENGINE_ACCEL_ON 0x010 /**< \english Acceleration enable flag. If it set, motion begins with acceleration and ends with deceleration. \endenglish \russian Ускорение. Если флаг установлен, движение происходит с ускорением. \endrussian */
668
+ #define ENGINE_LIMIT_VOLT 0x020 /**< \english Maximum motor voltage limit enable flag (is only used with DC motor). \endenglish \russian Номинальное напряжение мотора. Если флаг установлен, напряжение на моторе ограничивается заданным номинальным значением (используется только с DC-двигателем). \endrussian */
669
+ #define ENGINE_LIMIT_CURR 0x040 /**< \english Maximum motor current limit enable flag (is only used with DC motor). \endenglish \russian Номинальный ток мотора. Если флаг установлен, ток через мотор ограничивается заданным номинальным значением (используется только с DC-двигателем). \endrussian */
670
+ #define ENGINE_LIMIT_RPM 0x080 /**< \english Maximum motor speed limit enable flag. \endenglish \russian Номинальная частота вращения мотора. Если флаг установлен, частота вращения ограничивается заданным номинальным значением. \endrussian */
671
+ #define ENGINE_USE_PEAK_CURRENT 0x100 /**< \english Enable peak current usage. \endenglish \russian Разрешить использование пикового тока. \endrussian */
671
672
  //@}
672
673
 
673
674
 
@@ -1488,6 +1489,7 @@ extern "C"
1488
1489
  int Antiplay; /**< \english Number of pulses or steps for backlash (play) compensation procedure. Used if ENGINE_ANTIPLAY flag is set. \endenglish \russian Количество шагов двигателя или импульсов энкодера, на которое позиционер будет отъезжать от заданной позиции для подхода к ней с одной и той же стороны. Используется, если установлен флаг ENGINE_ANTIPLAY. \endrussian */
1489
1490
  unsigned int MicrostepMode; /**< \english \ref flagset_microstepmode "Flags of microstep mode". \endenglish \russian \ref flagset_microstepmode "Флаги параметров микрошагового режима". \endrussian */
1490
1491
  unsigned int StepsPerRev; /**< \english Number of full steps per revolution (Used with stepper motor only). Range: 1..65535. \endenglish \russian Количество полных шагов на оборот (используется только с шаговым двигателем). Диапазон: 1..65535. \endrussian */
1492
+ unsigned int PeakCurrent; /**< \english Rated peak current (in mA). Controller is allowed to apply peak current while maintaining 10-second average current below nominal if USE_PEAK_CURRENT flag is set. \endenglish \russian Номинальный пиковый ток (в мА). Контроллеру разрешается подавать пиковый ток, поддерживая при этом средний ток за 10 секунд ниже номинального, если установлен флаг USE_PEAK_CURRENT. \endrussian */
1491
1493
  } engine_settings_t;
1492
1494
 
1493
1495
  /**
@@ -1516,6 +1518,7 @@ extern "C"
1516
1518
  float Antiplay; /**< \english Number of pulses or steps for backlash (play) compensation procedure. Used if ENGINE_ANTIPLAY flag is set. \endenglish \russian Количество шагов двигателя или импульсов энкодера, на которое позиционер будет отъезжать от заданной позиции для подхода к ней с одной и той же стороны. Используется, если установлен флаг ENGINE_ANTIPLAY. \endrussian */
1517
1519
  unsigned int MicrostepMode; /**< \english \ref flagset_microstepmode "Flags of microstep mode". \endenglish \russian \ref flagset_microstepmode "Флаги параметров микрошагового режима". \endrussian */
1518
1520
  unsigned int StepsPerRev; /**< \english Number of full steps per revolution (Used with stepper motor only). Range: 1..65535. \endenglish \russian Количество полных шагов на оборот (используется только с шаговым двигателем). Диапазон: 1..65535. \endrussian */
1521
+ unsigned int PeakCurrent; /**< \english Rated peak current (in mA). Controller is allowed to apply peak current while maintaining 10-second average current below nominal if USE_PEAK_CURRENT flag is set. \endenglish \russian Номинальный пиковый ток (в мА). Контроллеру разрешается подавать пиковый ток, поддерживая при этом средний ток за 10 секунд ниже номинального, если установлен флаг USE_PEAK_CURRENT. \endrussian */
1519
1522
  } engine_settings_calb_t;
1520
1523
 
1521
1524
  /**
@@ -3712,7 +3715,7 @@ extern "C"
3712
3715
  * \endenglish
3713
3716
  * \russian
3714
3717
  * Команда чтения пароля к веб-странице. Используется только производителем.
3715
- * Эта функция пользователяет прочитать пользовательский пароль к веб-странице из памяти контроллера.
3718
+ * Эта функция позволяет прочитать пользовательский пароль к веб-странице из памяти контроллера.
3716
3719
  * @param UserPassword[20] Строчка-пароль для доступа к веб-странице
3717
3720
  * \endrussian
3718
3721
  */
@@ -347,12 +347,12 @@ extern "C"
347
347
 
348
348
 
349
349
  /** @cond DO_NOT_WANT */
350
- #define LIBXIMC_VERSION 3.0.4
350
+ #define LIBXIMC_VERSION 3.1.2
351
351
  /** @endcond */
352
352
 
353
353
 
354
354
  /** @cond DO_NOT_WANT */
355
- #define LIBXIMC_PROTOCOL_VERSION 20.14
355
+ #define LIBXIMC_PROTOCOL_VERSION 20.15
356
356
  /** @endcond */
357
357
 
358
358
 
@@ -660,14 +660,15 @@ extern "C"
660
660
  * @see engine_settings_t::EngineFlags, get_engine_settings, set_engine_settings
661
661
  */
662
662
  //@{
663
- #define ENGINE_REVERSE 0x01 /**< \english Reverse flag. It determines motor shaft rotation direction that corresponds to feedback counts increasing. If not set (default), motor shaft rotation direction under positive voltage corresponds to feedback counts increasing and vice versa. Change it if you see that positive directions on motor and feedback are opposite. \endenglish \russian Флаг реверса. Связывает направление вращения мотора с направлением счета текущей позиции. При сброшенном флаге (по умолчанию) прикладываемое к мотору положительное напряжение увеличивает счетчик позиции. И наоборот, при установленном флаге счетчик позиции увеличивается, когда к мотору приложено отрицательное напряжение. Измените состояние флага, если положительное вращение мотора уменьшает счетчик позиции. \endrussian */
664
- #define ENGINE_CURRENT_AS_RMS 0x02 /**< \english Engine current meaning flag. If the flag is unset, then the engine's current value is interpreted as the maximum amplitude value. If the flag is set, then the engine current value is interpreted as the root-mean-square current value (for stepper) or as the current value calculated from the maximum heat dissipation (BLDC). \endenglish \russian Флаг интерпретации значения тока. Если флаг снят, то задаваемое значение тока интерпретируется как максимальная амплитуда тока. Если флаг установлен, то задаваемое значение тока интерпретируется как среднеквадратичное значение тока (для шагового) или как значение тока, посчитанное из максимального тепловыделения (BLDC). \endrussian */
665
- #define ENGINE_MAX_SPEED 0x04 /**< \english Max speed flag. If it is set, the engine uses the maximum speed achievable with the present engine settings as its nominal speed. \endenglish \russian Флаг максимальной скорости. Если флаг установлен, движение происходит на максимальной скорости. \endrussian */
666
- #define ENGINE_ANTIPLAY 0x08 /**< \english Play compensation flag. If it is set, the engine makes backlash (play) compensation and reaches the predetermined position accurately at low speed. \endenglish \russian Компенсация люфта. Если флаг установлен, позиционер будет подходить к заданной точке всегда с одной стороны. Например, при подходе слева никаких дополнительных действий не совершается, а при подходе справа позиционер проходит целевую позицию на заданное расстояния и возвращается к ней опять же справа. \endrussian */
667
- #define ENGINE_ACCEL_ON 0x10 /**< \english Acceleration enable flag. If it set, motion begins with acceleration and ends with deceleration. \endenglish \russian Ускорение. Если флаг установлен, движение происходит с ускорением. \endrussian */
668
- #define ENGINE_LIMIT_VOLT 0x20 /**< \english Maximum motor voltage limit enable flag (is only used with DC motor). \endenglish \russian Номинальное напряжение мотора. Если флаг установлен, напряжение на моторе ограничивается заданным номинальным значением (используется только с DC-двигателем). \endrussian */
669
- #define ENGINE_LIMIT_CURR 0x40 /**< \english Maximum motor current limit enable flag (is only used with DC motor). \endenglish \russian Номинальный ток мотора. Если флаг установлен, ток через мотор ограничивается заданным номинальным значением (используется только с DC-двигателем). \endrussian */
670
- #define ENGINE_LIMIT_RPM 0x80 /**< \english Maximum motor speed limit enable flag. \endenglish \russian Номинальная частота вращения мотора. Если флаг установлен, частота вращения ограничивается заданным номинальным значением. \endrussian */
663
+ #define ENGINE_REVERSE 0x001 /**< \english Reverse flag. It determines motor shaft rotation direction that corresponds to feedback counts increasing. If not set (default), motor shaft rotation direction under positive voltage corresponds to feedback counts increasing and vice versa. Change it if you see that positive directions on motor and feedback are opposite. \endenglish \russian Флаг реверса. Связывает направление вращения мотора с направлением счета текущей позиции. При сброшенном флаге (по умолчанию) прикладываемое к мотору положительное напряжение увеличивает счетчик позиции. И наоборот, при установленном флаге счетчик позиции увеличивается, когда к мотору приложено отрицательное напряжение. Измените состояние флага, если положительное вращение мотора уменьшает счетчик позиции. \endrussian */
664
+ #define ENGINE_CURRENT_AS_RMS 0x002 /**< \english Engine current meaning flag. If the flag is unset, then the engine's current value is interpreted as the maximum amplitude value. If the flag is set, then the engine current value is interpreted as the root-mean-square current value (for stepper) or as the current value calculated from the maximum heat dissipation (BLDC). \endenglish \russian Флаг интерпретации значения тока. Если флаг снят, то задаваемое значение тока интерпретируется как максимальная амплитуда тока. Если флаг установлен, то задаваемое значение тока интерпретируется как среднеквадратичное значение тока (для шагового) или как значение тока, посчитанное из максимального тепловыделения (BLDC). \endrussian */
665
+ #define ENGINE_MAX_SPEED 0x004 /**< \english Max speed flag. If it is set, the engine uses the maximum speed achievable with the present engine settings as its nominal speed. \endenglish \russian Флаг максимальной скорости. Если флаг установлен, движение происходит на максимальной скорости. \endrussian */
666
+ #define ENGINE_ANTIPLAY 0x008 /**< \english Play compensation flag. If it is set, the engine makes backlash (play) compensation and reaches the predetermined position accurately at low speed. \endenglish \russian Компенсация люфта. Если флаг установлен, позиционер будет подходить к заданной точке всегда с одной стороны. Например, при подходе слева никаких дополнительных действий не совершается, а при подходе справа позиционер проходит целевую позицию на заданное расстояния и возвращается к ней опять же справа. \endrussian */
667
+ #define ENGINE_ACCEL_ON 0x010 /**< \english Acceleration enable flag. If it set, motion begins with acceleration and ends with deceleration. \endenglish \russian Ускорение. Если флаг установлен, движение происходит с ускорением. \endrussian */
668
+ #define ENGINE_LIMIT_VOLT 0x020 /**< \english Maximum motor voltage limit enable flag (is only used with DC motor). \endenglish \russian Номинальное напряжение мотора. Если флаг установлен, напряжение на моторе ограничивается заданным номинальным значением (используется только с DC-двигателем). \endrussian */
669
+ #define ENGINE_LIMIT_CURR 0x040 /**< \english Maximum motor current limit enable flag (is only used with DC motor). \endenglish \russian Номинальный ток мотора. Если флаг установлен, ток через мотор ограничивается заданным номинальным значением (используется только с DC-двигателем). \endrussian */
670
+ #define ENGINE_LIMIT_RPM 0x080 /**< \english Maximum motor speed limit enable flag. \endenglish \russian Номинальная частота вращения мотора. Если флаг установлен, частота вращения ограничивается заданным номинальным значением. \endrussian */
671
+ #define ENGINE_USE_PEAK_CURRENT 0x100 /**< \english Enable peak current usage. \endenglish \russian Разрешить использование пикового тока. \endrussian */
671
672
  //@}
672
673
 
673
674
 
@@ -1488,6 +1489,7 @@ extern "C"
1488
1489
  int Antiplay; /**< \english Number of pulses or steps for backlash (play) compensation procedure. Used if ENGINE_ANTIPLAY flag is set. \endenglish \russian Количество шагов двигателя или импульсов энкодера, на которое позиционер будет отъезжать от заданной позиции для подхода к ней с одной и той же стороны. Используется, если установлен флаг ENGINE_ANTIPLAY. \endrussian */
1489
1490
  unsigned int MicrostepMode; /**< \english \ref flagset_microstepmode "Flags of microstep mode". \endenglish \russian \ref flagset_microstepmode "Флаги параметров микрошагового режима". \endrussian */
1490
1491
  unsigned int StepsPerRev; /**< \english Number of full steps per revolution (Used with stepper motor only). Range: 1..65535. \endenglish \russian Количество полных шагов на оборот (используется только с шаговым двигателем). Диапазон: 1..65535. \endrussian */
1492
+ unsigned int PeakCurrent; /**< \english Rated peak current (in mA). Controller is allowed to apply peak current while maintaining 10-second average current below nominal if USE_PEAK_CURRENT flag is set. \endenglish \russian Номинальный пиковый ток (в мА). Контроллеру разрешается подавать пиковый ток, поддерживая при этом средний ток за 10 секунд ниже номинального, если установлен флаг USE_PEAK_CURRENT. \endrussian */
1491
1493
  } engine_settings_t;
1492
1494
 
1493
1495
  /**
@@ -1516,6 +1518,7 @@ extern "C"
1516
1518
  float Antiplay; /**< \english Number of pulses or steps for backlash (play) compensation procedure. Used if ENGINE_ANTIPLAY flag is set. \endenglish \russian Количество шагов двигателя или импульсов энкодера, на которое позиционер будет отъезжать от заданной позиции для подхода к ней с одной и той же стороны. Используется, если установлен флаг ENGINE_ANTIPLAY. \endrussian */
1517
1519
  unsigned int MicrostepMode; /**< \english \ref flagset_microstepmode "Flags of microstep mode". \endenglish \russian \ref flagset_microstepmode "Флаги параметров микрошагового режима". \endrussian */
1518
1520
  unsigned int StepsPerRev; /**< \english Number of full steps per revolution (Used with stepper motor only). Range: 1..65535. \endenglish \russian Количество полных шагов на оборот (используется только с шаговым двигателем). Диапазон: 1..65535. \endrussian */
1521
+ unsigned int PeakCurrent; /**< \english Rated peak current (in mA). Controller is allowed to apply peak current while maintaining 10-second average current below nominal if USE_PEAK_CURRENT flag is set. \endenglish \russian Номинальный пиковый ток (в мА). Контроллеру разрешается подавать пиковый ток, поддерживая при этом средний ток за 10 секунд ниже номинального, если установлен флаг USE_PEAK_CURRENT. \endrussian */
1519
1522
  } engine_settings_calb_t;
1520
1523
 
1521
1524
  /**
@@ -3712,7 +3715,7 @@ extern "C"
3712
3715
  * \endenglish
3713
3716
  * \russian
3714
3717
  * Команда чтения пароля к веб-странице. Используется только производителем.
3715
- * Эта функция пользователяет прочитать пользовательский пароль к веб-странице из памяти контроллера.
3718
+ * Эта функция позволяет прочитать пользовательский пароль к веб-странице из памяти контроллера.
3716
3719
  * @param UserPassword[20] Строчка-пароль для доступа к веб-странице
3717
3720
  * \endrussian
3718
3721
  */
@@ -347,12 +347,12 @@ extern "C"
347
347
 
348
348
 
349
349
  /** @cond DO_NOT_WANT */
350
- #define LIBXIMC_VERSION 3.0.4
350
+ #define LIBXIMC_VERSION 3.1.2
351
351
  /** @endcond */
352
352
 
353
353
 
354
354
  /** @cond DO_NOT_WANT */
355
- #define LIBXIMC_PROTOCOL_VERSION 20.14
355
+ #define LIBXIMC_PROTOCOL_VERSION 20.15
356
356
  /** @endcond */
357
357
 
358
358
 
@@ -660,14 +660,15 @@ extern "C"
660
660
  * @see engine_settings_t::EngineFlags, get_engine_settings, set_engine_settings
661
661
  */
662
662
  //@{
663
- #define ENGINE_REVERSE 0x01 /**< \english Reverse flag. It determines motor shaft rotation direction that corresponds to feedback counts increasing. If not set (default), motor shaft rotation direction under positive voltage corresponds to feedback counts increasing and vice versa. Change it if you see that positive directions on motor and feedback are opposite. \endenglish \russian Флаг реверса. Связывает направление вращения мотора с направлением счета текущей позиции. При сброшенном флаге (по умолчанию) прикладываемое к мотору положительное напряжение увеличивает счетчик позиции. И наоборот, при установленном флаге счетчик позиции увеличивается, когда к мотору приложено отрицательное напряжение. Измените состояние флага, если положительное вращение мотора уменьшает счетчик позиции. \endrussian */
664
- #define ENGINE_CURRENT_AS_RMS 0x02 /**< \english Engine current meaning flag. If the flag is unset, then the engine's current value is interpreted as the maximum amplitude value. If the flag is set, then the engine current value is interpreted as the root-mean-square current value (for stepper) or as the current value calculated from the maximum heat dissipation (BLDC). \endenglish \russian Флаг интерпретации значения тока. Если флаг снят, то задаваемое значение тока интерпретируется как максимальная амплитуда тока. Если флаг установлен, то задаваемое значение тока интерпретируется как среднеквадратичное значение тока (для шагового) или как значение тока, посчитанное из максимального тепловыделения (BLDC). \endrussian */
665
- #define ENGINE_MAX_SPEED 0x04 /**< \english Max speed flag. If it is set, the engine uses the maximum speed achievable with the present engine settings as its nominal speed. \endenglish \russian Флаг максимальной скорости. Если флаг установлен, движение происходит на максимальной скорости. \endrussian */
666
- #define ENGINE_ANTIPLAY 0x08 /**< \english Play compensation flag. If it is set, the engine makes backlash (play) compensation and reaches the predetermined position accurately at low speed. \endenglish \russian Компенсация люфта. Если флаг установлен, позиционер будет подходить к заданной точке всегда с одной стороны. Например, при подходе слева никаких дополнительных действий не совершается, а при подходе справа позиционер проходит целевую позицию на заданное расстояния и возвращается к ней опять же справа. \endrussian */
667
- #define ENGINE_ACCEL_ON 0x10 /**< \english Acceleration enable flag. If it set, motion begins with acceleration and ends with deceleration. \endenglish \russian Ускорение. Если флаг установлен, движение происходит с ускорением. \endrussian */
668
- #define ENGINE_LIMIT_VOLT 0x20 /**< \english Maximum motor voltage limit enable flag (is only used with DC motor). \endenglish \russian Номинальное напряжение мотора. Если флаг установлен, напряжение на моторе ограничивается заданным номинальным значением (используется только с DC-двигателем). \endrussian */
669
- #define ENGINE_LIMIT_CURR 0x40 /**< \english Maximum motor current limit enable flag (is only used with DC motor). \endenglish \russian Номинальный ток мотора. Если флаг установлен, ток через мотор ограничивается заданным номинальным значением (используется только с DC-двигателем). \endrussian */
670
- #define ENGINE_LIMIT_RPM 0x80 /**< \english Maximum motor speed limit enable flag. \endenglish \russian Номинальная частота вращения мотора. Если флаг установлен, частота вращения ограничивается заданным номинальным значением. \endrussian */
663
+ #define ENGINE_REVERSE 0x001 /**< \english Reverse flag. It determines motor shaft rotation direction that corresponds to feedback counts increasing. If not set (default), motor shaft rotation direction under positive voltage corresponds to feedback counts increasing and vice versa. Change it if you see that positive directions on motor and feedback are opposite. \endenglish \russian Флаг реверса. Связывает направление вращения мотора с направлением счета текущей позиции. При сброшенном флаге (по умолчанию) прикладываемое к мотору положительное напряжение увеличивает счетчик позиции. И наоборот, при установленном флаге счетчик позиции увеличивается, когда к мотору приложено отрицательное напряжение. Измените состояние флага, если положительное вращение мотора уменьшает счетчик позиции. \endrussian */
664
+ #define ENGINE_CURRENT_AS_RMS 0x002 /**< \english Engine current meaning flag. If the flag is unset, then the engine's current value is interpreted as the maximum amplitude value. If the flag is set, then the engine current value is interpreted as the root-mean-square current value (for stepper) or as the current value calculated from the maximum heat dissipation (BLDC). \endenglish \russian Флаг интерпретации значения тока. Если флаг снят, то задаваемое значение тока интерпретируется как максимальная амплитуда тока. Если флаг установлен, то задаваемое значение тока интерпретируется как среднеквадратичное значение тока (для шагового) или как значение тока, посчитанное из максимального тепловыделения (BLDC). \endrussian */
665
+ #define ENGINE_MAX_SPEED 0x004 /**< \english Max speed flag. If it is set, the engine uses the maximum speed achievable with the present engine settings as its nominal speed. \endenglish \russian Флаг максимальной скорости. Если флаг установлен, движение происходит на максимальной скорости. \endrussian */
666
+ #define ENGINE_ANTIPLAY 0x008 /**< \english Play compensation flag. If it is set, the engine makes backlash (play) compensation and reaches the predetermined position accurately at low speed. \endenglish \russian Компенсация люфта. Если флаг установлен, позиционер будет подходить к заданной точке всегда с одной стороны. Например, при подходе слева никаких дополнительных действий не совершается, а при подходе справа позиционер проходит целевую позицию на заданное расстояния и возвращается к ней опять же справа. \endrussian */
667
+ #define ENGINE_ACCEL_ON 0x010 /**< \english Acceleration enable flag. If it set, motion begins with acceleration and ends with deceleration. \endenglish \russian Ускорение. Если флаг установлен, движение происходит с ускорением. \endrussian */
668
+ #define ENGINE_LIMIT_VOLT 0x020 /**< \english Maximum motor voltage limit enable flag (is only used with DC motor). \endenglish \russian Номинальное напряжение мотора. Если флаг установлен, напряжение на моторе ограничивается заданным номинальным значением (используется только с DC-двигателем). \endrussian */
669
+ #define ENGINE_LIMIT_CURR 0x040 /**< \english Maximum motor current limit enable flag (is only used with DC motor). \endenglish \russian Номинальный ток мотора. Если флаг установлен, ток через мотор ограничивается заданным номинальным значением (используется только с DC-двигателем). \endrussian */
670
+ #define ENGINE_LIMIT_RPM 0x080 /**< \english Maximum motor speed limit enable flag. \endenglish \russian Номинальная частота вращения мотора. Если флаг установлен, частота вращения ограничивается заданным номинальным значением. \endrussian */
671
+ #define ENGINE_USE_PEAK_CURRENT 0x100 /**< \english Enable peak current usage. \endenglish \russian Разрешить использование пикового тока. \endrussian */
671
672
  //@}
672
673
 
673
674
 
@@ -1488,6 +1489,7 @@ extern "C"
1488
1489
  int Antiplay; /**< \english Number of pulses or steps for backlash (play) compensation procedure. Used if ENGINE_ANTIPLAY flag is set. \endenglish \russian Количество шагов двигателя или импульсов энкодера, на которое позиционер будет отъезжать от заданной позиции для подхода к ней с одной и той же стороны. Используется, если установлен флаг ENGINE_ANTIPLAY. \endrussian */
1489
1490
  unsigned int MicrostepMode; /**< \english \ref flagset_microstepmode "Flags of microstep mode". \endenglish \russian \ref flagset_microstepmode "Флаги параметров микрошагового режима". \endrussian */
1490
1491
  unsigned int StepsPerRev; /**< \english Number of full steps per revolution (Used with stepper motor only). Range: 1..65535. \endenglish \russian Количество полных шагов на оборот (используется только с шаговым двигателем). Диапазон: 1..65535. \endrussian */
1492
+ unsigned int PeakCurrent; /**< \english Rated peak current (in mA). Controller is allowed to apply peak current while maintaining 10-second average current below nominal if USE_PEAK_CURRENT flag is set. \endenglish \russian Номинальный пиковый ток (в мА). Контроллеру разрешается подавать пиковый ток, поддерживая при этом средний ток за 10 секунд ниже номинального, если установлен флаг USE_PEAK_CURRENT. \endrussian */
1491
1493
  } engine_settings_t;
1492
1494
 
1493
1495
  /**
@@ -1516,6 +1518,7 @@ extern "C"
1516
1518
  float Antiplay; /**< \english Number of pulses or steps for backlash (play) compensation procedure. Used if ENGINE_ANTIPLAY flag is set. \endenglish \russian Количество шагов двигателя или импульсов энкодера, на которое позиционер будет отъезжать от заданной позиции для подхода к ней с одной и той же стороны. Используется, если установлен флаг ENGINE_ANTIPLAY. \endrussian */
1517
1519
  unsigned int MicrostepMode; /**< \english \ref flagset_microstepmode "Flags of microstep mode". \endenglish \russian \ref flagset_microstepmode "Флаги параметров микрошагового режима". \endrussian */
1518
1520
  unsigned int StepsPerRev; /**< \english Number of full steps per revolution (Used with stepper motor only). Range: 1..65535. \endenglish \russian Количество полных шагов на оборот (используется только с шаговым двигателем). Диапазон: 1..65535. \endrussian */
1521
+ unsigned int PeakCurrent; /**< \english Rated peak current (in mA). Controller is allowed to apply peak current while maintaining 10-second average current below nominal if USE_PEAK_CURRENT flag is set. \endenglish \russian Номинальный пиковый ток (в мА). Контроллеру разрешается подавать пиковый ток, поддерживая при этом средний ток за 10 секунд ниже номинального, если установлен флаг USE_PEAK_CURRENT. \endrussian */
1519
1522
  } engine_settings_calb_t;
1520
1523
 
1521
1524
  /**
@@ -3712,7 +3715,7 @@ extern "C"
3712
3715
  * \endenglish
3713
3716
  * \russian
3714
3717
  * Команда чтения пароля к веб-странице. Используется только производителем.
3715
- * Эта функция пользователяет прочитать пользовательский пароль к веб-странице из памяти контроллера.
3718
+ * Эта функция позволяет прочитать пользовательский пароль к веб-странице из памяти контроллера.
3716
3719
  * @param UserPassword[20] Строчка-пароль для доступа к веб-странице
3717
3720
  * \endrussian
3718
3721
  */
@@ -1,6 +1,7 @@
1
1
  import os
2
2
  import struct
3
3
  import sys
4
+ import winreg
4
5
  from ctypes import *
5
6
 
6
7
 
@@ -28,6 +29,24 @@ def _check_if_vc2013_is_installed():
28
29
  raise RuntimeError(error_msg)
29
30
 
30
31
 
32
+ def _check_if_vc2015_2022_is_installed():
33
+ registry_path = (r"SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x64" if _get_os_bit() == 64 else
34
+ r"SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x86")
35
+ try:
36
+ with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, registry_path) as key:
37
+ installed, _ = winreg.QueryValueEx(key, "Installed")
38
+ if installed == 1:
39
+ return True
40
+ except OSError:
41
+ pass
42
+
43
+ link = ("https://aka.ms/vs/17/release/vc_redist.x64.exe" if _get_os_bit() == 64 else
44
+ "https://aka.ms/vs/17/release/vc_redist.x86.exe")
45
+ error_msg = ("Microsoft Visual C++ Redistributable 2015-2022 is not installed in the OS. "
46
+ "This may lead to the DLL load failure. Download it from {}").format(link)
47
+ raise RuntimeError(error_msg)
48
+
49
+
31
50
  def _get_os_bit() -> int:
32
51
  return 8 * struct.calcsize("P")
33
52
 
@@ -39,6 +58,7 @@ def _load_lib():
39
58
  os_kind = system().lower()
40
59
  if os_kind == "windows":
41
60
  _check_if_vc2013_is_installed()
61
+ _check_if_vc2015_2022_is_installed()
42
62
 
43
63
  ximc_root_path = r"..\..\..\..\.."
44
64
  if sys.version_info[0] == 3 and sys.version_info[1] >= 8:
@@ -245,14 +265,15 @@ class MoveFlags:
245
265
  RPM_DIV_1000 = 0x01
246
266
 
247
267
  class EngineFlags:
248
- ENGINE_REVERSE = 0x01
249
- ENGINE_CURRENT_AS_RMS = 0x02
250
- ENGINE_MAX_SPEED = 0x04
251
- ENGINE_ANTIPLAY = 0x08
252
- ENGINE_ACCEL_ON = 0x10
253
- ENGINE_LIMIT_VOLT = 0x20
254
- ENGINE_LIMIT_CURR = 0x40
255
- ENGINE_LIMIT_RPM = 0x80
268
+ ENGINE_REVERSE = 0x001
269
+ ENGINE_CURRENT_AS_RMS = 0x002
270
+ ENGINE_MAX_SPEED = 0x004
271
+ ENGINE_ANTIPLAY = 0x008
272
+ ENGINE_ACCEL_ON = 0x010
273
+ ENGINE_LIMIT_VOLT = 0x020
274
+ ENGINE_LIMIT_CURR = 0x040
275
+ ENGINE_LIMIT_RPM = 0x080
276
+ ENGINE_USE_PEAK_CURRENT = 0x100
256
277
 
257
278
  class MicrostepMode:
258
279
  MICROSTEP_MODE_FULL = 0x01
@@ -499,6 +520,7 @@ class engine_settings_t(Structure):
499
520
  ("Antiplay", c_int),
500
521
  ("MicrostepMode", c_uint),
501
522
  ("StepsPerRev", c_uint),
523
+ ("PeakCurrent", c_uint),
502
524
  ]
503
525
 
504
526
  class engine_settings_calb_t(Structure):
@@ -510,6 +532,7 @@ class engine_settings_calb_t(Structure):
510
532
  ("Antiplay", c_float),
511
533
  ("MicrostepMode", c_uint),
512
534
  ("StepsPerRev", c_uint),
535
+ ("PeakCurrent", c_uint),
513
536
  ]
514
537
 
515
538
  class entype_settings_t(Structure):
File without changes
File without changes
File without changes
File without changes