参考了一下micropython的帮助,发现uart的使用非常的简单,只有初始化,读,写几个函数,并没有接收的callback,所以串口的读取就只能靠轮询了。pyb提供了any()函数来返回串口缓冲状态,如果返回0,表示没有,如果返回值大于0,表示缓冲中有数据。这样可以通过read、readchar或者readline等方式读回来。由于控制命令简化为1个字节,所以直接用readchar来读,读到的是一个整数。所以先测试udlrp对应的10进制数,发现是117,100,108,114,112。如此就简单了。伪代码如下:
while True:
if u3.any()>0:
cmd=u3.readchar()
if cmd==114: #R
向上切台
if cmd==108: #L
向下切台
if cmd==117 : #U
音量+
if cmd==100: #D
音量-
if cmd==112 : #P
开关
cmd=0
pyb.delay(1000)
里面切换动作就是原来的代码,测试通过,就是用delay(1000)似乎响应慢了一点,500刚好。为了和上一个区别,显示的头一行从“PY FM Radio”修改为“BLUE PY Radio”