Receivers and signals
Picking a receiver
The Receiver dropdown lists every receiver compiled into the tool. The label carries the concport line type= number or numbers the driver answers to — for example SML2 (type 52,63) — so the receiver can be matched to the Concentrator line it will be tested against.
The catalog holds 60 receiver types and 1,263 signals. Three of them — ADEM, AUDI and RTST — have no signal set of their own in the receiver source, so their rows are derived and are flagged as such in the table. A session can be opened for every receiver type in the list, including those the Concentrator has no decoder for yet: what goes on the wire comes from the receiver-type table, not from a decoder.
Changing the receiver kills the live session and resets the console. Signal sets differ per receiver, so the selection, the heartbeat signal and the campaign pool cannot carry over.
The signal table
Open signal list from the Signals card opens the full table for the selected receiver.
| Column | Meaning |
|---|---|
| Sel | Membership of the campaign pool — the set a campaign draws from |
| # | The signal's index in the receiver's set |
| Signal | The bytes as stored, with control bytes escaped |
| Comment | The driver's own description of the signal |
| Action | Send transmits that row over the live links |
All and None set the whole pool at once; the count beside them is the current selection size.
The form signals go out in
A signal is transmitted in the wire form the receiver line expects: the start and terminator characters that receiver type uses, worked out for each transmission from the receiver-type table. That is the form a real receiver puts on the line, and it is the form the Concentrator decodes, so this is the default and it is what makes the tool a wire-level match for the receiver it is standing in for.
Receiver types that run a session get their session envelope too, so a session opens and the signals inside it are accepted the same way they would be from the equipment.
Send bare catalog bytes on the Receiver card is the opt-in that turns this off: the stored row goes out byte for byte with nothing added, which is what to use for reading a catalog entry back unchanged. It is a per-session choice, saved with the rest of the configuration as rawCatalogBytes in vr-config.json, and the log records when it is on. On the command line it is --bare on send and campaign.
A vr-config.json written by the older Delphi tool carries neither setting, so it loads with the wire form.
Escaping control bytes
Control bytes are written as <NNN> — an angle-bracketed three-digit decimal byte value. <020> is the byte 0x14. Any bracketed group that is not three digits in the range 0 to 255 is sent through as literal text.
The same escape form works in the signal table, in the heartbeat signal field, and in Sim New Alarm.
Sim New Alarm
The Sim New Alarm field on the signal list takes an alarm in the same escaped form, for example:
Pressing Enter, or Add + send, does two things: the alarm is appended to this receiver's saved signal set, and it is transmitted immediately over the live links.
Added alarms are written to the user overlay at %AppData%\sbn-concentrator\sim-overlay.json. The overlay is additive, hand-editable, and reloaded on every start, so an alarm added once stays in the list for later runs. An overlay written by the old Delphi tool is not read by this one.