Как очистить буфер bluetooth.BluetoothSocket(bluetooth.RFCOMM)?

Я читаю данные с устройства Bluetooth, которое, как я знаю, может показывать показания только на частоте около 512 Гц. Иногда, однако, скорость, с которой я recv() количество байтов от моего BluetoothSocket превышает 2000 или 3000 Гц. Поскольку я знаю, что устройство не может отправлять данные с такой частотой, у меня остается предположение, что BluetoothSocket хранит данные из прошлого, которые я еще не вызывал recv() и когда я наконец recv()Гнездо имеет некоторое "наверстывание".

Это проблема, хотя.

Всякий раз, когда я вызываю сокет для получения большего количества байтов, я хотел бы, чтобы любой из сохраненных байтов был удален, чтобы я мог быть уверен, что любые байты, которые я получаю из сокета, будут настолько реальными, насколько это возможно.

Я пытался очистить буфер сокета (я не уверен, что в BluetoothSocket даже есть буфер, это только то, что я предполагаю. Я новичок в программировании сокетов.) recv()большое количество байтов перед тем, как фактически прочитать байты реального времени из буфера, который меня действительно волнует. Это не сработало слишком хорошо:

#code that builds the socket and connects to the address/port
import bluetooth
socket = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
socket.connect(('B0:B4:41:F3:33:A2', 1))

#my attempt to clear the buffer
def clearBuffer(self):
    flushNum = 3000 #arbitrary large number
    self.mindwaveMobileSocket.recv(flushNum)

Я также пытался очистить "буфер" сокета, читая байты из сокета до тех пор, пока скорость, с которой я получаю, "recv()", данные из сокета не окажется в определенном диапазоне, сосредоточенном вокруг ожидаемых 512 Гц.

Ни один из этих двух подходов не работает слишком хорошо. Любые другие идеи? Спасибо!

0 ответов

Другие вопросы по тегам