X-Git-Url: https://git.ao2.it/visomat-utils.git/blobdiff_plain/ec6cf524733f65ff40ac2e086e96e0dfd38e1dda..HEAD:/README diff --git a/README b/README index 2e14271..7021cd1 100644 --- a/README +++ b/README @@ -1,6 +1,8 @@ Utility software to access the Visomat Double Comfort blood pressure meter: http://www.visomat.de/Oberarm-Blutdruckmes.372.0.html +The same protocol seems to be used also by the Prevention DS-2200PV. + The device can store measurements for two distinct users and has a USB port that can be used to download the history of measurements or trigger a new measurement (apparently only for user 1). @@ -19,36 +21,68 @@ This could be fixed adding a quirk to the cdc_acm driver in linux, but there is not much of a point for this as the data is downloaded using USB bulk communication anyways. -A data packet starts with the STX control character, and ends with ETX. +Each data packet starts with the STX control character, and ends with ETX. -The payload is something like this: +There are at least two kinds of packets: requests and responses. - M106100101120211511021201001011208115610711610010112030103065073440601132001130680661001011311012708406610010112030106068066M20710010112031155111116100101120201170700764406011312012807107244060113170126050065440601131901140630661001011400011407007113031211450121080072 +A request can be used to send command codes to the device. -The structure can be better visualized when split it in fields: +EEPROM data request: + R00 + +Date and time request: + + R02 + +A response can be read after a request has been sent. + +The payload of a response to a "R00" request is something like this: + + M106100101120211511021201001011208115610711610010112030103065073440601132001130680661001011311012708406610010112030106068066M20710010112031155111116100101120201170700764406011312012807107244060113170126050065440601131901140630661001011400011407007113031211450121080072 + +The structure can be better visualized when split in fields: + M # start of a Memory block 1 # memory block index, corresponding to a "User ID" 06 # number of records in this memory block # Each records stores date, time, systolic and diastolic pressure, pulses + # Maybe the third field is an indication of arrhythmia? + # Or a flag to mark test or out of scale measurements? - # yymmdd HHMM systolic diastolic pulses - 100101 1202 1151 102 120 - 100101 1208 1156 107 116 - 100101 1203 0103 065 073 - 440601 1320 0113 068 066 - 100101 1311 0127 084 066 - 100101 1203 0106 068 066 + # yymmdd HHMM ? systolic diastolic pulses + 100101 1202 1 151 102 120 + 100101 1208 1 156 107 116 + 100101 1203 0 103 065 073 + 440601 1320 0 113 068 066 + 100101 1311 0 127 084 066 + 100101 1203 0 106 068 066 # Same structure for the other memory block - M + M 2 07 - 100101 1203 1155 111 116 - 100101 1202 0117 070 076 - 440601 1312 0128 071 072 - 440601 1317 0126 050 065 - 440601 1319 0114 063 066 - 100101 1400 0114 070 071 - 130312 1145 0121 080 072 + 100101 1203 1 155 111 116 + 100101 1202 0 117 070 076 + 440601 1312 0 128 071 072 + 440601 1317 0 126 050 065 + 440601 1319 0 114 063 066 + 100101 1400 0 114 070 071 + 130312 1145 0 121 080 072 + +When the number of records is 0, there is a dummy byte at the end of the user +memory block, e.g.: + + M1001M20115110321300134097083 + +The structure is: + + M + 1 + 00 + 1 # dummy byte, present only when the previous field is 00 + M + 2 + 01 + 151103 2130 0 134 097 083