mirror of
https://github.com/processing/processing4.git
synced 2026-02-03 21:59:20 +01:00
Serial: Add basic tests for throughput and latency
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
while (true) {
|
||||
int in = Serial.read();
|
||||
if (in != -1) {
|
||||
Serial.write(in);
|
||||
}
|
||||
}
|
||||
}
|
||||
53
java/libraries/serial/test/serial_latency/serial_latency.pde
Normal file
53
java/libraries/serial/test/serial_latency/serial_latency.pde
Normal file
@@ -0,0 +1,53 @@
|
||||
// Arduino Duemilanove (168) on OS X 10.9
|
||||
// with either 115200 or 38400 bps
|
||||
// on Processing 2.0.3 (cu & tty): 24 ms avg, 35 ms max
|
||||
// on Processing 2.1b1 (cu & tty): 18 ms avg, 35 ms max
|
||||
|
||||
import processing.serial.*;
|
||||
Serial serial;
|
||||
int start;
|
||||
byte out = '@';
|
||||
int last_send = 0;
|
||||
byte[] in = new byte[32768];
|
||||
long num_fail = 0;
|
||||
long num_recv = 0;
|
||||
int max_latency = 0;
|
||||
|
||||
void setup() {
|
||||
println(serial.list());
|
||||
// change this accordingly
|
||||
serial = new Serial(this, serial.list()[0], 115200);
|
||||
start = millis();
|
||||
}
|
||||
|
||||
void draw() {
|
||||
background(255);
|
||||
if (0 < serial.available()) {
|
||||
int recv = serial.readBytes(in);
|
||||
for (int i=0; i < recv; i++) {
|
||||
if (in[i] == out) {
|
||||
num_recv++;
|
||||
int now = millis();
|
||||
if (max_latency < now-last_send) {
|
||||
max_latency = now-last_send;
|
||||
}
|
||||
last_send = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (last_send != 0 && 1000 < millis()-last_send) {
|
||||
num_fail++;
|
||||
last_send = 0;
|
||||
println(num_fail+" bytes timed out");
|
||||
}
|
||||
if (last_send == 0) {
|
||||
if (out == 'Z') {
|
||||
out = '@';
|
||||
}
|
||||
serial.write(++out);
|
||||
last_send = millis();
|
||||
}
|
||||
fill(0);
|
||||
text(((millis()-start)/(float)num_recv+" ms avg"), 0, height/2);
|
||||
text(max_latency+" ms max", 0, height/2+20);
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
while (true) {
|
||||
Serial.write('.');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
import processing.serial.*;
|
||||
Serial serial;
|
||||
int start;
|
||||
byte[] in = new byte[32768];
|
||||
long num_ok = 0;
|
||||
long num_fail = 0;
|
||||
long num_recv = 0;
|
||||
|
||||
void setup() {
|
||||
println(serial.list());
|
||||
// change this accordingly
|
||||
serial = new Serial(this, serial.list()[0], 115200);
|
||||
start = millis();
|
||||
}
|
||||
|
||||
void draw() {
|
||||
background(255);
|
||||
if (0 < serial.available()) {
|
||||
int recv = serial.readBytes(in);
|
||||
for (int i=0; i < recv; i++) {
|
||||
if (in[i] == '.') {
|
||||
num_ok++;
|
||||
} else {
|
||||
num_fail++;
|
||||
println("Received "+num_fail+" unexpected bytes");
|
||||
}
|
||||
num_recv++;
|
||||
}
|
||||
}
|
||||
fill(0);
|
||||
text(num_recv/((millis()-start)/1000.0), 0, height/2);
|
||||
}
|
||||
Reference in New Issue
Block a user