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

Лидеры

  1. Сергей Борщ

    Сергей Борщ

    Модератор


    • Баллы

      2

    • Постов

      10 921


  2. Forger

    Forger

    Свой


    • Баллы

      1

    • Постов

      2 750


  3. juvf

    juvf

    Свой


    • Баллы

      1

    • Постов

      1 610


  4. UART

    UART

    Участник


    • Баллы

      1

    • Постов

      558


Популярный контент

Показан контент с высокой репутацией 31.05.2024 во всех областях

  1. если так пугают простые наследования, то шаблоны вообще должны приводить в ужос ))
    1 балл
  2. Так и для дисплея же любая команда - поток байтов. Наша задача - объяснить компилятору, что любую команду надо трактовать как набор N байтов с некоего начального адреса. Увы, это два int. Старшие байты будут нулями. Придумал их только как массив шестнадцатиричных кодов символов (вроде исправил в сообщении, но почему-то не сохранилось): send_command({'\x01', '\x02'}); А я все команды описываю в виде осмысленных структур и уже структуры отсылаю через template<typename T> void send_command(T const & what) { send_command(&what, sizeof(T)); } примерно так:
    1 балл
  3. Так? void send(uint8_t id, void const * from, size_t size); void send_command(void const * from, size_t size) { send(0, from, size); } template <typename T> void send_command(T const & what) { send_command(&what, sizeof(T)); } template <typename T, size_t items> void send_command(T const (&what)[items]) { send_command(&what, sizeof(T) * items); } template<size_t length> void send_command(char (&string)[length]) { send_command(&what, size - 1); } void test() { send_command(0x12); send_command({0x12, 0x34, 0x56}); send_command("Hello"); }
    1 балл
  4. // Основная шаблонная функция send template<typename... Args> void send(int dataCommand, Args&&... args) { if (dataCommand == 0) { std::cout << "sendCommand called with arguments: "; } else { std::cout << "sendData called with arguments: "; } (std::cout << ... << args) << std::endl; } // Обертка для sendCommand template<typename... Args> void sendCommand(Args&&... args) { send(0, std::forward<Args>(args)...); } // Обертка для sendData template<typename... Args> void sendData(Args&&... args) { send(1, std::forward<Args>(args)...); } int main() { // Примеры использования sendCommand(0x12); // вызовется send(0, 0x12) sendCommand(0x12, 0x34); // вызовется send(0, 0x12, 0x34) sendCommand(0x12, 0x34, 0x56); // вызовется send(0, 0x12, 0x34, 0x56) sendData(0x12, 0x34); // вызовется send(1, 0x12, 0x34) // Примеры с массивами и строками sendCommand("hello"); // вызовется send(0, "hello") unsigned char buf[3] = {0x01, 0x02, 0x03}; sendData(buf); // вызовется send(1, buf) return 0; }
    1 балл
  5. вот с этим я не соглашусь в корне, так как владею темой, и цен, и ЦОС Вы все же задумайтесь о количестве данных обрабатываемых и т.п. и о скоростных интерфейсах, в том числе и USB 3.x для компа. Армы, наверное серий А53 такое позволят, но стоят они не дешево (баксов 25-30)?. открою небольшой секрет. Блэкфины имеют оооочень низкое потребление поэтому на них делают приборы с питанием от USB. и мало тепла выделяют. В блэкфине еще очень хорошая система криптографии прошивки. рекомендую ознакомиться с этим. поэтому Планар очень удачно их выбрал. когда речь идет о профессиональных приборах - скоростные интерфейсы играют очень большую роль!! вон либра греется как утюг и нахрена такое решение???. 2 кило металла вытачивать? а вы говорите копейчный АРМ. ну вон он в нано стоит... и чего?? с такой скоростью прорисовки и вывода инфы на экран... с ума сойдешь ждать. начнете разрабатывать - соберете граблей... и очки розовые немного треснут... удачи!
    1 балл
×
×
  • Создать...