Serialization 试图通过串行通信改善Arduino与Arduino之间的通信

Serialization 试图通过串行通信改善Arduino与Arduino之间的通信,serialization,arduino,serial-communication,Serialization,Arduino,Serial Communication,我目前的项目需要一个Arduino Uno通过串行与Arduino Mega通信,我想提高数据传输速率 这个Arduino Uno是通过使用analogRead()(我已经测试过)的桥接电路从应变计中提取信息的。然后,它通过串行方式将这些信息发送到Mega,然后通过USB电缆和串行通信将其发送到计算机 这个超级板是必需的,因为Uno被放置在一个旋转轴上,它和超级板之间的通信是通过一个圆形光耦完成的,我已经测试过并且也在工作 有了这个,我现在正在从旋转的Uno读取190Hz的数据。我相信大部分问题

我目前的项目需要一个Arduino Uno通过串行与Arduino Mega通信,我想提高数据传输速率

这个Arduino Uno是通过使用
analogRead()
(我已经测试过)的桥接电路从应变计中提取信息的。然后,它通过串行方式将这些信息发送到Mega,然后通过USB电缆和串行通信将其发送到计算机

这个超级板是必需的,因为Uno被放置在一个旋转轴上,它和超级板之间的通信是通过一个圆形光耦完成的,我已经测试过并且也在工作

有了这个,我现在正在从旋转的Uno读取190Hz的数据。我相信大部分问题是由于
延迟(5)存在于代码中,但即使将其降低到3ms也足以使数据到达时丢失字符

联合国办事处守则:

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

void loop() {
  Serial.println(analogRead(A0));
  delay(5);
}
巨型代码:

char t;
void setup() {
Serial.begin(9600);
Serial1.begin(19200);
}

void loop() {
  if (Serial1.available()>0)
    {
      t = Serial1.read();
      Serial.print(t);
    }
}
发送的数据始终是0到1023之间的整数,因为它来自
analogRead()
,所以我可能可以对其进行更好的编码,但我不确定如何进行编码,或者这是否会解决所需
延迟(5)的更大问题


非常感谢

考虑一下您在Mega上配置的数据传输速率:19200 bps输入和9600 bps输出。还要考虑 St.Pr.()/Cuth>是一个阻塞调用,因此程序在等待另一个读取之前必须等待整个传输完成。这将有效地将传输速率限制在9600 bps(实际上由于
Serial1.read()
的开销,传输速率更低)。作为第一步,请查看是否可以增加该速率,使其至少与输入速率(19200 bps)匹配


如果您确信该方法有效且光耦连接没有丢失脉冲,则可以尝试进一步提高串行速率和/或研究允许并行读写的中断驱动设计

到底是什么问题?您一开始说希望提高数据传输速率,但后来又提到它正在删除数据。还有,190Hz是从哪里来的?您的代码中唯一的波特率是9600和19200。因此问题如下:我需要提高这个系统的数据采集率。我目前正在以190Hz的频率从传感器获取信息。数据以通常由4个字符组成的字符串发送:3个用于实际数字,1个用于
println()中的\n我每秒会得到190次数据。如果我将延迟保持在5ms,则不会发生我提到的数据丢失,但是,据我所知,由于这种延迟,我每秒无法获取超过200个数据样本。谢谢,我将尝试应用这些更改,并在明天到达实验室后报告。Whello,我已将mega和uno上的波特率更改为57600,这也允许我将
延迟()。这将传输速率提高到780Hz,这是更好的方式。谢谢你的提示