Ariadne index page

 

Ariadne - Technical description

AT100

AriadneTimy

Description

AriadneTimy is a separate C# .Net program to collect Timy timestamps via the serial port, and to forward these to Ariadne.

For Ariadne, in the first instance the USB-interface with the Timy was used to collect the timestamps. After two years of practical use the Timy USB interface appeared to be unreliable. Refer to the Ariadne USB-interface for the Timy. Therefore we switched back to the serial interface with the Timy. For speed of development we choose a .Net solution, we could not find a ready to use and license-free OCX-component, to use in MS-Access.

In the first design of the AriadneTimy, the idea was to write a received timestamp from the Timy immediately to the T650-Timing-event table of Ariadne, and then inform Ariadne of the event by a trigger via COM. A problem appeared with this design, that the database showed delays in making the timestamp available to Ariadne. The moment Ariadne received the trigger via COM, and queried the database for the timestamp, the timestamp was not already there yet, but arrives with a half second or more delay. This appeared te be a known problem for MS Access, but also happend with databases in general. The problem made the first design solution unworkable.

In the second design AriadneTimy forwards the timestamp with the event trigger via the COM object. It is then Ariadne itself that writes the timestamp to the database. The timestamp is then available on the moment of the trigger itself. So far this appears a workable solution, however not ideal. If Access halts due to some error, the link to the COM object also halts, and incoming timestamps are not written to the database anymore. After a restart of the Ariadne A600 form, the link to the COM object is re-established again.

Global structure of the solution:

Access path

AriadneTimy.exe is an executable program. It can be started independend of Ariadne. It requires the Interop.EventDispatcher.dll to communicate with the AriadneEventDispatcher.

 

Function structure

  • At start AT100 connects via ODBC and DSN=Ariadne-Main to the T700-System table of the last started Ariadne-Main. (The last started Ariadne-Main has set set the DSN path for DSN=Ariadne-Main to itself).
  • From the T700-System table AT100 obtains the COM-port name via which to connect to the Timy. (Ariadne-Slalom uses a second COM-port to connect to the Startpost device, to communicate about the bib-number to start.)
  • AT100 opens via the COM-port a serial connection to the Timy.
  • AT100 collects the message bytes from the Timy
  • A CR (0x0D) marks the end of a timing message. (ref. Timy manual for the timing message struture)
  • If the first position of the timing message is non-space, the message contains a running time. That time is displayed in the AT100 form as Timy time.
  • If the first position of the timing message is space, the message contains a timestamp. The timestamp is forwarded to the EventDispatcher, and displayed on the AT100 form as the Last timing message.

Change history

date Ariadne version change
Dec2008 4.7.0 First release