Официальный сайт компании Arduino по адресу arduino.cc
Bin to HEX и операции с этими массивами.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Нужна консультация.
Есть датчики, их состояние 0 или 1.
Их к примеру может быть 4 или 8 или 16, и кроме них другие есть датчики. Есть сервер который примет значения в хексе.
напрашивается вывод, чтобы их отображать как 11110111 10101011 и т.д. потов в хекс преобразовывать.
хекс - FF,FA,AD - уже передается, сервер их успешно обрабатывает эти данные.
Передавать на внешнее устройство сбора информации хочу как HEX в масиве данных.
{FF,FA,AD,11,18,A1, и т.д...}
Вопрос - как лучше построить систему обработки этих входящих данных.
напрашивается вариант работы с массивами данных?
char * myStrings[]={ "11111111" , "10101010" , "00001111" , |
|
char * myStrings[]={ "myDAT1" , "myDAT2" , "myDAT3" , |
"myDAT4" , "myDAT5" , "myDAT6" }; |
int
myDAT1[] = {2, 4, 8, 3, 6};
Как бы это лучше организовать, чтобы не изобретать велосипед? в общем запутался, по какому пути здесь нужно шагать?
Вы уверены, что Вам нужно передавать именно строки? Нельзя передавать просто двоичные данные? Это требование протокола, чтобы только символы?
Сейчас модно в JSON-e гнать, например, а не массивами странного вида. Это ежели текстовый формат использовать.
Вы уверены, что Вам нужно передавать именно строки? Нельзя передавать просто двоичные данные? Это требование протокола, чтобы только символы?
серверная часть уже готова, и ее не будет никто переделывать. Поэтому ответ утвердительный.
серверная часть уже готова, и ее не будет никто переделывать. Поэтому ответ утвердительный.
Замыкание - это же глупость! Надеюсь, вы это хоть понимаете?
Передавать хекс как хекс много проще, чем строками - да и обрабатывать удобнее.
Сейчас модно в JSON-e гнать, например, а не массивами странного вида. Это ежели текстовый формат использовать.
я так понимаю, так оно и будет, ведь в JSON-e можно и просто хекс кода передавать..
мне бы поэтапно некоторые моменты понять.
К примеру, держим 8 датчиков 00000000, сделать это массивом?
и тут второй датчик сработал. как сделать 01000000 ? или это пусть будет два байта в памяти, и туда сделать добавление? А потом эти два байта с памяти просто считывать как хекс, вставлять в отправляемую строку и все? А как тогда делать добавление сработки датчика 2 датчика 3 ? Здесь у меня знаний не хватает, но если где есть ардуиновские примеры, и наверное это имеет какоето общее навзвание? с удовольствием ознакомлюсь с информацией по вашей наводке.Всем заранее огромное спасибо за любые подсказки.
Что касается JSON - в нем сущности не собираются в единые строки сендером и не разбираются ресивером. Т.е. это можно, но смысла не имеет. Зачем иметь хэш-массив и не пользоваться его главным преимуществом - человеко-понятными индексами? Как будете к массиву-в-строке JSONPath применять, например?
Поэтому, каждому датчику - свой ключ и значение. Конечно, тут имеется оверхед. Но, с другой - имеется и инструментарий, готовые парсеры на серверной стороне.
Пример... сложно с планшета набивать. Что-то вроде {"sensorOneState": 1, "SensorTwoState": 3, ... }
Но, так как ваш вопрос для меня все еще абстрактен, совет мой очень обобщён.
К примеру, держим 8 датчиков 00000000, сделать это массивом?
нет, просто переменная типа byte
и тут второй датчик сработал. как сделать 01000000 ?
если второй датчик, то это будет 00000100 - биты считаются справа и начинаются c нулевого :)
А как тогда делать добавление сработки датчика 2 датчика 3 ?
b|=(1<<N); // добавление сработки датчика номер N
это называется битовые операции
да... я только что тоже в разных источникак вычитал - что мне нужны битовые операции.. итого - что для начала не сильно заумное почитать, с примерами и прочим?
нашел.. - http://codius.ru/articles/Arduino_битовая_арифметика_или_операции_над_битами
если в ардуино IDE , то есть упрощённый bitRead bitWrite только медленнее работает
Если бы Вы толком объяснили, что Вам нужно, то может там и без битовых операций можно обойтись.
Вам нужно из 16 битового числа сделать массив из 16 элементов с нулями и удиницами? Или, наоборот? Или что?
Если бы Вы толком объяснили, что Вам нужно, то может там и без битовых операций можно обойтись.
Вам нужно из 16 битового числа сделать массив из 16 элементов с нулями и удиницами? Или, наоборот? Или что?
если я прально понял,ТСу надо..допустим есть 2^n,n>0 кнопок подключенных к дуине ...состояние каждой 0 или 1.
ТС предлагает состояние этих кнопок помещать в переменную побитово. ,допустим 8 кнопок имеют состояние поочередное состояние 0 и 1 то есть 0b01010101 , то есть 85 ,то есть 0х55
далее ТС хочет сделать из 0х55 -> "55" ,подразумевая то что сервак принимая данные будет знать что "55" это 16-тиричная система в ASCII формате... то есть примит уже (минимум) 2 байта(а не 1 как на стороне дуины) и уже как то обработает...и желательно что вы таких вот 0х55 был массив
ТС,так ?
Да он сам себя запутает этими трансформациями.
напрашивается вывод, чтобы их отображать как 11110111 10101011 и т.д. потом в хекс преобразовывать.
хекс - FF,FA,AD - уже передается, сервер их успешно обрабатывает эти данные.
Передавать на внешнее устройство сбора информации хочу как HEX в масиве данных.
{FF,FA,AD,11,18,A1, и т.д...}
хочу вам открыть секрет
{FF,FA,AD,11,18,A1}
и
{BIN11111111, BIN11111010, BIN10101101, BIN00010001, BIN00011000, BIN10100001}
это одно и тоже! Нет никаких HEX DEC, для МК есть только BIN, всё остальное лишь вариант записи
напрашивается вывод, чтобы их отображать как 11110111 10101011 и т.д. потом в хекс преобразовывать.
хекс - FF,FA,AD - уже передается, сервер их успешно обрабатывает эти данные.
Передавать на внешнее устройство сбора информации хочу как HEX в масиве данных.
{FF,FA,AD,11,18,A1, и т.д...}
хочу вам открыть секрет
{FF,FA,AD,11,18,A1}
и
{BIN11111111, BIN11111010, BIN10101101, BIN00010001, BIN00011000, BIN10100001}
это одно и тоже! Нет никаких HEX DEC, для МК есть только BIN, всё остальное лишь вариант записи
все же между "00010001" ,"0x18","18", 18 , 00010001 разница есть .
напрашивается вывод, чтобы их отображать как 11110111 10101011 и т.д. потом в хекс преобразовывать.
хекс - FF,FA,AD - уже передается, сервер их успешно обрабатывает эти данные.
Передавать на внешнее устройство сбора информации хочу как HEX в масиве данных.
{FF,FA,AD,11,18,A1, и т.д...}
хочу вам открыть секрет
{FF,FA,AD,11,18,A1}
и
{BIN11111111, BIN11111010, BIN10101101, BIN00010001, BIN00011000, BIN10100001}
это одно и тоже! Нет никаких HEX DEC, для МК есть только BIN, всё остальное лишь вариант записи
да, похоже вы правы, я суть понял, осталось только проверить при передаче данных на сервак, спасибо за наводку, это для меня многое упростит.