nopLabs

Shooting Chrony PC Protocol

The serial port settings are 4800bps, 8 data bits, no parity and 1 stop bit.

Each line of a response includes a carriage return (0x0d) and line feed (0x0a), the initiating command does not. A serial terminal emulator application, Hyperterm on Windows or Minicom on OS X and Linux, can be used to manually interact with the Chrony.

Chrony PC interface commands:

SYSX Enter PC control mode
X.END Terminate PC control mode
X.ALO Ping Chrony
X.GEE Get shot data
X.QRY Get system information
X.CPY Copy string data
X.INC Increment string number
X.DEC Decrement string number
X.GRM Get string data
X.HXB Hex dump EEPROM page with page decrement
X.HXF Hex dump EEPROM page with page increment
X.HXD Hex dump EEPROM page
X.RUN Modify system parameter


Getting in and out of PC control mode:

Command Description

SYSX Chrony enters PC control mode. Chrony may not enter PC control mode if screen is not the start screen or -[]- screen when this command is issued. On receipt of the SYSX command the Chrony responds with the ready prompt 0:rdy> and also displays =PC= on the LCD. The ready prompt is also sent after valid commands are executed. Invalid commands do not get any response although the Chrony will display Crr1 on the LCD. It seems the X at the end of the command can be any character.

X.END Terminates PC control mode. Responds with the message {}ok!

X.ALO Can be used to test if the Chrony is connected and in PC control mode. Think of it as a ping command or "Allo" are you there. Responds with the message {}ok!
Thanks to Tom over at opgenorth dot net for information on this command.



Getting memory contents and system information:

Command Description

X.GEE Dumps the working memory and stored string data.
The blocks of data represent the number of shots in the string, the shot within the string, the string the shot belongs in and in this case the velocity in feet per second. String zero is the string in working memory.
{
, 0010nf
-01-, 0000nf, 49.61Vf
-02-, 0000nf, 49.78Vf
-03-, 0000nf, 49.94Vf
-04-, 0000nf, 50.11Vf
-05-, 0000nf, 50.27Vf
-06-, 0000nf, 50.44Vf
-07-, 0000nf, 50.61Vf
-08-, 0000nf, 50.78Vf
-09-, 0000nf, 50.95Vf
-10-, 0000nf, 51.12Vf

, 0010nf
-01-, 0001nf, 5933.81Vf
-02-, 0001nf, 5957.17Vf
-03-, 0001nf, 5980.72Vf
-04-, 0001nf, 6004.45Vf
-05-, 0001nf, 6028.37Vf
-06-, 0001nf, 6052.49Vf
-07-, 0001nf, 6076.79Vf
-08-, 0001nf, 6101.30Vf
-09-, 0001nf, 6126.00Vf
-10-, 0001nf, 6150.90Vf

, 0010nf
-01-, 0002nf, 49.61Vf
-02-, 0002nf, 49.78Vf
-03-, 0002nf, 49.94Vf
-04-, 0002nf, 50.11Vf
-05-, 0002nf, 50.27Vf
-06-, 0002nf, 50.44Vf
-07-, 0002nf, 50.61Vf
-08-, 0002nf, 50.78Vf
-09-, 0002nf, 50.95Vf
-10-, 0002nf, 51.12Vf
}ok!

X.QRY Get system information
{
Shooting Chrony, V6.03i,25/DEC/1999,0Fe-003C-1
Len=12.000-in Fre=12.000-MHz OSt=98304
System: 01000000+00000000
FreeMem, 0004nf
Strings, 0002nf
Current, 0002nf
RecSize, 0010nf
}ok!



Working with strings:

Command Description

X.CPY Copy current string from EEPROM to working memory
{-10-, 0002nf}ok!

X.INC Increments the string number that will be returned by X.GRM
{-10-, 0004nf}ok!

X.DEC Decrement the string number that will be returned by X.GRM
{-10-, 0001nf}ok!

X.GRM Returns the current string
{
, 0010nf
-01-, 0000nf, 5933.81Vf
-02-, 0000nf, 5957.17Vf
-03-, 0000nf, 5980.72Vf
-04-, 0000nf, 6004.45Vf
-05-, 0000nf, 6028.37Vf
-06-, 0000nf, 6052.49Vf
-07-, 0000nf, 6076.79Vf
-08-, 0000nf, 6101.30Vf
-09-, 0000nf, 6126.00Vf
-10-, 0000nf, 6150.90Vf
}ok!



Accessing EEPROM contents:

Command Description

X.HXB Decrement page and hex dump
{
0100: }ok!

Note that this page exceeds the address range of the EEPROM in a Beta Chrony and returns an empty set.

X.HXF Increment page and hex dump
{
FF00: }ok!

Note that this page exceeds the address range of the EEPROM in a Beta Chrony and returns an empty set.

X.HXD Hex dump without increment or decrement
The first 8 bytes of page zero are reserved for system use. Following the system bytes are 16-bit little-endian shot values. The values are likely expressed in units or ticks used to measure the time it takes a projectile to travel between the screens. These are the values listed along with the FPS values when generating test shots. The Chrony uses some type of encoding for values greater than 32K.
{
0000: 00 00 13 FF FF FF FF F1 F8 07 F0 07 E8 07 E0 07
0010: D8 07 D0 07 C8 07 C0 07 B8 07 B0 07 90 DB 5E DB
0020: 2C DB FA DA C8 DA 96 DA 64 DA 32 DA 00 DA CE D9
0030: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0040: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0050: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0060: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0070: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0080: }ok!

Note that this is all the EEPROM memory of a Beta Chrony, 128 bytes. The EEPROM of a Gamma Chrony is 2048 bytes.



Modifying system settings:

Command Description

X.RUN No detailed information on available settings just yet.
Thanks to Tom over at opgenorth dot net for information on this command.




home  |  contact  |  copyright
Copyright © 2008, Jesse Marroquin. All rights reserved.
Last modified: July 15, 2008