Yes, I have it but I couldn't get much form it. The main thing that I got is that it has an RS232 interface and that I have to use a converter from RS232 to TTL/UART, but nothing else. Right now I have disconnected everything that I've done before and I'm trying to start again.
This is my code so far:
byte gotoConfig[] = {0xFA,0xFF,0x30,0x00,0xD1};
byte gotoMeasurement[] = {0xFA,0xFF,0x10,0x00,0xF1};
byte setOutputSkipFactor[] = {0xFA,0x01,0xD4,0x02,0xFF,0xFF,0x2B};
byte reqData[] = {0xFA,0x01,0x34,0x00,0xCB};
byte inByte = 0x00;
byte xsensBID,xsensMID,xsensLEN,xsensCHECKSUM,xsensSTATUS;
union {
byte asByte[4];
float asFloat;
} xsensLatitude;
union {
byte asByte[4];
float asFloat;
} xsensLongitude;
union {
byte asByte[4];
float asFloat;
} xsensAltitude;
union {
byte asByte[2];
unsigned int asInt;
} xsensSample;
void setup(){
Serial.begin(115200);
Serial1.begin(115200);
xsensConfigure();
}
void loop() {
/*poll xsens for a message*/
xsensGetData();
delay(1000);
}
void xsensGetData(){
byte xsensBuffer[100];
int i = 0;
Serial1.write(reqData,5);
//Serial.print("\nRequest Data");
while(Serial1.available() ==0){}
while(Serial1.available()){
xsensBuffer[i] = Serial1.read();
i++;
}
xsensBID=xsensBuffer[1];
xsensMID=xsensBuffer[2];
xsensLEN=xsensBuffer[3];
if(xsensBID==0xFF && xsensMID == 0x32){
//Latitude, longitude, altitude
xsensLatitude.asByte[3] = xsensBuffer[4];
xsensLatitude.asByte[2] = xsensBuffer[5];
xsensLatitude.asByte[1] = xsensBuffer[6];
xsensLatitude.asByte[0] = xsensBuffer[7];
xsensLongitude.asByte[3] = xsensBuffer[8];
xsensLongitude.asByte[2] = xsensBuffer[9];
xsensLongitude.asByte[1] = xsensBuffer[10];
xsensLongitude.asByte[0] = xsensBuffer[11];
xsensAltitude.asByte[3] = xsensBuffer[12];
xsensAltitude.asByte[2] = xsensBuffer[13];
xsensAltitude.asByte[1] = xsensBuffer[14];
xsensAltitude.asByte[0] = xsensBuffer[15];
xsensSTATUS = xsensBuffer[16];
xsensSample.asByte[1] = xsensBuffer[17];
xsensSample.asByte[0] = xsensBuffer[18];
xsensCHECKSUM = xsensBuffer[19];
byte byteSum = 0;
for(i = 1;i<=19;i++){
byteSum += xsensBuffer[i];
}
Serial.print("MSG-0:");Serial.print(byteSum,HEX);
Serial.print("\tGPS:");Serial.print(bitRead(xsensSTATUS,2));
Serial.print("\tKXF:");Serial.print(bitRead(xsensSTATUS,1));
Serial.print("\t");Serial.print(xsensLatitude.asFloat,DEC);
Serial.print("\t");Serial.print(xsensLongitude.asFloat,DEC);
Serial.print("\t");Serial.print(xsensAltitude.asFloat,DEC);
Serial.print("\t");Serial.print(xsensSample.asInt,DEC);
xsensLatitude.asFloat = 0;
xsensLongitude.asFloat = 0;
xsensAltitude.asFloat = 0;
xsensSample.asInt = 0;
}//end if
Serial.print("\tBID:");
Serial.print(xsensBID,HEX);
Serial.print("\tMID:");
Serial.print(xsensMID,HEX);
Serial.print("\tLEN:");
Serial.print(xsensLEN,DEC);
Serial.print("\n");
}
void xsensConfigure(){
byte xsensByte = 0x00;
int i = 0; //i is a generic counter
Serial.println("\nConfiguration Mode\n");
Serial1.write(gotoConfig,5);
while(Serial1.available() ==0){}
while(Serial1.available()){
xsensByte = Serial1.read();
Serial.print(xsensByte);
Serial.print("\t");
delay(5);
}
Serial.println("\nOnly send data when polled\n");
Serial1.write(setOutputSkipFactor,7);
while(Serial1.available() ==0){}
while(Serial1.available()){
xsensByte = Serial1.read();
Serial.print(xsensByte);
Serial.print("\t");
delay(5);
}
Serial.println("\nMeasurement Mode\n");
Serial1.write(gotoMeasurement,5);
while(Serial1.available() ==0){}
while(Serial1.available()){
xsensByte = Serial1.read();
Serial.print(xsensByte);
Serial.print("\t");
delay(5);
}
Serial.print("\n");
}