Страница 1 из 2
Блок отправки данных.
Добавлено: 14 дек 2019, 09:21
Serjik
Всем доброго! Искал, сам пробовал, не получается.
Нужен блок который бы отправлял данные 0x82, 0хF2, 0xC4... И что бы можно было можно добавлять или сокращать входы. Я так понял что 0хF2 отправляется как Char? То есть 2 элемента одним потоком за счет чего получается слитность... Пробовал по разному. Одним потоком все отправляет, без пробелов. Из за чего блок не понимает что от него хотят. Помогите создать блок!

Блок отправки данных.
Добавлено: 14 дек 2019, 13:19
fsergei70
Serjik писал(а): 14 дек 2019, 09:21
0x82, 0хF2, 0xC4
А случайно не коды ли ASCII. В любом случае это обозначение 16 тиричной системы исчисления
Отправлено спустя 9 минут 4 секунды:
Попробуйте по таблице символов найти буквы которые соответсвтуют шеснадцатеричному значению ваших кодов. например
0x82 это просто запятая
0хF2 это маленькая русская буква т
0xC4 это заглавная русская Д
и так далее
вот одна из таблиц символов, и отправлять уже эти символы
https://istarik.ru/blog/programmirovanie/53.html
Блок отправки данных.
Добавлено: 14 дек 2019, 14:02
Nikan
.
Блок отправки данных.
Добавлено: 15 дек 2019, 16:00
Serjik
[ref]fsergei70[/ref], Уж очень сложно.
[ref]Nikan[/ref], А в блоке как реализовать?
Отправлено спустя 9 минут 3 секунды:
Если туда вставлять стринг то на выходе билиберда.
Блок отправки данных.
Добавлено: 15 дек 2019, 16:17
fsergei70
Вот еще вариант, возьмите калькулятор виндос, в режиме программист переведите числа в десятичный формат и подавайте эти значения на блок конвертации CHAR
Блок отправки данных.
Добавлено: 15 дек 2019, 17:10
Serjik
[ref]fsergei70[/ref], Не понял вообще! Там один вход! А мне нужно 8 входов и один выход!
Блок отправки данных.
Добавлено: 15 дек 2019, 17:31
Nikan
.
Блок отправки данных.
Добавлено: 16 дек 2019, 19:57
Serjik
Nikan писал(а): 15 дек 2019, 17:31
если вы готовы переводить HEX в десятичный вид(хоть на калькуляторе), то с блоком помогу.
Переводить не проблема! Проблема понять как это работает да бы собрать действующий блок. Я как ни пытался, он шлет одним потоком.
Блок отправки данных.
Добавлено: 17 дек 2019, 02:20
Nikan
.
Блок отправки данных.
Добавлено: 17 дек 2019, 07:56
fsergei70
Nikan писал(а): 17 дек 2019, 02:20как то так
А как приделать к этим блокам подсчет и передачу контрольной суммы
Отправлено спустя 1 минуту 2 секунды:
Лучше если бы у блоков был выход контрольной суммы.
Блок отправки данных.
Добавлено: 17 дек 2019, 08:22
aidar_i
Блок отправки данных.
Добавлено: 17 дек 2019, 11:46
Sancho
[ref]aidar_i[/ref], Айдар, ради интереса посмотрел по ссылке - тот ещё писатель кода, я правда тоже...
Код тяжёлый, время-тормозящий, с масштабированием вместо одной функции математики.
Для примера:
[spoiler]
Код: Выделить всё
//оригинал
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;
}
[/spoiler]
Только, честно, я так и не понял, каким образом ТС нужно отсылать данные - пакетом или поштучно, или ещё как...
Блок отправки данных.
Добавлено: 17 дек 2019, 14:46
Nikan
.
Блок отправки данных.
Добавлено: 17 дек 2019, 14:57
Sancho
Если последовательным, может тогда проще делать?
Использовать блок с одним serialwrite и подавать в цикле платы из массива.
Думаю, что проще и размер передачи проще менять.
Отправлено спустя 8 минут 56 секунд:
Nikan писал(а): 17 дек 2019, 14:46
в флпроге проблема другая - нельзя числовую переменную записать ни в каком виде кроме десятичного.
иногда реально напрягает, особенно с битовыми операциями
Блок отправки данных.
Добавлено: 17 дек 2019, 15:25
Nikan
.
Блок отправки данных.
Добавлено: 19 дек 2019, 20:05
Serjik
[ref]Nikan[/ref], Спасибо! Буду пробовать собирать схему. Блок универсален получился! Можно как для авто использовать, так и для контроллеров как в моем случае. ПРО-МИКРО и некстион 2.4 в полне сносно будет! Даже на некстион я смогу числа вводить, что упрощает все действие! Принимать мне ни чего не надо, надо только отправить команду на исполнение. А вот на счет авто надо подумать. Там еще и прием нужен...
Блок отправки данных.
Добавлено: 20 дек 2019, 16:21
Nikan
.
Блок отправки данных.
Добавлено: 18 фев 2020, 23:09
nickoass
Nikan писал(а): 17 дек 2019, 02:20
Serjik писал(а): 16 дек 2019, 19:57
Переводить не проблема! Проблема понять как это работает да бы собрать действующий блок. Я как ни пытался, он шлет одним потоком.
как то так Serial Write.flp
А можно добавить в блок отправку переменных String ?
Блок отправки данных.
Добавлено: 19 фев 2020, 00:35
Nikan
.
Блок отправки данных.
Добавлено: 19 фев 2020, 09:52
nickoass
Nikan писал(а): 19 фев 2020, 00:35
nickoass писал(а): 18 фев 2020, 23:09
А можно добавить в блок отправку переменных String ?
а для чего? обычный вариант же есть - отправка в UART
Например, для отправки АТ команд. Со стандартным блоком Отправка в UART, есть ряд проблем.