roboforum.ru

Технический форум по робототехнике.
Текущее время: 20 фев 2025, 22:06

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 33 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения: Re: Передача данных
СообщениеДобавлено: 29 июн 2012, 18:46 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
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: Передача данных
СообщениеДобавлено: 29 июн 2012, 19:28 
Не в сети

Зарегистрирован: 27 авг 2008, 10:45
Сообщения: 1981
Откуда: Харьков
прог. языки: С/С++
dccharacter писал(а):
хм, а буффер разве можно расширять? вроде размер буффера должен быть const?

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача данных
СообщениеДобавлено: 29 июн 2012, 21:31 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
поменял выше функции с УАРТом - ошибки опять были.

Добавлено спустя 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 будут

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 33 ]  На страницу Пред.  1, 2, 3

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO