Things are changing.
When I restarted my instrument control projects, I had a clear path ahead of me. Then I realized a few things, have to rethink the whole project, my view on it.
I found this project: https://github.com/xyphro/UsbGpib
This is exactly, what I need. I'm 90% sure now, that the firmware I developed for my own board is needless (issues can surface, when I try to adopt it to my hardware and software ecosystem, but it is highly unlikely).
My control software has an additional layer above the VISA. I was thinking to eliminate it, but figured out that I have some instruments on hand what uses HID, or proprietary USB based protocol, what I can't put under the VISA umbrella.
I have a big dilemma regarding the future development. I mean the desktop application of the measurement control.
The situation:
In the software development today is everything about the mobile, web and cloud. It is clear, the word is going to this direction. Even myself as a DevOps professional working on cloud based web projects for several years now.
But...
Always this disturbing "but".
But the instrument control in my hand is a bit different. What I see and feel, the instrument control, visualization applications are mainly not built around web technologies. Those are still desktop apps. I don't want to change this. It is more convenient to use this applications, easier to communicate directly with the hardware, etc.
I started to develop it in C# on .NET Framework with Visual Studio using WinForms. This platform where I have the most experience. If I keep my lazy attitude on it, I can keep it this way and just forget my dilemma. Actually I develop it to myself, so I not really need to care about it.
But something is itching in my mind. The technology above is getting outdated. I also use those projects for learning. So the question is: Which direction?
The other driving factor is Linux. Should I create a multiplatform app? For myself, not necessary. If others want also to use it, that is a requirement.
So the options I see now:
- Keep this, continue the development and just forget it?
- Move to the .NET 6, WPF, MVVM to have a never platform? This means no Linux support, the only thing I can hope, that somebody create a usable version of the MAUI on Linux.
- Move to .NET 6, and use some 3rd party UI (Avalonia or UNO Platform, QT, whatever)?
- Just forget the complete C# and .NET ecosystem and move somewhere else?
- Python has PyVISA for instrument control. I not really like Python, and still need to find a UI
- Java has desktop frameworks, but what to do with the instruments?
- Node.js has Electron, but the VISA support libraries questionable.
- Any other direction didn't pop to my mind?
I try to collect (at least partially) the requirements:
- Native desktop application
- Hardware communication (Serial, USB-HID, IVI stack like Keysight IO Library Suite, USB-TMC, etc.)
- GUI elements - Dialogs, Data Grids, Text controls, and most importantly charts
- Pugin architecture (the pugins for the instruments, communication platforms should be handled separately, need to be expandable)
- Network handling
- File system handling
Maybe there are more requirements. These ones I can see now.
So, If you have thoughts on this, please share with me!