Quando tento enviar um comando String do Android para o Arduino logo após o Bluetooth
conexão é estabelecida, o Arduino não envia resposta String [acho que talvez
Arduino não recebeu nada].
Mas se eu colocar um método Thread.sleep (1000) antes do método write, ele funciona ...
Qual é o problema?
Estou tentando enviar uma mensagem antes que a configuração da conexão Bluetooth ainda não esteja
pronto?
Respostas:
1 para resposta № 1Pense nisso da seguinte maneira: o pingue-pongue está acontecendo rápido demais e a bola está se perdendo.
Se você estiver escrevendo antes de ler e lendo antes de escrever, ocorrerá um erro e a sequência será perdida.
Então, sim, uma maneira de resolvê-lo é colocar algum tempo no meio, como Thread.sleep
DETALHADO:
Então, isso está acontecendo porque o seu arduino
está parado sending
porque não reconheceu que o seu android
realmente recebido. Durante esse thread.sleep (1000)
, seu arduino
reconheceu que android
recebido e alterações em receive
modo. É por isso que a string pode ser lida no seu arduino
depois de um segundo.
Se desejar, você pode repetir o envio para que o arduino receba o mais rápido possível. No entanto, certas circunstâncias podem ocorrer a partir do loop, como o recebimento de strings redundantes.
1 para resposta № 2
Mas se eu colocar um método Thread.sleep (1000) antes do método write
Tente fazer várias gravações após o Thread.sleep, para verificar se o problema ocorre apenas no momento certo em que a conexão é estabelecida ou a cada gravação!
De qualquer forma, pela minha experiência, eu gostaria de avisá-lo sobre algumas coisas:
- Baudrate muito alto, tente abaixá-lo.
- Esteja ciente de alguns módulos Bluetooth baratos do Arduino, que não implementam nenhum tipo de buffer de E / S.
- A parte que lê os dados do seu aplicativo noO Arduino está fazendo algum tipo de coisa que leva tempo (como operações de E / S), ou simplesmente está fazendo muita coisa, então alguns dados da série se perdem (uma vez que aconteceu comigo).
- Esteja ciente de que se você estiver usando Bluetooth Low Energy, estará limitado a 20 bytes! Se você enviar mais dados, eles serão perdidos.
Seria útil um pedaço do seu código!