Вы не совсем поняли, я включаю блютуз терминал на смартфоне, отправляю с него пустую строку (это символы lnCr) и не отключая связь в терминале запускаю соединение. Тогда все работает. От платы на смартфон ничего не требуется дополнительно отправлять.
Касаемо отслеживания изменений и отправки на смартфон только обновившихся данных. Для этого нужен набор флагов (бит) которые можно устанавливать программно. Тогда я могу сам решать какие поля будут обновлены в смартфоне. Также для строк оканчивающихся #0 можно в конец писать еще управляющий символ (признак что данные уже были отправлены) и увеличить длину строки на 1 байт.
Как я предполагаю, последовательность переменных в структуре {}RemoteXY и в описании RemoteXY_CONF[] не должна изменяться и при получении данные распределяются последовательно по полям? Если так, то можно для простоты добавить в конструкторе кода в дополнение к комментариям еще номер переменной (для наглядности), функцию устанавливающую биты по номеру и при желании программиста сэкономить траффик он просто сбрасывает бит нужной переменной в 0, тогда отправка не производится. По умолчанию все биты в 1. Кому надо тот воспользуется)
И в комментах предупреждение о запрете на изменнение последовательности переменных в структуре!
Пример
struct {
// input variables
uint8_t b_reset; // =1 если кнопка нажата, иначе =0
uint8_t b_go; // =1 если переключатель включен и =0 если отключен
// output variables
int8_t l_watt; //ID=00 =0..100 положение уровня
int8_t l_amch; //ID=01 =0..100 положение уровня
int8_t l_wtch; //ID=02 =0..100 положение уровня
int8_t l_volt; //ID=03 =0..100 положение уровня
char t_tim[11];//ID=04 =строка UTF8 оканчивающаяся нулем
uint8_t b_on_r;//ID=05 =0..255 яркость красного цвета индикатора
uint8_t b_on_g;//ID=06 =0..255 яркость зеленого цвета индикатора
uint8_t b_on_b;//ID=07 =0..255 яркость синего цвета индикатора
char t_wttxt[4];//ID=08 =строка UTF8 оканчивающаяся нулем
float graf_var1;//ID=09
float graf_var2;//ID=10
float graf_var3;//ID=11
char t_v[5]; //ID=12 =строка UTF8 оканчивающаяся нулем
char t_couach[5]; // =строка UTF8 оканчивающаяся нулем
enableupdate(int id, par=0);//при необходимости запрета отправки данных вызвать функцию с номером id и par= 0 запретить обновление #id, 1 -разрешить все, 2- запретить все
// other variable
uint8_t connect_flag; // =1 if wire connected, else =0
//Внимание! не ихменяйте структуру, при изменении последовательности записей программа работать не будет!
} RemoteXY;
#pragma pack(pop)