Initial import
[visomat-utils.git] / README
1 Utility software to access the Visomat Double Comfort blood pressure meter:
2 http://www.visomat.de/Oberarm-Blutdruckmes.372.0.html
3
4 The device can store measurements for two distinct users and has a USB port
5 that can be used to download the history of measurements or trigger a new
6 measurement (apparently only for user 1).
7
8 The device is seen by linux as a non-standard USB CDC device:
9
10   [10217.072073] usb 2-5: new full-speed USB device number 5 using ohci_hcd
11   [10217.292067] usb 2-5: New USB device found, idVendor=1247, idProduct=00f8
12   [10217.292079] usb 2-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
13   [10217.292087] usb 2-5: Product: USB COMMUNICATION BRIDGE
14   [10217.292093] usb 2-5: Manufacturer: JAPAN PRECISION INSTRUMENTS
15   [10217.301191] cdc_acm 2-5:1.0: Zero length descriptor references
16   [10217.301212] cdc_acm: probe of 2-5:1.0 failed with error -22
17
18 This could be fixed adding a quirk to the cdc_acm driver in linux, but there
19 is not much of a point for this as the data is downloaded using USB bulk
20 communication anyways.
21
22 A data packet starts with the STX control character, and ends with ETX.
23
24 The payload is something like this:
25
26   M106100101120211511021201001011208115610711610010112030103065073440601132001130680661001011311012708406610010112030106068066M20710010112031155111116100101120201170700764406011312012807107244060113170126050065440601131901140630661001011400011407007113031211450121080072
27
28 The structure can be better visualized when split it in fields:
29   
30   M  # start of a Memory block
31   1  # memory block index, corresponding to a "User ID"
32   06 # number of records in this memory block
33
34   # Each records stores date, time, systolic and diastolic pressure, pulses
35
36   # yymmdd HHMM systolic diastolic pulses
37     100101 1202     1151       102    120
38     100101 1208     1156       107    116
39     100101 1203     0103       065    073
40     440601 1320     0113       068    066
41     100101 1311     0127       084    066
42     100101 1203     0106       068    066
43
44   # Same structure for the other memory block
45   M 
46   2
47   07
48   100101 1203 1155 111 116
49   100101 1202 0117 070 076
50   440601 1312 0128 071 072
51   440601 1317 0126 050 065
52   440601 1319 0114 063 066
53   100101 1400 0114 070 071
54   130312 1145 0121 080 072