This is a description of the protocol which is used by the following devices:
This is a work in progress. There are some parts which aren't clear to me yet.
These devices use a TRS (mini-jack) RS232 to either USB or Serial cable.
I use the Texas Instruments 3410 USB serial adapter from Abbott for testing.
The protocol description is done in ABNF, this standard can be found here.
You might notice there are some quirks in the protocol. So it likely isn't a mistake if two spaces are used for no reason or if a newline is used for no reason.
generic-message = command / result
The host starts with setting up the connection. After that it should send the following command:
command = "mem"
The device then sends the following data.
result = devicetype softwarerevision currentdatetime log log = ("Log Empty" end1 | (nrresults resultlines) end2) resultlines = firstresult *otherresultsDevice type There are ofcourse more devices then this. However, i don't know which. Please send me more device types!
devicetype = CR LF ( "DAMH359-63524" \ ; FreeStyle Mini "CDMK311-B0764" \ ; FreeStyle Freedom Lite "DBMN169-C4824" ) ; FreeStyle LiteSoftware revision The software revision doesn't seem to be very consistent. The first number has 5 spaces between the number and "-P" while the second one does not. As you see both of the devices i own have a integer part a radix point and a fractional part and it ends with "-P". I have no idea what this means other that it is a software revision. There are ofcourse more software revisions then this. However, i don't know which. Please send me more software revisions!
softwarerevision = CR LF ( "4.0100 -P" \ ; On my FreeStyle Mini "0.31-P" \ ; On my FreeStyle Freedom Lite (The missing spaces isn't a mistake) "1.43 -P" ) ; On my FreeStyle LiteCurrent time and date
currentdatetime = CR LF datetime datetime = month SP day SP year SP time month = "Jan " / "Feb " / "Mar " / "Apr " / "May " / "June" / "July" / "Aug " / "Sep " / "Oct " / "Nov " / "Dec " ; N.B. Except June and July all months have spaces at the end. day = 2DIGIT year = 4DIGIT time = hour ':' minute ':' second hour = 2DIGIT minute = 2DIGIT second = 2DIGITNumber of results
There is probably is a maximum to this. At the moment I am guessing it is 450 which is the maximum the Abbott Precision Xceed can store. The minimum is 1
nrresults = CR LF 3DIGIT; e.g. 001 or 250
e.g.: CR LF "250"Result line The first result has: CR LF LF for some reason. The others result lines don't.
firstresult = CR LF LF resultline otherresults = CR LF resultline resultline = sugarlevel datetime2 plasmatype "0x00" sugarlevel = 3DIGIT ; e.g. 300 (I don't know what the maximum or minimum is) datetime2 = month SP day sp year sp time2 time2 = hour ':' minute plasmatype = 2DIGITEnd
end1 = "END" end2 = "0x" 4DIGIT end1 ; The 4DIGIT part is a checksum. It is the accumulation of all the ASCII characters (excluding the 0x000 END part).