MaxMSPJitter‎ > ‎

CMS50H pulse oximeter

The Contec CMS50-H pulse oximeter is an affordable, self-contained device that provides pulse waveform, pulse rate, SPO2 and perfusion index. While it works very well as a standalone device (the entire product is an integrated finger probe and LCD display), there might be times when you want to grab live streaming data for your own data processing, logging, or visualisation.

After going through the maddening serial protocol document and some serial port sniffing, I have written a very rudimentary Max patch that utilises a Javascript object to parse the Serial data streaming from the pulse oximeter via the USB-serial cable. Not all features mentioned in the protocol document are supported – but I can go only as far as how accurate (and legible) Contec writes it.

Some important notes:
  1. Depending on how you wear it, the sensor can take a while to 'lock on' and provide data
  2. Perfusion Index is especially slow to respond, in comparison to the readings on the LCD
  3. parseOxi.js contains the brunt of the bitmasking code that's required to get useful data from the device – not the most efficient code at the moment, but it clearly illustrates how each byte is parsed
Please use it at your own risk – the data is only as good as the readings collected from the pulse oximeter. If you intend to use this for medical purposes, I am in no way responsible for any accident(s), injury or death caused.
Chuan Khoo,
17 Aug 2014, 04:13