Перейти к содержанию
    

Arlleex

Свой
  • Постов

    5 795
  • Зарегистрирован

  • Посещение

  • Победитель дней

    14

Arlleex стал победителем дня 6 апреля

Arlleex имел наиболее популярный контент!

Репутация

130 Очень хороший

2 Подписчика

Информация о Arlleex

  • Звание
    Гуру
    Гуру

Контакты

  • ICQ
    Array

Посетители профиля

17 663 просмотра профиля
  1. Работает все прекрасно и у меня. И 15 лет назад тоже все работало. Меня интересовало, додумалось ли C++ сообщество до чего-то более удобоваримого в этом плане. P.S. Какие указатели в протоколе передачи данных??? Вы о чем? Вроде понятно, что данные снабжаются КС и уже улетают в провод. В дизасм смотреть или даже не пытаться?🙂 P.S. Я с МК тоже отправляю, так что способ ищу легковесный. Если нет - мне проще (как всегда, собственно) написать свой небольшой класс.
  2. Я от того и спрашиваю, что задача тривиальная, а решалась всегда "криво"🙂 Но, видимо, нужно создать класс-оболочку над неким массивом известной длины (достаточной, чтобы вместить нужное количество данных) и с ним уже работать. Длину не нужно передавать, т.к. сам протокол умеет детектировать ее по механизму кадрирования нижних уровней. ИМХО, ужасное решение🙂 Потому что у меня десятки разных управляющих структур бегают, с разным содержимым и длиной. Контрольную сумму логично располагать где-то в одном конкретном месте для всех структур: и это либо начало кадра, либо самый его хвост. Иначе, чтобы определить положение КС, нам надо "узнать", что это за структура, а лезть в ее поля, не проверив КС - нельзя. У меня "узаконен" формат с CRC в хвосте. Алгоритм приема и отбраковки битых кадров становится универсальным.
  3. Можно ли в C++ как-то красиво описать структуру с гибким положением последнего элемента? Допустим, есть структура struct TxRS485 { Header hdr; u8 byte[N]; u32 crc; } N должно будет стать известно в рантайме, поэтому шаблоны тут вряд ли помогут. Задача простая (и применяемая ну совсем повсюду): из поля ввода юзер-данных считать строчку, запихнуть ее в структуру с определенным паттерном (снабдив заголовками и т.д.), последним элементом должен "приклеиться" CRC-чек. Вроде все просто, однако как будто нет решения, кроме как по старинке "клеить" вручную хедер с данными, а потом к этому всему дописывать контрольную сумму.
  4. У китайцев чуть более прогнозируемая ситуация: если купить становится затруднительно у основного поставщика, то по инерции можно еще полгода точно ехать с помощью других продаванов, в это время подготавливая почву для внедрения новой аппаратной платформы. Другое дело - например, евреи - i.MX6 (по крайней мере, нужные нам SoM) пропали за месяц от слова "навсегда".
  5. У манагеров всегда все просто. Это вечно недовольным инженерам вечно то конденсаторов не хватает, то дорожки не лезут.
  6. К этому и сводится большая часть программирования, несмотря на рядом стоящую помойку под названием стандартная библиотека.
  7. А, понял. Ок. На листы разбивать хорошо - даже поощрительно: название листа отражает то, что на нем находится. У меня тоже есть проекты с десятками листов - очень удобно.
  8. А почему нельзя просто графически схему нормально рисовать, чтобы сразу понятно было, какая россыпь конденсаторов к какой микросхеме относится?
  9. Насколько я помню - itoa ограничивает длину строки 33 и 65 символами для int и long long, соответственно. Буквально вчера отказался от монструозных sprintf(), чтобы ужать first-bootloader под МК на нужный размер.
  10. itoa не возвращает длину строки, или хотя бы указателя на последний записанный элемент в предоставленном буфере. А то получилась полная фигня - передаем буфер - функция возвращает указатель на него же Из-за этого приходится вызывать strlen() каждый раз после itoa() при самостоятельном формировании строк.
  11. Понял, спасибо. Мы же можем написать множество шаблонов функции с одним именем, и в случае, если в параметрах функции можно было бы не указывать какие-то параметры шаблона, компилятор не смог бы разобраться, какую из шаблонных функций инстанцировать.
  12. Почему при введении шаблона функции нужно обязательно присутствие всех параметров шаблона в качестве формальных параметров функции? Т.е. допустимо template<class A, class B> void func(A a, B b) { ... } и недопустимо template<class A, class B> void func(A a) { B b; ... } несмотря на то, что тип B используется в теле функции. Учебники пишут только декларативно, зачастую (как в моем случае) не объясняя причин.
  13. 20 лет назад выпадали, и щас зашел посмотреть - ничего не изменилось...😆
  14. Я беру максимальную размерность прямоугольника, в который можно вписать плату. Для прямоугольной платы - максимальная сторона. ИМХО, по-другому просто не имеет смысла.
×
×
  • Создать...