Блок отправки данных.

Помогите создать блок отправки данных.

Serjik
Рядовой
Сообщения: 43
Зарегистрирован: 18.02.2019{, 20:48}
Репутация: 0
Откуда: Россия
Имя: Сергей

Блок отправки данных.

#1

Сообщение Serjik » 14.12.2019{, 09:21}

Всем доброго! Искал, сам пробовал, не получается. :(
Нужен блок который бы отправлял данные 0x82, 0хF2, 0xC4... И что бы можно было можно добавлять или сокращать входы. Я так понял что 0хF2 отправляется как Char? То есть 2 элемента одним потоком за счет чего получается слитность... Пробовал по разному. Одним потоком все отправляет, без пробелов. Из за чего блок не понимает что от него хотят. Помогите создать блок! :smile469:
Нельзя мешать оборудованию работать, но иногда скучно жить! :smile390:

fsergei70
Капитан
Сообщения: 786
Зарегистрирован: 17.11.2015{, 20:36}
Репутация: 54
Имя: Сергей

Блок отправки данных.

#2

Сообщение fsergei70 » 14.12.2019{, 13:10}

Serjik писал(а):
14.12.2019{, 09:21}
0x82, 0хF2, 0xC4
А случайно не коды ли ASCII. В любом случае это обозначение 16 тиричной системы исчисления

Отправлено спустя 9 минут 4 секунды:
Попробуйте по таблице символов найти буквы которые соответсвтуют шеснадцатеричному значению ваших кодов. например
0x82 это просто запятая
0хF2 это маленькая русская буква т
0xC4 это заглавная русская Д
и так далее
вот одна из таблиц символов, и отправлять уже эти символы

https://istarik.ru/blog/programmirovanie/53.html

Аватара пользователя
Nikan
Майор
Сообщения: 1194
Зарегистрирован: 29.12.2016{, 00:49}
Репутация: 100
Откуда: москва

Блок отправки данных.

#3

Сообщение Nikan » 14.12.2019{, 14:02}

.
Последний раз редактировалось Nikan 24.03.2023{, 01:29}, всего редактировалось 1 раз.

Serjik
Рядовой
Сообщения: 43
Зарегистрирован: 18.02.2019{, 20:48}
Репутация: 0
Откуда: Россия
Имя: Сергей

Блок отправки данных.

#4

Сообщение Serjik » 15.12.2019{, 15:51}

fsergei70, Уж очень сложно.

Nikan, А в блоке как реализовать?

Отправлено спустя 9 минут 3 секунды:
Если туда вставлять стринг то на выходе билиберда.
Нельзя мешать оборудованию работать, но иногда скучно жить! :smile390:

fsergei70
Капитан
Сообщения: 786
Зарегистрирован: 17.11.2015{, 20:36}
Репутация: 54
Имя: Сергей

Блок отправки данных.

#5

Сообщение fsergei70 » 15.12.2019{, 16:17}

Вот еще вариант, возьмите калькулятор виндос, в режиме программист переведите числа в десятичный формат и подавайте эти значения на блок конвертации CHAR
Последний раз редактировалось fsergei70 15.12.2019{, 17:22}, всего редактировалось 1 раз.

Serjik
Рядовой
Сообщения: 43
Зарегистрирован: 18.02.2019{, 20:48}
Репутация: 0
Откуда: Россия
Имя: Сергей

Блок отправки данных.

#6

Сообщение Serjik » 15.12.2019{, 17:10}

fsergei70, Не понял вообще! Там один вход! А мне нужно 8 входов и один выход!
Нельзя мешать оборудованию работать, но иногда скучно жить! :smile390:

Аватара пользователя
Nikan
Майор
Сообщения: 1194
Зарегистрирован: 29.12.2016{, 00:49}
Репутация: 100
Откуда: москва

Блок отправки данных.

#7

Сообщение Nikan » 15.12.2019{, 17:31}

.
Последний раз редактировалось Nikan 24.03.2023{, 01:29}, всего редактировалось 1 раз.

Serjik
Рядовой
Сообщения: 43
Зарегистрирован: 18.02.2019{, 20:48}
Репутация: 0
Откуда: Россия
Имя: Сергей

Блок отправки данных.

#8

Сообщение Serjik » 16.12.2019{, 19:57}

Nikan писал(а):
15.12.2019{, 17:31}
если вы готовы переводить HEX в десятичный вид(хоть на калькуляторе), то с блоком помогу.

Переводить не проблема! Проблема понять как это работает да бы собрать действующий блок. Я как ни пытался, он шлет одним потоком.
Нельзя мешать оборудованию работать, но иногда скучно жить! :smile390:

Аватара пользователя
Nikan
Майор
Сообщения: 1194
Зарегистрирован: 29.12.2016{, 00:49}
Репутация: 100
Откуда: москва

Блок отправки данных.

#9

Сообщение Nikan » 17.12.2019{, 02:20}

.
Последний раз редактировалось Nikan 24.03.2023{, 01:29}, всего редактировалось 1 раз.

fsergei70
Капитан
Сообщения: 786
Зарегистрирован: 17.11.2015{, 20:36}
Репутация: 54
Имя: Сергей

Блок отправки данных.

#10

Сообщение fsergei70 » 17.12.2019{, 07:55}

Nikan писал(а):
17.12.2019{, 02:20}
как то так
А как приделать к этим блокам подсчет и передачу контрольной суммы

Отправлено спустя 1 минуту 2 секунды:
Лучше если бы у блоков был выход контрольной суммы.

aidar_i
Полковник
Сообщения: 3158
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 689
Откуда: Уфа
Имя: Айдар
Контактная информация:

Блок отправки данных.

#11

Сообщение aidar_i » 17.12.2019{, 08:22}

Если сделать конвертер

https://github.com/benrugg/Arduino-Hex- ... Conversion

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

Блок отправки данных.

#12

Сообщение Sancho » 17.12.2019{, 11:46}

aidar_i, Айдар, ради интереса посмотрел по ссылке - тот ещё писатель кода, я правда тоже...
Код тяжёлый, время-тормозящий, с масштабированием вместо одной функции математики.
Для примера:
СпойлерПоказать

Код: Выделить всё

//оригинал
unsigned int hexToDec(String hexString) {  
  unsigned int decValue = 0;
  int nextInt;  
  for( int i = 0; i < hexString.length(); i++) {    
 nextInt = int(hexString.charAt(i));
    if (nextInt >= 48 && nextInt <= 57) nextInt = map(nextInt, 48, 57, 0, 9);
    if (nextInt >= 65 && nextInt <= 70) nextInt = map(nextInt, 65, 70, 10, 15);
    if (nextInt >= 97 && nextInt <= 102) nextInt = map(nextInt, 97, 102, 10, 15);
 nextInt = constrain(nextInt, 0, 15);
    
 decValue = (decValue * 16) + nextInt;
  }  
  return decValue;
}
// лёгкое редактирование
unsigned int hexToDec(String hexString) {  
  unsigned int decValue = 0;
  int nextInt; 
	int abc =   hexString.length();		// вычислим один раз длинну строки, а не в каждой итерации цикла :)
  for( int i = 0; i < abc; i++) {    
 nextInt = int(hexString.charAt(i));
    if (nextInt >= 48 && nextInt <= 57) nextInt -=48; // вместо  nextInt = map(nextInt, 48, 57, 0, 9);
    if (nextInt >= 65 && nextInt <= 70) nextInt -=50; // вместо  nextInt = map(nextInt, 65, 70, 10, 15);
    if (nextInt >= 97 && nextInt <= 102) nextInt -=80; // вместо  nextInt = map(nextInt, 97, 102, 10, 15);
 nextInt = constrain(nextInt, 0, 15);
    
 decValue = (decValue * 16) + nextInt;
  }  
  return decValue;
}
Только, честно, я так и не понял, каким образом ТС нужно отсылать данные - пакетом или поштучно, или ещё как...
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
Nikan
Майор
Сообщения: 1194
Зарегистрирован: 29.12.2016{, 00:49}
Репутация: 100
Откуда: москва

Блок отправки данных.

#13

Сообщение Nikan » 17.12.2019{, 14:46}

.
Последний раз редактировалось Nikan 24.03.2023{, 01:29}, всего редактировалось 1 раз.

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

Блок отправки данных.

#14

Сообщение Sancho » 17.12.2019{, 14:48}

Если последовательным, может тогда проще делать?
Использовать блок с одним serialwrite и подавать в цикле платы из массива.
Думаю, что проще и размер передачи проще менять.

Отправлено спустя 8 минут 56 секунд:
Nikan писал(а):
17.12.2019{, 14:46}
в флпроге проблема другая - нельзя числовую переменную записать ни в каком виде кроме десятичного.
иногда реально напрягает, особенно с битовыми операциями
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
Nikan
Майор
Сообщения: 1194
Зарегистрирован: 29.12.2016{, 00:49}
Репутация: 100
Откуда: москва

Блок отправки данных.

#15

Сообщение Nikan » 17.12.2019{, 15:25}

.
Последний раз редактировалось Nikan 24.03.2023{, 01:29}, всего редактировалось 1 раз.

Serjik
Рядовой
Сообщения: 43
Зарегистрирован: 18.02.2019{, 20:48}
Репутация: 0
Откуда: Россия
Имя: Сергей

Блок отправки данных.

#16

Сообщение Serjik » 19.12.2019{, 20:05}

Nikan, Спасибо! Буду пробовать собирать схему. Блок универсален получился! Можно как для авто использовать, так и для контроллеров как в моем случае. ПРО-МИКРО и некстион 2.4 в полне сносно будет! Даже на некстион я смогу числа вводить, что упрощает все действие! Принимать мне ни чего не надо, надо только отправить команду на исполнение. А вот на счет авто надо подумать. Там еще и прием нужен...
Нельзя мешать оборудованию работать, но иногда скучно жить! :smile390:

Аватара пользователя
Nikan
Майор
Сообщения: 1194
Зарегистрирован: 29.12.2016{, 00:49}
Репутация: 100
Откуда: москва

Блок отправки данных.

#17

Сообщение Nikan » 20.12.2019{, 16:21}

.
Последний раз редактировалось Nikan 24.03.2023{, 01:28}, всего редактировалось 1 раз.

Аватара пользователя
nickoass
Рядовой
Сообщения: 42
Зарегистрирован: 26.02.2017{, 20:13}
Репутация: 2
Откуда: Киров

Блок отправки данных.

#18

Сообщение nickoass » 18.02.2020{, 23:09}

Nikan писал(а):
17.12.2019{, 02:20}
Serjik писал(а):
16.12.2019{, 19:57}
Переводить не проблема! Проблема понять как это работает да бы собрать действующий блок. Я как ни пытался, он шлет одним потоком.
как то так Serial Write.flp
А можно добавить в блок отправку переменных String ?

Аватара пользователя
Nikan
Майор
Сообщения: 1194
Зарегистрирован: 29.12.2016{, 00:49}
Репутация: 100
Откуда: москва

Блок отправки данных.

#19

Сообщение Nikan » 19.02.2020{, 00:35}

.
Последний раз редактировалось Nikan 24.03.2023{, 01:43}, всего редактировалось 1 раз.

Аватара пользователя
nickoass
Рядовой
Сообщения: 42
Зарегистрирован: 26.02.2017{, 20:13}
Репутация: 2
Откуда: Киров

Блок отправки данных.

#20

Сообщение nickoass » 19.02.2020{, 09:52}

Nikan писал(а):
19.02.2020{, 00:35}
nickoass писал(а):
18.02.2020{, 23:09}
А можно добавить в блок отправку переменных String ?
а для чего? обычный вариант же есть - отправка в UART
Например, для отправки АТ команд. Со стандартным блоком Отправка в UART, есть ряд проблем.

Ответить

Вернуться в «Помогите, а то я "нимагу"»