I print with Arduino
the value in a package with this structure:
<3B,3B,3B,3B,3B,5B>
I get it on a Java application that runs on UDOO board. This is my code.
public void run() {
byte[] buffer = new byte[64];
int len = 0;
String mStringReceived = "";
int ind1,ind2;
String DATA[];
try {
while((len = this.in.read(buffer)) > -1) {
mStringReceived += new String(buffer, 0, len);
if(mStringReceived.contains("<") && mStringReceived.contains(">")){
ind1=mStringReceived.indexOf("<");
mStringReceived= mStringReceived.subString(ind1,mStringReceived.lenght);
ind1=0;
ind2=mStringReceived.indexOf(">");
if(ind1<ind2){ //Always true
mStringReceived=mStringReceived.subString(ind1,ind2);
DATA=mStringReceived.replaceAll("<|>","").split(",");
}
}
mStringReceived="";
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
So, I got a buffer of 64 bytes . I get the package ( < to > ) , and I split each set of bytes , grouped by a comma ( as Arduino ago ) in an array . If you run into a mode ' debugging ' ( step by step ) , it works perfectly . Each cycle obtain a given clear for my package . But if I run in the normal way , I do not get any data. Why? The speed is set for each system 9600. Thanks !
Rules of Serial
The asynchronous serial protocol has a number of built-in rules - mechanisms that help ensure robust and error-free data transfers. These mechanisms, which we get for eschewing the external clock signal, are:
The critical part is making sure that both devices on a serial bus are configured to use the exact same protocols.
Baud Rate
The baud rate specifies how fast data is sent over a serial line. It’s usually expressed in units of bits-per-second (bps). Baud rates can be just about any value within reason. The only requirement is that both devices operate at the same rate. One of the more common baud rates, especially for simple stuff where speed isn’t critical, is 9600 bps. Other “standard” baud are 1200, 2400, 4800, 19200, 38400, 57600, and 115200.