У клиента стоят два вида оборудования: BCE FMS500 StCAN и Navtelecom SMART S-23xx на объектах, на которых используется автоматическая привязка водителей.
Карта водителя прописана в следующем формате:
Navtelecom SMART присылает ID карты в том же виде - тут никаких проблем нет, водитель назначается автоматически:
Но когда водитель вставляет карту в машине, где установлен BCE FMS500 StCAN - ID приходит в другом формате, например:
При этом в настройках водитель прописан номер:
Поэтому нужно без создания второго водителя (дубля) привязать уже имеющегося по приходящему параметру.
Решение:
Сначала создается датчик-"маска", который принимает значение 16777215:
И эта "маска" применяется к приходящему параметру по правилу "математического "и":
Как это происходит математически при данной валидации:
1. переводим приходящий параметр 498216599586 в hex (шестнадцатеричную систему счисления) - получаем 7400060022:
2. применяя маску, оставляем от числа только 6 байт справа, то есть в итоге получаем 060022
3. переводим 060022 обратно в dec (десятичную систему счисления):
4. полученное значение - и есть ID водителя, прописанное в настройках:
Результат:
В итоге водитель назначится автоматически несмотря на приходящий "нестандартный" параметр.