gpt4 book ai didi

serial-port - 从 Processing 到 Arduino 的串行写入发送损坏的数据

转载 作者:行者123 更新时间:2023-12-04 03:01:03 25 4
gpt4 key购买 nike

我是处理和串行通信的新手,我的问题似乎非常基本。我正在尝试将数据从 Processing 发送到 Arduino,但似乎在翻译中丢失了一些东西。

在 Arduino 上,我正在运行这个 super 简单的草图:

void setup()
{
Serial.begin(9600);
}

void loop()
{
if (Serial.available() > 0) Serial.println(Serial.read());
}

这样做的目的是从串行读取一个字节,然后将其写回,以便我可以看到发生了什么。使用包含的串行监视器测试它的行为与我预期的一样:输入“0”返回“48”。到现在为止还挺好。

当我运行这个处理草图时,事情开始出错:
import processing.serial.*;
Serial myPort;

void setup()
{
//frameRate(10);
myPort = new Serial(this, Serial.list()[4], 9600);
}

void draw()
{
myPort.write("0");
}

我希望这段代码能够以每秒 10 个条目的速率返回无休止的“48”流,因为我知道这是默认帧速率。真正发生的事情是这样的:
48
48
488
48
48
48
48
48
48
48
48
48
48

488
48
48
48

似乎每 10 个(给予或接受一些)字节都有一个很好的被搞砸的变化。我得到的不是“48”,而是“”、“488”、“4848”或“488”之类的东西。更有趣的是,如果我取消对 frameRate(10); 的注释;在我的处理脚本中,我希望绝对不会发生任何事情,因为我将 fps 从 10 设置为 10。相反,我开始看到这样的东西:
4
44
4848844
444448444844
4
44444444
844
444
844444
8
88
8
4488
84
48
4448444844
444

所以基本上这些数字不再有意义了。

我花了相当多的时间将问题缩小到这个串行通信,并且在相关主题上搜索了几个小时,但我没有得到关于可能发生什么的提示。任何关于进一步阅读或尝试的建议将不胜感激。

我正在使用今天下载的最新版本的 Processing,我的系统是一个 MBP,运行 Mountain Lion,并安装了所有更新。

最佳答案

经过一些进一步的测试,似乎在从 Processing 发送字节的同时打开串行监视器,由于未知原因,两者都搞砸了。我认为在串行总线优先级上存在某种争执,数据最终被破坏了。

解决方法:不要尝试使用多个程序同时读取串行数据。

关于serial-port - 从 Processing 到 Arduino 的串行写入发送损坏的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13431964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com