diff --git a/serialtest_receiver_processing/serialtest_receiver_processing.pde b/serialtest_receiver_processing/serialtest_receiver_processing.pde new file mode 100644 index 0000000..a525667 --- /dev/null +++ b/serialtest_receiver_processing/serialtest_receiver_processing.pde @@ -0,0 +1,51 @@ +import processing.serial.*; + +Serial serialport; + +void setup() { + printArray(Serial.list()); + serialport = new Serial(this, Serial.list()[2], 9600); + println("start"); +} + +void draw() { + byte[] inBuffer = new byte[9]; + while(serialport.available()>0) { + inBuffer = serialport.readBytes(); + serialport.readBytes(inBuffer); + if (inBuffer!= null) { + int counter= inBuffer[0]; + int value1= extract_uint16_t(inBuffer,1); + int value2= extract_int16_t(inBuffer,3); + float floatvalue = extract_float(inBuffer,5); + println("counter="+counter); + println("value1="+value1); + println("value2="+value2); + println("floatvalue="+floatvalue); + } + + } +} + +public int extract_uint16_t(byte array[], int startbyte) { + return ((int)array[startbyte] & 0xff) | ((int)array[startbyte+1] & 0xff)<<8; +} + +public int extract_int16_t(byte array[], int startbyte) { + if ( ((int)array[startbyte+1] & 0x80) == 0x00 ) { //2's complement, not negative + return ( ((int)array[startbyte] & 0xff) | ((int)array[startbyte+1] & 0x7f)<<8 ); + }else{ //value is negative + return -32768 + ( ((int)array[startbyte] & 0xff) | ((int)array[startbyte+1] & 0x7f)<<8 ); + } +} + +public float extract_float(byte array[], int startbyte) { + int MASK = 0xff; + int bits = 0; + int i = startbyte+3; //+3 because goes backwards and has 4 bytes + for (int shifter = 3; shifter >= 0; shifter--) { + bits |= ((int) array[i] & MASK) << (shifter * 8); + i--; + } + return Float.intBitsToFloat(bits); +} diff --git a/serialtest_sender_arduino/serialtest_sender_arduino.ino b/serialtest_sender_arduino/serialtest_sender_arduino.ino new file mode 100644 index 0000000..3cccb31 --- /dev/null +++ b/serialtest_sender_arduino/serialtest_sender_arduino.ino @@ -0,0 +1,19 @@ +uint8_t counter=0; +uint16_t value1=65531; +int16_t value2=-123; +float floatvalue=23.42; + +void setup() { + pinMode(LED_BUILTIN, OUTPUT); + Serial.begin(9600); +} + +void loop() { + digitalWrite(LED_BUILTIN,!digitalRead(LED_BUILTIN)); + Serial.write((uint8_t *) &counter, sizeof(counter));//uint8_t, 1 byte + Serial.write((uint8_t *) &value1, sizeof(value1)); //uint16_t, 2 bytes + Serial.write((uint8_t *) &value2, sizeof(value2)); //int16_t, 2 bytes + Serial.write((uint8_t *) &floatvalue, sizeof(floatvalue)); //float, 4 bytes + delay(500); + counter++; +}