← Back to selected work

Renovotec · Application development & hardware integration

PackingBench

A parcel leaves the bench. Its packing record stays behind.

Working demo · Marketed by RenovotecC# · .NET · SignalR · Scanners · Printing
Problem
Connect physical packing events to a record people can retrieve.
My part
Application, scanner integration, image handling, printing and reporting.
Outcome
Working demonstration marketed publicly by Renovotec.
PackingBench demonstration setup with overhead scanner, packing surface, screen and label printer
The physical demonstration bench. Software joins the scanner, operator interface, images and printer into one packing workflow.

Two arrivals, one packing record · Explanatory diagram

  1. Barcode arrivesIdentify the item and record the scan time.
  2. Image followsWait for fresh image data; retry reads while the upload finishes.
  3. Record is assembledStore the item evidence and set consumed files aside.

Context and scope

Packing evidence is useful only if someone can retrieve it against the right order. A scanner, camera and printer can each work independently while the overall packing process still produces an incomplete record. The application’s job was to join those events into a workflow an operator could follow and a reviewer could revisit.

The scope covered a working demonstration application and its physical integrations. It did not include establishing a measured reduction in packing time. The engineering challenge was coordination: device state, operator actions, delayed files and the deployed executable all had to agree.

What I built

I developed Renovotec’s proof-of-packing application: scan an order, check its items, capture packing evidence and print the labels. The history brings the record back when someone needs to investigate what was packed.

My work covered the application flow, scanner integration, image handling, live interface updates, printing and reporting.

The hardware was only half the problem

A barcode result and its image do not necessarily arrive together. A camera can be ready while the application is not. Device activity and operator session state need to stay aligned.

I worked on those boundaries: when scans are accepted, which bench owns the state, and how the app waits for images. Each bench needed its own device configuration and image storage.

Under the hood: state, timing and isolation

I refactored the scanner interface around initialisation, start/stop, triggering and capture. The packing workflow could ask for an operation without taking on the device-specific connection setup.

For image arrival, I added timestamp-based waiting, file-read retries and handling for consumed files. That addresses stale or missing uploads; it is not a guarantee of perfect image matching under every timing condition.

While moving bench configuration into the database, I investigated a registry that was populated at startup but empty in the worker. The implementation was creating a second dependency-injection container. Keeping one registry and resolving database access within a scope addressed the registration problem.

A scanner stand-in. Not a pretend app.

To test without the physical FS40, I built an emulator that talks to the real scanner service. It sends barcode results, responds to scanner commands and exercises image-upload paths.

That let me work through valid and invalid scans, switching modes and connection behaviour without needing the bench beside me. The first runs exposed image-upload errors too—which is exactly the sort of thing a fake success screen would miss.

The demo changed the design

Customer feedback made one thing clear: mandatory photography was not right for every packing workflow. I worked on configurable capture and label steps instead of making every operator follow the same sequence.

I also tightened scanner/session behaviour and worked through a printing failure that appeared in the published executable but not in development. The release package needed native PDF dependencies. “It works in Visual Studio” was not the finish line.

What you can verify

Renovotec publicly markets the packing-bench demo. The photo shows the physical setup; the public video shows the product in context. My development records cover the simulator, scanner lifecycle, multiple benches and release packaging.

Engineering decisions and trade-offs

The following decisions connect the implementation to its practical constraints. Each separates what I changed from what still needs verification.

Separate the packing workflow from scanner control

Constraint
Device connection and capture behaviour would otherwise spread through the application.
My approach
I refactored the scanner interface around initialisation, start/stop, triggering and capture.
Implication
This separated workflow requests from device-specific setup. It also created a boundary the emulator could exercise; physical-device testing was still necessary.

Treat image arrival as a separate event

Constraint
Receiving a barcode did not establish that its image was ready to read.
My approach
I used timestamp-based waiting, read retries and handling for consumed files.
Implication
This addressed late or incomplete uploads. Timing-based association still needs testing under closely spaced scans; it should not be described as an infallible match.

Make capture and label steps configurable

Constraint
Customer feedback showed that mandatory photography did not suit every workflow.
My approach
I worked on configurable evidence-capture and label steps.
Implication
The workflow could accommodate different demonstrations rather than require every operator to follow one sequence. Configuration increases the combinations that need verification.

Evidence and limits

Different evidence answers different questions. This record distinguishes a visible demonstration, implementation history and validated operational outcomes.

Public demonstration

What it supports: Renovotec’s linked video establishes that the integrated packing solution is publicly demonstrated and marketed.

What it does not establish: It does not establish individual authorship, production adoption or a percentage productivity improvement.

Implementation records and emulator work

What it supports: Support the scanner lifecycle, image handling, bench configuration and packaging work described here.

What it does not establish: Commercial source and raw records are not published. The emulator is not a replacement for hardware validation.

Physical setup photograph

What it supports: Shows the bench, scanner, operator screens and printer used for demonstration.

What it does not establish: A photograph alone cannot prove reliability or measured operational benefit.

Lessons and next acceptance checks

The most instructive failures occurred at boundaries: a service resolved from the wrong dependency container, an image still being uploaded, and a printing dependency missing from the release package. Each could leave an individual component looking healthy while the end-to-end workflow failed.

The next verification priorities are repeated scans under load, interruptions during capture, concurrent bench isolation and a clean-machine release check. These are acceptance priorities, not claims that an endurance programme has already been completed.

See the work

Another side of the work

Frank →PickByLight →LastMile →Teremware × MAI →OpsBridge →

Talk to me about a role →