在 microbit v2

问题描述

我有一个 v2 microbit 通过 USB (/dev/ttyACM0) 连接到 RaspBerry Pi,它运行 Node-Red。我想根据从 openweathermap node-red 模块返回的“天气”图标在 Microbit 上显示一个天气图标。我可以使用节点红色流和“串行”模块提取图标(例如“03d”),但我发现无法将其显示在 microbit 上,在节点红色流中显示为“已连接” . 我最终会使用一组(可能真的很难看)“if”语句来从返回的代码获取图标,但这似乎在一百万英里之外。

我在 Microbit(使用 Blocks 构建)上的代码是:

serial.set_baud_rate(Baudrate.BAUD_RATE115200)
serial.set_rx_buffer_size(128)

def on_forever():
    basic.show_string(serial.read_string())
    basic.pause(5000)
basic.forever(on_forever)

这只是我尝试过的一个版本。我最接近的是收到以下内容

[Object Object Object]

...在 microbit 上,这很奇怪,因为流的调试消息显示正确的有效负载正在由 Pi 传递到串行节点。

我知道这可能很明显,很可能是我对“字符串”和“数字”的误解。我已经成功地用不同的 pi 写入了不同的 microbit,但那是一个数字,而不是一个字符串。在我的系绳的尽头。非常感谢所有建议。

TIA,沃里克

ps。更令人沮丧的是,我不能使用 Mu 来“借用”其他代码,因为 microbit 是 Mu 1.02 无法使用的版本,而且我也未能更新(mu)!

[编辑以包含 Node-Red 流程]

[
   {
      "id":"6ed3221a.52c58c","type":"inject","z":"1696e88b.74d287","name":".#.#.#.#.#.#.#.#.#.#.#.#.","props":[
         {
            "p":"payload"
         }
      ],"repeat":"10","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":".#.#.#.#.#.#.#.#.#.#.#.#.","payloadType":"str","x":560,"y":120,"wires":[
         [
            "af95ece7.418f2"
         ]
      ]
   },{
      "id":"af95ece7.418f2","type":"serial out","name":"","serial":"92c2150.d6fbee8","x":860,"wires":[
         
      ]
   },{
      "id":"92c2150.d6fbee8","type":"serial-port","serialport":"/dev/ttyACM0","serialbaud":"115200","databits":"8","parity":"none","stopbits":"1","waitfor":"","dtr":"none","rts":"none","cts":"none","dsr":"none","newline":"200","bin":"false","out":"time","addchar":"","responsetimeout":"10000"
   }
]

解决方法

您可能希望发送您想要显示的内容的编码,而不是发送图标名称,以便 micro:bit 上的代码可以更通用。

例如:.#.#.#.#.#.#.#.#.#.#.#.#. 会显示:

enter image description here

这是通过以下方式完成的:

enter image description here

当通过串行发送数据“数据包”时,我通常会在其中放置一些已知的分隔符。例如:

enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...