Windows desktop application (.NET) that is used to communicate with DAQiFi hardware.
- .NET 9.0
- WPF
- SQLite
- EntityFramework (ORM)
- Google Protocol Buffers (read incoming data from DAQiFi hardware)
- MahApps (UI components)
- Oxyplot (for graphing)
The project uses GitHub Actions for continuous integration and deployment:
- Build & Test: Automated build, testing, and code coverage on every pull request
- Static Analysis: .NET SDK analyzers and Roslynator for code quality enforcement
- Code Coverage: ReportGenerator creates HTML reports and posts summaries to PRs (80% minimum required)
- MSI Installer: Automated Windows installer builds using Wix Toolset
- Release: Automatic release asset publishing when GitHub releases are created
- Dependency Updates: Dependabot manages NuGet and GitHub Actions dependencies weekly
All workflows run on .NET 9.0 with Windows runners for WPF compatibility.
Exceptions are sent to BugSnag
How data goes from the device to the database.
sequenceDiagram
DAQiFiHardware->>IStreamingDevice: Protobuf Message
IStreamingDevice->>MessageConsumer: Protobuf Message
MessageConsumer->>MessageConsumer: Decode Message
MessageConsumer->>IDevice:OnMessageReceived()
IDevice->>IChannel:Set Active Sample
IChannel->>IChannel:Scale Sample(Expression)
IChannel->>LoggingManager:OnChannelUpdated()
LoggingManager->>DatabaseLogger:HandleChannelUpdate()
DatabaseLogger->>DatabaseLogger:Add to Buffer
DatabaseLogger->>DatabaseLogger:ConsumerThread
DatabaseLogger->>Database:Bulk Insert Buffer
- Uses Wix Toolset
- Separate solution
Daqifi.Desktop.Setup
DAQiFi Desktop discovers and connects to DAQiFi devices over WiFi using UDP broadcasts and TCP connections.
- Same Network: Computer and DAQiFi device must be on the same network/subnet
- Firewall: UDP port 30303 must be allowed (configured automatically with admin privileges)
- Virtual Machines: Use bridged networking mode for VM environments
- Run as Administrator - Required for automatic firewall configuration
- Check Network Connection - Ensure computer and device are on same WiFi network
- Verify Connectivity - Test with
ping <device-ip>
from command prompt - Manual Connection - Use manual IP connection if discovery fails
- UDP Discovery: Port 30303 (device discovery broadcasts)
- TCP Data: Device-specific port (varies by device, typically 9760)
Please read Contributing Guidelines before contributing.