我有两个BBC Micro Bit并使用Radio功能将数据从一个从器件传输到主Micro Bit。当数据被传输时,我得到随机回车,我不确定是什么问题,我试图剥离任何随机的CR等,但仍然遇到同样的问题。
A = 1,开,
12
= 2,
关闭,77
= 3,
开,88
=============================================== ====
from microbit import *
import radio
radio.config(group=0)
radio.on()
while True:
incoming = radio.receive()
if incoming:
uart.write(incoming)
============================================== < / p>
from microbit import *
import radio
radio.config(group=0)
radio.on()
while True:
if button_a.was_pressed():
radio.send('Matt,A=On,Off' + '\n') # a-ha
display.scroll("A")
if button_b.was_pressed():
radio.send('Matt,B=On,Off' + '\n') # a-ha
display.scroll("B")
=============================================== ==========
import sys
import glob
import serial
def serial_ports():
ports = ['COM%s' % (i + 1) for i in range(256)]
result = []
for port in ports:
try:
s = serial.Serial(port)
s.close()
result.append(port)
except (OSError, serial.SerialException):
pass
return result
if __name__ == '__main__':
print(serial_ports())
try:
ser = serial.Serial('COM5', 115200, timeout = 0)
print("connected to: " + (ser.portstr))
except serial.SerialException:
pass
while True:
line = ser.readline().decode('utf-8')
# Read a line and convert it from b'xxx\r\n' to xxx
if line: # If it isn't a blank line
f = open('output.csv', 'a+')
f.write(line + '\n')
print(line)
f.close()
ser.close()
答案 0 :(得分:1)
我发现你的脚本没有发送额外的回车。我测试了两个microbits。我在mu和CoolTerm中使用了REPL,设置为115200波特。我使用Linux Mint作为我的操作系统。 CoolTerm输出: 马特,B =开,关 马特,A =开,关
发布pyserial代码后添加: 下面的代码可以帮助我生成预期的输出,而无需额外的空白行。使用end =&#39;&#39;删除换行符。在打印声明中。使用pid和vid查找microbit可以让您连接其他串行设备。感谢microbit-playground发布关于如何使用pid和vid查找microbit的示例代码。
我在Linux上使用jupyter笔记本测试了这个。它应该可以在Windows上运行而无需修改。
import serial
import serial.tools.list_ports as list_ports
def find_microbit_comport():
ports = list(list_ports.comports())
for p in ports:
if (p.pid == 516) and (p.vid == 3368):
return str(p.device)
if __name__ == '__main__':
ser = serial.Serial()
ser.baudrate = 115200
ser.port = find_microbit_comport()
ser.open()
while True:
line = ser.readline().decode('utf-8')
if line: # If it isn't a blank line
f = open('output.csv', 'a+')
f.write(line)
print(line, end='')
f.close()
ser.close()