evanmj/TcJoy
47.6
Weak · 21 September 2026
1.9k
lines of production code
VB.NET
with C#
4
measurements over time
What this system is
This system is a hardware integration solution that bridges Xbox controllers with industrial PLCs via the TwinCAT ADS protocol. It consists of a .NET wrapper for low-level controller input, a desktop application for mapping and configuring those inputs, and a corresponding PLC function block to process the data. The architecture enables real-time monitoring and control of physical gamepad inputs within a TwinCAT environment.
Features
Added TwinCAT PLC project for gamepad input handling
Introduced a new TwinCAT PLC project containing the \FB\_TcJoy\ function block, which processes gamepad inputs (buttons, axes, triggers) and manages connection state and latency watchdogs. The project includes global variables, task configurations, and license files to support the integration of a physical controller with the PLC.
TcJoy TwinCAT Project · high confidence
Initial release of TcJoy, a Windows Forms application for mapping Xbox controllers to TwinCAT ADS
The TcJoy .NET Project introduces a new desktop application that connects to a TwinCAT PLC via ADS, allowing users to map an Xbox controller's buttons, d-pads, and analog sticks to PLC variables. The application features a 'Live Status' tab to monitor controller state, a 'Connection' tab to configure PLC NetID/Port and deadzones, and a 'Help' tab with usage instructions and links. It supports auto-connecting on startup, saving window position, and configuring ADS data rates and watchdogs.
TcJoy .NET Project · high confidence
Initial release of the J2i.Net.XInputWrapper library
The J2i.Net.XInputWrapper library is introduced, providing a managed .NET wrapper for the Windows XInput API used for Xbox controllers. The release includes the core XInput interop class that dynamically loads either xinput9\_1\_0.dll or xinput1\_4.dll depending on the build configuration, along with all necessary data structures (XInputState, XInputGamepad, XInputCapabilities, etc.) and the XboxController class that exposes properties for all standard buttons, triggers, and analog sticks. This enables developers to poll controller state and handle input events in their applications.
J2i.Net.XInputWrapper · high confidence
Dependencies
Added project files for J2i.Net.XInputWrapper and TcJoy
Introduced the MSBuild project file for the J2i.Net.XInputWrapper library, which wraps XInput functionality, and the VB.NET project file for the TcJoy application, which targets .NET Framework 4.5.2 and references the XInput wrapper and TwinCAT ADS library.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 48 → 48 (+0.1)
- Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 92 → 92 (+0.6)
- Architecture 96 → 97 (+0.7)
- Maturity 56 → 56 (-0.3)
- Readiness 17 → 17 (+0.0)
- Security 100 → 100 (+0.0)
Resolved (9)
- Build did not complete in the analyzer
- Duplicated block (13 lines × 2) (TcJoy .NET Project/TcJoy/Ads_Link.vb)
- Low XML-doc coverage: J2i.Net.XInputWrapper (J2i.Net.XInputWrapper/J2i.Net.XInputWrapper.csproj)
- Monorepo: only 1 of 2 solutions was scored
- No exposed public API
- The watchdog functionality is described but no concrete settings or fail-safe behavior is shown in text. (README.md)
- XML-doc coverage: TcJoy (TcJoy .NET Project/TcJoy/TcJoy.vbproj)
- early-stage repository — too little history to judge knowledge freshness
- single-maintainer — knowledge-concentration (bus factor) risk
New (10)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (27 lines × 2) (TcJoy .NET Project/TcJoy/Ads_Link.vb)
- Hotspot: TcJoy .NET Project/TcJoy/Ads_Link.vb (TcJoy .NET Project/TcJoy/Ads_Link.vb)
- Hotspot: TcJoy .NET Project/TcJoy/Form1.vb (TcJoy .NET Project/TcJoy/Form1.vb)
- MethodTooLong: Ads_Link.Attach (TcJoy .NET Project/TcJoy/Ads_Link.vb)
- MethodTooLong: Form1.Timer_HealthCheck_Tick_Slow (TcJoy .NET Project/TcJoy/Form1.vb)
- No ADRs found
- WriteOnlyPrivateField (J2i.Net.XInputWrapper/XboxController.cs)
- XML-doc coverage: J2i.Net.XInputWrapper (J2i.Net.XInputWrapper/J2i.Net.XInputWrapper.csproj)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
evanmj/TcJoy was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit c752cbd1096844e4d36ce2856d545322918e86bc — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-28e75b8e3254.