08.11.2017 Views

arduino_básico_Michael_McRoberts

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Capítulo 17 ■ Comunicação via Ethernet<br />

437<br />

Se esse for o caso, você chama a função addChar, que verificará se o comprimento da<br />

string está dentro dos limites de MAX_STRING_LEN. Caso positivo, ela adiciona o caractere<br />

à sua string tmpStr. Essa função será analisada futuramente.<br />

addChar(inChar, tmpStr);<br />

Como você encontrou uma tag, tagFlag é definida como true, e dataFlag como false:<br />

tagFlag = true;<br />

dataFlag = false;<br />

Se você alcançar o fim da tag (o caractere >):<br />

} else if (inChar == '>') {<br />

Então o caractere será adicionado à string tmpStr.<br />

addChar(inChar, tmpStr);<br />

Se você estiver atualmente processando uma tag e tiver alcançado seu fim, pode copiar<br />

a tag inteira de tmpStr (string temporária) para a string de tags (tgrStr). Para isso, você<br />

utiliza o comando strncpy:<br />

if (tagFlag) {<br />

strncpy(tagStr, tmpStr, strlen(tmpStr)+1);<br />

}<br />

O comando strncpy copia parte de uma string para outra e requer três parâmetros: a<br />

string para qual você está copiando os dados, a string da qual os dados estão vindo<br />

e a quantidade de caracteres que devem ser copiados. Por exemplo, se você tivesse:<br />

strncpy(firstString, secondString, 10);<br />

Os primeiros dez caracteres de secondString seriam copiados em firstString. Em seu caso,<br />

você copia o conteúdo por inteiro, encontrando o comprimento da string temporária<br />

(tmpStr) mais um, e copiando essa quantidade de caracteres para a string de tags.<br />

Assim que a string temporária tiver sido copiada, você deve limpá-la, deixando-a<br />

pronta para o próximo trecho de dados. Para isso, você chama a função clearStr e<br />

passa a ela a string que deseja limpar:<br />

clearStr(tmpStr);<br />

As duas flags são definidas como false, ficando prontas para receber as próximas<br />

informações:<br />

tagFlag = false;<br />

dataFlag = true;<br />

Se o caractere lido for uma alimentação de linha (ASCII 10):<br />

} else if (inChar != 10) {

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!