Close

Control Panel Progress Report

A project log for SigCore UC - Universal Controller

Universal industrial I/O controller with relays, analog/digital I/O, Modbus & OPC-UA support. Powered by Raspberry Pi.

edwardEdward 11/02/2025 at 04:570 Comments

Overview

This week was all about getting the SigCore UC Control Panel into a shape that feels like a finished product — not just a test harness.

The interface is now a clean, touch-friendly dashboard that mirrors the hardware layout: relays, inputs, outputs, and live system functions all visible at a glance.

The software communicates directly with the SigCore UC hardware over TCP, automatically discovering the device, loading its FRAM-stored properties, and updating all I/O channels in real time.

What It Can Do

Full control of I/O

Property dialogs

Live operation

PID control support

Logging system 

How It Works

The Control Panel is written in C# (WPF) and communicates with the SigCore UC server over a JSON-based TCP protocol.
When launched, it:

  1. Connects to the device (auto-discovery via mDNS).

  2. Retrieves device properties and populates all channel groups.

  3. Begins asynchronous polling and live updates.

Each group — relays, digital inputs, analog inputs, and analog outputs — runs in its own lightweight update loop, keeping the interface responsive even during heavy communication. All cross-thread updates are marshaled through the UI Dispatcher to prevent race conditions.

The architecture cleanly separates hardware control from presentation:

Dialogs and property windows follow an MVVM pattern, making it easy to expand the system with new channel types or logging features later.

Challenges This Week

Decimal input bug
A stubborn issue blocked typing decimal points and commas in analog input dialogs. The culprit turned out to be an overzealous input validation filter. Fixed by handling input through double.TryParse() and bypassing locale restrictions.

Modal dialog behavior
Some dialogs occasionally dropped behind the main window. This was fixed by ensuring all dialogs are application-modal and always stay on top of the parent window.

Async initialization
The initial property load caused occasional UI freezes. Reworked to use background tasks (Task.Run) with Dispatcher.Invoke for updates.

Logging integration
The MySQL logger now runs independently but isn’t yet tied into the UI toggle. Batched insert handling is next.

Closing Thoughts

The Control Panel has evolved from a prototype test tool into a professional-grade front end for the SigCore UC hardware.

It’s stable, visually clear, and fast — exactly what you want when you’re monitoring a live control system.

The really cool thing about the Control Panel Software is that it provides complete control of the device, just like a physical front panel. Every relay, input, output, and property is right at your fingertips.
You can operate it exactly as you would a hardware console — toggling relays, adjusting analog outputs, tuning PID loops, and watching live feedback in real time.

It makes the SigCore UC feel like a cohesive, integrated system — hardware and software working together seamlessly.

Discussions