roboforum.ru

Технический форум по робототехнике.

Передача данных

Re: Передача данных

dccharacter » 29 июн 2012, 18:46

boez писал(а):
dccharacter писал(а):If the resulting string gets truncated ... returns the total number of characters ... which would have been written, if the limit was not imposed.

Афигеть - вот этого не знал, думал выдаст скоко реально записано. С одной стороны правильно, размер буфера мы и так знаем, а тут полезная инфа - насколько буфер надо расширить чтоб влезло. А с другой стороны, передавать результат snprintf в следующую функцию ( к примеру передачи в уарт n байт) еще сложнее - нужна проверка не только на минус, но и на больше буфера.

хм, а буффер разве можно расширять? вроде размер буффера должен быть const?

Re: Передача данных

boez » 29 июн 2012, 19:28

dccharacter писал(а):хм, а буффер разве можно расширять? вроде размер буффера должен быть const?

Это в AVRках он const :) А в системах с динамической памятью (malloc/free) вполне себе можно попросить буфер побольше, если вдруг в текущий не влезло, и с этим буфером опять вызвать snprintf.

Re: Передача данных

dccharacter » 29 июн 2012, 21:31

поменял выше функции с УАРТом - ошибки опять были.

Добавлено спустя 1 минуту 58 секунд:
Вот код работы с сериалом:

Код: Выделить всёРазвернуть
void process_serial (void)
{
   while (input.full)
   {
      RCIE = 0;
      tmp = input.buf[input.rd++];
      input.rd &= input.mask;
      --input.full;
      RCIE = 1;

      cmd[0] = cmd[1];
      cmd[1] = cmd[2];
      cmd[2] = cmd[3];
      cmd[3] = cmd[4];
      cmd[4] = tmp;

      if (cmd[4] == 'p')
      {
         if ((cmd[0] == 's') || (cmd[0] == 'g'))
         {
            if (cmd[0] == 's')
            {
               CONTROL_REG[cmd[1]] = cmd[2];
               CONTROL_REG[cmd[1]+1] = cmd[3];
            }

            rs232_putch(cmd[0]);
            rs232_putch(cmd[1]);
            rs232_putch(CONTROL_REG[cmd[1]]);
            rs232_putch(CONTROL_REG[cmd[1]+1]);
            rs232_putch(cmd[4]);
         }
      }
   }
}


Боже мой, я даже кольцевой буфер применяю. Какой я крутой. А посади без интернета писать - и сплошные OOOPS будут


Rambler\'s Top100 Mail.ru counter