Текстовая строка

Структура данных

ДанныеТипЗначение
Отображаемая текстовая строкаchar[x]отображаемая строка, под строку выделено x байт

Текстовая строка может передать на экран смартфона любую строковую информацию. Это может быть как текущее значение какого либо параметра, или состояние контроллера. При использовании текстовой строки необходимо задать его длину в байтах, в структуре RemoteXY будет выделен буфер заданной длины. Строка текста должна завершаться нулем. Нельзя превышать заданную длину переменной, выделенной для строки.

Настройка

Свойства текстовой строки позволяют задать следующие значения:

  • Имя переменной - имя текстовой строки и переменной в исходном коде для микроконтроллера, допускается задавать имя по правилам именования переменных языка C.
  • Символов - Количество символов, отводимых под строковую переменную. К размеру строкового буфера автоматически добавляется один байт под завершающий ноль.

Примеры программирования

Для передачи строкового текста, необходимо эту строку поместить в соответствующее поле структуры RemoteXY. Строка по правилам С, с завершающим нулем. Можно использовать разные конструкции для формирования строкового поля.

Непосредственная установка произвольной строки:


  strcpy  (RemoteXY.text_1, "My text");
  sprintf (RemoteXY.text_2, "My text");

Строка, копируемая из другой строки:


  char str[] = "My text";
  strcpy  (RemoteXY.text_1, str);
  sprintf (RemoteXY.text_2, str);
  sprintf (RemoteXY.text_3, "%s", str);

Функция sprintf(charBuf, format, ...) позволяет использовать форматную строку для представления данных:


  char str[] = "Value";
  int val = 1234;
  sprintf (RemoteXY.text_3, "%s is %d", str, val); //результат будет "Value is 1234"

К сожалению в Arduino функция sprintf не распознает форматную строку для числа с плавающей точкой %f. В замен этого можно использовать функцию
dtostrf (floatVar, minStringWidthIncDecimalPoint, numVarsAfterDecimal, charBuf):


  double val = 1234.321;
  dtostrf(val, 0, 2, RemoteXY.text_1); // результатом будет "1234.32"

Для преобразования целого числа к строке так же можно использовать функцию itoa ():


  int val = 1234;
  itoa (val, RemoteXY.text_1, 10);

Следующий пример показывает, как можно показать текстовое представление состояния входного пина с номером 4, для Arduino:


  if (digitalRead(4)==HIGH) strcpy (RemoteXY.text_1, "High");
  else strcpy (RemoteXY.text_1, "Low");

Следующий пример показывает, как можно показать напряжение на аналоговом входе A0, для Arduino:


  // АЦП равен 204.8 на вольт при напряжении питания 5 Вольт
  double val = analogRead(A0) / 204.8; 
  dtostrf(val, 0, 2, RemoteXY.text_1);