Go Down

Topic: Problem reading large arrays from arduino on Processing (Read 3099 times) previous topic - next topic


Nov 23, 2013, 01:47 am Last Edit: Nov 23, 2013, 04:06 pm by aturcitu Reason: 1
Hi everybody, I am having a problem with my project. To sup up i want to sent long arrays to processing to being processed there.
So I have started with my code but the code only works with the array sent to Processing is short. Once I increase the  number of elements of the array the code dosn't works how I expect.  I am using arduino DUE

First of all, my Processing code:

Code: [Select]
import processing.serial.*;

int H = 2;
int W = 10;

Serial myPort;

void setup() {
 myPort = new Serial(this, "COM5", 115200);


void draw() {


 byte[] inBuffer = new byte[H*W*4+4];

 while (myPort.available() > 0) {
    if (inBuffer != null&& (inBuffer[0] == 0x46) && (inBuffer[1] == 0)) {

The code sends the caracter F in order to arduino send the array. Then it comproves the first and the second byte of the array to make sure it is the data we want. And aflter that, to debug I print the last byte which is espected to be -1 (0xFF)

Here my arduino code:
Code: [Select]

#define H 2        //Used to sized the array
#define W 10

void setup()

void loop()
   Serial.write(0x46);          //Header
   Serial.write(byte(0x00));    //Header
   for(int k=0;k<W*H*4;k++)
   Serial.write(8);             //Data
   Serial.write(byte(0x00));    //End
   Serial.write(0xFF);          //End  

The arduino code waits until it recives the char F and them send the headers, the data, and the end elements of the array.

So when I try the code with W and H with low numbers, processing prints -1 (the last element of the array) but when I increase W and H it doesn't work, processing print sometiems -1 sometimes 0 or 8..  The problem occurs when the string is larger than mor or less 130 bytes

What is the problem?

Thanks in advance, Aitor


You should NOT be calling functions, like strcmp(), that expect strings when what you pass it is NOT a string.

A string is a NULL terminated array of chars. What you have is NOT a NULL terminated array of chars.

The code you posted does something. You didn't bother saying what it does.

You want the code to do something. You didn't bother saying what that is.
The art of getting good answers lies in asking good questions.


Thanks for the reply, I have updated the main post with more info about what the Processing code does and what my code should do!

Thank you :)



You are sending data using a very slow transfer mechanism (Serial.write()) and expecting that all the data will arrive instantly. That won't happen.
The art of getting good answers lies in asking good questions.


I don't care about the time it takes.
How can I make it to go slowlier but getting the right data? I can't do it! If I use delays Processing seems to get lost!


Go Up

Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

via Egeo 16
Torino, 10131