This is topic Квитирование иным способом in forum SIAD/SQL. Архивирование в TRACE MODE / SIAD/SQL. Data Logging in TRACE MODE at Форум TRACE MODE: техническая поддержка.
Как можно по-другому сквитировать события не через CTRL-ЛК мыши?
Если я, например, использую сенсорный монитор без клавиатуры. Мне бы подошли две кнопки: квитрование последнего события и квитирование сразу всех событий. Можно ли такое осуществить?
Posted by Romсheg (Участник № / Member № 3792) on :
Мы в своих проектах уже давно ушли от штатного квитирования сообщений в ОТ. Квитанцию делаем через отдельные каналы в проекте. В ОТ получается два сообщения - одно о событии, а второе о квитировании этого события. При таком методе гораздо нагляднее получается отследить последовательность событий в системе по журналу, чем высчитывать в уме сколько и чего произошло за то время, когда сообщение появилось, но еще не было квитировано, если использовать штатный механизм. Кроме того, при таком подходе гораздо удобнее реализовывать экраны для индикации событий и их квитанции, у нас это реализуется через индикаторы. Получается, что в Вашем варианте с сенсорными экранами - это именно то, что нужно! Будут вопросы - стучите мне в ICQ (206646106), помогу...
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Можно еще квитировать последнее сообщение по каналу с помощью 46 атрибута канала, путем посылки туда 3 или 4.
Posted by Romсheg (Участник № / Member № 3792) on :
2AdAstra Technical Support Объем буфера (количество записей), в котором система поиск "последнего сообщения" в ОТ осуществляет при таком квитировании не подскажете?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Объем буфера ограничен размером отчета тревог.
Posted by Romсheg (Участник № / Member № 3792) on :
А проверяли? Помнится в одном из моих проектов пришлось отказаться от такого механизма, как раз из-за ограничений.
Если ситуация уже поменялась, то я только рад!
Posted by Миханик (Участник № / Member № 3346) on :
А если мне нужно сразу квитировать все сообщения?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Зачем Вам квитировать сразу все сообщения? Оператор не будет даже смотреть, что произошло, а просто все квитирует?
Posted by Миханик (Участник № / Member № 3346) on :
Оператор просмотрит сообщения, но чтобы не жать по каждому сообщению проще сделать одну кнопку для квитирования сразу всех.
Способ квитирования по 46 атрибуту мне не подойдет, потому как у меня, например, есть канал класса Hex16, каждый бит которого отвечает за определенную аварию. То есть если я запишу туда 3 или 4, то квитируется только последнее произошедшее событие, а события произошедшие до этого остаются неквитированными.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Другого выхода нет, и не планируется.
Posted by VadimNN (Участник № / Member № 5312) on :
Тоже использую сенсорный монитор и столкнулся с проблемой квитирования в ОТ. Подскажите, может быть можно программно имитировать нажатие Ctrl?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Можно квитировать последнее сообщение по конкретному каналу в ОТ через атрибут 46 этого канала. Это можно реализовать как с экрана (в том числе и сенсорного), так и из программы.
Posted by VadimNN (Участник № / Member № 5312) on :
А как узнать какой канал нужно квитировать? и как квитировать предпоследнее сообщение? попробовал через 46 атрибут, остаются неквитированные сообщения в ОТ
Posted by VadimNN (Участник № / Member № 5312) on :
Нашел сам. В ТМ создаем программу типа ST и в ней подключаем внешнюю библиотеку user32.dll, как указано в справочной системе ТМ. В данной библиотеке задаем функцию keybd_event (тип возвращаемого значения <пусто>, соглашение о вызове stdcall, переменное число аргументов - no). У данной функции указываем 4 аргумента: bVk (unsigned char), bScan (unsigned char), dwFlags (unsigned long), dwExtraInfo (unsigned long).
Все аргументы не являются указателями. Затем в самой программе вызываем данную функцию: keybd_event (17,0,0,0);
17 - это десятичный код клавиши Ctrl.
После вызова программы квитировать в отчете тревог можно нажатием одной левой кнопки мыши.
Для того, чтобы "отжать" клавишу Ctrl нужно вызвать функцию keybd_event с "2" в третьем аргументе: keybd_event (17,0,2,0);