@@ -16,16 +16,21 @@ def __init__(self,uart_id,tx_pin_id=None,rx_pin_id=None):
16
16
self .uart .init (9600 , bits = 8 , parity = None , stop = 1 )
17
17
18
18
def flush (self ):
19
- while self .uart .any ():
19
+ self .uart .flush ()
20
+ if self .uart .any ():
20
21
self .uart .read ()
21
22
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
29
34
return in_bytes
30
35
31
36
def send_cmd (self ,cmd ,param1 = 0 ,param2 = 0 ):
@@ -62,13 +67,19 @@ def reset(self):
62
67
self .send_cmd (12 ,0 ,1 )
63
68
64
69
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 ]
66
74
67
75
def get_volume (self ):
68
76
return self .send_query (67 )[6 ]
69
77
70
78
def get_files_in_folder (self ,folder ):
71
79
in_bytes = self .send_query (78 ,0 ,folder )
72
- if in_bytes [ 3 ] != 78 :
80
+ if in_bytes == - 1 :
73
81
return - 1
82
+ if in_bytes [3 ]!= 78 :
83
+ return 0
74
84
return in_bytes [6 ]
85
+
0 commit comments