Software/Zaber Console/Release notes

From ZaberWiki
Jump to navigation Jump to search

These are the changes in each new version of the Zaber Console. For changes in the retired Test version, please see here.

Notices

2022 November 30

As of version 2.8.0, Zaber Console requires .NET Framework 4.6 or later to be installed. Some versions of Windows 10 have it pre-installed. If you get an error at startup saying the program requires .NET Framework, please see these instructions.

2021 August 17

As of version 2.6.14, Zaber Console is no longer compatible with device database versions older than February 2020.

2021 July 7

A change to the device database released on this date is not backwards compatible with Zaber Console versions 2.5.4 (January 2020) and earlier. The incompatibility will manifest as an error popup with the message "Index was outside the bounds of the array." when trying to open the port.

We recommend users update to the latest version of Zaber Console to avoid this problem.

Release version

2.8.3.32104

2023 December 6 (Installer)

This release fixes a bug causing the software update button to fail when the download link is redirected by the Zaber website. Also updated the link used to download updates in order to avoid the redirection overhead.

Users of older versions must manually download and install this or a later version from the Zaber website. Older versions of Zaber Console will no longer be able to find and download updates. After installing, automatic updates should work again.

2.8.2.28462

2023 October 11 (Installer)

Fixed the Servo Tuner giving a unit conversion error message after recent device database updates.

2.8.1.16190

2023 April 26 (Installer)

There are no behavior changes in this release; it's just an update to the device database included with the installer.

2.8.0.7624

2022 November 30 (Installer)

  • Updated dependencies to .NET Framework 4.6, which is the default version for Windows 10.
  • Zaber Console is now compiled with Visual Studio 2022.
  • This change should address occasional failures to copy text to the clipboard.

2.7.4.5975

2022 October 24 (Installer)

  • Fixed a Settings tab exception when reading the motor.phase setting after having selected a non-default unit of measure in the Device List.

2.7.3.5343

2022 October 13 (Installer)

  • Updated log4net (used for outputting the application log text) to avoid virus scanners flagging Zaber Console because the old version had a security vulnerability.
  • Device capability flags that depend on FW hardware modification being enabled are no longer exposed, even if the feature is enabled.

2.7.2.64045

2022 May 26 (Installer)

Bug fixes

  • Minor change to the Firmware updater to fix an issue where a few device types could not be field-upgraded.
  • Fixed a release process problem that was producing non-monotonic build numbers in the version numbers.

2.7.1.153

2022 May 10 (Installer)

Changes

  • Passive support for custom peripherals (no related new features; just tolerance of related device database changes).
    • Unit conversions for position, velocity and acceleration will not be available for custom peripherals.
  • Workaround for a Firmware update glitch in Firmware version 7.23.
  • Fixed X-MCC1 peripheral axis not being displayed in the device list.


2.7.0.157

2022 February 14 (Installer)

Bug fixes:

  • Fixed a case where the program would not fall back to using its bundled database if there was an error opening a downloaded one.
    • Added a warning popup when the program falls back to its bundled database after such an error.
  • Fixed the file name filter for database import and export not showing downloaded files with numbers appended to the extensions by web browsers.
  • Fixed the program freezing temporarily when the Home button on the Simple tab was pressed while using the Binary protocol.

Other changes:

  • Changed the fallback behavior when a Firmware build number is not found in the device database; previously the oldest build with the same major and minor versions would be used. Now the newest build is used as the default instead.
  • The device database is no longer stored in the Zaber Console repository. Developers building from source must download and decompress the database separately and place it in the source tree before compiling. (see Configuration.DatabaseUrl for the download URL and the ZaberConsoleGUI Visual Studio project for the expected location and file name).
  • Due to a database schema change, online help for commands and settings may not scroll to the item clicked on if you are still using an older device database.
  • Firmware updates will be faster when updating the first device in a daisy chain using an Ethernet or direct USB connection.

2.6.14.143

2021 August 17 (Installer)

Bug fixes:

  • Fixed a control in the G-Code config dialog appearing in the wrong place on some computers.
  • Suppressed "HTML document not available" errors from the Commands and Settings tabs. These errors were triggered by slow downloads; the help panel will resume working once the download finishes.

Other changes:

  • Re-worded the tooltip on the polling checkbox to make it more clear that it only applies to ASCII.
  • Changed a lot of device database code to be less brittle when underlying data types change.
  • Removed a device database backward compatibility fallback for database versions older than February 2020.

2.6.13.492

2021 June 9 (Installer)

This release changes the Firmware Update dialog to wait for the device to start responding again before considering the Firmware update complete. This is to encourage users to wait until the device has finished applying the update before disconnecting anything. The dialog will wait for up to 2 minutes, and then produce an error if the device does not respond by then.

2.6.12.488

2021 May 31 (Installer)

Bug fixes

  • Fixed a case where the axis names were editable or showing the Activate button in the device list for integrated devices.
  • Fixed an error when trying to send an empty command from the ASCII command text box on the Commands tab.

2.6.11.479

2021 May 13 (Installer)

Bug fixes

  • Loading saved joystick settings on a custom buttons-only input device will now report that it was unable to restore the stick axis settings, instead of throwing an unhandled error.
    • An upcoming device database update will also cause the stick axis user interface controls to be disabled when such a device is selected.

2.6.10.472

2021 April 19 (Installer)

Bug fixes

  • Fixed the G-Code translator omitting the "on" clause of stream arc and circle commands if more than two axes were enabled.

2.6.9.463

2021 March 12

Cosmetic changes

  • The port selection combo box at top left how has a fixed width, to prevent the open/closed button from changing position when clicked.
  • Added some text to the error report dialog to encourage users to include their contact information when submitting a bug report.

Bug fixes

  • Fixed the Servo Tuner tab failing to write data to devices when the computer's locale setting uses a symbol other than period for the decimal place.
  • Fixed script compile errors when scripts or templates contain mixed Unix and Windows line endings.
  • Fixed a null reference exception if the caller passed null as the timeout parameter to DeviceListener.ReceiveListResponse() or DeviceListener.ReceiveInfoListContent(). (Affects script or Zaber.dll developers)
  • Fixed DeviceListener.ReceiveListResponse() and DeviceListener.ReceiveInfoListContent() using the Conversation's default timeout for the overall time to receive a list response. The caller provided timeout is now used instead, and it is now relative to the end of the list instead of the start on devices with Firmware version 6.14 or later. (Affects script or Zaber.dll developers)

2.6.8.443

2020 December 8

Bug fixes

  • Fixed a case where the Cycle tab could cause the program to crash if there was a communication error. It now stops cycling instead.
  • Fixed the Commands tab popping up the error report dialog if there was a device error response to command typed in the text box. It now highlights the text box with an error border and tooltip instead.
  • Added tooltips to the Auto-Refresh controls in the Options tab.

2.6.7.429

2020 September 28

Bug fixes

  • Fixed incorrect calculation of gain and Kp tuning parameters by the Simple servo tuning tab.

2.6.6.413

2020 July 27

This release contains fixes for a few problems found since the last release.

Bug Fixes

  • Fixed the firmware update menu option not being visible for Firmware 6 devices that had been incompletely updated.
  • Fixed the Joystick tab failing to display the current joystick or button settings if the device polling rate was too high.
  • Fixed the Joystick tab sometimes querying lockstep and virtual axis properties of the wrong device after you change the target device number.

Known issues

  • The Joystick tab will incorrectly show the red "invalid settings" label if position polling is enabled.

2.6.5.401

2020 July 22

This release contains more support for Firmware 7 and auto-detectable peripherals.

Features

Bug fixes

  • The buttons on the Simple tab are now disabled if no devices are detected.
  • The automatic check for database or software updates now repeats at regular intervals in addition to occurring at program startup.
  • Fixed an exception popup appearing when writing the same setting value to all devices.
  • Fixed a large memory leak when opening the port, related to caching of protocol help content.
  • The update buttons for the database and software will now initially display a question mark icon if the up-to-date status is uncertain because automatic update checks have been disabled by the user.
  • Changed the scroll bar placement on the Simple method of the Servo Tuning tab to make control visibility better.
  • The protocol quick change button is now disabled on TCP/IP connections to prevent loss of communication with devices.

Other changes

  • The positions of the sliders on the Simple tuning method of the Servo Tuning tab are no longer saved in user settings, to reduce confusion. The initial position of the sliders when connecting to the device is now entirely determined by the default value in the device database.
  • The slider controls on the Simple tuning method of the Servo Tuner tab can now have a Zaber-specified initial position other than the middle. Note that the initial position of the sliders when the tab is shown can never be assumed to represent the current settings of the device; this tuning method is one-way only.
  • Names and descriptions have been added for new device warning flags added in Firmware 7.

2.6.3.332

2020 June 4

The main focus of this release is to support the new X-MCC line of multi-axis controllers, auto-detectable peripherals, and changes in Firmware version 7.

New features:

  • The G-Code Translator now supports 3D motion on three-axis controllers.
  • The Device List has new interactivity to support Firmware 7 auto-detectable peripherals. If you enable peripheral position and connection status updating in the Auto Refresh section of the Options tab, new controls in the Device list will inform you when a peripheral disconnection has been detected and when a newly connected peripheral needs activation. At present, this only affects ASCII controllers with Firmware 7, though some of the cosmetic changes also affect the display of Firmware 6 device information. See the user guide for more information.
    • The Options tab now offers the ability to poll device positions at one of several intervals. This feature is only available in ASCII; in Binary, it is recommended to use the move tracking messages sent by the device instead.
    • The Options tab now offers the ability to check for peripheral changes automatically at configurable intervals, when the ASCII protocol is in use. It is recommended to use this with Firmware 7 controllers if you often change peripherals.
    • Messages generated by polling device position or peripheral status will be suppressed from the message logs.

Bug fixes:

  • The error message tooltip on the software update button will now show the server-side error if there is one, instead of an exception message.
  • Minor visual style changes to some controls and dialog boxes.
  • Auto-complete now works when typing in a numeric peripheral ID in the Device List, as well as when typing the name.
  • You can now select a suggestion from auto-complete lists with a single instead of double mouse click.
  • The peripheral name box now selects all text when it gets cursor focus, making it easier to type in new data.
  • Fixed incorrect unit conversion between device units and SI units for two PID parameters in the PID tuning method of the Servo Tuner tab.
  • More internal code now makes use of ASCII message IDs, reducing the chance of interference when using multiple tabs together.
  • Fixed the previously selected tab not being selected the next time the program starts.
  • Addressed a possible race condition in the Joystick tab.
  • The Settings tab now allows changing the value of non-numeric settings.

Other changes:

  • The Find Devices button from the main window and the protocol quick change button from the Options tab have been moved into a new drop-down menu at the top right corner of the window.
  • The Firmware Update and Calibration Data controls have moved from the Options tab to a new drop-down menu next to each device's position readout on the Device List.
    • The absence of calibration data from devices that should have it is now indicated in the device's options menu on the Device List.
  • The G-Code Translator now sends the "stop" command when aborted instead of "estop".
  • Message ID options have been removed from the Options tab.
    • in ASCII, message IDs are now always enabled for reliability reasons unless the device does not support them.
    • in Binary, message IDs are under device control and can be changed from the Settings tab. Zaber Console will still automatically force all Binary devices in the chain to have the same setting.
    • The confusing and unused "Reject unexpected responses" option has been removed; the remaining behavior is as if it were turned off.
  • For single-axis controllers in ASCII, the peripheral axis is now displayed below the controller in the Device List rather than on the same line. This is for consistency with multi-axis controllers.
  • The Safe Mode warning dialog will not appear for Firmware 7 devices that support peripheral detection because the peripheral management workflow is now handled via the Device List in this case.
  • Added a LICENSE.md file to the source code repository.
  • Some obsolete and unused tests and demo programs have been removed from the source code repository.
  • The logic for deciding when to prompt users to back up their calibration tables has been updated to cover Firmware 7 cases.

API changes: (may affect scripts or custom plugins)

  • DataPacket.NumericDataValues has been deprecated; use the new NumericValues property instead. The difference is that NumericValues will represent "NA" entries in response payloads as nulls, whereas NumericDataValues would default them to zero. This change was made to more accurately represent responses from multi-axis devices when some axes are disabled. The old property still exists but has been marked obsolete.

Known issues:

  • With Firmware 7 devices, you may occasionally get a "Received a reply of an unknown type" error dialog when opening the port. The protocol detection process has been slowed down to avoid this, but it can still occur especially after activating a peripheral or resetting a device. Dismiss the dialog box and try opening the port again.
  • If you try to dock a floating tab to the main window after closing one or more other tabs, you may get an error. It is safe to ignore the error, and you can avoid it by docking to the tab header area instead of to the dock menu in the middle of the tab area.

2.5.4.4028

2020 January 22 (Installer) (Source code)

Bug fixes

  • Removed the baud rate restriction on the firmware update button; firmware updates now work over TCP/IP connections.
  • Enabled socket keepalive to help fix network ports being disconnected after a period of inactivity - note the device end of the connection (ie the network to serial bridge) must also have the "keepalive" option enabled.
  • Fixed ASCII command auto-complete lists not including all possible combinations of enumeration parameter values.
  • The ASCII command autocompletion on the Terminal and Commands tabs now correctly shows all combinations of enumeration parameters, and no longer mistakenly filters out commands with repeated parameters.
  • The Safe Mode warning popup now only appears for motion-capable devices.
  • The Quick Controls on the device list are now only visible for devices that are identified as motion capable.
  • The Simple tab controls are now disabled for devices that are known not to be motion capable, and enabled if the selected device or any of its children are motion capable.
  • Fixed exception when browsing for a file or directory when the previously selected directory no longer exists.
  • Fixed error report submission not working if there were null bytes (ie from an invalid packet error) in the message log or application log.
  • Fixed the program failing to start if there is an error when submitting an error report queued by a previous session.
  • The Settings tab now uses the correct number of decimal places when writing non-integer settings.
  • Fixed program errors when loading a joystick configuration containing commands such as "renumber" that normally cause the port to reopen.
  • Added a potential workaround for disappearing tab headers on Windows 10.
  • Fixed incorrect servo tuning results if the carriage inertia is set to zero when using the "simple" method. The calculation now incorporates the factory-defined carriage inertia as well as the user-provided value. It is still recommended to leave the carriage inertia input at its default value unless the stage has been customized.
  • The Zaber Console source code now uses the log4net NuGet package instead of depending on a bundled DLL directly.
  • Oscilloscope:
    • The Oscilloscope tab controls are now disabled when a multi-axis controller is selected. The Oscilloscope currently only supports capturing from a single axis at a time.
    • Fixed error when using Oscilloscope tab signal generator without a signal type selected.
    • The Oscilloscope tab's signal generator section now provides different units of measure when a rotary device is selected.
    • Fixed the Oscilloscope signal generator sometimes forgetting the signal size and units when another device is selected.


Other changes

  • The database update button now has a checkable option to automatically download updates at program startup.
  • The help browsers in the Commands and Settings tabs now set the user-agent header to indicate the Zaber Console version when fetching the help content; this is to help us measure what versions of the program are in use.
  • Changing the peripheral ID via the device list is now disabled if that setting is not writable.
  • A notice has been added to the top of the Script Editor window recommending use of the Zaber Motion Library for new projects; scripting in Zaber Console will not be receiving any more new feature.
  • The Commands tab will now add additional input controls as you enter values for command parameters that can be repeated.
  • Code behavior change: ZaberDevice.SendFormatInUnits() now requires the parameter data inputs to have the new ParameterIndex field set to indicate which parameter the data is for. This will affect any scripts or programs that use this function.
  • The Simple tuning method of the Servo Tuning tab will now use the device's default value instead of zero for any tuning parameters that are not explicitly calculated.
    • Note that the PID tuning tab still sets finv1, finv2, fcla and fclg to zero for legacy reasons.


New known issues

  • The Commands tab may show too many enum values for command parameters on some devices. For example there may be more limit types listed than the device actually has.

2.5.3.3905

2019 December 20

Bug fix:

  • The Scripts tab and Script Editor now work with uppercase file name extensions.

2.5.2.3899

2019 November 18

Bug fixes:

  • Fixed null reference error after using Find Devices button.
  • Fixed port settings sometimes defaulting to ASCII 9600 baud after using the Find Devices button.
  • Fixed null reference error opening port after upgrading to v2.5.0.

2.5.1.3877

2019 November 7

Bug fixes:

  • Fixed failure to create database and installer download directories if they don't already exist.
  • Fixed the program becoming a zombie process with no visible window if there is an error initializing the database and software update buttons.

2.5.0.3871

2019 November 6

New features:

  • Support for communication over TCP/IP connections has been added.
    • At the bottom of the list of serial ports next to the Open button at top left, there is now a "Manage connections" button which opens a dialog box.
    • In the new dialog, you can add TCP/IP connections which will be saved to the same drop-down list as serial ports.
    • You can also name your connections in the dialog as a memory aid
    • TCP/IP connections will currently work with the soon-to-be-released Zaber Bridge software and with third-party network-to-serial bridge devices. It may work with additional configurations in future, or more connection types may be added.
  • A status bar has been added to the bottom of the main window, to display progress bars and notifications.
  • Device database updates are now handled via a new button on the status bar at the bottom of the window.
    • The button will indicate when a new database version is available.
    • A progress bar will be shown for the download.
    • The database import/export commands have been moved from the Options tab to the new button's right-click context menu.
    • Whether or not Zaber Console automatically checks online for new databases is now also controlled through the new button's context menu.
  • The button to check for new program versions has been moved from the Options tab to the new status bar at the bottom of the window.
    • It will indicate when a new version is available and show a progress bar for the download.
    • Right-click on the button to enable or disable automatically checking for updates when the program starts.

Other changes:

  • The Firmware Update dialog now includes a data collection notice.
  • Added a notice that the Servo Tuning tab does not support the X-DMQ-DE.
    • The Servo Tuning tab only works with devices that have Firmware v7. The X-DMQ-DE has Firmware v6.
  • The communication status lights have been moved from the top right corner of the window to the new status bar at bottom right.
  • Newly imported or downloaded device database files will now be used the next time the port is opened rather than the next time the program is started.
  • The Zaber Console source code now uses C# v7 language features; anyone wishing to compile the program from source must use Visual Studio 2017 or later.
  • Text boxes and labels that display hyperlinks are now capable of displaying link text other than the URL.
  • Support for the ClickOnce and MSI installers has now been removed from the code base. This concludes the installer replacement project.
    • This only affects people wishing to build the program from source, and means you no longer need to install the Setup Project extension in Visual Studio.

Bug fixes:

  • Fixed the ASCII command text box on the Commands tab accepting leading slashes and adding them to the command sent.
  • Fixed progress bar appearance being inconsistent between Windows 7 and 10, and incorrectly colored on Windows 7.
  • Made text on progress bars more readable on Windows 10.
  • The Oscilloscope tab now works with multi-axis devices. It does not support simultaneously recording data from more than one axis though.
  • Updating firmware on integrated devices with firmware v7 will no longer prompt you to back up calibration data, as these devices will preserve it during an update.
  • Made the error report dialog more resistant to additional errors encountered while populating the report data.
  • Improved error handling during oscilloscope data recording.
  • Fixed a null reference exception when listing commands on the Commands tab.
  • Addressed high CPU load while decompressing the device database.
  • Fixed not being able to cancel decompression of the device database when exiting the program.
  • Fixed a source of message ID leaks when sending commands to All Devices.
  • Fixed incorrect "No available message ID found" errors.
  • Fixed message IDs not being used when All Devices is selected.
  • Fixed the Commands and Settings tabs' help being unavailable in offline mode.

Known issues:

  • Cancelling a script can occasionally cause a message ID number to become unusable for the rest of the program session.
    • This should not cause problems until scripts have been cancelled many times in one program session.
    • As a best practice to reduce the risk, script code that has loops should check IsCanceled or call CheckForCancellation() periodically to avoid hard aborts.
  • If you encounter errors that say "Could not load file or assembly System.Core, Version=2.0.5.0...", please ensure your .NET Framework is up to date, or install patch KB2468871 from https://www.microsoft.com/en-us/download/details.aspx?id=3556
  • Checking for and downloading database updates may fail under Windows XP. This can be worked around by manually downloading the database from https://www.zaber.com/software/device-database/devices-public.sqlite.lzma and importing it via the drop-down menu on the database update button near bottom right of the window.

2.4.2.3614

2019 May 8 (Installer)

Bug fixes:

  • Fixed a Servo Tuner bug that was causing the Simple tuning method to produce incorrect values of Finv2 for devices using the FFPID v4 control loop.
  • Fixed a silent crash on some computers when checking for program updates.

Other changes:

  • The help panel in the Commands and Settings tabs can now display the Firmware 7 version of the ASCII and Binary protocol manuals, and will do so when All Devices is selected.
    • The help panel now requires Microsoft Internet Explorer version 11 or later, meaning online help for commands and settings will not be available on most operating systems earlier than Windows 7 SP1. A link to the help on our website will be displayed instead.
  • The ZaberError enumeration is now regenerated from a combination of database information and hand-coded help text. Newly added binary protocol error codes will now be found and added automatically at release time.
  • Short descriptions of binary errors now appear in the tool tips in the Commands and Settings tabs, in addition to the error names.

2.4.1.3525

2019 February 22 (ClickOnce Installer (no longer supported))

New features:

  • Added #import and #using directives to the script compiler. This allows referencing external libraries that Zaber Console doesn't normally include. Added an example script that shows how to use this to interface with a LabJack device.
    • Note this is not yet supported in Python scripts.

Bug fixes:

  • Removed unit conversions from controller-level move commands on multi-axis controllers, due to their dependence on axis-level settings.
  • Fixed undetected physical disconnection of the serial port.
  • Fixed couple of issues in handling of the example scripts.
  • Fixed FW7 devices with uninitialized device IDs not appearing in the device list. They now appear with device ID -1.
  • ASCII message IDs are now automatically disabled for firmware 6 devices that are in bootloader mode. This makes it possible to recover from a failed bootload without having to manually disable message IDs.
  • Fixed issue when servo tuning was communicating with device even though the tab was not active.
  • Fixed exception when selecting autocomplete suggestions in the terminal and commands tabs.
  • Fixed line endings in the script output in the Scripts tab.
  • Fixed port closing when reading baud rate in the binary protocol.
  • Fixed unit conversion of sample rate in oscilloscope tab.
  • Sanitized OutOfMemoryException during start of the program.

Other changes:

  • The MSI and ClickOnce installers are being deprecated in favor of the new InnoSetup installer. This release will prompt ClickOnce users to switch over to the new installer.
  • Improved example scripts UI. The scripts do not need to be copied anymore, instead they can be run directly.
  • Added warning message to Servo Tuner to indicate whether device supports servo tuning.
  • Added data size validation for the binary protocol. Sending data values larger than 32 bits (24 with message IDs enabled) will cause an error.
  • Added refresh button for the script folder view.

Known issues:

  • Some Firmware 7 ASCII commands that accept multiple values for their parameters cannot be used correctly from the command list in the Commands tab. They can, however, be sent by typing them into the text box there or on the Terminal tab.
  • The program may freeze or display an error when loading a saved joystick configuration that includes commands that change protocol, baud rate or certain device settings such as device number or resolution.
  • In scripts, including a leading '/' or other reserved characters in ASCII commands passed to Conversation.Request() results in undefined behavior, including infinite waits, incorrect results or timeout errors. This is a long-standing behavior that was exposed by the addition of the timeout case. We recommend you do not include reserved characters such as '/' or ':' when using Conversation.Request().

2.4.0.3328

2018 August 20 (MSI Installer)

The main focus of this release is internal code changes to better support numeric data in the ASCII protocol; Zaber Console is now better able to handle device settings and command parameters that have more than 32 bits of data or have decimal places.

PLEASE NOTE: This version of Zaber Console requires an update to the device database. If you are installing Zaber Console for the first time, you do not need to do anything. If you are upgrading an existing installation, you should make sure "Use online resources" is enabled in the Options tab and your computer has Internet access when you next launch the program, so it can download an update. Once the database update is downloaded you will need to restart the program.

General changes:

  • The representation of numeric data exchanged with devices has changed to support the ASCII protocol's increasing use of 64-bit data and data with decimal places. Some API changes have resulted (see below) and some unit conversions may have more accurate results than before.
  • The firmware updater progress bar now shows an estimate of the time remaining while updating the device.
  • The script editor how has an option to show script compile warnings in the output. This option is turned off by default to match previous behavior, but turning it on is recommended because it will reveal when scripts are using deprecated functionality. This option can be found in a new Options menu in the script editor window.
  • There have been some minor performance and accuracy improvements in the Oscilloscope.
    • Note: For best performance, hide the Terminal tab while using the Oscilloscope.
  • If any axes are in safe mode when you open the port, a popup message warns you about it.
  • You can now change peripheral IDs by typing the ID or peripheral name in the text boxes in the device list.
  • The informational label in the Simple tab of the Servo Tuner now tells you what the default carriage inertia is and can be clicked to use that value.
  • If any ASCII devices report error flags when the port is opened, a new dialog box will pop up to notify you that the devices may not be operable.
  • The Servo Tuner now supports unscaled FFPID tuning parameters, available in uncoming firmware versions.

Bug fixes:

  • Fixed the firmware update dialog displaying build numbers twice in the version list.
  • Fixed styling on text boxes so their background is always white when enabled. The ones in the Commands and Settings tabs were previously turning grey when selected.
  • If you try to close the program while a database update is in progress, it will display a dialog and remain on screen until either the download finishes or you cancel it. This is to prevent multiple errors that can happen if you start the program again before the previous one had really exited.
  • Fixed G-Code Translator raising errors when ASCII message IDs are enabled.
  • The "Edit Config" button in the G-Code Translator is now disabled while a translated script is running. This avoids a possible user interface deadlock that would prevent the stop button from being clicked, and avoids a race condition that could sometimes cause error messages.
  • Fixed renumber commands not triggering a port reopen in some situations where they should.
  • Fixed a failure to clean up device-related memory and event handlers when closing the port. This could have been causing Zaber Console to slow down and consume more memory if the port was closed and reopened frequently without restarting the program.
  • Fixed rejected renumber commands putting Zaber Console into a bad state where responses would no longer appear in the terminal log.
  • Fixed CommandInfo data structure not specifying the reference unit for binary command return values (this only affected scripting).
  • Opening the port without querying for devices now handles errors the same way as with querying enabled. Previously all errors produced this way would lead to the generic exception report dialog instead of case-specific messages.
  • Fixed some data binding errors in the user interface. These would not have been visible to users.
  • Fixed the Advanced tab of the Servo Tuner forgetting previously read values when switching back from another tab.
  • Fixed missing information in the error report dialog about the purpose of the email address; there is now a tooltip that explains it's for followup purposes but Zaber does not initiate followups.
  • Added a pop-up error message if something goes wrong while restoring saved joystick configurations.
  • Fixed some of the error dialogs that can appear when the port is opened listing the same device number multiple times for multi-axis devices.

API Changes affecting script programmers and other users of Zaber.dll:

  • Some methods and properties related to exchanging numeric data with devices have changed type from int to decimal, to better support data types larger than 32 bits and data types that have decimal places. In most cases existing API has been kept backward-compatible, and new API has been added where needed. Specifics:
    • The following public methods in Zaber.dll have had one or more integer arguments changed to decimals. This should not affect behavior other than possibly increasing accuracy, as integers are automatically promoted to decimals in C#. One exception is that if you are using Conversation.Request() for binary commands in JavaScript scripts, you may need to explicitly cast the second argument to an integer to get your script to compile.
      • The Conversation.Request() and .RequestInUnits() methods for ASCII commands.
      • ZaberDevice.FormatData() and .ConvertData().
    • The following public names have been deprecated in favor of new ones that use decimals instead of integers:
      • DataPacket.Data and DataPacket.DataValues; use NumericData and NumericDataValues instead. The deprecated members will continue to function, and will now provide rounded values for non-integer data instead of the previous behavior of providing zero or missing values, respectively. The legacy properties will round non-integer device data to the nearest integer and clamp to the legal range of integer values, which means accuracy is better than before but still not guaranteed. Using the new properties is recommended, especially with firmware version 7 or later.
      • ZaberDevice.RecentPosition (no replacement; not recommended for use in scripts).
      • ZaberDevice.CalculateData(); use CalculateExactData() instead.
      • The IConvertible interface; use IParameterConversionInfo instead, which is obtained from CommandInfo.GetRequestConversion() instead of being implemented by that class.
        • The scale factor in IConvertible has also changed type from double to decimal.
    • Other related behavior changes:
      • ZaberDevice.ConvertData and .FormatData() no longer round to integer values when converting device data to other units.
      • The DeviceType class now needs an extra initialization step to populate the new DeviceTypeUnitConversionInfo property; this is done automatically in Zaber Console but will need to be done manually in other client code when unit conversions are desired.
    • The ParameterType.Parse() method no longer exists as the properties of this class are now read from the device database.

Known issues:

  • Settings may incorrectly appear to be writable when All Devices is selected.
  • Switching from "all" to "basic" settings list modes in the Oscilloscope removes any selected channels not in the shorter list.
  • If you have multiple plots open in the Oscilloscope, zooming in on one of them can affect the zoom of the others.
  • The "Stop" button in the G-Code Translator cannot currently interrupt a motion triggered by the "Step" button.
  • Firmware 7 devices may not initially be visible in the device list after updating their firmware. This is because they take longer to reset afterwards than devices with previous firmware versions.
  • Having the Terminal tab visible can reduce Oscilloscope tab performance.

2.3.0.3167

2018 May 22 (Setup Installer (recommended)) (MSI Installer)

This is primarily a new feature release in support of Zaber's new direct-drive line of products such as the X-LDQ series.

This release adds a new Servo Tuning tab to assist with tuning the performance of direct drive stages, and an Oscilloscope tab to evaluate the tuned performance.

New features:

  • The new Servo Tuner tab is for use with Zaber's new line of direct drive products that have firmware version 7 or later. This tab provides several ways of modifying the servo behavior of these products:
    • In "Simple" mode you specify the inertial mass of the load on your stage and move a slider to select smooth or stiff position tracking.
    • "PID" mode lets you enter values in the common Proportional-Integral-Derivative control loop tuning paradigm.
    • "Advanced" mode lets you read and write the relevant device settings directly.
    • There is also a function to load and save tuning settings in CSV spreadsheet files.
    • Tuning is only supported for direct drive devices that have firmware version 7.01 or later.
  • The new Oscilloscope tab plots changing setting values over time. This can be useful for experimenting with the tuning of direct drive products.
    • Manual trigger mode records values with precise, high resolution sampling for a fixed period of time and plots them afterward.
    • Auto trigger mode records values with best-effort timing until stopped.
    • Units of measure for some settings can be changed after the fact, updating the plots.
    • Recorded data can be exported to CSV spreadsheet files.
    • "Signal generator" controls will automatically coordinate a move command with the start of the scope recording.
    • Note use of message IDs is recommended to avoid spurious graph spikes when scoping data during moves.
    • Manual trigger mode requires firmware version 7 or later.
  • Note both new tabs only support the ASCII protocol.

Bug fixes:

  • Fixed the user interface freezing when using the Simple Controls tab with binary devices.
  • It is now possible to enable message IDs in ASCII mode, but not all parts of the program use this feature at present.
  • Changing message ID mode in binary mode will now pop up a warning message if any device rejects the change.
  • Fixed port invalidation not working when message IDs are enabled in ASCII.
  • Fixed the error reporter failing to report connected devices when no device is selected.
  • Fixed the error reporter not anonymizing exception messages. User names accidentally reported this way have been purged from our records.
  • Handled more error cases when exporting the device database.
  • Fixed incorrect decoding of firmware update files that have multiple payloads.
  • Unit conversions for AC current quantities are now more consistent between ASCII and Binary protocols.
  • Fixed the firmware update dialog stalling if message IDs are enabled.
  • Fixed the selected port name not being restored if an error occurs while closing the port. This addresses some "port does not exist" errors that occur when the port is invalidated.
  • Opening the port now handles system I/O errors with a nicer error dialog, and logs more detail about the errors.
  • The Cycle tab now aborts when a device rejects a move command, instead of assuming the command worked while also popping up an error dialog.
  • Fixed the Sensor Logger plugin start button being disabled when an X-MCB1 is selected.
  • Fixed the checkboxes in the Device List "show columns" context menu being incorrectly unchecked after resetting user settings.

Other changes:

  • Made the button labels and window titles more consistent in the popups that ask if you want to show the joystick and servo tuner tabs.
  • Calibration data management supports changes made in firmware version 7.
  • Added a checkbox to the scripts plugin that controls whether or not scripts in sub-folders are displayed.
  • Changing the scripts folder no longer asks you if you want to create example scripts there. Instead, there is a new button for getting examples that will pop up a list to select from.
  • The Commands and Settings tabs temporarily have a link to the new online protocol manual at the top if you connect a firmware v7 device. This is a stopgap measure until a new protocol manual format can be integrated with the software.

Changes affecting source code users:

  • The Visual Studio solution and project files have been upgraded to Visual Studio Community 2017. They will no longer compile with older versions of Visual Studio.

New known issues:

  • The information displayed in the Servo Tuner about which parameter groups are active or the default can be made invalid by changing servo parameters from another tab or from a script. The workaround is to refresh the display by selecting another device and then selecting the servo device again in the device list.
  • Commands that renumber devices do not correctly invalidate the port and may cause device replies to be ignored.
  • Settings may incorrectly appear to be writable when All Devices is selected.
  • Closing the program and reopening it quickly can cause an error that makes it unusable the second time. This is because of file access contention; the first instance usually hasn't finished downloading its database update when the second tries to use it.
  • Floating window positions will be reset the first time you start this version due to a change in the window manager library Zaber Console uses.
  • The states and contents of half-maximized windows may not be correctly restored when starting the program (ie occupying half the screen by docking against one side of the screen.)
  • Unit conversions do not work if you select a multi-axis controller and a unit of measure other than data. To use different units of measure, select an axis instead of the controller.
  • Switching from "all" to "basic" settings list modes in the Oscilloscope removes any selected channels not in the shorter list.
  • If you have multiple plots open in the Oscilloscope, zooming in on one of them can affect the zoom of the others.
  • Manual capture mode in the Oscilloscope will occasionally fail to display the data.
  • Translated G-Code will fail to run if ASCII message IDs are enabled.

2.2.5.2647

2017 November 28 (Setup installer (recommended)) (MSI Installer)

Changes:

  • The About Box now displays the file date and MD5 hash of the device database, in order to aid understanding of which version of the file is in use.
  • Device names in the Device List now always include the firmware version where applicable.
  • The error reporter now records all axis names and which device is selected.
  • The firmware update dialog will now pop up a message box if there are errors or service notices when communicating with the Zaber firmware server.

Bug fixes:

  • Fixed error message and incorrect results when converting hold/run current settings to % units on some T-series devices.
  • Command and setting help text parsing has been moved to a background thread. This improves user interface response time when selecting commands, settings and devices.
  • Fixed an error when using the up arrow to navigate an empty ASCII command history in the auto-complete box.
  • Made it easer to see device error tooltips in the Simple tab, and added tooltips to controls that were missing them.
  • Fixed errors in CycleDemo if attempting to run it with no devices detected; the Run button now does nothing in this case.
  • Suppressed a rare InvalidCastException error when closing the program.
  • Fixed the ASCII command tab mistakenly offering unit conversions for non-numeric parameter types.
  • Fixed unit conversion not working for settings with measurement types not supported by the legacy unit system.
  • Fixed incorrect tooltip on the Create New Script button on the Scripts tab.
  • Possible fix for a "quota violation" error when starting the application.

Known issues:

  • The serial port sometimes fails to close automatically after sending the "system reset" command over a direct USB connection to an X-MCB1 or X-MCB2 controller, leaving Zaber Console in a bad state.
  • Keyboard navigation is not fully supported; not all controls can be reached and operated using only the keyboard.
  • File paths longer than 260 characters are not supported for file operations. If you have scripts in deeply nested folder structures, some of them may not appear in the Scripts tab because of this.
  • Some tabs that actively control devices can interfere with each other and cause errors when the user selects a different device. For example, if the Servo Tuner or Joystick tabs are active while Cycle or a script is running, changing the selected device may cause errors.

2.2.4.2625

2017 October 23 (MSI Installer)


Behavior changes and new features:

  • The Advanced tab and Message Log tab have been combined into a single tab called Terminal. The controls for sending commands are in a collapsible area below the messages. The command editing area for ASCII commands now has auto-complete. Other controls in this area have had minor behavior changes to improve workflow.
  • The typing area for sending ASCII commands in the Commands tab now automatically gets cursor focus when the port is opened or the tab is shown.
  • The typing area for ASCII commands in the Commands tab now keeps a command history.
  • Previous error highlights and tooltips are now cleared from the Commands tab when you send a new command.
  • The Scripts tab has been redesigned:
    • There are output and input areas like in the Script Editor. When a script stops to get input, the input area will get keyboard focus.
    • The Run and Edit buttons are now at the bottom of the script list instead of beside every entry.
    • Double-clicking on the selected script will open it in the editor.
    • The ability to hide individual scripts has been removed.
    • Added a "New Script" button to provide a direct way to create a blank script.
    • Removed the "Create Example Scripts" button from the scripts tab. You will be asked whether you want the examples when you change the script folder.
  • Fixed scripts tab becoming unusable if you select an unreadable scripts folder.
  • The default protocol and baud rate settings in the Options tab now persist between sessions and are not modified by the results of automatic detection.
  • Columns in the device list can now be hidden via a right-click context menu on the column headings. Hidden columns are remembered between sessions and reset by the Restore Defaults button in the Options tab.
  • Critical errors will now show a dialog that gives you the option to report details of the error to Zaber to help us improve our software quality. You can also manually file a problem report using the "Report a Problem" button on the Options tab. Note that the reports may not be sent until you restart the program. Also note that Zaber will not contact you about these reports even if you choose to provide contact information; please contact Zaber Customer Support if you wish to follow up on an error.
  • HTTPS is now used instead of HTTP for most web requests, to improve security.
  • Web links displayed in popups are now clickable.
  • The About box now has a link to the release notes.


Bug fixes:

  • Fixed the firmware download dialog refusing to save firmware as new files on disk.
  • Initial location of the main window and script editor window on first run is now centered on the primary display instead of centered in the virtual screen on multi-head computers.
  • Default size of the script editor window has been increased to 800x600 pixels.
  • Unit conversions have been disabled in the Commands tab when All Devices is selected. Unit conversions were enabled here by accident in an earlier release but there was no functionality in place to ensure the conversions were correct or applicable to all devices.
  • Fixed the unit selection boxes appearing in the Commands tab for binary commands that have no parameters.
  • Fixed port sometimes spuriously reopening when changing the "Query Devices" and "Keep device list up-to-date" options.
  • The file list in the scripts tab now only shows file names with extensions corresponding to supported languages.
  • ASCII command parameters that allow decimal places now get appropriate rounding in unit conversions instead of always being rounded to the nearest integer.
  • The device database import/export function in the Options tab now shows a progress bar for long file operations, honors compression settings when exporting, and remembers import and export paths.
  • Fixed a word wrapping problem in progress bar dialog boxes.
  • The layout of the buttons at the bottom of the Find Devices dialog has been made more Windows-standard.
  • The "Create Example Scripts" button on the Scripts tab and the "Restore Defaults" button on the Options tab now gives feedback upon success by displaying a message dialog.
  • The Plugin Options dialog no longer lists internal plugins that have no user interface to show.
  • Fixed tabbing between controls not working at all in floating tab windows.
  • Fixed maximized floating windows not having the "Restore" button and incorrectly maximizing at startup after having been restored to normal size by other means.
  • Fixed the Simple tab movement controls causing error popups when used on All Devices.
  • Fixed a case where the selected tab wasn't remembered correctly between sessions.
  • Fixed an inconsistency between when Zaber Console would prompt you to display the joystick tab and when the joystick tab would actually work.
  • Fixed a case where device responses could appear in the Terminal tab before the corresponding commands.
  • Fixed a potential safety hazard in the Cycle tab: Using the mouse to select part or all of the speed number could trigger devices to start moving, if the mouse button was accidentally released above the Run button. The Run button is now only triggered if both mouse down and mouse up happen over the button.
  • Fixed device name display sometimes being truncated when first opening the port.
  • Eliminated an error popup when cancelling a script twice.
  • Fixed parameterless binary commands causing error popups if a unit conversion is selected in the device list.
  • Fixed a spurious "port was closed twice" error popup following the "loopback detected" error popup.
  • Fixed an error message popping up if you type non-numeric values in the speed column of the Cycle tab. The error now shows as a red icon and tooltip on the row where you typed.
  • Improved error handling for file and directory access errors and file permission errors in the Scripts tab and editor.
  • The Scripts tab should no longer list files that don't exist if an error occurs while selecting a new folder.
  • Fixed several controls in the Options tab, including the firmware update button, being incorrectly disabled by the manual protocol settings.
  • When unplugging a USB serial cable, the selected port will now default to either the last selected or the first available instead of going blank.


API and other code changes (for developers using the included libraries):

  • ZaberDevice has a new CalculateExactData() method that does unit conversions without rounding to the nearest integer.
  • The parameters of ZaberDevice.SendFormatInUnits() have changed - a tuple parameter type has been changed to a new class, ParameterData.
  • ZaberWpfToolbox.Dialogs.AboutBoxVM no longer has a Message property; put that content in Description instead.
  • A few classes and methods have been marked as not CLS compliant due to use of unsigned integer types.
  • Most build warnings have been cleaned up. All source code projects now have warning level 4 and warnings-as-errors set. Where warnings are suppressed it is done with narrowly-scoped #pragma statements.
  • The unit test projects have been updated to the latest version of NUnit and now work with the Visual Studio Test Explorer window.
  • Users of the source code zip can now optionally use the Fake build script to compile and run the tests from the command line.
  • Tests now always use the en-US culture regardless of computer settings, to avoid spurious failures on non-English computers.
  • IDialogViewModel has a new property, Exception, that must be implemented by all dialog box view models. This property is used to marshal unhandled exceptions from the dialog to the calling thread.

Known issues:

  • Keyboard navigation is not fully supported; not all controls can be reached and operated using only the keyboard.
  • File paths longer than 260 characters are not supported for file operations. If you have scripts in deeply nested folder structures, some of them may not appear in the Scripts tab because of this.
  • Some tabs that actively control devices can interfere with each other and cause errors when the user selects a different device. For example, if the Servo Tuner or Joystick tabs are active while Cycle or a script is running, changing the selected device may cause errors.

2.1.2.2285

2017 March 6 (MSI Installer)

Behavior changes and new features:

  • Added a "pass-through" mode to the G-Code Translator tab. This can be used to pass G-Code commands for axes beyond #2, with optional measurement scaling. Commands for axes in pass-through mode are output with only their measurements modified; some other user-provided software can then translate them further into movement commands.
  • Added a prototype auto-complete command entry box to the top of the Commands tab when in ASCII mode. Typing in this box will show a list of possible ASCII commands that match what you type, and will filter the contents of the command list.
  • Zaber Console now downloads the device database in the background. This gives a faster program start but means you won't get updated data until the next time you start the program.
  • The Options tab has a new button near lower right that allows you to export the current device database to a file, import a device database to be used at next program start, or copy the database download URL to the clipboard.
  • Changed the keyboard shortcut for the Home command in the Simple tab from left CTRL to ALT+Home to reduce the chance of accidental motion.
  • The jog forward/backward buttons in the device list quick controls will now move by indices for indexed rotary devices like the Filter Wheel.
  • If no devices are detected when opening the port, Zaber Console will now default to the protocol and baud rate selected in the left panel of the Options tab.
  • Zaber Console will no longer request alias numbers from binary devices with firmware versions earlier than 5.0. This marginally improves support for really old devices.
  • Added new example scripts showing how to transfer a list of stream commands to a device and the new recommended way to do unit conversions.


Bug fixes:

  • Fixed Zaber Console hogging the CPU; it will no longer use 100% of one CPU core even when idle.
  • Fixed parsing of numbers with decimal points when the Windows culture settings specify non-English number formatting.
    • The G-Code Translator now always expects G-Code input to use the period character as the decimal marker, as that appears to be the standard in the G-Code spec.
    • Other places where users type in numbers (ie the Commands and Settings tabs) will try to interpret numbers using their language settings first, and then English formatting if that fails.
  • Handled a fatal error case that occurred if a user had disabled database downloads before upgrading to a Zaber Console version that requires recently added database views.
    • The program will now automatically fall back to the database that was packaged with it if the last downloaded database is the wrong version.
    • Error popups about the database now only occur if neither version of the database can be loaded.
    • This means that some users who have disabled database downloads will have stale data without realizing it, but if that becomes a problem for them the natural fix of downloading a new database will resolve it.
    • The application log now contains much more detailed information about the way the program juggles databases.
  • Fixed the "Restore defaults" button in the Options tab not resetting user settings for some tabs.
  • Fixed a race condition in the Joystick tab that could have caused exception popups in rare cases.
  • Fixed a rare case where Zaber Console would continue to run as a zombie process after the window was closed.
  • Fixed ScriptRunner not being able to write to its application log file. The file is now stored in the same location as the Zaber Console application log; previously it was located with the executable.
  • The Script Editor now remembers its maximized state and which monitor it was on between sessions.
  • Fixed the Script Editor slowing down when a script produces lots of output; the output tab now only remembers as much text as the Message Log tab does (configurable in the Options tab).
  • Fixed missing deployment of some IronPython libraries needed for math functions in Python scripts.
  • Changed the text in the Script Editor help tab to try to give more information about where to find API help.
  • The Zaber Library help command in the Script Editor help menu now opens the help to the best starting point for script authors.
  • Fixed the Commands tab being empty when using a binary device with a peripheral ID that is not in the database.
  • Fixed an error when clicking on the Settings tab right after closing the port.
  • Fixed an error when clicking a Send button in the Commands tab too quickly after showing the tab.
  • The Commands tab now only shows a text entry box for binary commands if they have parameters.
  • Fixed joystick tab sometimes causing the port to close and reopen when reading joystick settings.
  • Fixed error when using T-JOY with the Joystick tab.
  • Fixed Advanced tab causing an error if the first ASCII command you send is blank.
  • Main text boxes in the Advanced tab now get cursor focus when the tab is shown.
  • Fixed some G-Code Translator configuration data not being saved to user config files.
  • File browse dialogs now label the save button "Save" instead of "Open".
  • Shortened binary Message Log messages that mention commands or error codes.
  • Fixed incorrect tangential unit conversions for the T-OMG. Conversions TO device units were correct but conversions FROM device units to standard units were not, so this would have only been seen in the device's current position readout.
  • Added a warning message popup when opening the port in "do not query" mode to clue people in as to why the device list is empty.
  • Made the error condition reported in scripts that call PortFacade.GetConversation(0).Request() when no devices are present more consistent between binary and ASCII protocols.


API changes (for developers using the included Zaber.DLL):

  • The unit of measure conversion system has been refactored. Zaber Console includes a set of predefined units but the device database can override them and add new units.
    • Devices and device types now have local conversion tables that extend a central default table. The local tables define device-specific units such as steps and microsteps.
    • The recommended way to obtain a unit of measure is now to ask the device for it by name: device.UnitConverter.FindUnitByAbbreviation("cm"). Some common unit abbreviations are predefined in the UnitOfMeasure class but they are not exhaustive because the device database can now create new ones without code changes.
    • The previously existing static unit of measure instances such as UnitOfMeasure.Meter still exist to support existing scripts, but will not be extended to include new units. The statically defined UnitOfMeasure, ConversionTable and ConversionMap instances are deprecated.
  • Conversation.PollUntilIdle() now has an optional second argument - a boolean that defaults to true and determines whether the poll will abort if the device returns warning flags. This allows script authors to wait for devices in a warning state to become idle.

2.0.10.2282

2016 August 30 (MSI Installer)

Changes:

  • The Joystick tab's "Save and Load" dialog now has Import and Export buttons that let you save joystick configurations to text files anywhere on disk, and load them again. This makes it easier to transfer joystick configurations between joysticks attached to different computers.
  • Pressing return while typing in a command or setting value in the Commands and Settings tabs will now always send the command or write the setting, rather than moving cursor focus to the next control.
  • Added line numbers to the script editor.
  • Added a red marker to the left of lines that have errors in the script editor.
  • Added scroll bars to some tabs that were suffering from clipping if the window size was too small.
  • Message Log text can now be selected with the mouse and copied to the clipboard via the right-click context menu.
  • In binary mode, the device position will be displayed in the device list when a Move Tracking or Manual Move Tracking message is received from the device.
  • Fixed the Joystick tab not working with pre-6.18 firmware on X-JOY3 devices in ASCII mode.
  • Fixed the Settings tab not taking access level into account when displaying read-only settings. This was causing some settings to appear with a blank "read" button.
  • Zaber Console will now use the User-Agent HTTP header to report its version number when downloading firmware or the device database. This will allow Zaber to collect data about what versions are in use.
  • At startup, Zaber Console will now write the MD5 hash of the Device Database to the application log. We can use this information to identify the database version in support conversations that involve the database.
  • Several changes were made to the way the program terminates when the main window closes, which together should reduce or eliminate the chance of it becoming a zombie process.
  • Fixed a bug that was causing the port to reopen following the next manual command after running a script that invalidates the device list. It now reopens the port as soon as the script finishes.

2.0.8.2254

2016 August 2

Bug fixes:

  • Fixed exceptions and missing or incorrect units of measure after changing peripheral IDs.
  • Script editor help menu command to launch the Zaber.dll help file was not working.

2.0.7.2250

2016 July 27

Bug fixes:

  • Fixed ScriptRunner hanging after running the script.
  • Fixed script editor not allowing you to save newly created scripts.

Other changes:

  • Commands and settings now only show the unit of measure drop-down list if there are units available to select.

2.0.6.2247

2016 July 25 (MSI Installer)

Welcome to Zaber Console 2.0!

The GUI technology underlying Zaber Console has been changed from Windows Forms to Windows Presentation Foundation (WPF) and the visual appearance has been changed to be more Zaber themed. Most functionality remains the same as before, but a few things have been deliberately changed and some new features have been added.

IMPORTANT: Zaber-provided plugins that previously were installed separately (Cycle and G-Code Translator) are now included in the Zaber Console installation, in order to ensure version compatibility. If you were using either of these plugins with the previous version of Zaber Console, you will see a warning popup saying that two versions of the plugin were found, and where they were found. To stop this warning from appearing, you should either set your plugins folder to an empty folder, or (if the plugin is on your own computer and not in a shared location on your local network) delete the old version of the plugin. To change your plugins folder go to the Options tab, click the "Plugins & Tabs" button, click "Set Custom Plugin Folder" and choose an empty folder.

General changes:

  • User interface redesigned to match website theme.
  • Tabs can be rearranged and most tabs can be undocked and made into separate floating windows by clicking on the tab title and dragging it with the left mouse button held down.
  • There is now a + button to the right of the tab headers that provides a shortcut for opening new tabs. Another button at the far right provides a way to jump to open tabs that might not be visible due to too many tabs being open.
  • Some popup messages now have a "do not show again" option. If you check this box and then pick an option, that same option will be used automatically next time and the popup will not appear. To get the popups to come back, use the "Restore Defaults" button in the Options tab.
  • The Message Log has been moved into a tab; if you prefer to see it always, please undock it to a floating window and position it where you like. The window layout will be saved between sessions.
  • There is a new column in the Device List that shows the last flags returned by each device (ASCII mode only).
  • Quick movement controls have been added on the right side of the Device List. Hover the mouse over each button to see a tooltip describing what it does.
  • New "Simple" controls tab added that provides easy access to the basic types of motion.
  • In ASCII mode, the Commands and Settings tabs now place similar items into groups that can be expanded or collapsed.
  • In ASCII mode, the Commands tab has separate controls for each parameter where commands have multiple parameters.
  • Commands and settings can be marked as favourites by clicking the star button to the left of the command or setting name. There is a new button at the top of the Commands and Settings tabs to show only favourited commands. By default, favourites are the same for all devices but there is an option in the Options tab to have different favourites for different device types or even different serial numbers.
  • The Commands and Settings tabs now display the relevant section of the Protocol Manuals from our website in the help panel. If your computer does not always have network access, you can switch to offline help by unchecking "Use Online Resources" in the Options tab.
  • A button to quickly switch devices between ASCII and Binary has been added at the bottom left of the Options tab.
  • A helper for loading and saving device calibration data to CSV files has been added; go to the Options tab and click on "Calibration Data..."
  • There is a new tab for configuring joysticks. You must have a joystick connected in order to use it.
  • Added missing derivative unit conversion from revs to RPM for rotary devices.
  • New binary command and error values have been added to the enumerations available to scripts, to reflect recent firmware changes. Some of the value names have been standardized but the old names are still provided for backwards compatibility.


Changes affecting developers:

  • There have been breaking changes to the Zaber.dll library included with Zaber Console. Any user programs that use this library will need to be recompiled, and may need minor code changes. No major functionality has been removed, but new functionality has been added and some names have changed.
  • The conversion to WPF means that custom plugins can no longer obtain access to the Window that contains them. Some plugins did this in order to detect when the window was closing. The new way to do this is to add a public method tagged with the [PlugInMethod(PlugInMethodAttribute.EventType.PluginDeactivated)] attribute.

If you wish to remain on the old version of Zaber Console and not receive automatic updates, there are two ways to do so. Note that Zaber will not be releasing updates, bug fixes or new features for the pre-2.0 versions.

  • If you are using the ClickOnce installed version, you can roll back to the previous version by going to the Windows Control Panel, selecting "Add/Remove Software" or "Programs and Features" (depending on Windows version), right-clicking on Zaber Console, selecting "Uninstall / Change" and then "Restore the application to its previous state".
  • Alternatively, you can install the older version using the MSI installer, which will not cause automatic updates to newer versions. The previous version's MSI installer can be found inside this file: https://www.zaber.com/software/ZaberConsole-1.4.7.1676.zip (Note the MSI installer does not work with Windows XP).

1.4.10.2091

2016 June 8

This is a maintenance release including only minor changes.

  • Added support for binary commands added in recent firmware releases.
  • Fixed open port not being refreshed when direct USB connection is unplugged from X-MCB controllers.
  • Added a special error check when updating firmware on devices with incorrect keys.
  • Changes to master units of measure (in the device list) will no longer affect settings that have units of current.
  • Added an optimization that reduces the amount of time taken to display the device list when first opening the port, in some cases.

1.4.7.1676

2016 January 21 (MSI Installer)

This release includes a major new feature: Firmware Self-Serve. This allows you to download and apply new firmware versions to Zaber devices that support in-place firmware updates. Documentation for this feature can be found here.

Other changes:

  • Fixed a case where settings would be displayed when they should have been hidden due to system.access setting being too low.
  • Fixed a bug that caused unit conversions to stop working after using the Find Devices button.
  • Fixed an unhandled exception being thrown if the automatic database download fails due to the computer being off the network.
  • Fixed large integers in device responses causing spurious errors (ie device serial numbers).
  • Device detection now handles devices that are in firmware update mode, and displays appropriate error messages.

1.4.3.1554

2015 November 19

This release addresses the following issues:

  • Conversions between units of measure would be wrong for the remainder of a session after changing a device's microstep resolution.
  • The device database would fail to load if your Windows user directory was on a network share.
  • Detecting devices when opening the port would take a very long time if any manual control knobs were off-detent. There is now an error message dialog if this is detected.
  • Some devices with custom firmware versions would not show commands or settings in binary protocol mode.
  • There was a case where the program would attempt to start with a missing device database. It will now always try to download the file if missing.
  • Incorrect resize behavior of the database download progress window.
  • Read-only settings were being displayed when the device access level was not sufficient to reveal them.

1.4.1.1519

2015 October 29

  • Fixed a critical bug that was causing JavaScript and C++ scripts to fail with the error message "CodeDomProvider type does not have a constructor that takes providerOptions".

1.4.0.1509

2015 October 8 (MSI Installer)

  • Major changes to Zaber Console's source of data about devices. Instead of having a hardcoded device database built in to the program, Zaber Console will now download a database file from our website, and automatically download it again whenever it is updated, which will usually be around the time of new product launches.
  • Zaber Console no longer automatically copies the example scripts when you select a folder for scripts; there is a new button to deploy them manually. This is to prevent pollution of folders already containing customized scripts.
  • Fixed incorrect help text being displayed for some commands and settings.
  • Fixed some issues with the Scripts tab that could cause the Run/Cancel buttons to get stuck in the Cancel state, and put the program in a bad state if you pressed Cancel twice.
  • Fixed some setting values incorrectly being displayed as zero.
  • Several other minor bug fixes.
  • There have been some minor but breaking API changes to the Zaber.DLL support library. If you have written custom software that uses Zaber.DLL, such as custom Zaber Console plugins, you may need to recompile it or possibly update some of your code.
    • New releases of the CycleDemo and G-Code Translator plugins have been posted to address the API changes in Zaber.DLL. If you are using these plugins you should download the new versions.

1.3.11.1334

2015 August 10 (MSI Installer)

  • Fixed an issue where Zaber Console would read garbled replies from the serial port, leading to all kinds of communication-related issues.
  • Fixed an issue where Zaber Console would take a long time to react to incoming messages, which sometimes led to the serial buffer overflowing, and all sorts of other things taking a long time occasionally.
  • Fixed an issue where changing protocol from ASCII to Binary with Message IDs enabled would cause an unexpected error.
  • Fixed an issue where Zaber Console wouldn't close and reopen a port after a device's number changed.
  • Fixed a few minor GUI issues.

1.3.10.1275

7 July 2015

  • Added support for X-MCB2, X-GLP, X-LRM, T-LSM075, and RST120AK.
  • Added a tool to reconfigure all connected devices to the same protocol and baud rate, regardless of their current protocol or baud rate.
  • Removed "3D" bevels from interface for a cleaner interface.
  • Made the device list hidden when the port is closed.
  • Rewrote the low-level serial communication algorithm, improving communication speed and reliability.
  • Added lots of handling for malformed and unexpected messages received from devices.
  • Made several improvements to user scripting to better support unorthodox script folder layouts and locations.
  • Various bug fixes.

1.3.5.1054

28 Apr 2015

  • Added support to X-JOY3, X-RST and other products
  • Added ASCII message ID support
  • When "All Devices" conversation is selected, only commands and settings supported by at least one connected product are displayed.
  • When scripting, the library Measurement class now allows easy conversion of units using the new copy constructor
    • e.g. measurementInNewUnit = new Measurement(measurement, newUnit).
  • Zaber Console now warns user if an attempt is made to run a script while the port is closed.
  • Fixed application crashing when loading an incompatible plug in DLL file.
  • Incompatible DLL files are now not allowed to be enabled in the Plug Ins and Tabs window.
  • Improved user-friendliness in the exception handling message box.
  • Fixed script editor not displaying line numbers wider than 2 digits properly.
  • Other minor improvements.

1.3.2.913

16 Mar 2015

  • Fixed a bug where the user could only choose a directory within "My Documents" as a "Zaber Console Scripts" directory.
  • Made Zaber Console show a friendly error message if the port the user is trying to open is already in use.
  • Fixed a bug where the MCB2's USB connector would be erroneously detected as multiple devices at multiple baud rates.
  • Made Zaber Console better handle a device being unexpectedly unplugged while the port is open.

1.3.1.901

9 Mar 2015

  • Added support for A-BLQ3000, RSB, X-MCB1.
  • Fixed a rare bug in the ClickOnce version which would cause a Blue Screen of Death.
  • Added auto-detection of baud rate and protocol.
  • Added colour syntax highlighting to the script editor.
  • Breaking change: In scripting, the underlying type of PortFacade.Port is now just TSeriesPort, not ICollection<IZaberPort>. Users will need to change any script which casts the value of PortFacade.Port to anything other than TSeriesPort.
This breaking change may result in scripts giving the error "Unable to cast object of type 'Zaber.TSeriesPort' to type 'System,Collections.Generic.ICollection`1[Zaber.IZaberPort]'.", or a similar error. If you encounter this error, see below.
Code which previously looked something like this:
var ports = (ICollection<IZaberPort>)PortFacade.Port;
TSeriesPort port = null;
foreach (var p in ports)
{
    port = (TSeriesPort)p;
}
Should now be simply written as:
var port = (TSeriesPort)PortFacade.Port;
  • Many small bug fixes and usability tweaks.

1.2.30.805

9 Dec 2014

  • Added support for LSA25A-T4 and parallel drive LAR/BAR products.
  • Fixed Zaber Console throwing RequestTimeoutException when attempting to connect to devices with firmware version 2.93.

1.2.29.788

7 Jul 2014 (MSI Installer)

  • Added up/down arrow key support to the Text Command field in the Advanced tab in ASCII mode.
  • Updated ASCII command help texts.

1.2.28.781

15 May 2014

  • Conversation.Request will retry an ASCII command if it is rejected with response data of AGAIN.
  • Added support for LHM-E families.

1.2.27.777

19 Mar 2014

  • Fixed UOM not working on single axis controller entries in ASCII mode.
  • Added support for A-BAR, A-BAR-E, A-LAR, A-LAR-E, BAR, BAR-E, LAR, LAR-E, LHM, LSM-M02, T-LHM and T-LHM-S families.
  • Fixed Zaber Console unable to open port when all default plugins are disabled.
  • Relocated application log to application data directory.

1.2.25.759

7 Nov 2013

  • Fixed Zaber Console unable to open port in ASCII mode if any device reply contains a fault (any warning flag beginning with an "F").
    • DeviceFaultException will now be thrown by Conversation.PollUntilIdle() only.
    • Previously, any Request methods can throw the exception.
  • Updated A-BLQ and A-BLQ-E series unit of measurement specs.

1.2.24.753

27 Sep 2013

  • Fixed a glitch in 1.2.23 that prevented the Zaber Library Help File from displaying.

1.2.23.748

6 Sep 2013

  • Minor release with updated product support.

1.2.22.2179

19 Jun 2013

  • Fix units of measurement calculation for T-OMG devices.

1.2.21.2162

12 Jun 2013

  • Support official release of ASCII protocol.

1.2.16.2122

2 May 2013

  • Implemented initial ASCII protocol support.
  • Support multiple baud rates.
  • Add sleep() method for Python scripts.
  • Let Python scripts detect when they've been canceled and also override default cancel behaviour.
  • New device and peripheral ids for firmware 6.06.
  • Fix threading problem when opening port from a script.
  • Add support for multi-axis devices.
  • Add VisualBasicDemo project.
  • Make device collections display commands only for their members.
  • Add PortListener class like DeviceListener.
  • Raise DataPacketSent event from separate threads.

1.2.9.1998

3 Jan 2013

  • Add Python language for scripts.
  • Support text protocol to devices.
  • Implement IDisposable on Conversation class.
    • This is a breaking change if Conversation objects were user-created. The ZaberPortFacade correctly disposes of the ones it creates.
  • Add support for Mono on GNU/Linux.
  • Remove extended support for Javascript exceptions, because it wasn't compatible with Mono on GNU/Linux.
  • Extend the partial packet timeout, because the shorter timeout didn't work with Mono.
  • Pull Send methods up to Conversation so scripts can ignore Device class.
  • Fix bug with microsteps per second velocity.
  • Add support for checksums in text mode.
  • Updating device ID list for FW6.05 and FW5.29 releases

1.2.7.1886

9 Jul 2012

  • Add unit of measure support for scripting. Implement units of measure for T-OMG.

1.2.5.1818

9 Apr 2012

  • Support peripheral ids.
  • Add some new commands: SetPeripheralId, SetHomeSensorType, and SetAutoHomeDisabled.
  • Change unit of measure in one place.
  • Allow plug ins to pass data to each other via the IPlugInManager interface.
  • Add a bunch of new device ids to the configuration files.
  • Renewed code-signing certificate for another three years.
  • Restrict some commands to controller device types.
  • Correct some step sizes.
  • Updated config and command descriptions for FW6.03 release

1.2.3.1629

4 Aug 2011

  • Add support for units of measure in position, speed, and acceleration.
  • Add support for A-series devices, including new commands and reading and writing internal registers.
  • Add buttons on settings and commands for Send, Read, and Write.
  • Hide advanced commands and settings by default.
  • Pop up to notify user when manual control knob is turned.

1.1.9.1515

4 May 2011 (MSI Installer)

  • New Feature: Plug-in controls to let customers write a control library that will be included as a new tab in Zaber Console.
  • Breaking Change: Rename EnableConstantSpeedPositionTracking to EnableMoveTracking and DisableManualPositionTracking to DisableManualMoveTracking in DeviceModes.
  • Add copy button to log window.
  • Lock port while aborting script thread to avoid aborting a thread that's in the middle of writing to the serial port. This also avoids two threads writing to the serial port at the same time.
  • Add SetHomeSpeed command.
  • Add communication options dialog.
  • Let user click away from data fields when an error occurs.
  • Implement retry logic in Conversation when port errors occur, and add new port error type: InvalidPacket.
  • Make IsCanceled writable in scripts.
  • Add ZaberPortFacade.SelectedConversation property.
  • Raise DataPacketReceived event on thread-pool threads so slow event handlers don't block others.
  • Add T-RS60C device ids and rename T-RS60 to T-RS60A.
  • Update configuration with new device ids, updated help text, and new error codes.
  • Add new device ids from firmware 5.21.
  • Leave Open as the default button, but Close is not the default anymore.
  • Update list of device ids, commands, and help text from the web site.
  • Replace Refresh Settings button with two separate buttons: Read Selected and Read All.
  • Hold setting and command values in the grid when you switch conversations.
  • Stop ConversationCollection from incorrectly triggering port errors.
  • Add several new device types.
  • Update nunit and Rhino Mocks libraries.
  • Make DeviceCollection implement IList instead of just ICollection. This makes it consistent with the other collections.
  • Disconnect port when replacing it in ZaberPortFacade.
  • Redirect other versions of Zaber.dll to the current one when loading plug ins.
  • Resurrect Script Runner tool.
  • Update list of devices in ZaberConfig.xml.
  • Handle script Save As and Open requests that use folders outside the scripts folder.
  • Make topic collections not block if they are empty.
  • Check for the query devices checkbox when the device list is invalidated.
  • Upgrade Spring library.

1.0.41.558

1 Nov 2008 (MSI Installer)

  • Rename ConstantSpeedTracking command to MoveTracking.
  • Detect loopback and don't query devices.
  • Allow user to not query devices.
  • Put error names into error messages instead of the error code.
  • Add SleepCancellationResponse to specify how a plug in should respond when the Cancel button is clicked while sleeping.
  • Display last known position for each device in the device list.
  • Detect when devices are using the same device number and offer to renumber.
  • Retry after getting a packet timeout when opening the port.
  • Create DeviceListener and TrackPosition.js script.
  • Handle VoltageHigh error just like VoltageLow error during Open().
  • Change port state on Close() before waiting for renumber to finish.
  • New device ids added to config file: T-NMC, T-LSM, T-LSQ, and T-LST.
  • Handle low voltage errors.
  • Add new device ids for T-MCA controllers.
  • Check whether DeviceListener is already started.
  • Avoid duplicate devices when USB-to-serial adapter is pulled.
  • Add line number to script compile errors.
  • Remove databinding and manually update enableDeviceQuery checkbox.
  • Remove jitter from log control.
  • Add PortName property to IZaberPort.
  • Make command fields in advanced tab behave like cells in Excel.
  • Add new device ids from firmware 5.13.
  • Remove dependency on WaitOne(int) that was introduced in .NET 3.5 SP1.
  • Add a couple of new error codes.
  • Fix row height in the setting grid with nested aliases.
  • Stop running a script when opening a new script in the editor.
  • Close the script editor when choosing a new scripts folder.
  • Open port even when device query fails.
  • Add support for exceptions in JScript.
  • Run scripts on a background thread.
  • New icons. Fix null references when restoring window position and on File:New in script editor. Application log button.
  • Don't crash when script fails.
  • Fix problem with command grid validation.
  • Wait for renumber to finish during close instead of reopen.
  • Invalidate on restore settings.
  • Tweak enter key behavior.
  • Add helpTab

1.0.26.286

1 Sep 2008

  • First public release. Contains list of devices, command grid, settings grid, scripts grid, script editor, and text log.