File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -219,16 +219,17 @@ def _read(self, timeout: float | None) -> str | None:
219219 # Due to accessing `serialPortOrig.in_waiting` too often will reduce the performance.
220220 # We read the `serialPortOrig.in_waiting` only once here.
221221 in_waiting = self .serialPortOrig .in_waiting
222- for _ in range (max (1 , in_waiting )):
223- new_byte = self .serialPortOrig .read (1 )
224- if new_byte :
225- self ._buffer .extend (new_byte )
226- else :
227- break
228-
229- if new_byte in (self ._ERROR , self ._OK ):
230- string = self ._buffer .decode ()
231- self ._buffer .clear ()
222+ if in_waiting > 0 :
223+ self ._buffer .extend (self .serialPortOrig .read (in_waiting ))
224+ else :
225+ byte = self .serialPortOrig .read (1 )
226+ if byte :
227+ self ._buffer .extend (byte )
228+
229+ for i in range (len (self ._buffer )):
230+ if self ._buffer [i ] in (self ._OK [0 ], self ._ERROR [0 ]):
231+ string = self ._buffer [: i + 1 ].decode ()
232+ del self ._buffer [: i + 1 ]
232233 return string
233234
234235 if _timeout .expired ():
You can’t perform that action at this time.
0 commit comments