function [handler,state]=initcom(gate,rate)

% Verificação dos argumentos de saída
if (nargout==0)
    error('myfunction:initComm:outargs','É necessário definir pelo menos uma variavel de saída!');
end

% Argumentos default:
if (nargin<2)
    rate=115200;     % BaudRate=19200
end
if (nargin==0)
    gate=1;         % gate=COM1
end

% Abertura da porta de comunicação
handler=cportopen(['com' num2str(gate)]);
if (handler==0)
    error('cport:cportopen:GateNotOpened',['Failed to open gate COM',num2str(gate)]);
end

% Configuração do ritmo de transmissão
state=cportconfig(handler,'BaudRate',rate);

% Reset das comunicações
[stat,ErrStr]=cportreset(handler);

% Verificação da ocorrencia de erros no RESET
if (stat==0)
    error('cport:cportreset:ResetFailed','Cannot reset communications!');
    
    % Encerramento da porta
    stat=cportclose(handler);
    % Verificação da ocorrência de erros no encerramento
    if (stat==0)
        error('cport:cportclose:CloseFailed','Cannot close communications gate!');
    end
end

% Apresentação de erros ocorridos antes do RESET
if (length(ErrStr)>0)
    fprintf('Previous errors:\n%s\n',ErrStr);
end
