Отрицательные значения возвращаются из файла в NXC

Я сохраняю значения в файл.csv в NXC(не очень точно C), а затем вызываю их в более поздний момент времени. Проблема, с которой я сталкиваюсь, заключается в том, что при вызове любых отрицательных значений из ячейки она отображается как 0123 вместо -123, что отбрасывает все мои дополнительные вычисления.

Текущий код:

OpenFileRead("map.csv", fSize, count);
  until (eof == true) {
    ReadLnString(count, val);
    int lstFwd = StrToNum(val);
    NumOut(0,LCD_LINE1,lstFwd);
  }
while(true);

Может кто-нибудь объяснить, как исправить эту проблему, так как это вызывает у меня большой стресс сейчас.

1 ответ

StrToNum должен конвертировать отрицательные числа. Немного странно, что целое число начинается с 0. Вы также должны использовать прошивку Enhanced NBC/NXC.

Во-первых: вы должны всегда очищать экран, прежде чем писать какой-либо вывод! Использование:

NumOut(0,LCD_LINE1,lstFwd, DRAW_OPT_CLEAR_LINE);

Если проблема все еще существует, попробуйте:

string val;
OpenFileRead("map.csv", fSize, count);
  until (eof == true) {
    ReadLnString(count, val);
    int lstFwd = StrToNum(val);
    if(SubStr(val, 0, 1) == "-") lstFwd *= -1; // Check if first char is "-"
    NumOut(0,LCD_LINE1,lstFwd, DRAW_OPT_CLEAR_LINE);
  }
while(true);
Другие вопросы по тегам