Lamp testbench in Rust around the HPCS 6500

lampbench station / export / label / tm30 / calibrate replace the Python
lamp_station.py, lamp_export.py, label_printer.py, tm30.py and
calibration.py that lived in HPCS6500-py. The driver is a submodule
(HPCS6500/, like mppt-testbench). Workspace crates: tm30 (TM-30-18 port of
colour-science 0.4.7), brother-ql (raster protocol, byte-identical to
brother_ql) and lamp-label (QR + ID labels for the QL-820NWB).

Bundles are byte-identical to lamp_export.py's (golden tests); the station
runs end to end in a test against the simulated instrument.
This commit is contained in:
grabowski committed 2026-10-22 17:26:14 +07:00
commit 2a3f28001c
241 files changed
+46390

No files matched your search

@@ -0,0 +1,403 @@
{
"name": "illuminant_LED_B4",
"source": "colour.SDS_ILLUMINANTS['LED-B4'] (380.0, 780.0, 5.0)",
"generator": "crates/tm30/tools/golden.py (tm30.py + colour-science 0.4.7, numpy 2.5.1)",
"wavelengths": [
380.0,
385.0,
390.0,
395.0,
400.0,
405.0,
410.0,
415.0,
420.0,
425.0,
430.0,
435.0,
440.0,
445.0,
450.0,
455.0,
460.0,
465.0,
470.0,
475.0,
480.0,
485.0,
490.0,
495.0,
500.0,
505.0,
510.0,
515.0,
520.0,
525.0,
530.0,
535.0,
540.0,
545.0,
550.0,
555.0,
560.0,
565.0,
570.0,
575.0,
580.0,
585.0,
590.0,
595.0,
600.0,
605.0,
610.0,
615.0,
620.0,
625.0,
630.0,
635.0,
640.0,
645.0,
650.0,
655.0,
660.0,
665.0,
670.0,
675.0,
680.0,
685.0,
690.0,
695.0,
700.0,
705.0,
710.0,
715.0,
720.0,
725.0,
730.0,
735.0,
740.0,
745.0,
750.0,
755.0,
760.0,
765.0,
770.0,
775.0,
780.0
],
"values": [
0.0,
0.0,
0.0,
0.01,
0.03,
0.08,
0.21,
0.54,
1.31,
2.75,
5.04,
8.31,
13.37,
20.61,
25.91,
24.12,
17.47,
11.9,
8.62,
6.34,
4.89,
4.25,
4.19,
4.7,
5.77,
7.27,
8.94,
10.6,
12.11,
13.36,
14.3,
15.02,
15.54,
15.9,
16.15,
16.33,
16.42,
16.44,
16.36,
16.2,
15.98,
15.7,
15.36,
14.93,
14.44,
13.86,
13.24,
12.57,
11.84,
11.12,
10.38,
9.65,
8.91,
8.19,
7.51,
6.86,
6.21,
5.6,
5.05,
4.54,
4.05,
3.62,
3.23,
2.87,
2.53,
2.24,
1.99,
1.76,
1.55,
1.37,
1.21,
1.07,
0.95,
0.85,
0.75,
0.67,
0.61,
0.55,
0.5,
0.45,
0.42
],
"expected": {
"Rf": 77.01489073451978,
"Rg": 95.48050994275931,
"CCT_K": 5105.847634900008,
"Duv": 0.0005183936640995037,
"bins": [
{
"bin": 1,
"ref_a": 24.429627739019857,
"ref_b": 5.563568891481263,
"test_a": 20.982017715681533,
"test_b": 4.4557469854189,
"ref_a_norm": 0.9750345967143299,
"ref_b_norm": 0.22205300090321672,
"test_a_norm": 0.8374336850408051,
"test_b_norm": 0.17783764498587953,
"Rcs_pct": -14.358293676342926,
"Rhs": -0.016521164083413416,
"Rf_h": 72.97349191001292
},
{
"bin": 2,
"ref_a": 17.793954251895165,
"ref_b": 11.998364602506557,
"test_a": 15.019807003079306,
"test_b": 12.131100978446428,
"ref_a_norm": 0.8291198450027608,
"ref_b_norm": 0.5590709101917196,
"test_a_norm": 0.6998568096823196,
"test_b_norm": 0.5652558403026742,
"Rcs_pct": -10.404212279998454,
"Rhs": 0.07695727609527232,
"Rf_h": 79.59738883503852
},
{
"bin": 3,
"ref_a": 14.49133615816406,
"ref_b": 22.074201323565415,
"test_a": 9.899266209614906,
"test_b": 23.56158701074592,
"ref_a_norm": 0.5487925333247512,
"ref_b_norm": 0.8359585847199621,
"test_a_norm": 0.37488905936186256,
"test_b_norm": 0.8922864588641901,
"Rcs_pct": -4.978067787595255,
"Rhs": 0.17588954423779637,
"Rf_h": 66.55900371541189
},
{
"bin": 4,
"ref_a": 4.061226309909171,
"ref_b": 22.030321804224744,
"test_a": 0.7716193833911106,
"test_b": 23.24867736135438,
"ref_a_norm": 0.1812923465168738,
"ref_b_norm": 0.9834292476301515,
"test_a_norm": 0.03444493804532806,
"test_b_norm": 1.0378164009155946,
"Rcs_pct": 2.4693611179448975,
"Rhs": 0.1546361839422503,
"Rf_h": 75.73789445554223
},
{
"bin": 5,
"ref_a": -2.076984505218802,
"ref_b": 19.213113120887506,
"test_a": -4.007256451814331,
"test_b": 20.09513240239614,
"ref_a_norm": -0.10747627775661847,
"ref_b_norm": 0.994207649195872,
"test_a_norm": -0.20736072241994288,
"test_b_norm": 1.039848889680778,
"Rcs_pct": 6.425074532070993,
"Rhs": 0.08906102876362375,
"Rf_h": 82.97135162070803
},
{
"bin": 6,
"ref_a": -10.820085458070144,
"ref_b": 17.57356859266115,
"test_a": -11.20204396311849,
"test_b": 18.90224071511591,
"ref_a_norm": -0.5242935859234263,
"ref_b_norm": 0.8515375715489921,
"test_a_norm": -0.542801609271466,
"test_b_norm": 0.9159191583948452,
"Rcs_pct": 6.381383989834682,
"Rhs": -0.020379634208441234,
"Rf_h": 88.54465877344713
},
{
"bin": 7,
"ref_a": -17.863984813996588,
"ref_b": 11.89772071439477,
"test_a": -16.497931444271103,
"test_b": 12.806362745566735,
"ref_a_norm": -0.8322997045070458,
"ref_b_norm": 0.5543258986169455,
"test_a_norm": -0.7686540046365135,
"test_b_norm": 0.5966603778454863,
"Rcs_pct": -2.939968890631176,
"Rhs": -0.0705594893389524,
"Rf_h": 87.85143841354181
},
{
"bin": 8,
"ref_a": -20.62938349606797,
"ref_b": 2.9558410537485607,
"test_a": -18.514786831295954,
"test_b": 3.2713743642136173,
"ref_a_norm": -0.9898903827961393,
"ref_b_norm": 0.1418345164186513,
"test_a_norm": -0.8884225467675161,
"test_b_norm": 0.15697522043148435,
"Rcs_pct": -9.65643551898277,
"Rhs": -0.0346451724358326,
"Rf_h": 84.72684345087318
},
{
"bin": 9,
"ref_a": -18.75541525751099,
"ref_b": -2.730058650267297,
"test_a": -15.920808505809541,
"test_b": -3.3104826625017836,
"ref_a_norm": -0.9895714161485137,
"ref_b_norm": -0.1440430919614858,
"test_a_norm": -0.8400121673133272,
"test_b_norm": -0.17466736787686252,
"Rcs_pct": -14.071100995587337,
"Rhs": 0.05921340105655548,
"Rf_h": 79.04750737963052
},
{
"bin": 10,
"ref_a": -19.833023716160113,
"ref_b": -11.901273962726155,
"test_a": -15.232651058292356,
"test_b": -14.395636391337353,
"ref_a_norm": -0.8574650816324481,
"ref_b_norm": -0.5145421593815799,
"test_a_norm": -0.6585716111726655,
"test_b_norm": -0.6223839445818505,
"Rcs_pct": -10.546019103973892,
"Rhs": 0.20016645905990219,
"Rf_h": 63.23450887813762
},
{
"bin": 11,
"ref_a": -12.944314473848145,
"ref_b": -19.275514964027778,
"test_a": -8.252919351956857,
"test_b": -22.120517848803416,
"ref_a_norm": -0.557498990800704,
"ref_b_norm": -0.8301776166918718,
"test_a_norm": -0.3554451816796555,
"test_b_norm": -0.9527091142301878,
"Rcs_pct": -1.0373865062845402,
"Rhs": 0.23607645497373364,
"Rf_h": 62.02348368207611
},
{
"bin": 12,
"ref_a": -3.189453051639944,
"ref_b": -20.750651276004632,
"test_a": -0.6489759804066143,
"test_b": -22.408902870143407,
"ref_a_norm": -0.15191969250618095,
"ref_b_norm": -0.9883928404378632,
"test_a_norm": -0.03091195568361675,
"test_b_norm": -1.067378506067873,
"Rcs_pct": 5.3860539869608,
"Rhs": 0.13409194603289581,
"Rf_h": 78.42309035512805
},
{
"bin": 13,
"ref_a": 2.638220440956579,
"ref_b": -15.60519008554288,
"test_a": 3.383499200637146,
"test_b": -17.376257278442015,
"ref_a_norm": 0.16669503976552152,
"ref_b_norm": -0.9860085008343342,
"test_a_norm": 0.21378521864242583,
"test_b_norm": -1.0979127646193145,
"Rcs_pct": 11.894089289556126,
"Rhs": 0.024353915437233326,
"Rf_h": 84.3434781214181
},
{
"bin": 14,
"ref_a": 13.515834981857509,
"ref_b": -18.027872657474177,
"test_a": 13.28542872739122,
"test_b": -20.42017848168322,
"ref_a_norm": 0.5998559943603995,
"ref_b_norm": -0.8001079839808477,
"test_a_norm": 0.5896301686481699,
"test_b_norm": -0.9062826295666634,
"Rcs_pct": 8.25998270278371,
"Rhs": -0.06748993592930619,
"Rf_h": 80.82922438869534
},
{
"bin": 15,
"ref_a": 12.771436579107572,
"ref_b": -8.307921625282166,
"test_a": 11.792494568722583,
"test_b": -11.6687974859548,
"ref_a_norm": 0.8382489842541995,
"ref_b_norm": -0.545287667563464,
"test_a_norm": 0.7739964515993083,
"test_b_norm": -0.765877634789387,
"Rcs_pct": 6.9129191077473475,
"Rhs": -0.21911064906634686,
"Rf_h": 73.8095031432343
},
{
"bin": 16,
"ref_a": 21.696597881956226,
"ref_b": -3.5144507456073732,
"test_a": 20.122556166286675,
"test_b": -5.6553302479579095,
"ref_a_norm": 0.9871336175538821,
"ref_b_norm": -0.15989753311100904,
"test_a_norm": 0.9155191874287887,
"test_b_norm": -0.2573014735536613,
"Rcs_pct": -5.123581282456041,
"Rhs": -0.10950363327353226,
"Rf_h": 80.32426551000091
}
]
}
}