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 Change/configure settings (see X.RUN subcommands)
Thanks to Matthew Massey over at yahoo dot com for X.RUN subcommand details.
Thanks to Tom over at opgenorth dot net for identifying on this command.



X.RUN Subcommands:
These are sent after a X.RUN and the commands can be combined (i.e. X.RUNX.KLR)
X.RUN gives a "}" prompt, and awaits a RUN command, system returns to "0:rdy" after a RUN command.

Command Description

X.ALO Verify connection

X.BUT Reset (as if the power switch had been turned off then on)

X.CL{} Clear system setting - {} = 0 - F (See settings configuration)

X.DEL Delete all strings. Note the working memory is still available until the next command is sent then it is deleted.

X.H{}{} Move through HEX pages - {} = 0 - F

X.KLR Return settings to factory default - clear all settings.

X.Q{}{} Generate test shots for current string - {} = 0 - F (See generating test shots)

X.RS{} Set the String Size (Record Size) (See Setting Record Size)

X.SDL Delete current string only.

X.SE{} Set system setting - {} = 0 - F (See settings configuration)

X.TN{} Generate test shots after X.END (See generating test shots)

X.TX{} Generate (record size) tests shots (See generating test shots)

X.UPD Clear system settings 1,2,3,11,12,13,14 (See settings configuration)

X.WE0 Retrieve information about current string (String # and Number of shots in string)

X.ZAP Clear working memory (RAM).




Settings Configuration
These commands are used to set the "Switchable Program Functions"

After a X.QRY the systems displays;

Shooting Chrony, V6.03i,25/DEC/1999,0Fe-003C-1
Len=12.000-in Fre=12.000-MHz OSt=98304
System: 00000000+00000000
FreeMem, 0004nf
Strings, 0002nf
Current, 0003nf
RecSize, 0010nf

The "System:00000000+00000000" shows what "Switchable Program functions" are set at.
Refer to the Manual for definitions on these settings.
All "0" Zeros is factory defaults. A setting is either "0" - default or "1" - alternate settings.

There are 8 bits separated by a "+" then another 8 bits for a total of 16. Each bit is a particular setting.
Each Bit is referenced by its binary number (0 - F - 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F is 16)

Bit Description
0 Feet/Meters - 0=Feet 1=Meters
1 Photocell ON/OFF - 0=ON 1=OFF
2 Photocell Automatic/Manual - 0=Auto 1=Manual
3 Alarms Enable/Disable - 0=Enable 1=Disable
4 Linear/Circular mode - 0=Linear 1=Circular
5 Stats in Velocity/Time - 0=Velocity 1=Time
6 Store Velocity only or Velocity & Time - 0=Vel only 1=Vel&Time;
7 Slow/Fast fire mode - 0=Slow Fire 1=Fast Fire
8 Manual/Auto Save - 0=Manual save 1=Auto save
9 Master/Slave PC link - 0=Master 1=Slave
A When set to 1, will generate test shots after a X.END (X.TN0)
B (not sure yet)
C Flashes the (EP) save settings code after X.END
D Flashes the (LB) low battery code after X.END
E Flashes the (SO) lost data code after X.END
F Flashes the (LN) string full code after X.END

These can be set or cleared with X.SE* or X.CL*
               
X.SE* Set the bit to "1"
X.CL* Set the bit to "0"
S.UPD Set Bits 1,2,3,11,12,13,14 to "0"
X.KLR Set all bits to "0"

Generating Test Shots
The run commands X.Q**, X.TN*, and X.TX* are used to generate test shots.
Speeds are 50/100/200/500/1000/2000/3000/4000/5000/6000
0=50, 1=100, 2=200, 3=500... and so forth.
               
X.Q** This will generate immediate test shots. The first Character after the "Q" is the Speed of the test shots, the second character is the number of test shots. (i.e. X.Q35 will generate 5 test shots at a speed of 500 fs)
X.TN* This will generate test shots after a X.END. The "*" is the speed. (i.e. X.TN7 will generate test shots at a speed of 3000 until the string record size is full)
X.TX* This will generate immediate test shots until the string record size is full. The "*" is the speed of the test shots.

Setting Record Size (String Size)
The "RecSize, 0010nf" shows the current Record Size (String size). This can be changed with the RUN command X.RS*.  The; memory size will change with the record size.  Record; Sizes (String Sizes) are 4 - 32 at 2 shot increments.
                 
X.RS* Record Size. "*" is 0 - F

0=4 1=6 2=8 3=10 4=12 5=14 6=16 7=18 8=20 9=22 A=24 B=26 C=28 D=30 E=32 F=10



home  |   contact  |   copyright
Copyright © 2003-2023, Jesse Marroquin. All rights reserved.
Last modified: August 2, 2023