Zaber Motion Library Changelog
2023-03-03 Version 3.1.1
- Bug fixes and Improvements
- C++ - removing global using clauses
- Js - initialization improvements
- Js - exception module export
- C# - ServoTuner constructor is now public
- Python - explicit exports that satisfies mypy
CanSetState(Device|Axis)Response
classes moved toascii
namespace.- Documentation improvements
2023-02-14 Version 3.1.0
- New features
enable_alerts
(and disable counterpart) methods added toConnection
class.- Documentation is updated with recommendations of using alerts.
- Bug fixes and Improvements
- Alerts are used to improve consistency of movements of all axes.
- Some C++ arguments changed from passing by const references to passing by value and vice versa.
- Adding logging of opening of connection through message router.
2023-02-07 Version 3.0.1
- Bug fixes and Improvements
- Fixing compatibility with Ubuntu 18 and 22.
- C++ data-classes have
noexcept
in their constructors.
2023-02-01 Version 3.0.0
- Breaking changes
- Major C++ improvements
- Classes no longer contain hidden pointers to their parents in hierarchy.
- Instances can be easily copied around without any pitfalls.
- Connection class is split to a copyable parent BaseConnection and move-only Connection (RAII).
- Classes no longer contain hidden pointers to their parents in hierarchy.
- Option objects for C++ and Typescript (as alternative to named arguments).
- In C++, option objects are an additional overloads of existing methods.
- In Typescript, the positional arguments are removed resulting in many breaking changes.
- Binary Connection method
open_tcp
no longer has a default value for the TCP port. - ASCII Connection method
open_tcp
now has a default value for the TCP port (chain port of X-MCC). - The C# type of the
SerialNumber
device property has changed fromuint
tolong
for CLS compliance. - The setting name constant for the FW6
deviceid
setting has been renamed fromDeviceid
toDeviceIdLegacy
. - Device Database Store functionality is enabled by default.
open_serial_port_directly
removed and replaced by argument ofopen_serial_port
.open_iot_unauthenticated
removed and replaced by argument ofopen_iot
.
- Major C++ improvements
- Bug fixes and Improvements
- The C# library has been marked CLS compliant to enable interoperability with more .NET languages.
- In-code documentation now contains minimal required firmware version.
- Acceleration argument of movement methods now accepts Infinity making the device ignore acceleration limits.
- Movement methods query device for
maxspeed
when acceleration is specified without velocity. - Lockstep achieves the same functionality with less messages (communication pattern change)
2022-01-20 Version 2.15.4
- Bug fixes and Improvements
- Fixing bug preventing G-Code translator working with stream buffers
- Improving error for stream setup
- Improving error for unit conversions
- Improving documentation of compatibility
- Fixing C++ freezing if the library was called from an event handler
2022-12-12 Version 2.15.3
- New features
- New hidden
GetDbServicePipePath
method to get the location of the pipe serving a local device database
- New hidden
- Bug fixes and Improvements
- Downloads device DB from appropriate source (not "current")
- Prevents interface IDs from wrapping
2022-11-25 Version 2.15.2
- Bug fixes and Improvements
- Upgrading protobuf libraries to 21.9
- Allowing range for Python protobuf library
protobuf>=3.20.0,<4.22.0
2022-11-14 Version 2.15.1
- Bug fixes and Improvements
- Fixing copy assignment operator in C++ (Credit: Dr. -Ing. Franz-Georg Ulmer)
- Extending support for Binary Protocol
- Save/Load state - support for axis storage on integrated devices
2022-11-08 Version 2.15.0
- New features
- The Oscilloscope class now exposes the FW 7.29
numchannels
,scope.channel.size
andscope.channel.size.max
settings, with default values for older Firmware versions. - The Oscilloscope
Start()
method now has an optional parameter for the FW 7.29 capture length parameter. - Adding Storage API methods
listKeys
andkeyExists
.
- The Oscilloscope class now exposes the FW 7.29
- Bug fixes and Improvements
- Save/Load state support stored positions.
- Support for Message Router 1.6.0
- Documentation fixes
- Device DB upgrade
2022-10-07 Version 2.14.7
- Bug fixes and Improvements
- Save/Load state bug fixes and support of FW 7.29
- Support for the latest Device DB
2022-08-12 Version 2.14.6
- Bug fixes and Improvements
- Fixed error when using the Oscilloscope to record device-scope settings.
- Corrected some dead links and typos in the documentation.
2022-07-27 Version 2.14.5
- Bug fixes and Improvements
- Fixing concurrency issues with Binary Protocol
- Fixing ASCII message ID leakage during protocol errors
- Redoing and updating Getting Started guide
- Support for multiple v8 context for JS library
- Fixing package size limit exceeding when sending to unknown device
- Fixing parking not supported error
- Updating warning flags enum
2022-07-08 Version 2.14.4
- Bug fixes and Improvements
- Fixing G-Code exact stop (G9, G61.1)
- Fixing occasional stalling at sharp corners
2022-07-06 Version 2.14.3
- Bug fixes and Improvements
- G-Code optimization introduced in FW 7.28
2022-06-20 Version 2.14.2
- New features
- Adds field
version
to paramset info - A new method
check_disabled
of theStream
class
- Adds field
2022-06-09 Version 2.14.1
- New features
- New method to create an offline G-Code translator from a device
- Bug fixes and Improvements
erase_key
method ofStorage
class returns false instead of throwing exception when the key does not exist.- Concurrency improvements of G-Code translator
2022-06-03 Version 2.14.0
- New features
- Custom unit conversions of hardware modified devices
- Method to erase storage with a particular key
is_homed
method to indicate if device was homed and has reference
- Bug fixes and Improvements
- Enhancing device database failed exception.
- Reserving maximum space for message IDs in case they get remapped.
- Fixing an issue with servo-tuner error handling
- Renaming PeripheralErrors to AxisErrors in CanSetStateDeviceResponse class
- Documenting matlab array behavior in streams documentation
- Improving order of setting of settings when setting a state
- Cleanup of Python package classifiers
2022-05-18 Version 2.13.2
- Bug fixes and Improvements
- Fixing Python license field
- Protobuf 3.20.1
2022-05-16 Version 2.13.1
- Bug fixes and Improvements
- Compatibility with the new database
2022-04-28 Version 2.13.0
- New features
- Additional arguments (speed, velocity) for movement methods.
- New dimensions for current tuning settings.
- A method for verification of simple tuning.
2022-04-18 Version 2.12.0
- New features
- Storage API allows adding arbitrary key-value data to a device
- Line continuations allow sending commands that are too long to fit on a single line
- Add virtual device connection howto.
2022-04-05 Version 2.11.2
- Bug fixes and Improvements
- Fixing G-Code compatibility with older versions of firmware.
2022-03-31 Version 2.11.1
- Bug fixes and Improvements
- Fixing exception when setting multiple G-Code translators on one controller
- Sets storage associated with peripherals on a state restore
2022-03-21 Version 2.11.0
- New features
- Servo Tuner API
- Save/Load supports values stored with the key value store
- API to get the expected location of message router pipe
- Bug fixes and Improvements
- Fixing port sharing with Zaber Launcher for multiple OS users
2022-03-03 Version 2.10.1
- Bug fixes and Improvements
- Adding G-Codes (G30, G30.1, M64, M65, M66, M68, G92, M700)
- Improvements to TCP/IP documentation.
2022-02-16 Version 2.10.0
- New features
- Scope API
- GCode API
- Bug fixes and Improvements
- Adding compatibility with Mono
- Improvements of save/restore behavior.
2022-01-26 Version 2.9.1
- New features
- Add isIntegrated field to device identity
- set_all_digital/analog_outputs method for streams
- Bug fixes and Improvements
- Ensure unique titles between ASCII and Binary protocol
- Better unit conversion errors
- Fix bug where device restore could fail to set certain settings
2022-01-05 Version 2.9.0
- New features
- Experimental G-Code translator (unstable)
2021-12-31 Version 2.8.1
- Bug fixes and Improvements
- Fixes an error that occurs when setting the state of a device with an unset stream buffer
- Amends the changelog with correct date for the 2.8.0 release
2021-12-22 Version 2.8.0
- New features
GetState
returns a string representing a device or axis' current state. This may include:- Settings
- Servo Tuning
- Stream Buffers
- Triggers
SetState
takes a state returned byGetState
and applies it to a device, setting its state to match the saveCanSetState
will check if a supplied state is compatible with a device or axis, and return an error explaining why not if it isn't.
2021-11-30 Version 2.7.2
- Bug fixes and Improvements
- Removing protobuf header files from C++
2021-11-15 Version 2.7.1
- Bug fixes and Improvements
- JS library does not work in Windows when path contains unicode characters
2021-10-22 Version 2.7.0
- New features
GetString
andSetString
methods for accessing string-based device/axis settings
- Bug fixes and Improvements
- Fixing digital output method on streams
- Fixing rare python warning message when script ends
- Documentation improvements
2021-08-23 Version 2.6.1
- Bug fixes and Improvements
- Identification resets all stored device information
- N-API upgrade to version 4 (Node.js library)
- Unifying web and Node.js library
2021-07-30 Version 2.6.0
- Bug fixes and Improvements
- Adding support for communicating with Zaber Launcher remotely (Network Sharing)
2021-07-27 Version 2.5.1
- Bug fixes and Improvements
- Fixing Device DB local file compatibility
2021-07-26 Version 2.5.0
- New features
- Support for hardware modified devices
2021-07-16 Version 2.4.2
- Bug fixes and Improvements
- Upgraded all external dependencies
- Allowing setting of unknown setting without unit conversion
2021-06-28 Version 2.4.1
- Bug fixes and Improvements
- Improved compatibility with Zaber Launcher
2021-06-17 Version 2.4.0
- New features
- Support for port sharing with Zaber Launcher
- Support for upcoming IoT services
- Bug fixes and Improvements
- Logging to file will append to the file instead of overwriting the content.
GetChannelsInfo
will return zeros when device does not support io at all (instead of error).
2021-06-01 Version 2.3.2
- Bug fixes and Improvements
- Fixing compatibility with Firmware 6.04
2021-04-07 Version 2.3.1
- New features
- Custom transport feature allowing to use the library with different means of communication.
- WebAssembly support for JS library.
- Bug fixes and Improvements
- Fixing description of park/unpark to be consistent across FW versions.
2021-03-10 Version 2.2.0
- Bug fixes and Improvements
- Adding
GetAxisNumbers
method toLockstep
class that returns array of axis numbers (GexAxes
marked obsolete).
- Adding
2021-03-01 Version 2.1.3
- Bug fixes and Improvements
- Ensuring offline Device Database file compatibility. (New database file download required)
2021-02-09 Version 2.1.2
- Bug fixes and Improvements
- Adding empty constructor for some C++ classes (Device, Axis, Stream)
2021-02-01 Version 2.1.1
- Bug fixes and Improvements
- Support for FW 7.17
2021-01-15 Version 2.1.0
- New features
- StopAll and HomeAll methods on Connection class to simplify homing and stopping across the entire device chain
- Bug fixes and Improvements
- Introduction of
peripheral.id
constant (FW 7) and distinction fromperipheralid
constant (FW 6) - Fixing naming in DeviceAddressConflictExceptionData renaming
DeviceIds
property toDeviceAddresses
- Adding py.typed to the python library to allow mypy to type check code against the library types
- Introduction of
2020-11-09 Version 2.0.1
- Bug fixes and Improvements
- Support for multi-axes integrated products (requires refreshing data from api.zaber.io)
- Error handling tutorial improvements
- Improvements of JavaDoc
- Removing mistaken constant
encoder.counth
2020-10-15 Version 2.0.0
- New features
- New exception system providing more information on cause of exceptions
- e.g. CommandFailedException contains parsed reply from the device
- new exception SerialPortBusyException
- New exception system providing more information on cause of exceptions
- Breaking changes
- Removal of obsolete methods
- Lockstep.getOffset
- Lockstep.getTwist
- Library.toggleDeviceDbStore
- Change of library default caching directory for Linux, MacOS
- On Linux
$XDG_CACHE_HOME/zaber-motion-lib
(or~/.cache/zaber-motion-lib
if not set) - On MacOS
~/Library/Caches/zaber-motion-lib
- On Linux
- C++ MotionLibException's method
message()
renamed togetMessage()
to conform to library conventions
- Removal of obsolete methods
2020-09-23 Version 1.6.1
- Bug fixes and Improvements
- Binary device with FW 5 is not asked for FW build
2020-09-18 Version 1.6.0
- Bug fixes and Improvements
- Strong-named assemblies for .NET as well as digital signature
- Unit conversions for controllers
- Protobufs 3.13.0
- Go 1.15
2020-09-15 Version 1.5.1
- Bug fixes and Improvements
- Fixing that waitForIdle throws CommandPreemptedException upon receiving unexpected response (Binary protocol)
- Adding isIdentified property on Device class
- Improvements to the documentation
2020-08-19 Version 1.5.0
- New features
- Allowing to disable checksums for a connection
- Bug fixes and Improvements
- Improvements to C++ and Python documentation
- Js library is compiled to ES2018 standard and contain inline source maps
2020-07-24 Version 1.4.4
- Bug fixes and Improvements
- Making asyncio Python methods for opening port cancel-proof in sense that the port is closed when canceled
- Improving update instructions for Matlab library
- Adding newly introduced ASCII protocol warning flags
2020-07-08 Version 1.4.3
- Bug fixes and Improvements
- Fixing segmentation fault when Python asyncio task is cancelled
- JavaScript library no longer uses eval in generated protobuf code
- Dropping support for Node.js 8
2020-06-17 Version 1.4.2
- Bug fixes and Improvements
- Critical: Invalidation of Device DB store after temporary caching issue on api.zaber.io
2020-06-05, Version 1.4.1
- Bug fixes and Improvements
- Protobufs 3.12.3
- Documentation improvements
2020-06-02, Version 1.4.0
- New features
- move_min and move_max methods
- Bug fixes and Improvements
- Fixing missing
DeviceSettings
class in API documentation - Fixing compatibility with Matlab 2020
- Fixing JS library being broken when packed in asar archive by electron
- Fixing missing
2020-05-20, Version 1.3.1
- Bug fixes and Improvements
- Fixing ArgumentNullException when C# Connection gets disposed by finalizer
2020-05-14, Version 1.3.0
- New features
- Parking API
- Bug fixes and Improvements
- Fixing handling of signals on Windows (https://gitlab.com/ZaberTech/zaber-motion-lib/-/issues/5)
- Empty constructor for C++ Connection class
- Making toggleDeviceDBStore method obsolete in favor of enableDeviceDBStore
- Checking axis number in reply in genericCommand
2020-04-29, Version 1.2.2
- New features
- Win32 support
- On UNIX platforms library uses flock in addition to TIOCEXCL
- Bug fixes and Improvements
toString
methods for Java and C++ classes- Specific exception is thrown when used with incompatible devices
- C++ documentation for Qt and MinGW
2020-04-21, Version 1.2.1
- New features
- Octave support (installation and tutorials)
- Bug fixes and Improvements
- Adding mathematical rounding to unit conversions
- Previously the number was cut at needed precision
- Fixing that stream commands get stuck on a stream FB error
- Error is thrown when rounding and unit conversion of non-zero acceleration results into a zero value
- Adding missing namespaces to C++ enums
- Improved compatibility with old versions of firmware
- Updating the go protobuf library
- Little documentation improvements
- Adding mathematical rounding to unit conversions
2020-04-07, Version 1.2.0
- New features
- Adding custom timeouts for ASCII generic command methods
- Adding get/set of default request timeout of ASCII connection
- Bug fixes and Improvements
- Adding documentation of events
- Adding description of exceptions
- Hiding internal classes of C# implementation
- Adding numbering information to API doc
2020-04-02, Version 1.1.1
- Bug fixes and Improvements
- Fixing name of
reply_only
event in Python Binary Connection (mistakenly calledalert
)
- Fixing name of
2020-03-30, Version 1.1.0
- New features
- Stream API
- Provides streaming of movement commands and synchronized multi-axis movement
- Analog output support
- Stream API
- Bug fixes and Improvements
- Improvement of lockstep documentation.
2020-03-23, Version 1.0.13
- Bug fixes and Improvements
- Fixing that copying of Device and Axis classes in C++ makes the properties (e.g. setting, all axes) of instances unusable.
- Adding code documentation to C++ properties
- Improving C++ installation documentation
- Making getters of C++ classes constant (rest of the classes)
- Improving compatibility with X-JOY3 product
- Adding lockstep support for more that two axes
2020-03-04, Version 1.0.12
- Bug fixes and Improvements
- Fixing Binary Protocol and TCP (Python)
- Adding const to getters (C++)
2020-03-03, Version 1.0.11
- Bug fixes and Improvements
- Providing a default path for Device DB store
- Documentation changes
- Turning on Device DB store in tutorials
- Making library's need for internet connection more apparent
2020-02-26, Version 1.0.10
- Bug fixes and Improvements
- Updating dependencies across the library
- Protobuf 3.11.2
- RxPy 3.0.1 (Python)
- Adding ARM64 (aarch64) platform for Linux
- Updating dependencies across the library
2019-12-13, Version 1.0.8
- Bug fixes and Improvements
- Making NuGet package work with MSBuild older than 15.3
2019-11-21, Version 1.0.7
- Bug fixes and Improvements
- Improving prepareCommand capabilities allowing numbers to be place directly to template.
2019-11-04, Version 1.0.6
- Bug fixes and Improvements
- Fixing compatibility issues with products predating Firmware 5.34 (Auto-Reply setting missing)
2019-11-04, Version 1.0.5
- Bug fixes and Improvements
- Improved the error message when the Device Database service is not reachable
- Ensured compatibility with upcoming Firmware 7 products
2019-10-23, Version 1.0.4
- Bug fixes and Improvements
- Added support for Binary Protocol with Firmware version lower than 6.06
2019-10-21, Version 1.0.3
-
Bug fixes and Improvements
- Improved Firmware 7 support (commands and settings formatting).
- Added unit conversions and command formatting to
Device
class. - Fixed failure of GenericCommandMultiResponse for more than 1k replies.
- Fixed JavaSript initialization when importing directly from
dist
folder
-
Documentation changes
- Adding enum values to the API reference
2019-10-04, Version 1.0.2
-
Bug fixes and Improvements
- Improved performance of GenericCommandMultiResponse (no waiting when targeting particular device).
- Removing unused dependencies of the JS library.
- Fixing protobuf dependency version of the Python library.
-
Documentation changes
- General improvements of the texts.
2019-09-23, Version 1.0.1
-
Bug fixes
- Fixing typescript compilation errors due to empty namespaces.
- Fixed behavior: Binary connection was getting closed due to unmatched error. Now it emits unknownResponse.
- Fixed behavior: Commands are now preempted even without matching requests.
-
Documentation changes
- Adding C++ examples and installation instructions.
-
API changes
- C++ API
- Reordering genericCommand arguments in binary Device and Communication class (Unreleased)
2019-08-30, Version 1.0.0
- Documentation changes
- Fixing couple of mistakes in example codes
- Improving texts and instructions
2019-08-27, Version 0.0.27
-
Documentation changes
- Fixing couple of mistakes in example codes
-
Bug fixes
- Fixing missing types in Typescript namespaces
- Fixing harmless error that occasionally pops up in Python on Mac OS
- Fixing prepareCommand in Python
2019-08-19, Version 0.0.26
-
API changes
- Breaking change: Unit of measure names in JavaScript and Python have been changed to match common standards
- Breaking change: Some method names have changed to improve clarity and consistency
Connection.Device()
andLockstep()
are nowGetDevice()
andGetLockstep()
Device.Axis()
andLockstep()
are nowGetAxis()
andGetLockstep()
Warnings.Get()
andClear()
are nowGetFlags()
andClearFlags()
-
Documentation changes
- Many updates to reflect reviewer contributions
- Docs about finding the right serial port amended to cover direct USB connections
- Some site navigation controls have been altered
- Binary protocol support is now fully documented
- A temporary banner has been added stating this library is in early development and subject to change
-
Bug fixes
- Fixed errors when using Binary controller + peripheral combinations
2019-08-12, Version 0.0.25
-
Adding settings constants for ASCII Protocol
-
Finalizing Binary Support
-
Fixing various issues with C++
2019-07-24, Version 0.0.24
-
Extending settings API to provide arbitrary unit conversions
-
Providing properties on Axis and Device that expose device identity information
2019-07-12, Version 0.0.23
- Python bugfix
- Fixed a circular dependency problem that prevented using the ASCII Device class in Python.
2019-07-12, Version 0.0.22
-
I/O support
- I/O pins are now supported on controllers and integrated devices that have them.
- There is a device I/O how-to guide in the documentation.
-
Lockstep support
- Lockstep mode is now supported on two-axis ASCII devices.
- There is a lockstep how-to guide in the documentation.
-
Binary generic commands
- There is now a second Connection class that supports the Binary protocol.
- Binary generic commands (without unit conversions) can be sent or broadcast.
- Spontaneous binary messages such as move tracking become events you can subscribe to.
- Documentation for the Binary protocol is completely separate from ASCII but has the same structure.
-
ASCII-specific namespace (BREAKING change)
- Object types specific to the ASCII protocol have been moved into an ASCII namespace or subdirectory.
- Import statements in existing code will need modification - please refer to the updated documentation.
- The API reference now indicates what import statements are needed for each type.
-
Example projects
- The documentation includes downloadable, self-contained example projects for ASCII in several programming languages.
-
Database usage documentation
- There is a how-to guide explaining how to use the device database offline, how to cache data.
- For Zaberians, the how-to also explains how to use the master database.
-
Exception types (BREAKING change)
- The numeric MotionLibErrorType code no longer exists
- Instead there are different subclasses of MotionLibException to report different error conditions.
- The list of exception types can be seen at the bottom of the API reference section for MotionLibException.
2019-06-12, Version 0.0.21
-
Java Support
- Full support of Java programming language with the API matching the APIs of other languages.
- Available through Maven.
-
Changed type of the serial number in device identity to unsigned integer
- Ensuring that the library covers the full range of Zaber serial numbers.
-
Documentation improvements
- Improved navigation in Getting Started guide.
- Improved responsive design.
- External links are marked with an icon.
- Language specific paragraphs.
2019-06-05, Version 0.0.20
- Fixing parsing of serial number
- Only affects Zaber internal development.
2019-05-28, Version 0.0.19
-
Renaming Communication class to Connection
-
Adding renumber method to Connection class
- The method allows to automatically assign addresses to a device chain.
-
Python asyncio
- All blocking methods in Python got new asyncio counterparts with
_async
suffix.
- All blocking methods in Python got new asyncio counterparts with
-
Improving the error message when the setting is not supported by the device
2019-05-15, Version 0.0.18
-
Device Database store
- It is a feature allowing to store Device Database information to hard-drive to minimize the usage of web-service API.
-
Adding serial number to device identity
- Queries device for system.serial and exposes the returned information in a field.
-
Renaming method wait_till_idle to wait_until_idle
-
Device settings API
- Allows read and write device settings using API similar to axis settings.
-
Improving error message when device rejects the read or write of settings
-
Device Database documentation
- Adding more information about Device Database and its API.
-
Sorting classes in the reference
-
Fixing letter case of enum values in the reference (Python, Js)
-
Improving grammar in documentation
- Improving texts on the portal.
-
Adding an appropriate license to source code and packaging
- Additionally, collecting licenses of all used libraries and tools.
-
Adding Changelog