// App Send and Receive via BLE // BluetoothLE #include #include #include #include float aa; float jj; unsigned int state = 0; unsigned long lgUpdateTime; String message; #define SERVICE_UUID = "0000FFE0-0000-1000-8000-00805F9B34FB" #define CHARACTERISTIC_UUID = "0000FFE1-0000-1000-8000-00805F9B34FB" BLEServer *pServer = NULL; BLECharacteristic *pTxCharacteristic; bool deviceConnected = false; class MyServerCallbacks: public BLEServerCallbacks { void onConnect(BLEServer *pServer) { deviceConnected = true; } void onDisconnect(BLEServer *pServer) { deviceConnected = false; } } void setup() { Serial.begin(9600); Serial1.begin(9600); // Create the BLE Server pServer = BLEDevice::createServer(); pServer->setCallbacks(new MyServerCallbacks()); // Create the BLE Service BLEService *pService = pServer->createService(SERVICE_UUID); // Create a BLE Characteristic pTxCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID, BLECharacteristic::PROPERTY_NOTIFY); pTxCharacteristic->addDescriptor(new BLE2902()); // Start the service pService->start(); // Start advertising pServer->getAdvertising()->start(); Serial.println("Bluetooth device active, waiting for connection..."); lgUpdateTime = millis(); } void loop() { if ((millis() - lgUpdateTime) > 600) //Loop every 600 milliseconds lgUpdateTime = millis(); //From App if (Serial.available() > 0) { message = Serial.readString(); Serial.println("Received"); decoupeur(message); } //To App Note, Serial sends numbers as ASCII text if(state == 1) { Serial1.print(aa,2); Serial1.print("|"); //Value delimiter expected by App Serial1.print(jj,2); Serial1.println(); //End Of Data delimiter expected by App state = 0; } } } void decoupeur(String inputString) { char inputChar[inputString.length()+1] ; inputString.toCharArray(inputChar,inputString.length()+1); char* command = strtok(inputChar, "&"); // boucle sur toutes les commandes while (command != 0) { char* valueCommand = strchr(command, '='); if (valueCommand != 0) { *valueCommand = 0; ++valueCommand; if(String(command) == "a"){ aa = String(valueCommand).toFloat(); } if(String(command) == "j"){ jj = String(valueCommand).toFloat(); } } command = strtok(0, "&"); } Serial.print ("aa = "); Serial.print (aa); Serial.print ( " jj = "); Serial.println (jj); state = 1; }