如果您想在没有正确补丁的情况下将以下草图作为 Serial.flush 块永远运行,请按照本讨论中概述的步骤进行操作。当前的 Arduino 版本实现了这些更改,但截至撰写本文时(2021 年 11 月 12 日),我们无法从 Board Manager 下载新版本...
在 Serial.flush 工作后,我使用以下草图尝试测量 Nano 33 BLE Sense 和 Portenta H7 的 USB 虚拟串行端口的数据传输速率,分别为 11199 字节/秒和 19620 字节/秒:
const byte BYTE_TO_SEND = 170; //b'10101010'.
const unsigned long NUMERATOR = 1000000000;
void setup(){
Serial.begin(115200); //Does nothing on the nano 33 ble sense.
while (!Serial); //Wait for serial port to connect. Needed for native USB on nano 33 ble sense.
}
void loop(){
unsigned long startClock = micros();
for (int i = 1000; i > 0; i--) {
//Serial.write(BYTE_TO_SEND); //11199 bytes/second on nano33blesense.
Serial.write(BYTE_TO_SEND); //19435-19620 bytes/second on portenta h7.
Serial.flush();
}
unsigned long endClock = micros();
unsigned long bytesPerSecond = NUMERATOR / (endClock-startClock);
Serial.println("");
Serial.print(bytesPerSecond);
Serial.println(" bytes/second");
while(1);
}
我对这些结果感到失望):来自Arduino 论坛上这篇较早帖子的人用 Arduino Leonardo 进行了类似的速度测试,测得 39258 字节/秒!关于如何获得更快或希望更快的速度的任何想法?
或者测量策略有问题?