Я пытаюсь соответствовать следующей строки для интерфейса к системе безопасности:Извлечение определенных полей с помощью ключевых слов
*3824 04:57:04 24/02/16 ALARM(DC4) Input 1 (SI)Main Door Opened(DC2)
Пожалуйста, обратите внимание, что (DC4)
/(SI)
/(DC2)
это только визуальное представление символов ASCII так вход на последовательный порт будет представлять собой один байт, а не 4/5 байта.
Система будет непрерывно отправлять сообщения в том же формате, что и выше, и мне нужно будет проверить каждый из них и посмотреть, нужна ли ему дальнейшая обработка.
Слово ALARM - это мое ключевое слово, так что если в него приходит сообщение без ALARM, то я буду игнорировать его (MATCH Failed).
Если в сообщении появляется слово ALARM, то мне нужно получить местоположение события и перейти к другим слоям в моем приложении.
Образец 1 * 3824 4:57:04 24/02/16 ALARM (DC4) Вход 1 (SI) Main Door Открыт (DC2)
Пример 2 * 3824 04:57:04 24/02/16 АВАРИЙНЫЙ СИГНАЛ (DC4) Вход 2 (SI) Задняя дверь открыта (DC2)
Так что мне нужно извлечь все между символами (SI) и (DC2) ASCII в качестве строки для дальнейшей обработки.
Таким образом, сообщение 1 будет соответствовать «Main Door Opened», а Message 2 будет соответствовать «Back Door Open».
Другие слои в приложении затем извлекают эту строку из соответствующего поля Group #, если совпадение имеет успех.
Thanks,
Daniel.
Является ли слово «ALARM» всегда присутствующим? Каким должен быть формат выходной строки? –