Sitelet https://github.com/redoxcode/micropython-dfplayer/commit/3be9373c20fd53d4515ec147ea8fb6259cea50fe
Skip to content

Commit 3be9373

Browse files
authored
Update __init__.py
Add some basic error checking
1 parent 8bec839 commit 3be9373

1 file changed

Lines changed: 21 additions & 10 deletions

File tree

‎src/dfplayer/__init__.py‎

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)