function [rx,tries]=sendmessage_v2(H,message)

data;

tries=0;
% Se a mensagem recebida indica um erro de recepção por parte do PIC,
% reenviar mensagem de pedido
rx=MESSAGE_ERROR;
while (rx(1)~=MESSAGE_SUCESS && rx(1)~=MESSAGE_INVREQ)
    
    tries=tries+1;
    % Envio da mensagem de pedido
    n=0; msg=message;
    while (length(msg)>0)
        n=cportwrite(H,msg);
        if (n<0)                        % Erro fatal no envio
            cportreset(H);
            msg=message;
        else
            msg=msg(n+1:end);
        end
    end
    % Recepção da mensagem de resposta
    err=0;
    % Enquanto ocorrer erro na recepção da mensagem, repetir recepção
    while (sum(err==0)~=0)
        % Recepção de um array de bytes
        [rx,err]=cportgetint(H,1,USART_RECV_LENGTH);
        % Caso tenha ocorrido um erro na recepção, transmitir um byte
        % sinalizador de erro
        if (sum(err==0)~=0)
%             n=0;
%             while (n<1)
%                 n=cportwrite(H,uint8(MESSAGE_ERROR));
%                 if (n<0), cportreset(H); end            % Apenas faz o reset se n==-1:
%             end
            cportreset(H);
            tries=tries+1;
        end
    end
    % Ajuste da mensagem recebida
    rx = uint8(intunsigned(rx,8))';
end
