Criar protocolo de comunicação
EsdrasXavier opened this issue · comments
Definir um protocolo de comunicação utilizando bytes, onde cada byte irá significar uma informação para o robô. Por exemplo: 012, onde:
- 0 -> Comando
- 1 -> Byte menos significativo
- 2 -> Byte mais significativo
Para transformar um int para array de bytes utilize:
int data = 10;
byte arr[2];
arr[0] = data & 0XFF;
arr[1] = (data >> 8) & 0xFF;
Para transformar de bytes para int
int = arr[0] + (arr[1] << 8);
É que isso daí transforma um int em um array de bytes, daí pode ser passado via bluetooth. Aí ao invés de utilizarmos texto utilizamos isso daí o que em teoria seria mais rápido. Porém o arduíno tem que interpretar tbm kkkkk
Assim em teoria isso seria mais rápido pq não vai usar substring nem o objeto da String, mas temos que testar
Concordo com @EsdrasXavier. Não sei que tipo de dados vai ter que ser encoded/decoded no aplicativo e arduino. Porem se esses 3 bytes são o suficiente para transportar a informação não tem com isso ser ineficiente. Afinal são 3 bytes. Como comparativo um int
tem tamanho de 4bytes. Curti a ideia de lidar diretamente com bits.
Podemos tirar proveito também de buit-in resources do Android. Como por exemplo o Android Things API
Tem alguns posts na internet e repos no github sobre comunicação Arduino/Android. Podemos tirar algumas ideias para não ter que resolver problemas já resolvidos.
https://proandroiddev.com/android-of-things-%EF%B8%8F-arduino-81845f37922e
https://github.com/Nurgak/Android-Bluetooth-Remote-Control
https://github.com/androidthings/robocar
Uma boa, temos que tentar convencer os professores disso :D
O código para interpretar o protocolo está nesse repositório. O protocolo deve ser melhor definido, porém neste repositórios estará tudo explicado