jcxz 243 11 апреля, 2023 Опубликовано 11 апреля, 2023 · Жалоба 2 часа назад, artemkad сказал: "abrakadabrapin:0000in1+10" и есть лексемы "pin:", "in", "+", цифры ну а теперь попробуй сперва найти границы, а потом лексемы... Я вам чего-то должен? С какой стати? Я тут приводил уже и примеры кода и алгоритмы реализации. От вас же ничего конкретного мы не видели. Ни одного примера. Кроме пустых, где-то прочитаных лозунгов, типа "никакого парсинга в прерываниях" и искусственных, высосанных из пальца задач. Так что - ваша очередь: Приведите пожалуйста правильный с вашей точки зрения код, парсящий этот искусственный бред выше. Код в студию! Вы вообще программировать умеете? Или только потрындеть зашли? 52 минуты назад, MementoMori сказал: Где у меня слабое место? Не читали в учебнике по языку си о структурах и выравнивание их членов. Также - не читали ничего о протоколах передачи через последовательные каналы связи. Хотя тут вам их уже советовали. И не один. Но всё видно без толку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 11 апреля, 2023 Опубликовано 11 апреля, 2023 · Жалоба On 4/11/2023 at 4:00 PM, MementoMori said: Но намек ясен, будут предложения по унификации, с целью платформонезависимости? Где у меня слабое место? 1. Структура должна быть упакована. 2. Размеры int, char и т.д. на разных платформах могут быть разными, поэтому следует применять типы uint8_t, uint16_t и т.д., описанные в stdint.h 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 11 апреля, 2023 Опубликовано 11 апреля, 2023 · Жалоба 3 часа назад, MementoMori сказал: Ну дык вот, делал уже А теперь читайте по губам: 3 часа назад, Сергей Борщ сказал: именно на буфер, а не на ваш объект класса TArray1<System::Byte> 2 часа назад, MementoMori сказал: Делается под конкретную платформу. Для себя, если быть точным. Даже если для себя - это не повод делать программу медленной. Зачем вы создаете объект в динамической памяти через new? Размер буфера в этом классе задается на этапе исполнения, значит сам буфер этот объект хранит в динамической памяти и размер самого объекта мизерный, его можно смело разместить на стеке не тратя время и электричество на выделение в динамической памяти и последующее удаление. Следующее улучшение - я бы создал наследника этого класса, для которого определил бы через шаблон operator <<() для ссылки на любой тип, чтобы можно было писать Buffer << INFO_VAR; и о вычислении размера INFO_VAR и занесении этого размера в set_length() голова болела у компилятора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 11 апреля, 2023 Опубликовано 11 апреля, 2023 · Жалоба On 4/11/2023 at 6:46 PM, Сергей Борщ said: Зачем вы создаете объект в динамической памяти через new? Он же писал, что пишет под Андроид. Так что, скорее всего, это Java. Лучше у ТС спросить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 11 апреля, 2023 Опубликовано 11 апреля, 2023 · Жалоба 1 hour ago, Сергей Борщ said: Зачем вы создаете объект в динамической памяти через new? Я писал выше: Quote Сразу скажу тем, кто будет предлагать альтернативу - буфер должен быть объявлен так и только так, этого требует библиотека под Андроид, работающая с Bluetooth. 1 hour ago, Сергей Борщ said: А теперь читайте по губам Опять же, выше я уже написал, что понял это и исправил, все работает. 3 hours ago, jcxz said: Не читали в учебнике по языку си о структурах и выравнивание их членов. Знаю я про упаковку, я не знаю пока какой окончательный вид будет иметь структура. А узнаю я это в процессе разработки, в процессе испытания устройства, а для этого нужно погонять данные. А это тоже нужно организовать, лоск наведу потом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 11 апреля, 2023 Опубликовано 11 апреля, 2023 · Жалоба On 4/11/2023 at 8:07 PM, MementoMori said: Знаю я про упаковку, я не знаю пока какой окончательный вид будет иметь структура. Как связан окончательный вид структуры с упаковкой ? Что мешает сразу написать __attribute__((packed)) или как там это в используемом вами компиляторе делается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 11 апреля, 2023 Опубликовано 11 апреля, 2023 · Жалоба 26 минут назад, MementoMori сказал: Я писал выше: Библиотеке вы в строке Socket->SendData(*buffer); передаете ссылку на объект типа TArray__1<System::Byte> (или сам объект по значению, но это если совсем криворукие библиотеку писали). Ей абсолютно фиолетово, где этот объект лежит. Поэтому код { TArray__1<System::Byte> buffer; buffer.set_length(sizeof(INFO_VAR)); memcpy(buffer.data(),pInfo,sizeof(INFO_VAR)); Socket->SendData(buffer); } будет работать ничуть не хуже, но будет короче и быстрее. 1 час назад, dimka76 сказал: Он же писал, что пишет под Андроид. Так что, скорее всего, это Java. Слышал, что Java сама мусор убирает. А тут delete в коде. Неужели в Java все-все переменные должны объявляться через new? Тогда new было бы просто избыточно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 11 апреля, 2023 Опубликовано 11 апреля, 2023 · Жалоба On 4/11/2023 at 8:41 PM, Сергей Борщ said: Слышал, что Java сама мусор убирает. А тут delete в коде. Неужели в Java все-все переменные должны объявляться через new? Тогда new было бы просто избыточно. Не знаю. Я с Java не знаком. Но тоже слышал, что в Java все объекты создаются в куче. Хотя, ТС в одном из предыдущих сообщений приводит фрагмент своего кода, где фигурирует sizeof(), а в Java sizeof нет. Пока ТС не признается, гадать можно долго ))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 11 апреля, 2023 Опубликовано 11 апреля, 2023 · Жалоба 12 minutes ago, Сергей Борщ said: удет работать ничуть не хуже, но будет короче и быстрее. Возможно после компиляции он и мог бы работать быстрее. Но компилятор протестует. Г 14 minutes ago, Сергей Борщ said: Неужели в Java все-все переменные должны объявляться через new? В примере кода для bluetooth от разработчика очень много чего объявляется через new Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 11 апреля, 2023 Опубликовано 11 апреля, 2023 · Жалоба 30 minutes ago, dimka76 said: Пока ТС не признается, гадать можно долго ))) Блин, да в C++ Builder я программирую. И в библиотеках для написания программ под Андроид дух Явы таки имеет место быть, ибо в созданном проекте есть такая строка #include <AndroidApi.JNI.JavaTypes.hpp> 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 11 апреля, 2023 Опубликовано 11 апреля, 2023 · Жалоба 36 минут назад, MementoMori сказал: Но компилятор протестует. Нам предлагается угадать, как именно он ругается? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 11 апреля, 2023 Опубликовано 11 апреля, 2023 · Жалоба 4 minutes ago, Сергей Борщ said: Нам предлагается угадать, как именно он ругается? Матом ругается. По-русски причем. А если серьезно, я, опять таки, писал об этом ранее. [bccaarm Error] Unit1.cpp(253): no viable conversion from 'TArray__1<System::Byte> *' (aka 'System::DynamicArray<unsigned char> *') to 'System::TArray__1<System::Byte>' (aka 'System::DynamicArray<unsigned char>') Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 11 апреля, 2023 Опубликовано 11 апреля, 2023 · Жалоба На какую строку? В моем коде нет ни одного указателя, откуда ему взяться в сообщении об ошибке? Вы что-то где-то списали невнимательно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 11 апреля, 2023 Опубликовано 11 апреля, 2023 · Жалоба 13 minutes ago, Сергей Борщ said: Вы что-то где-то списали неправильно. Вы правы, был невнимателен, не везде удалил указатели. Поправил - все работает, без new. У меня размер буфера маленький (я сейчас набросал в максимально близком к конечному виде, получилось 224), разницы, естественно, незаметно, но, верю вам, что так лучше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 12 апреля, 2023 Опубликовано 12 апреля, 2023 · Жалоба Потихоньку ковыряю дальше. Выровнял структуру, из 224 байт сэкономил 24. Теперь структура весит 200 байт. Решил поиграть в "эхо" - передаю данные и принимаю их же обратно. Передаю на скорости 115200 бод. Казалось бы, около 10 кбайт в секунду. Цикл следующий - отправка 200 байт с телефона -> прием блютузом -> передача на контроллер -> передача из контроллера в блютуз -> прием в телефоне. Процесс занимает около 1 секунды. Так и должно быть? В скорости передачи собственно байт сомневаться не приходится. Так может быть начало и конец приема и передачи накладывают какие-то задержки? В контроллере модуль HM-13, если что. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться