@@ -16,16 +16,21 @@ def __init__(self,uart_id,tx_pin_id=None,rx_pin_id=None):
1616 self .uart .init (9600 , bits = 8 , parity = None , stop = 1 )
1717
1818 def flush (self ):
19- while self .uart .any ():
19+ self .uart .flush ()
20+ if self .uart .any ():
2021 self .uart .read ()
2122
22- def send_query (self ,cmd ,param1 = 0 ,param2 = 0 ):
23- self .flush ()
24- self .send_cmd (cmd ,param1 ,param2 )
25- time .sleep (0.05 )
26- in_bytes = self .uart .read ()
27- if not in_bytes :
28- return bytes (10 )
23+ def send_query (self ,cmd ,param1 = 0 ,param2 = 0 ):
24+ retry = True
25+ while (retry ):
26+ self .flush ()
27+ self .send_cmd (cmd ,param1 ,param2 )
28+ time .sleep (0.05 )
29+ in_bytes = self .uart .read ()
30+ if not in_bytes : #timeout
31+ return - 1
32+ if len (in_bytes )== 10 and in_bytes [1 ]== 255 and in_bytes [9 ]== 239 :
33+ retry = False
2934 return in_bytes
3035
3136 def send_cmd (self ,cmd ,param1 = 0 ,param2 = 0 ):
@@ -62,13 +67,19 @@ def reset(self):
6267 self .send_cmd (12 ,0 ,1 )
6368
6469 def is_playing (self ):
65- return self .send_query (66 )[6 ]
70+ in_bytes = self .send_query (66 )
71+ if in_bytes == - 1 or in_bytes [5 ]!= 2 :
72+ return - 1
73+ return in_bytes [6 ]
6674
6775 def get_volume (self ):
6876 return self .send_query (67 )[6 ]
6977
7078 def get_files_in_folder (self ,folder ):
7179 in_bytes = self .send_query (78 ,0 ,folder )
72- if in_bytes [ 3 ] != 78 :
80+ if in_bytes == - 1 :
7381 return - 1
82+ if in_bytes [3 ]!= 78 :
83+ return 0
7484 return in_bytes [6 ]
85+
0 commit comments