public SerialPortCommunicator(Context context)
      throws D2xxManager.D2xxException, FTDWrapperBadReadStatusException,
          FTDWrapperProcessNullException, FTDWrapperBadQueueStatusException,
          FTDWrapperNotOpenException {

    // Logger.log("Opening serial port");
    D2xxManager ftD2xx;

    ftD2xx = D2xxManager.getInstance(context);
    if (ftD2xx.createDeviceInfoList(context) > 0) {
      ft_device = new FTDeviceWrapper(ftD2xx.openByIndex(context, 0));
      /*if (ft_device.getFt_device().isOpen())
          Logger.log("Serial port opened!");
      else
          Logger.log("Serial port not opened!");*/
    } else
      throw new D2xxManager.D2xxException(
          "Cannot open the device. Make sure the hardware is connected and turned on.");

    /*
    Set the following settings
    	baudRate = 9600;
    	stopBit = 1;
    	dataBit = 8;
    	parity = 0;
    	flowControl = 0;
    */

    ft_device.setBitMode((byte) 0, D2xxManager.FT_BITMODE_RESET);
    ft_device.setBaudRate(BAUDRATE);
    ft_device.setDataCharacteristics(
        D2xxManager.FT_DATA_BITS_8, D2xxManager.FT_STOP_BITS_1, D2xxManager.FT_PARITY_NONE);
    ft_device.setFlowControl(D2xxManager.FT_FLOW_NONE, XON, XOFF);

    /* ft_device is set and ready */
    // Logger.log("ft_device is set and ready");

    getRidOfResidueData();
  }