Moderadores: andre_luis, 51, guest2003, Renie
xultz escreveu:Eu li a bagaça meio por cima (o thread é bem longo), mas o que o fulano sugeriu é converter tuas informações de ASCII para valor numérico, você entendeu esta parte? Seria bacana colocar de novo como é o formato dos dados que pretende transmitir, fica mais fácil ajudar desta forma.
andre_teprom escreveu:Já procurou por funções prontas em C com o critério de busca "string data compression" ?
O código de Huffman parece ser o mais apropriado para pouca quantidade de dados.
xultz escreveu:Lucas, converter para hexa ou binário é a mesma coisa, é só uma forma de você escrever um determinado número.
A idéia é a seguinte: suponha que eu tenho o número 157. Quando representado em ASCII, ele ocupa três bytes, sendo um para o dígito '1', outro para o dígito '5', e outro para o dígito '7', correto? Caso você não seja muito familiarizado com a tabela ASCII, veja a mesma neste site: http://www.asciitable.com/ e verifique que o código para o dígito '1' é 49 em decimal, ou 0x31 em hexadecimal. Assim, na memória do teu microcontrolador e durante a transmissão destes dígitos no teu pacote TCP, ele seriam (em hexa) 0x31 0x35 0x37, ocupando 3 bytes, certo? Agora, eu posso pegar estes três dígitos e convertê-los para um único valor em decimal, cujo valor é 157, ou 0x9D em hexa, correto? Desta forma, eu ocupo um único byte para armazenar este valor.
Veja um outro exemplo com um número grandão, por exemplo, 57129. Em ASCII, este valor ocupa 5 bytes, um para cada dígito, porém este valor convertido para hexadecimal tem valor 0xDF29. Ou seja, ao invés de 5 bytes, são necessários somente 2 para representar o mesmo valor. Esta é a ideia de converter os valores de ASCII para hexa e economizar alguns bytes (você provavelmente vai economizar mais de 50%).
barboza escreveu:Além da conversão de valores enviados como string para hexadecimal, você pode também enviar o timestamp no padrão UTC.
25/10/2015-23:22:34
No seu exemplo acima, você esta enviando 19 bytes para definir sua data/hora.
Com o UTC, bastam 4 (ou 8 bytes).
https://pt.wikipedia.org/wiki/Tempo_Uni ... Coordenado
http://www.cplusplus.com/reference/ctime/time_t/
Você pode também implementar seu próprio padrão de envio do timestamp. Se não precisa da resolução de segundos, pode enviar os minutos passados desde o ano 2015 por exemplo, ao invés dos segundos após 1970 (UTC).
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante