Skip to content

Commit 3e59013

Browse files
committed
Check complete SoF packet, use slice to assign directly to buffer
1 parent eecc6b2 commit 3e59013

File tree

1 file changed

+7
-10
lines changed

1 file changed

+7
-10
lines changed

adafruit_pm25/uart.py

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -69,17 +69,14 @@ def __init__(self, uart, reset_pin=None):
6969

7070
def _read_into_buffer(self):
7171
while True:
72-
b = self._uart.read(1)
73-
if not b:
74-
print(b) ### <<< debug
72+
sof = self._uart.read(2)
73+
if not sof:
7574
raise RuntimeError("Unable to read from PM2.5 (no start of frame)")
76-
if b[0] == 0x42:
75+
if sof == b'BM':
7776
break
78-
self._buffer[0] = b[0] # first byte and start of frame
77+
self._buffer[0:2] = sof # SoF bytes
7978

80-
remain = self._uart.read(31)
81-
if not remain or len(remain) != 31:
79+
data = self._uart.read(30)
80+
if not data or not len(data) == 30:
8281
raise RuntimeError("Unable to read from PM2.5 (incomplete frame)")
83-
for i in range(31):
84-
self._buffer[i + 1] = remain[i]
85-
# print([hex(i) for i in self._buffer])
82+
self._buffer[2:] = data

0 commit comments

Comments
 (0)