А ни у кого нет под рукой примера, как запаковать несколько значений 10-битных, скажем 4 штуки 0..1024 в 5 байт по 8 бит и распаковать назад?) Хочу сразу оптимизировать передачу данных, неохота лишних три байта гнать

Комментарии: 51

  1. Andrey

    а шо такого. Union же есть, опиши две структуры в нем и вперед.

    • Anonim

      Ща поищу примерчики.

    • Anonim

      В целом вкурил, но пока непонятно как хрянящееся в uint16_t реально 10-битное загнать в uint8_t в структуре, да ищщо так чтоб оставшиеся два бита упали на следующую "ячейку", да ищо чтоб второе значение и последующие падали правильно

      • Andrey

        если по простому, то 6 бит из 16 придется потратить ни на что. если недопустимо, рам в обрез итп - то надо всякие трюки проделывать. кстати, альтернативой может быть сборка какого-нить Uint64_t с масками, сдвигами, и прочими поэтессами.

        • Vga

          в котором те же 64 бита, которые займут 4 ворда

          • Andrey

            да. но мы хотя бы весь его не будем пересылать (там в этом был изначальный вопрос)

        • Vga

          можно просто побить его на битовые поля

          • Andrey

            так наверное даже лучше будет. тоже сделать структуру, а потом уже union причем через union прикрутить массив, чтобы в передаче цикл сделать

        • Anonim

          Ну в том и суть, что хотел сэкономить время на передаче данных в эфире для снижения задержек. Но если много гемора и вычислений - может получиться хуже, чем передавать по два байта

          • Andrey

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

            • Anonim

              Попробую забить на эту идею скорее всего, маловероятно что выиграю что то)

              • Andrey

                читаемость против экономии тут

                • Anonim

                  Дело не в экономии эфира или памяти, хотел задержки подсократить. Но три байта в эфире не так уж и накладно, а вычисления, запаковка, потом распаковка.. хз

                  • Karboflex

                    зависит от мощности железа и пропускной способности передаста)

                    • Anonim

                      Угу, прикинуть надо

      • Andy

        Юзай программный spi, пакуй биты в массив. Я так 5 бит в vfd дисплей паковал. Удобно.

        • Anonim

          Да так и хочу, мне в радио по spi то и гонять. Как их uint16_t 4шт загнать в byte 5шт? Заведомо в каждом uint16 число 10 бит

          • Peter

            T-Flex сапр нормального человека. Парасолид-ядро, все эксперименты, движения сборки, рэндер - в одном пакете. Море библиотек. Студенческий - бесплатно.

            • Fedor

              Да, но с рядом ограничений, например, без инженерного анализа.

              • Karboflex

                при том что там ядро от солида) его низя пристыковать к другому софту как солид)

                • Fedor

                  вас ожидает ожирение

              • Peter

                Ничего подобного. Анализ и вся физика - и механика и электричество, и термодинамика.

                • Fedor

                  в какой версии?

                • Karboflex

                  в нормальном софте по 5-6 моделей) не вижу смысла загоняться в симуляцию если софт её толком не умеет и при этом не стыкуется с софтом который умеет

                  • Fedor

                    в коммерческой версии с этим проблем всё же нет

                    • Karboflex

                      в комерсе вобще никаких проблем там жри чё дают) и всё)

          • Andrey

            по сути надо их сложить в Unsigned INT32 не хватит... ну и не пакуй тогда. отправляй как есть

            • Anonim

              Ладно

              • Andrey

                а не радиоуправление ли ты часом сотворяешь?

                • Anonim

                  его самое, дальнее захотелось на нем освоить работу с радиомодулем на sx1278

                  • Andrey

                    хреновый выбор. очень медленный канал, для управления в реальном времени недостаточен

                    • Eugene

                      Зато жрет мало.

                      • Andrey

                        сомнительный плюс в вопросах управления. но, если не нужна надежность канала, то мб и хорошо.

                        • Eugene

                          Кто-нить подскажет, это от какой модификации? А то одни пишут, что от японской, другие - что дорестайл... Смотря чем управлять... И откуда.

                    • Anonim

                      почему? на похожем существуют lrs, тот же qczek просто не в lora а fsk насколько я знаю

                      • Andrey

                        ну вот только если FSK... когда я делал управление, остановился на NRF с усилителями.

                        • Anonim

                          врядле я им пробью километров 50 )

                          • Andrey

                            это да но 1278 в режиме FSK вряд ли даст эти 50 км :) лора как раз за счет широкой полосы и низкой битовой скорости дает дальность. я на 1276 опыты ставил, на 870 МГц. получил стабильные 500м с земли в застройке. с антенной, размещенной максимально неудобно для работы :) (теперь понятно зачем надо упаковывать данные)

                          • Jirafivanich

                            Чонить типа bcd смотрел для сжатия?

          • Andy

            Да как как, сделай 10 битный spi и пихай данные в байты. Как набралось 8 бит - следующий байт. Как отправил 10 бит от 16 битного числа - следующее число. И все. В приемнике обратно.

            • Andrey

              а радио прожует 10-битный SPI ?

          • Klest

            Сдвигай в стркутуру через указатель. Но муторно.

            • Eugene

              А мк-то какой? Сколько битов умеет передавать?

              • Andy

                А дальше пофиг как ты 8битные эти числа передашь. В радио вобще spi нет, там же 1 канал. Для spi 2 надо.

Не нашли ответ?

Вам также может быть интересно