Проблема с переменными !!!

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
zikkgaz24
Сержант
Сообщения: 132
Зарегистрирован: 26.08.2016{, 22:53}
Репутация: 0
Откуда: Красноярск

Проблема с переменными !!!

#1

Сообщение zikkgaz24 » 31.10.2017{, 01:21}

Суть такова использую библиотеку для радиопередачи и к сожалению эта библиотека может передовать только массив uint8_t  размер массива до 251 байта  т.е. размер передоваемых данных неплохой а вот ограничение на передачу только uint8_t портит все .
пока получилось передовать String  помог слиммпер но времени у него мало дальше как говориться сам 
но увы ничего внятного и конкретного в инете не могу найти 
Вопрос кто хорошо знает как это делать и кто покажет и расскажет как прийти к правильному решению 
 в первую очереть нужен тип int и float

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Проблема с переменными !!!

#2

Сообщение Sancho » 31.10.2017{, 08:34}

Как я понял, Вы хотите упаковать int и float в массив типа uint, передать, на другой стороне собрать обратно?
Пример в студию, не вижу больших сложностей.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

zikkgaz24
Сержант
Сообщения: 132
Зарегистрирован: 26.08.2016{, 22:53}
Репутация: 0
Откуда: Красноярск

Проблема с переменными !!!

#3

Сообщение zikkgaz24 » 31.10.2017{, 13:14}

нет не так повторюсь 
есть библиотека и она незнаю почему но написана так что передает переменную типа uint8_t и больше никак даже по логике переменная типа byte тоже самое но если обьявить байт ничего не передает 
вообще там получаеться массив uint8_t до 251 байта передачи одного пакета данных 
и по примерам этой библиотеки это unsigned char но и так переменную обьявлять толку нет 
я делаю пользовательские блоки для передачи данных сделан только один тип это String помог слиммпер 
это самое простое т.к. string раскладываеться побайтно в массив и они очень близки друг другу 
хочу сделать блоки для передачи флоат , также int , можно и все виды переменных сделать какие есть 
но копаясь по инету я немогу найти то что надо 
получаеться библиотека передает переменную обьемом 1 байт  uint8_t  
а вот например тот же int 2 байта и эту переменную нужно сначало перевести в массив а потом отправлять 
флоат 4 байта и тоже самое нужно перевести в массив uint8_t и потом отправлять 
вот с переводом этих переменных в массив uint8_t и проблема 
надо коды под каждую переменную и так чтоб получилось совместить с блоком пользователя

Добавлено (31.10.2017, 13:14)
---------------------------------------------


zikkgaz24
Сержант
Сообщения: 132
Зарегистрирован: 26.08.2016{, 22:53}
Репутация: 0
Откуда: Красноярск

Проблема с переменными !!!

#4

Сообщение zikkgaz24 » 31.10.2017{, 13:16}

вот пример

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Проблема с переменными !!!

#5

Сообщение Sancho » 31.10.2017{, 15:06}

Всё делается просто через указатели.
Объявляешь массив uint8_t с фиксированной размерностью.
Потом в него заносишь разобранные переменные в виде байтов в жёстко заданной последовательности, на другой стороне собираешь по такой-же последовательности.
Возьми примеры для 24С32 с интами и флоатами - сразу поймёшь идею, если что - помогу.
Последний раз редактировалось Sancho 31.10.2017{, 15:06}, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

zikkgaz24
Сержант
Сообщения: 132
Зарегистрирован: 26.08.2016{, 22:53}
Репутация: 0
Откуда: Красноярск

Проблема с переменными !!!

#6

Сообщение zikkgaz24 » 31.10.2017{, 15:11}

ок ща загружу

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Проблема с переменными !!!

#7

Сообщение Sancho » 31.10.2017{, 15:17}

Пример разборки по одному int и float
int int1;
float float1;

СпойлерПоказать
uint8_t data[6];
byte* ptr_array;
ptr_array =  (byte*)(& data);

*(ptr_array)=(* ((byte *)(& int1)));
*(ptr_array +1)=(* ((byte *)(& int1)+1));
*(ptr_array +2)=(* ((byte *)(&  float1 )));
*(ptr_array +3)=(* ((byte *)(&  float1 )+1));
*(ptr_array +4)=(* ((byte *)(&  float1 )+2));
*(ptr_array +5)=(* ((byte *)(&  float1 )+3));
Пример сборки

СпойлерПоказать
uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];
byte* ptrint;
ptrint =  (byte*)(&   int_out_1 );
*ptrint = buf[0];
*(ptrint+1) = buf[1];
ptrint =  (byte*)(&   float_1  );
*ptrint = buf[2];
*(ptrint+1) = buf[3];
*(ptrint+2) = buf[4];
*(ptrint+3) = buf[5];
P.S.   Я не программист!
Последний раз редактировалось Sancho 31.10.2017{, 15:21}, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

zikkgaz24
Сержант
Сообщения: 132
Зарегистрирован: 26.08.2016{, 22:53}
Репутация: 0
Откуда: Красноярск

Проблема с переменными !!!

#8

Сообщение zikkgaz24 » 31.10.2017{, 15:27}

так глянул 
и вот с этими операциями то и проблема у меня 
твои блоки для  еепром просто раскладывают переменные на byte  и записывают  и наоборот 
в моем случае byte  не канает только uint8_t
ну а как раскладывать и складывать я и не могу добиться вечно какие нибудь ошибки 
проще говоря я в этом ноль и не понимаю всю эту кашу

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Проблема с переменными !!!

#9

Сообщение Sancho » 31.10.2017{, 15:33}

Если, например, будут только инты, то создав массив будет ещё проще- циклом, меньше писанины!
Если блок "использовать в проекте один раз", то массив создать не в ПБ(польз. блок), а на плате, а в самом ПБ указать его название(массива) после предварительной компиляции в IDE - подсмотреть навание, или подправлять потом, перед компиляцией.

Добавлено (31.10.2017, 15:33)
---------------------------------------------
zikkgaz24 писал(а):и вот с этими операциями то и проблема у меня твои блоки для  еепром просто раскладывают переменные на byte  и записывают  и наоборот 
в моем случае byte  не канает только uint8_t
Чудак - человек. это УКАЗАТЕЛИ!!!
Они работают с ячейками памяти. Сначала раскладываем и записываем по адресам массива как байты, когда наступает очередь передачи они уходят как uint!!!!!!!!!!!!!
И наоборот при приёме!!!!!
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

zikkgaz24
Сержант
Сообщения: 132
Зарегистрирован: 26.08.2016{, 22:53}
Репутация: 0
Откуда: Красноярск

Проблема с переменными !!!

#10

Сообщение zikkgaz24 » 31.10.2017{, 16:47}

вот глянь блоки там мне слимпер помог со string
и он вынес конвертацию string в массив uint8_t в отдельную функцию за счет которой блоки отправки не продят один и тот же код
и мне как раз и надо
блоки отдельные для передачи\приема int
блоки передачи \ приема float
никаких смесей с разными переменными ненужно это и не удобно

Добавлено (31.10.2017, 16:05)
---------------------------------------------
вот блоки

Добавлено (31.10.2017, 16:08)
---------------------------------------------
блоки
так не крепяться

Добавлено (31.10.2017, 16:47)
---------------------------------------------
все на ура в пример вставил все пошло как надо теперь буду в функцию варганить
Последний раз редактировалось zikkgaz24 31.10.2017{, 16:53}, всего редактировалось 1 раз.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Проблема с переменными !!!

#11

Сообщение Sancho » 31.10.2017{, 16:56}

zikkgaz24 писал(а):все на ура в пример вставил все пошло как надо теперь буду в функцию варганить
Пожалуйста.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Проблема с переменными !!!

#12

Сообщение Слимпер » 31.10.2017{, 17:04}

Sancho, Может подскажет где популярно написано про указатели, несколько раз читал, так у меня в голове не как не укладывается.
А то читаю ваше Сообщение за номер 7, и хоть и догадываюсь как что там должно происходить но часть операторов понять не могу.

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

zikkgaz24
Сержант
Сообщения: 132
Зарегистрирован: 26.08.2016{, 22:53}
Репутация: 0
Откуда: Красноярск

Проблема с переменными !!!

#13

Сообщение zikkgaz24 » 31.10.2017{, 17:10}

Слимпер, тут код с указателями на память 
инфа в инете вся лежит только понять тяжело я сам все это читал и ни че не понял щас вот покозал и рассказал про код и что он делает и немного понял а так книгу нужно искать там вроде понятней всего написано 
вот ее и нет в инете

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Проблема с переменными !!!

#14

Сообщение Sancho » 31.10.2017{, 17:16}

Слимпер писал(а):Может подскажет где популярно написано про указатели
Для меня вот здесь показалось наиболее доходчиво, сам только учусь.
Надеюсь поможет.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Проблема с переменными !!!

#15

Сообщение Слимпер » 31.10.2017{, 17:20}

Sancho, спасибо, почитаю.

zikkgaz24
Сержант
Сообщения: 132
Зарегистрирован: 26.08.2016{, 22:53}
Репутация: 0
Откуда: Красноярск

Проблема с переменными !!!

#16

Сообщение zikkgaz24 » 31.10.2017{, 17:35}

интересная статейка я на нее чет не поподал

Ответить

Вернуться в «Спросить у знатоков»