Похвальная идея, но... афтар, а вы в каталог libraries\Firmata не заглядывали?
Где-то в комментариях отвечал уже, что заглядывал, и мне это показалось громоздким, и не оч эффективным. Во всяком случае, прямого решения задачи с "гирляндой датчиков" - я не увидел.
нет ибо не вижу вопроса, если вопрос: "что я должен уловить?" - ответ: "мысль"
Решил дурака включить? Изначальный вопрос был в посте #33. Там явно спрашивалось "Какую именно мысль я должен уловить?"
Исходя из того, что ответа так и не поступило, я делаю вывод. что никакой мысли там не было, а ты просто хамливое трепло.
Впрочем, если те соизволишь таки начать нормальный разговор, и таки объяснишь что же там была за великая мысль, я готов вернуться к конструктивному обсуждению.
Ооох, съел он столько ЯП, что аж подавился :) Ещё и недорослями всех обзывает, трепло :) Если не научен писать нормальный код и не владеешь даже азами ООП - так и скажи, мол - ребята, учусь, помогите понять, что можно улучшить, что - изменить, и вообще - скажите, правильный ли я подход избрал? И тогда - нормально посоветовали бы, пообсуждали бы, благо - дело хорошее, самообразовываться-то.
Вместо этого - куча говнокода, помноженная на кучу говносамомнения, приправленное хамством и трепачеством.
Ещё раз повторюсь специально для великого и гениального: всё, что ты тут выродил - _нормальным_ программистом делается за 5 минут несколькими строчками кода.
Более продолжать общаться с клиническим недоразумением считаю нецелесообразным. Но ты не расстраивайся - гопота она, того - всегда найдёт себе подобных, и сюда подтянутся такие же "шпециалисты", и будут молиться на твою кристину, как на идола. Согревайся, болезный, согревайся ;)
Более продолжать общаться с клиническим недоразумением считаю нецелесообразным.
Во первых: Этой строчки было бы достаточно.
Во вторых: моё хамство, по сравнению с изрыгаемыми Вами тоннами говна - это такая мелочь... Но я восхищён! Где то же Вы этого говна наедаетесь.
В третьих: Аргумент: "ты говно, а я программист" - может приводить лишь абсолютный лузер и школота. Ибо программист - оперирует примерами. И не говорит когда нечего сказать. От Вас примеров я не увидел - делайте выводы.
При этом мною было сказано, что мне интересны лишь замечания по работе алгоритма. А Ваше мнение о позиции скобочек, можете запихать себе куда хотите.
В четвёртых: и Вам всего хорошего. Мне в отличии от Вас было действительно весело с Вами пообщаться.
)))
всё, что ты тут выродил - _нормальным_ программистом делается за 5 минут несколькими строчками кода.
Здесь наверное нужно кое-что прояснить:
готового решения, в интернете не нашёл, а учитывая то, что продвинутому новичку в ардуино и программировани данная библиотека нужна как воздух, ибо необходимость манипулирования парой: датчик-индекс, используется в 90% проектов.
И кстати у тебя как у "нормального программиста" есть прекрасная возможность поставить на место моё "говносамолюбие" и потратить на это пять минут, предоставив рабочие либы на С++ и на Java под Processing, которые были бы эффективнее. Я уже говорил здесь, что можно использовать три байта вместо пяти, для передачи того же диапазона. Сам я уже переделывать ничего не буду, по той простой причине, что на скорость работы с аналоговыми датчиками это никак не повлияет.
Так что дерзай. Можешь использовать пять дней, а не 5 минут.
))))))
И кстати у тебя как у "нормального программиста" есть прекрасная возможность поставить на место моё "говносамолюбие" и потратить на это пять минут, предоставив рабочие либы на С++ и на Java под Processing, которые были бы эффективнее.
Подначивать меня бесполезно. Ты хочешь отправки любого числа по UART и приёма его с другой стороны, без твоих говёных ограничений и непонятных диапазонов? Даже пяти минут не надо, чтобы это написать:
int num = 123456;
byte* ptr = (byte*)#
for(uint8_t i=0;i<sizeof(num);i++)
Serial.write(*ptr++);
Приём - делается аналогично. Если нужен протокол - он дописывается ещё несколькими строчками кода. Иди уже пожуй свою кристину.
typedef struct
{
uint8_t PacketID;
uint8_t SensorIdx;
int SensorData;
uint8_t CRC;
} Packet;
void SendPacket(Stream* sendTo, const Packet& packet)
{
// тут вот, если понимаешь, о чём я - можно дописать свой заголовок, потом - длину следующих
// за заголовком данных, чтобы (опять же, если понимаешь) знать - сколько надо будет прочитать
// из стрима, когда данные придут. Хоть на яве, хоть на Коболе, хоть на С - да фиолетово, на чём.
// Хотя да - кристине может быть сложно вникнуть в такой код.
sendTo->write(packet.PacketID);
sendTo->write(packet.SensorIdx);
byte* ptr = (byte*) &(packet.SensorData);
for(uint8_t i=0;i<sizeof(packet.SensorData);i++)
sendTo->write(*ptr++);
sendTo->write(CRC);
}
И пихай себе пакет в любой наследник класса Stream, а не только в Serial - чуешь удобство, великий программист? Тебе протокол приёма ещё пятью строками кода написать? Впрочем, ты всё равно не уймёшься, у тебя несварение кристиной, поэтому оставь свои потуги, выроди ещё парочку гнусных эпитетов в мой адрес и уже узбагойся. Более в твою каку обещаю не заглядывать.
З.Ы. Только вот очень, нет, ОЧЕНЬ жаль, что настолько упала культура программирования, а пафос, наоборот - возрос во столько же раз. Я в печали. Пойду порефлексирую.
Ну вот! Слова не мальчика, но мужа!
Раз уж мы вышли за пределы Serial осталось всего лишь на компьютере, принять то, что было отправлено, а именно: получить данные и индекс:
1) Получить стрим
2) Обработать этот поток
3) Обработать ошибки, обеспечив хоть какую то надёжность
4) Получить пакеты, отсортировать их в блок нужных данных в соответствии с заголовком
5) вычленить из блока необходимые значения.
три первых из этих пяти пунктов, прекрасно реализованы в классе Serial Зачем же изобретать сразу несколько велосипедов.
Ну а теперь о магических числах: так как максимальное значение получаемое с аналогового пина ардуиноподобного контроллера 4095, то 9999 как достаточное, так и максимальное значение в соответствующей логике.
Что же касается диапазона (от 0 до 29) индексов, то здесь реализована защита от выхода за пределы массива., и для удобства использования.(чтобы было бери и пользуйся)
Так как индекс собственно является заголовком блока данных, то чтобы он им и оставался, его число должно находиться в определённом диапазоне значений. в данном случае от 10 до 255. Учитывая то, что при объявлении массива резервируется память под него, тридцать индексов, мне показалось достаточным: 20 пинов ардуино, и десять на какие нибудь другие нужды.
Как я уже говорил: Firmata показалась мне слишком громоздкой, да и реализация приёма передачи блока "пин-его_значение" заняла бы в ней не намного меньше строк кода, чем у меня. Поэтому я и реализовал, данную библиотеку, идя по пути наименьшего сопротивления, максимально реализовав задачу: пин-значение в обе стороны.
Так как Serial работает безупречно, как в ардуино, так и в процессинге, то эта небольшая надстроечка, сильно облегчила мне (и уже не только мне) жизнь.
Что же касается Ваших трудов, то я ничуть не умаляю Вашей компетенции и знания предмета, но Вы не предоставили сообществу Ваши готовые к использованию решения для для данной конкретной задачи.
allesanbr,
может всё-таки ответишь на мой вопрос
нет
ибо не вижу вопроса,
если вопрос: "что я должен уловить?" - ответ: "мысль"
Похвальная идея, но... афтар, а вы в каталог libraries\Firmata не заглядывали?
Похвальная идея, но... афтар, а вы в каталог libraries\Firmata не заглядывали?
Где-то в комментариях отвечал уже, что заглядывал, и мне это показалось громоздким, и не оч эффективным. Во всяком случае, прямого решения задачи с "гирляндой датчиков" - я не увидел.
может всё-таки ответишь на мой вопрос
Решил дурака включить? Изначальный вопрос был в посте #33. Там явно спрашивалось "Какую именно мысль я должен уловить?"
Исходя из того, что ответа так и не поступило, я делаю вывод. что никакой мысли там не было, а ты просто хамливое трепло.
Впрочем, если те соизволишь таки начать нормальный разговор, и таки объяснишь что же там была за великая мысль, я готов вернуться к конструктивному обсуждению.
Светлую.
P.S.
Простите, но на конкретно заданный вопрос, мне ПРИХОДИТСЯ давать конкретный ответ.
Попробуйте ещё раз.
)))
Понятно, - хамливое трепло. До свиданья.
И Вам всего хорошего, добрый человек.
)))
Ооох, съел он столько ЯП, что аж подавился :) Ещё и недорослями всех обзывает, трепло :) Если не научен писать нормальный код и не владеешь даже азами ООП - так и скажи, мол - ребята, учусь, помогите понять, что можно улучшить, что - изменить, и вообще - скажите, правильный ли я подход избрал? И тогда - нормально посоветовали бы, пообсуждали бы, благо - дело хорошее, самообразовываться-то.
Вместо этого - куча говнокода, помноженная на кучу говносамомнения, приправленное хамством и трепачеством.
Ещё раз повторюсь специально для великого и гениального: всё, что ты тут выродил - _нормальным_ программистом делается за 5 минут несколькими строчками кода.
Более продолжать общаться с клиническим недоразумением считаю нецелесообразным. Но ты не расстраивайся - гопота она, того - всегда найдёт себе подобных, и сюда подтянутся такие же "шпециалисты", и будут молиться на твою кристину, как на идола. Согревайся, болезный, согревайся ;)
Во первых: Этой строчки было бы достаточно.
Во вторых: моё хамство, по сравнению с изрыгаемыми Вами тоннами говна - это такая мелочь... Но я восхищён! Где то же Вы этого говна наедаетесь.
В третьих: Аргумент: "ты говно, а я программист" - может приводить лишь абсолютный лузер и школота. Ибо программист - оперирует примерами. И не говорит когда нечего сказать. От Вас примеров я не увидел - делайте выводы.
При этом мною было сказано, что мне интересны лишь замечания по работе алгоритма. А Ваше мнение о позиции скобочек, можете запихать себе куда хотите.
В четвёртых: и Вам всего хорошего. Мне в отличии от Вас было действительно весело с Вами пообщаться.
)))
всё, что ты тут выродил - _нормальным_ программистом делается за 5 минут несколькими строчками кода.
Здесь наверное нужно кое-что прояснить:
готового решения, в интернете не нашёл, а учитывая то, что продвинутому новичку в ардуино и программировани данная библиотека нужна как воздух, ибо необходимость манипулирования парой: датчик-индекс, используется в 90% проектов.
И кстати у тебя как у "нормального программиста" есть прекрасная возможность поставить на место моё "говносамолюбие" и потратить на это пять минут, предоставив рабочие либы на С++ и на Java под Processing, которые были бы эффективнее. Я уже говорил здесь, что можно использовать три байта вместо пяти, для передачи того же диапазона. Сам я уже переделывать ничего не буду, по той простой причине, что на скорость работы с аналоговыми датчиками это никак не повлияет.
Так что дерзай. Можешь использовать пять дней, а не 5 минут.
))))))
Смотри, мне не жалко, хоть узнаешь, что такое ООП: GitHub
Подначивать меня бесполезно. Ты хочешь отправки любого числа по UART и приёма его с другой стороны, без твоих говёных ограничений и непонятных диапазонов? Даже пяти минут не надо, чтобы это написать:
Приём - делается аналогично. Если нужен протокол - он дописывается ещё несколькими строчками кода. Иди уже пожуй свою кристину.
Протокол передачи данных, самый простой:
И пихай себе пакет в любой наследник класса Stream, а не только в Serial - чуешь удобство, великий программист? Тебе протокол приёма ещё пятью строками кода написать? Впрочем, ты всё равно не уймёшься, у тебя несварение кристиной, поэтому оставь свои потуги, выроди ещё парочку гнусных эпитетов в мой адрес и уже узбагойся. Более в твою каку обещаю не заглядывать.
З.Ы. Только вот очень, нет, ОЧЕНЬ жаль, что настолько упала культура программирования, а пафос, наоборот - возрос во столько же раз. Я в печали. Пойду порефлексирую.
Ну вот! Слова не мальчика, но мужа!
Раз уж мы вышли за пределы Serial осталось всего лишь на компьютере, принять то, что было отправлено, а именно: получить данные и индекс:
1) Получить стрим
2) Обработать этот поток
3) Обработать ошибки, обеспечив хоть какую то надёжность
4) Получить пакеты, отсортировать их в блок нужных данных в соответствии с заголовком
5) вычленить из блока необходимые значения.
три первых из этих пяти пунктов, прекрасно реализованы в классе Serial Зачем же изобретать сразу несколько велосипедов.
Ну а теперь о магических числах: так как максимальное значение получаемое с аналогового пина ардуиноподобного контроллера 4095, то 9999 как достаточное, так и максимальное значение в соответствующей логике.
Что же касается диапазона (от 0 до 29) индексов, то здесь реализована защита от выхода за пределы массива., и для удобства использования.(чтобы было бери и пользуйся)
Так как индекс собственно является заголовком блока данных, то чтобы он им и оставался, его число должно находиться в определённом диапазоне значений. в данном случае от 10 до 255. Учитывая то, что при объявлении массива резервируется память под него, тридцать индексов, мне показалось достаточным: 20 пинов ардуино, и десять на какие нибудь другие нужды.
Как я уже говорил: Firmata показалась мне слишком громоздкой, да и реализация приёма передачи блока "пин-его_значение" заняла бы в ней не намного меньше строк кода, чем у меня. Поэтому я и реализовал, данную библиотеку, идя по пути наименьшего сопротивления, максимально реализовав задачу: пин-значение в обе стороны.
Так как Serial работает безупречно, как в ардуино, так и в процессинге, то эта небольшая надстроечка, сильно облегчила мне (и уже не только мне) жизнь.
Что же касается Ваших трудов, то я ничуть не умаляю Вашей компетенции и знания предмета, но Вы не предоставили сообществу Ваши готовые к использованию решения для для данной конкретной задачи.
Поэтому мне не очень понятно Ваше возмущение.