Как очистить буфер 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 Гц.
Ни один из этих двух подходов не работает слишком хорошо. Любые другие идеи? Спасибо!