Serg_Grn писал(а): ↑13.06.2018{, 07:50}
Т.е. между разными функциональными блоками правильнее создавать переменную, чем просто тянуть линию связи?
Если просто выход на вход, без ветвления, то ничего не надо. Если всё работает и устраивает - тоже.
Но бывают моменты, когда вроде как работает, но потом оценив результат, понимаешь, что криво, и надо разобраться.
Например, проверено 100%, когда используем дисплей, и перед ним собираем("сложение строк") строку из нескольких кусков, лучше создать переменную типа стринг, и результат присваивать ей, а уже потом эту переменную выводить на дисплей. Это ускоряет работу программы, не очень существенно, но всё-же, ведь работа со строками не самая быстрая, а программа при выводе делает сборку дважды: при подготовке к отправке, и при оценки изменении длинны строки для очистки экрана. Код становится читабельнее.
Код: Выделить всё
_gtv14 = ((String("Ush=")) + (( _floatToStringWitRaz(V_Shunt_230392479_2,2))) + (String("mV")) + (String("___I=")) + (String("")) + (String("A")));
if (1) {
_dispTempLength1 = ((((String("U=")) + (( _floatToStringWitRaz(Voltage_230392479_2,2))) + (String("V")) + (String("___I=")) + (( _floatToStringWitRaz(Current_230392479_2,2))) + (String("A"))))).length();
if (_disp12oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp12oldLength = _dispTempLength1;
_lcd1.setCursor(0, 0);
_lcd1.print((((String("U=")) + (( _floatToStringWitRaz(Voltage_230392479_2,2))) + (String("V")) + (String("___I=")) + (( _floatToStringWitRaz(Current_230392479_2,2))) + (String("A")))));
} else {
if (_disp12oldLength > 0) {_isNeedClearDisp1 = 1; _disp12oldLength = 0;}
}
if (1) {
_dispTempLength1 = ((_gtv14)).length();
if (_disp13oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp13oldLength = _dispTempLength1;
_lcd1.setCursor(0, 1);
_lcd1.print((_gtv14));
} else {
if (_disp13oldLength > 0) {_isNeedClearDisp1 = 1; _disp13oldLength = 0;}
}
- 2018-06-13_09-43-01.png (6.74 КБ) 2447 просмотров
Отправлено спустя 5 минут 7 секунд:
dizzyy писал(а): ↑13.06.2018{, 09:28}
А какая последовательность была что так получилось?
Всё по фэншую, вроде. Но! Он два раза вычитает: когда вычисляет для переменной, и второй раз для массива, но переменная уже меньше на 1!!!
А с переменной - всё ок, для массива использует уже её, пост 5, второй спойлер.
- 2018-06-13_09-46-08.png (4.51 КБ) 2440 просмотров