Exporters
When started an exporter will automatically send the corresponding data when a valid trigger is received, multiple exporters can be setup and run simultaneously. Exporters are sent for individual participants and so the trigger, filter and data always refer to the individual participant record.
|
Name |
A name for the exporter |
| Timing Point/Split |
The trigger for the exporter. Timing Point - when a raw data record is received for the selected timing point Split - whenever that split is calculated (including subsequent re-calculations for any reason) All - whenever any raw data record is received or any split calculated |
| Filter | A filter to be applied, this can also use the Raw Data Fields |
| Destination | The export type and additional settings according to the type |
| Export Data | Which data should be sent, either a default format or any custom expression |
| Line End | The line ending to be appended to each record sent |
The additional Extended Settings control the flow of data.

If you wish to write a custom output data format using the raw data then you can use the Raw Data Fields, additionally any standard fields / functions can be used in the custom export data.
If using FILE export then the file name should be the full destination address and file type for example: C:\Users\Timer\Documents\Export.csv
Tracking
Tracking forwarding is supported for a number of specific third-party platforms, these work similarly to exporters but forward the data in a pre-specified format according to the platform.

Some platforms additionally require a customer ID to process data.
Extended Settings
The extended settings additionally control the behaviour of the exporter.
Encoding - Either UTF-8 or ASCII.
Min. Seconds Between - Define a minimum time in seconds between each record being sent.
Max Queue Length - The maximum queue size allowed in the buffer, the buffer is first in, first out - so the earliest passings will be dropped if the queue reaches the maximum length.
Processing Delay - Define a delay for x seconds after a read before passings to be exported. This can be set to avoid sending multiple alerts when participants are read multiple times at a timing point.
Ignore Before / Ignore After - Define a minimum and maximum time for passings to be exported.
Connect Message - Define a custom message string which should be sent when starting the exporter (e.g. an authentication token).
Start in Paused Mode - If enabled then the exporter will be paused when started.
Default raw data exporters
This article lists all the default available exporters. Below shows the data format of each exporter as well as an example of its output.
Raw Data Record JSON
The Raw Data Record JSON mimics a Passing Record. It is a JSON struct with all relevant data, where the first part refers to information from RACE RESULT 14, and the last object refers to the actual passing raw data.
Example output
"ID":1,
"Bib":50001,
"TimingPoint":"STARTFINISH",
"Result":-10,
"Time":32795.944,
"Invalid":false,
"Passing":{
"Transponder":"ZICAD30",
"Position":{
"Latitude":0,
"Longitude":0,
"Altitude":0,
"Flag":""
},
"Hits":75,
"RSSI":-75,
"Battery":3,
"Temperature":17,
"WUC":6233,
"LoopID":8,
"Channel":8,
"InternalData":"",
"StatusFlags":128,
"DeviceID":"D-50432",
"DeviceName":"Support Decoder",
"OrderID":0,
"Port":0,
"IsMarker":false,
"FileNo":177,
"PassingNo":1,
"Customer":12345,
"Received":"2024-01-12T09:07:43.15+01:00",
"UTCTime":"2024-01-12T09:06:35.944Z"
}
}
Raw Data Record V2
The Raw Data Record V2 mimics a Passing Record from a RACE RESULT System. It does not include values for [<LoopOnly>] and [<InternalData>], however the structure is correct.
<InternalData>;<IsActive>;[<Channel>];[<LoopID>];[<LoopOnly>];[<WakeupCounter>];
[<Battery>];[<Temperature>];[<InternalActiveData>];<BoxName>;<FileNumber>;[<MaxRSSIAntenna>];<BoxId><CrLf>
Example output
Raw Data Record V1
The Raw Data Record V1 is a legacy version of a Passing Record. It does not write a data and it does not include [<LoopOnly>] (see |Decoder Communication Protocol) and hence moves all columns thereafter to the left by one column when compared to a full passing record. This format has been maintained to ensure backwards compatibility for existing implementations (2023 and earlier).
<InternalData>;<IsActive>;[<Channel>];[<LoopID>];[<WakeupCounter>];
[<Battery>];[<Temperature>];[<InternalActiveData>];<BoxName>;<FileNumber>;[<MaxRSSIAntenna>];<BoxId><CrLf>
Example output
Raw Data Record with Position
The Raw Data Record V1 with Position mimics the legacy version of a Passing Record but also adds in GPS position.
<InternalData>;<IsActive>;[<Channel>];[<LoopID>];[<WakeupCounter>];
[<Battery>];[<Temperature>];[<InternalActiveData>];<BoxName>;<FileNumber>;[<MaxRSSIAntenna>];<BoxId>;[RD_Latitude];[RD_Longitude]<CrLf>
Example output
Custom
See Custom Destination Data Fields for more information on setting up a custom exporter.
Raw Data Time
This exporter only exports the raw time of the passings in seconds.
Example output
RunScore RSBCI
- RSBCI - Text string "RSBCI"
- [RD_Transponder] or [RD_IDBib] - Exports transponder if one is entered, otherwise exports bib
- [RD_Time] - Exports raw time of the passing formatted to "hh:mm:ss.kkk"
- [RD_TimingPoint] - Exports the TimingPoint name from RACE RESULT 14
Example output
True Decoder Raw Data Record
True Raw Data Record
For a true raw data record according to the |Decoder Communication Protocol please define a custom exporter with the following command:
#[RD_ID];[if([RD_Transponder]<>"";[RD_Transponder];[RD_IDBib])];[([Event.Date]+int([RD_Time]/86400))];[format(([RD_Time]%86400);"hh:mm:ss.kkk")];[if([RD_OrderID]<>0;[RD_OrderID])];[RD_Hits];[RD_RSSI];;[if([RD_ChannelID]>0;1;0)];[RD_ChannelID];[RD_LoopID];[if([RD_StatusFlags]IN"64-127,192-255";1;0)];[RD_WakeupCounter];[([RD_Battery]/10)];[([RD_Temperature]-100)];[RD_StatusFlags];[if([RD_DecoderName]="";[RD_DecoderID];[RD_DecoderName])];;[if([RD_Port]>0;[RD_Port])];[RD_DecoderID]
This expression will deliver passings in the following format:
<InternalData>;<IsActive>;[<Channel>];[<LoopID>];[<LoopOnl<>];[<WakeupCounter>];
[<Battery>];[<Temperature>];[<InternalActiveData>];<BoxName>;<FileNumber>;[<MaxRSSIAntenna>];<BoxId><CrLf>
Tracking Location Forwarding
Exporters can also be used to send Raw Timing Data to Tracking Partners for use in tracking visualisation.
- For passive timing data or active passings from a system which has a GPS location and is synced to GPS time then the reported GPS location of the system will be forwarded.
- For USB Timing boxes, Loop Boxes in Store or Repeat Mode or systems without a GPS location then the Timing Point Position (according to the Timing Point Settings is forwarded.
If there is no GPS location on the system and no Timing Point Position set then the data will be sent with no location, which some Tracking Visualisation setups will subsequently ignore.
Database Insert
Raw Data Exporters currently supports below mentioned SQL Database Types and ODBC Drivers for Access databases and similar, if you require additional database types then let us know and we can look into the implementation. If using a database which requires ODBC drivers then first ensure these are installed on your computer and that ODBC can create a connection to your database.
When setting up your exporter you will need to enter the server settings for your database, these accept different strings depending on the database type.
MySQL: USERNAME:PASS@tcp(HOSTNAME:PORT)/DATABASE
MS-SQL: server=HOSTNAME; user id=USERNAME; password=PASS; database=DATABASE; port=PORT;
PostgreSQL: postgresql://USERNAME:PASS@HOSTNAME:PORT/DATABASE?sslmode=disable
ODBC Drivers (e.g. Microsoft Access): Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\Database.accdb
For ODBC driver connections you will need to reference the correct connection string for your installed drivers.
Some database types may require additional security settings for username and password, a good resource for this is available at: https://www.connectionstrings.com/
You need to format the Export Data using the Custom entry to formulate an Insert Statement as an Expression.
For example for MS-SQL:
"INSERT INTO RawData (Chip, Time, TimingPoint) VALUES ('" & if([RD_Transponder]<>"";[RD_Transponder];[RD_IDBib]) & "', '" & format([RD_Time];"hh:mm:ss.kkk") &"', '" & [RD_TimingPoint] &"')"
This will insert to a table called "RawData", to the fields Chip, Time and TimingPoint the fields Transponder Code or Chip Code, raw data time formatted as hh:mm:ss.kkk and the timing point respectively. For Microsoft Access databases the field names should be enclosed in square brackets.
Exporting Date & Time
Some platforms may require you to send the passing date and time, however currently RACE RESULT 14 does not store the passing date when the passing is saved to the database. To send dates and times correctly you will need to set the Timing Module to handle the times correctly according to Multi-Day Race settings.
To export date and time you can use the following formulas in your expression.
Date: ([EventDate]+int([RD_Time]/86400))
This requires the EventDate to be set in your files basic settings, it calculates how many days after the start date the passing was from and sends the corresponding date.
Time: format(([RD_Time]%86400);"hh:mm:ss.kkk")
This is the remainder of time after the time has been divided by 86400, the number of seconds in 24 hours, and so will always send the Time of Day. As the modal does not return milliseconds we must then append the milliseconds with a separate format.
It is on our wishlist to save and use the passing date in the event file, however this solution should work for most cases so long as you setup the file correctly.