передать определённое количество символов переменной по RS-232

Xboct
Offline
Зарегистрирован: 12.02.2020

Господа опытные программисты, помогите старому радиолюбителю

Есть переменная, определённая через float, потом в неё занёс с аналогового входа данные, произвёл арифметические действия, высветил на экране LCD. Хочу ещё передать через серийный порт. Но определённое количество символов. Точно такое, как ан экране LCD, т.е. 5ть, а не много.

Дело в том, что на экрате я пишу это число в правом нижнем углу и ненужные мне символы затираются. И точка у числа плавает как мне надо. Это число меняется в пределах от -50.0 до 10.0 ( это децибелы померянные AD8307 ) , и на экране высвечивается такие значения например : -15.4 , -8.23 , 0.123 Формат очень приемлевый для меня и я бы хотел передать в последовательности символов на COM1 компа их именно в таком виде. Мне плавающая точность подходит.

Вот только не знаю как ограничить число передаваемых символов. Если Serial.print (переменная), то передаётся 14 символов ( например -15ю12345678 ), а хочется только 5ть. Подскажите/намекните как это проще сделать пожалуйста.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

почитай за функцию dtostrf(..)

если у тебя есть какая-то float переменная, то обрезать её до 5 символов и передать можно так 

char outbuf[8];

float value = -15.12345678;

dtostrf(value, 5, 1, outbuf);

Serial.print(outbuf);

выведется число длиной 5 знаков с 1 знаком после запятой. Тока помни, шо в длину 5 знаков входют и минусы и прочие всякие десятичные точки, т.е выведется "-15.1"  <- 5 символов 

либо скопировать первые 5 символов из одной строки во временный буфер, и передать его. 

Xboct
Offline
Зарегистрирован: 12.02.2020

Спасибо, сейчас попробую.

Да, мне так и надо, чтоб минус был одним из передаваемых знаков. Или ничего

Xboct
Offline
Зарегистрирован: 12.02.2020

Спасибо за подсказку DetSimen. То что дохтур прописал!!!!