Я использую разъем Bluetooth для отправки информации с моего телефона на Arduino. Проблема в том, что btSocket.getOutputStream().write(bytes);
отправляет информацию слишком быстро, и Arduino не может справиться с опустошением и переполнением. Код, запущенный на моем Arduino, замедляет способность Arduino получать информацию с телефона, и приемный буфер Arduino переполняется (входящие данные становятся ошибочными, поскольку буфер очищается гораздо медленнее, чем заполняется). Таким образом, решением было бы замедлить скорость, с которой телефон отправляет информацию.
Это функция, которую я использую для отправки информации с телефона на Arduino:
public void send_string_to_lim(String s) {
if (btSocket != null) {
try {
byte[] bytes = s.getBytes();
btSocket.getOutputStream().write(bytes);
} catch (IOException e) {
quick_toast("Error: " + e.toString());
}
}
}
И это как создается btSocket: (не уверен, нужен ли он для вопроса)
if (btSocket == null || !isBtConnected) {
myBluetooth = BluetoothAdapter.getDefaultAdapter(); //get the mobile bluetooth device
BluetoothDevice dispositivo = myBluetooth.getRemoteDevice(address); //connects to the device's address and checks if it's available
btSocket = dispositivo.createInsecureRfcommSocketToServiceRecord(myUUID); //create a RFCOMM (SPP) connection
BluetoothAdapter.getDefaultAdapter().cancelDiscovery();
btSocket.connect(); //start connection
}
Как я могу замедлить btSocket.getOutputStream().write(bytes);
, чтобы он отправлял информацию медленнее? Добавьте некоторый тип задержки, чтобы Arduino не переполнялся.