Reads a CAN message from the receive queue of a FD capable PCAN Channel

        Remarks:
          The return value of this method is a 3-touple, where
          the first value is the result (TPCANStatus) of the method.
          The order of the values are:
          [0]: A TPCANStatus error code
          [1]: A TPCANMsgFD structure with the CAN message read
          [2]: A TPCANTimestampFD that is the time when a message was read

        Parameters:
          Channel  : The handle of a FD capable PCAN Channel

        Returns:
          A touple with three values

def ReadFD(
        self,
        Channel):

        """
          Reads a CAN message from the receive queue of a FD capable PCAN Channel

        Remarks:
          The return value of this method is a 3-touple, where
          the first value is the result (TPCANStatus) of the method.
          The order of the values are:
          [0]: A TPCANStatus error code
          [1]: A TPCANMsgFD structure with the CAN message read
          [2]: A TPCANTimestampFD that is the time when a message was read

        Parameters:
          Channel  : The handle of a FD capable PCAN Channel

        Returns:
          A touple with three values
        """
        try:
            if platform.system() == 'Darwin':
                msg = TPCANMsgFDMac()
            else:
                msg = TPCANMsgFD()
            timestamp = TPCANTimestampFD()
            res = self.__m_dllBasic.CAN_ReadFD(Channel,byref(msg),byref(timestamp))
            return TPCANStatus(res),msg,timestamp
        except:
            logger.error("Exception on PCANBasic.ReadFD")
            raise