@@ -392,7 +392,9 @@ def _write_register(self, register, data): # pylint: disable=arguments-differ
392
392
if not isinstance (data , bytes ):
393
393
data = bytes ([data ])
394
394
self ._uart .write (bytes ([0xAA , 0x00 , register , len (data )]) + data )
395
- time .sleep (0.01 )
395
+ now = time .time ()
396
+ while self ._uart .in_waiting < 2 and time .time () - now < 0.25 :
397
+ pass
396
398
resp = self ._uart .read (self ._uart .in_waiting )
397
399
if len (resp ) < 2 :
398
400
raise OSError ("UART access error." )
@@ -401,12 +403,27 @@ def _write_register(self, register, data): # pylint: disable=arguments-differ
401
403
402
404
def _read_register (self , register , length = 1 ): # pylint: disable=arguments-differ
403
405
self ._uart .write (bytes ([0xAA , 0x01 , register , length ]))
404
- time .sleep (0.01 )
406
+ now = time .time ()
407
+ while self ._uart .in_waiting < length + 2 and time .time () - now < 0.25 :
408
+ pass
405
409
resp = self ._uart .read (self ._uart .in_waiting )
410
+
411
+ if resp [0 ] != 0xBB : # Recursion
412
+ self ._uart .write (bytes ([0xAA , 0x01 , register , length ]))
413
+ now = time .time ()
414
+ while self ._uart .in_waiting < length + 2 and time .time () - now < 0.25 :
415
+ pass
416
+ resp = self ._uart .read (self ._uart .in_waiting )
417
+ if len (resp ) < 2 :
418
+ raise OSError ("UART access error." )
419
+ if resp [0 ] != 0xBB :
420
+ raise RuntimeError ("UART read error: {}" .format (resp [1 ]))
421
+ if length > 1 :
422
+ return resp [2 :]
423
+ return int (resp [2 ])
424
+
406
425
if len (resp ) < 2 :
407
426
raise OSError ("UART access error." )
408
- if resp [0 ] != 0xBB :
409
- raise RuntimeError ("UART read error: {}" .format (resp [1 ]))
410
427
if length > 1 :
411
428
return resp [2 :]
412
429
return int (resp [2 ])
0 commit comments