| I am investigating options for the development of industrial control software that will have to run on a ruggedized network-connected tablet PC. None of this requires hard real-time control. It isn't a machine controller. It's a scheduler for a specific set of applications. It has access to sensors and can issue commands to cause equipment to activate or change states. Also, this isn't a situation where people could get hurt if the software fails. However, it could cause business losses or production halts. Developing on Windows is easy for a range of reasons. Customers have people who can work with Windows, which means supporting them can be easier. My greatest concern with Windows are unwanted automatic updates. I think Windows IoT edition might bring this under control. Not sure. Also, I need to call a sales rep to understand their pricing/licensing model. The fear isn't reboots. That's not a problem. It's the potential for an update causing our application to stop working correctly. The alternatives are, of course, Linux and Android. At that point we have to consider a multi-platform approach to development. The one requirement is that it has to be a compiled language. The application-specific source cannot be open for a range of reasons, one of them being potential exposure to liability if source is modified and something goes horribly wrong. That leaves out frameworks that are web-centric JS/Python based. The options I have considered include: Qt: I am not comfortable with their licensing models and very slimy process. I watched a video presentation where the presenter broke down the license terms and highlighted deceitful language designed to make you believe you have to pay them money. Not for me. Uno Platform: C# is fine. I's prefer C++, but that's just me. Being able to use .Net UI components sounds like a potential plus. Don't need much, buttons, sliders, menus, graphs, etc. .Net MAUI does not support Linux. Other than that, possibly interesting. It does support Android. Xamarin: No Linux but it does do Android. C# & .Net Kotlin. Interesting. Java. No. Wondering if anyone who may have walked this path might have something to share. Thanks. |
You also need to consider who is responsible for monitoring, maintaining and updating the devices OS and software, and whether it is a pull or push type update model. If it is you, then the fact that customers IT department knows Windows is not a benefit (on the contrary, they might cause problems).
When it comes to language and GUI framework, pick based on availability of skills. Having people that know X is more important than what X is. I would try to find a way to solve the modification issue which does not limit your choice of tech. Not being able to use JavaScript/web for UI is a huge limitation wrt access to skills. Tamper protect/detection using cryptography.