1

Математические операции для обработки данных с терминала

Тема: Математические операции для обработки данных с терминала

Всем добрый день.
При работе с терминалом  возникла такая задача, как всегда не успеваем делаем все как можно быстрее в надежде, что сервер сможет обработать данные.
Так вот в чем задача:
Терминал присылает восьми битные теги, сервер эти значения показывает в десятеричной системе счисления.
Для тех кто не понимает как это пример -
255 это 11 11 11 11
128 это 10 00 00 00
1 это 00 00 00 01
Бывает приходят и 16 и 32 битные числа.
Вопрос есть на сервере функции сдвига байтов?
<< and >>?
Или функция, чтобы я мог из 8,16,32 байт выбирать один или группу.
Пример для понимания, в тег CANR_0 приходит 8 битное число, и у меня каждый байт это отдельное событие, например для BMW X6

10 00 00 00 - 128 - ### -
01 00 00 00 - 64 - ### -
00 10 00 00 - 32 - Открыта дверь водителя
00 01 00 00 - 16 - Открыта дверь пассажира
00 00 10 00 - 8 -Открыта задняя левая дверь
00 00 01 00 - 4 -Открыта задняя правая дверь
00 00 00 10 - 2 - Открыт капот
00 00 00 01 -1 - Открыт багажник
00 00 00 00 - 0 - Все закрыто

Как мне выделять бит, а не весь байт в виалоне?

Дмитрий, +7 983 250 2097, https://trekberry.ru
urbannova(собака)yandex.ru
YOUTUBE канал, где много всего полезного https://www.youtube.com/channel/UCTYLLm … CKb2GYq0eA
Teltonika. GalileoSky, ADM, Mielta, GPSMatker, Starline, и другие которые вообще могут хоть как то работать
2

Математические операции для обработки данных с терминала

(13/12/2019 10:37:52 отредактировано SanderAMC)

Re: Математические операции для обработки данных с терминала

Элементарно. (С)
Функций сдвига на Виалон нет. Точнее, вы можете "сдвигать" число путем умножения / деления на степени 2. Но это принципиально мало что дает.

Вы можете оперировать любым число побитово.  CANR_0:1 - первый бит справа, багажник,  CANR_0:2 - второй бит справа, капот; и т.д. А дальше собирайте их в нужную последовательность через умножение на 1, 2, 4 и т.д.

Да, нумерация в Виалон с 1, хотя для любого программиста - с 0; не перепутайте. smile

Собственно, это все в документации есть. https://docs.wialon.com/ru/hosting/cms/ … parametrov

3

Математические операции для обработки данных с терминала

Re: Математические операции для обработки данных с терминала

SanderAMC пишет:

Элементарно. (С)
Функций сдвига на Виалон нет. Точнее, вы можете "сдвигать" число путем умножения / деления на степени 2. Но это принципиально мало что дает.

Вы можете оперировать любым число побитово.  CANR_0:1 - первый бит справа, багажник,  CANR_0:2 - второй бит справа, капот; и т.д. А дальше собирайте их в нужную последовательность через умножение на 1, 2, 4 и т.д.

Да, нумерация в Виалон с 1, хотя для любого программиста - с 0; не перепутайте. smile

Собственно, это все в документации есть. https://docs.wialon.com/ru/hosting/cms/ … parametrov

Сегодня же попробую!
Но операцию сдвига нужно сделать, а лучше возможность цепочки формул.

Дмитрий, +7 983 250 2097, https://trekberry.ru
urbannova(собака)yandex.ru
YOUTUBE канал, где много всего полезного https://www.youtube.com/channel/UCTYLLm … CKb2GYq0eA
Teltonika. GalileoSky, ADM, Mielta, GPSMatker, Starline, и другие которые вообще могут хоть как то работать
4

Математические операции для обработки данных с терминала

Re: Математические операции для обработки данных с терминала

А мне необходима "логическая побитовая И". Например, от терминала в 32х битах передаётся закодированное состояние разных агрегатов. Из них с 1 по 4 биты - состояние первого агрегата. Приходится писать param:4*const8+param:3*const4+paranm:2*const2+param:1.

5

Математические операции для обработки данных с терминала

Re: Математические операции для обработки данных с терминала

Да, когда надо выделить несколько произвольных бит в числе, приходится побитово выделять и собирать. Реализуемо, но неудобно.

6

Математические операции для обработки данных с терминала

(16/12/2019 10:05:32 отредактировано duig)

Re: Математические операции для обработки данных с терминала

BoolAB пишет:

А мне необходима "логическая побитовая И".

Это валидация 'Математическое И'.
Например, чтобы выделить биты с 1 по 4, попробуйте валидацию по датчику с параметром const15 (т.к. 15 (decimal) = 1111 (binary)).

Developer
Gurtam
7

Математические операции для обработки данных с терминала

Re: Математические операции для обработки данных с терминала

Да, сложновато тут с математикой)))
Ладно хоть так работает, а можно например использовать формулы и вписывать из двух и трех тегов или просто например складывать значения.

Дмитрий, +7 983 250 2097, https://trekberry.ru
urbannova(собака)yandex.ru
YOUTUBE канал, где много всего полезного https://www.youtube.com/channel/UCTYLLm … CKb2GYq0eA
Teltonika. GalileoSky, ADM, Mielta, GPSMatker, Starline, и другие которые вообще могут хоть как то работать