CircuitPython supervisor.runtime.serial_字节_在读取后仍然为真
我正在做一个项目,涉及一个节点网站和一个Adafruit 8x8按钮矩阵 使用Feather M4 Express微控制器和CircuitPython。我正在努力分类 通过USB在网站和按钮网格之间进行干净的串行通信 这是我在微控制器上的电流回路,应该只是检查一下 用于串行输入,如果存在,则打印CircuitPython supervisor.runtime.serial_字节_在读取后仍然为真,python,stdin,adafruit,adafruit-circuitpython,Python,Stdin,Adafruit,Adafruit Circuitpython,我正在做一个项目,涉及一个节点网站和一个Adafruit 8x8按钮矩阵 使用Feather M4 Express微控制器和CircuitPython。我正在努力分类 通过USB在网站和按钮网格之间进行干净的串行通信 这是我在微控制器上的电流回路,应该只是检查一下 用于串行输入,如果存在,则打印 while True: # the trellis can only be read every 17 millisecons or so trellis.sync() if
while True:
# the trellis can only be read every 17 millisecons or so
trellis.sync()
if supervisor.runtime.serial_bytes_available:
data = input()
print(data)
time.sleep(0.02)
这适用于第一次迭代。问题是,在第一次调用input()
之后,
supervisor.runtime.serial\u bytes\u available
未重置为False。
因此,在第二次迭代中,微控制器挂起在input()
连载的东西。这会发生在接下来的每一次迭代中
我如何确保在读取输入后,supervisor.runtime.serial\u bytes\u available
将被设置回False?提供了作为int
读取的字节数,但仍然可以用作零等于False
的布尔值。它将取决于您发送的数据,input()
是否读取所有数据,即像“一行\n一部分行”
这样的数据将挂在第二行。您可以使用sys.stdin.read()
读取任何数据,但是您需要做一些额外的工作来合并/解析这些数据。还需要注意行尾字符,您可能会在数据中找到类似CRLF
的序列
根据您发送的内容,您可能会遇到一些控制字符问题。对于有问题的控件-C(0x03
导致键盘中断
),可以根据使用禁用此选项
这里与中的问题/答案有些重叠