Skip to content

Releases: Philip-S-Martin/ProtocolMaster

2021.2.1

26 Apr 16:52
648375c
Compare
Choose a tag to compare

2021.2.1 contains some fixes for protocols to support and correct negative numbers, as well as reliability improvements. Binaries to be released soon.

2021.2

02 Apr 06:15
Compare
Choose a tag to compare

Protocol Master 2021.2 contains some small improvements and important fixes.
Improvements:

  • Video recordings are automatically labeled
  • New numeric prompt type
  • Prompts can now be labeled
    Fixes:
  • Video and microphone no longer required to run the software

2021.1 - First Production Release!

19 Feb 17:56
1f8094c
Compare
Choose a tag to compare

2021.1 is complete!

ProtocolMaster is finally ready for use! The development since January has been intense, but it has also been extremely beneficial to the application. In addition to a completely new UI designed to be familiar to anyone.

Installation

Requirements: Windows 10, and at least one currently enabled camera and microphone.

Click this link, then run the application: Download Installer

Feature list

  • Loading Experiments from multiple sources:
    • Google Drive private
    • Published links (new)
    • Local files (new)
  • Extensible File Interpreter System
  • Extensible Driver System
  • Automated protocol execution
  • Protocol timeline visualization (improved)
  • Detailed logging (improved)
  • Automated video+audio recording (new)
    • Device selection settings (new)
  • Persistent settings (new)

Technical Information

Known Issues:

  • Application does not start on devices with no camera or microphone
  • Application cannot tell if a video device is in use when attempting to load it.
  • Driver/Interpreter selection may be unreliable
  • No user-facing error prompts other than the log
  • Log does not always get saved immediately in the case of a crash
  • McIntyreAFC driver may be unreliable. More testing is required to determine this.
  • There is no file verification for interpreters. Feeding an invalid file to an interpreter will result in a crash.
  • Selection prompt for USB devices when there are multiples is probably unclear and hard to remember for users.

Ported to .NET Core 3.1 from .NET Framework

The entire application and all of its libraries were ported to .NET Core 3.1. Initially the port was planned for .NET 5, but it does not yet support XAML islands. Because XAML islands allows the application to preview and record from the camera with extremely high performance using native windows libraries, the port was moved to .NET Core 3.1 from .NET 5.

The benefits of porting the software include:

  • Camera support
  • ProtocolMasterCore library is now cross-platform
  • ProtocolMasterWPF can be relatively easily ported to a web application running on Linux
  • Much better performance overall (less than 1% CPU usage while idle and previewing a camera, less than 15% when running a protocol with visualization and recording)

All features other than the camera are supported in .NET 5's new WinUI. Once WinUI supports XAML islands, the software should be ported to maintain modernity, improve performance, and improve compatibility with future extensions developed in new versions of .NET.

Extracted Core Library

ProtocolMasterCore was extracted from the main application. This library includes all of the protocol management and execution features, as well as some helper functionality like debug logging and folder management.

Improved and renamed AFC interpreter and driver

The interpreter's reliability was massively improved. It was renamed to SpreadsheetAFC. The driver's reliability and performance are dramatically improved, and it now depends on SerialPortStream instead of System.IO.Ports, it has also been updated to utilize asynchronous data handling instead of synchronous. The driver was renamed to McIntyreAFC.

New User Interface

The user interface was completely rewritten from scratch (with the exception of the timeline visualization component, which was heavily refactored). It is designed to better conform to SOLID principles and loosely to MVVM. It also is designed to look and feel like an MP3 player to borrow users' familiarity with that type of software.

  • MP3 player look and feel
  • Massive refactoring for reliability
  • User journey managed by enabling and disabling buttons
  • Persistent settings

Planned Improvements

  • Fixing all of the known issues
  • Refactoring Session.cs out into several classes to conform to SOLID
  • Closer adherance to MVVM
  • Using MVVM adherance and Session.cs refactoring to support multiple sessions simultaneously

Pre-Release 2021.1-alpha

29 Jan 22:33
f4811f2
Compare
Choose a tag to compare
Pre-release

No binaries will be released for this version because it has no production users. Feel free to compile them from the source if this version of the software is needed.

Pre-Release notes

ProtocolMaster's full feature list will be described in the release notes for 2021.1

This is an incomplete feature list. It is not fully representative of the features that the original application is capable of. These features can be found in the ProtocolMaster and Schedulino projects, as well as the Arduino folder.

Features of ProtocolMaster Pre-Release:

  • Protocol schedule generation from Google Drive source
  • Protocol execution on Arduino
  • Easy extensibility with user-programmed .DLL files
  • Protocol timeline visualization/plotting
  • Debug logging for extensions and the main program
  • Google authentication
  • Simple folder access shortcuts
  • Spreadsheet interpreter extension support

There are also several new projects in this release, all of which are generally ports of the prior release from .NET Framework to .NET Core 3.1 and .NET 5. ProtocolMasterCore and ProtocolMasterWPF are the next version of the application (the extensibility platform and some utilities were extracted to ProtocolMasterCore, which is a library), while McIntyreAFC is the ported version of Schedulino.

What is coming: Camera, a new UI, Release 2021.1

ProtocolMaster has has release 2021.1 in its sights for about two months now. The first generic interpreter and driver (AFCInterpreter and Schedulino, respectively) are done and working flawlessly, taking a complex configuration from a google spreadsheet and turning it into events on an Arduino, which then triggers physical lab hardware.

Camera support has been heavily requested throughout the development process. After a year of searching, I have found no reliable, high performance, and open source webcam/ipcam systems for Windows Presentation Framework (WPF). Microsoft has supported an excellent webcam/ipcam system since the introduction of Windows 10 through their Universal Windows Platform. However, porting to UWP from WPF would make the extensibility system unusable due to Windows 10 application packaging and security features.

However in the last month I found a way to utilize the Windows 10 API such that the webcam can be fully controlled and visually previewed with almost no performance cost in a WPF application. I have already implemented this in the new user interface, which brings me to the final topic: the new user interface.

I am replacing the original Microsoft Visual Studio 2012+ stylings with Google Material Design stylings, and completely revising the user experience to ensure that users working in the lab are not overwhelmed by unnecessary visuals and controls. All protocols will be controlled in a near identical method to the Spotify audio controls, and previously exposed controls that I believe most users will not use have been hidden in tabs or dialogs.

Release 2021.1 will be on this new UI with full camera support. It is planned to be released on Feb 1, 2021 Feb 22, 2021. Release delayed due to delays, bugfixes, and refactoring new features.