Мне надо отправить пакет через лору. Максимальный пакет там 255 байт. Я тут облажался со строковой данной, вначале все через String делал, а потом оказалось что максимальная длина стринга равняется макимально свободному фрагменту памяти - и иногда там падает до 40-50 байт что вообще не прокатывает... В итоге я понял что надо создать массив char[255] куда бы я запихивал данные в бинарном виде для оптимизации. Так вот мне туда надо как то запихнуть и байты и интеджеры и лонги. Вот мне и интересно, как например в 100 позицию массива чаров запихнуть лонг

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

  1. Byte

    Указатели, тайпкаст, да хоть memcpy.

    • Vasiliy

      Условно говоря представитьч то 255 это размер памяти epprom, и там есть команда put которая пихает в определенную позицию в зависимости от входной переменной нужное число байт

      • Lexx

        хочешь - наверни себе оберток под каждый тип, которые под капотом отсчитают смещение

        • Vasiliy

          ну вот пока про это думаю, но зашел спросить может что готовое есть уже

          • Lexx

            хотя не уверен что в маленьких процессорах такие хелперы - это правильно

  2. Anonim

    такой подход несколько рискован был у меня примерно такой код (сократим для общего понимания смысла): unsigned char BinData[ДовольноМного]; *(int*)(&(BinData[3]))=12345; На компе он нормально работал. А MIPS-овский проц в железке сказал "хер вам" и выдал исключение. Ему не понравилась попытка записи по невыровненному адресу

    • Vasiliy

      Я без указателей делать буду

      • Anonim

        Без указателя - это как?

        • Vasiliy

          сразу объявлю массив на 255 символов и в первом байте будет размер лдя передачи

          • Anonim

            Вы хотите впихнуть long, который по хорошему надо бы выровнить по 8 байт в 100-й элемент. если я ничего не путаю, 100 очень хреново делится на 8

            • Vasiliy

              никто не сказал что все в лонгах будет

              • Lexx

                с 100 по 103 байт от начала, я так понимаю

                • Vasiliy

                  там разные типы

                  • Lexx

                    со статическим массивом похоже на правду, хз, я не сишник

                    • Vasiliy

                      там будет последовательность команд (размера байт) и значений

              • Anonim

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

                • Vasiliy

                  условно говоря мне надо получить с аналоговой ножки A7 ее значение то есть будет условно параметр (44) сервер поймет что дальше идет 2 байта на интеджер просто например аптайм это лонг, значение цифрового выхода это байт а аналогового это инт. Вот мне надо в чар 255 байтный запихать эту последовательность Можно конечно вообще через EPPROM все готовить ;) но думаю быстро износится и если на клиенте еще фиг с ним, то на сервере точно когда сотни клиентов будут...

                  • Anonim

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

                    • Vasiliy

                      да ниче, обычная телеметрия

                    • Lexx

                      protobuf у него получается =) но не совсем

                      • Anonim

                        не совсем... protobuf всё-таки чуть умнее

                        • Vasiliy

                          управление шлагбаумами - с получением их состояния, управление всякими подвалами домов с получением температуры влажности и прочего в одном микрорайоне

                          • Lexx

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

                            • Vasiliy

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

  3. Andrey

    заведи структуру, их для этого и придумали

    • Vasiliy

      да все уже. так и сделал ) ну почти. плавающая стурктура. Если жестко структуру задавать то лишние байты придется гонять. а для лорки лишний байт даже это миллисекунды

      • Andrey

        так унифицируй данные.

        • Roman

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

          • Andrey

            у меня она хорошо работала в застройке, с уровня земли.

            • Vasiliy

              нуну.. у меня в городе в плотной застройке 2км проибвает

          • Byte

            Не надо.

            • Vasiliy

              прямо через дома

              • Roman

                пока не поймали

                • Vasiliy

                  Доброе утро - так то лора разрешена

                  • Roman

                    частоту назови и адрес

                    • Vasiliy

                      гугли

                      • Roman

                        адрес физический, улица дом

                        • Vasiliy

                          тоже гугли

                    • Andrey

                      перед этим почитай про ISM

                      • Roman

                        я уже читал и про лору и про не лору, хуета это все

                        • Andrey

                          может ты просто читатель тот еще?

                          • Roman

                            да нахуй она нужна и на 433 и на 846 забитые каналы пиликалками

                            • Andrey

                              я когда читал даташиты тоже немного мозги кипели. а потом я опытным путем получил минусовой SNR и задумался.

                              • Roman

                                антена размером с коня нужна на кой шлагбаумам радио?

                                • Andrey

                                  я смотрю и в антеннах ты не шибко сведущ...

                                  • Roman

                                    около 10см антена это уже конь. блютус честно 80 метров в прямой видимости с милипизерной дорожкой и норм

                                    • Andrey

                                      не, ну так-то все от задач. если надо чтоб оно из кармана на 50км работало, то вам в другую галактику, в этой физика не позволяет.

                                    • Byte

                                      Ага, угу… (включает микроволновку)

                                      • Roman

                                        шлагбауму нафейхуя еще и ретранслятор на лоре? причем на той же частоте что и брелки от этих ворот читер

                                        • Andrey

                                          спроси у повелителя шлагбаумов, я другим занимался.

                                      • Roman

                                        я таксистам не доверяю хочешь сказать микроволновка работает на 2.4ггц? бло 2.45ггц

                                        • Byte

                                          Ага.

                                          • Roman

                                            шапочка из фольги нужна для лучшего пропекания линза прямо в мозжечок падажи, то есть магнетрон можно использовать как несущую для блюпупа?) микроволновка с блютусом, фак еа

                                            • Byte

                                              Ну если придумаешь, как модулировать… :)

                                            • Anonim

                                              Запрос в Гугле "БТ наушники из микроволновки своими руками"

            • Roman

              усука это ты ему скажи а ну да, ты уже говорил.

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

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