1 Utility software to access the Visomat Double Comfort blood pressure meter:
2 http://www.visomat.de/Oberarm-Blutdruckmes.372.0.html
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).
8 The device is seen by linux as a non-standard USB CDC device:
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
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.
22 Each data packet starts with the STX control character, and ends with ETX.
24 There are at least two kind of packets: requests and responses.
26 A request can be used to send command codes to the device.
32 Date and time request:
36 A response can be read after a request has been sent.
38 The payload of a response to a "R00" request is something like this:
40 M106100101120211511021201001011208115610711610010112030103065073440601132001130680661001011311012708406610010112030106068066M20710010112031155111116100101120201170700764406011312012807107244060113170126050065440601131901140630661001011400011407007113031211450121080072
42 The structure can be better visualized when split in fields:
44 M # start of a Memory block
45 1 # memory block index, corresponding to a "User ID"
46 06 # number of records in this memory block
48 # Each records stores date, time, systolic and diastolic pressure, pulses
49 # Maybe the third field is an indication of arrhythmia?
50 # Or a flag to mark test or out of scale measurements?
52 # yymmdd HHMM ? systolic diastolic pulses
53 100101 1202 1 151 102 120
54 100101 1208 1 156 107 116
55 100101 1203 0 103 065 073
56 440601 1320 0 113 068 066
57 100101 1311 0 127 084 066
58 100101 1203 0 106 068 066
60 # Same structure for the other memory block
64 100101 1203 1 155 111 116
65 100101 1202 0 117 070 076
66 440601 1312 0 128 071 072
67 440601 1317 0 126 050 065
68 440601 1319 0 114 063 066
69 100101 1400 0 114 070 071
70 130312 1145 0 121 080 072