Den
Forum Member / Участник форума
Участник № / Member № 75
отправлено / posted
Ставлю опыты по доступу к Отчету Тревог через ODBC. В качестве клиента-ASP.NET. При запросе данных иногда происходит зацикливание отчета-размер фиксируется, данные пишутся с начала. Никакого управления отчетом с помощью каналов не используется. Подозреваю, что драйвер монополизирует доступ к файлу на время выборки данных, но не должен ли МРВ в этом случае ставить сообщения в очередь, почему происходит зацикливание?
Сообщения / Posts 51 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Не понял - в момент когда Ваш драйвер обращается к файлу ОТ МРВ начинает помещать записи с начала (то есть как бы зацикливает файл ОТ)? Я правильно понял? На С# пишите клиента? Если да, то можно попробовать через Interop Service подключиться к МРВ по COM-интерфейсу и по событию OnAlarm получать сообщения от МРВ в режиме реального времени, а файл подчитывать только на старте. Тогда не нужно будет постоянно к файлу обращаться, чтобы получать новые сообщения.
Сообщения / Posts 17321 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Den
Forum Member / Участник форума
Участник № / Member № 75
отправлено / posted
Совершенно верно.В первой строке отчета пишется CONTINUE и новые сообщения затирают старые. Драйвер стандартный Microsoft Text Driver (*.txt; *.csv)и цепляюсь к нему через ODBC.NET Data Provider. Клиент на VB.NET. Задача-простой просмотр отчета тревог с помощью Web браузера по выбранной дате.
Сообщения / Posts 51 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Это действительно так. Если Вы хотите считывать значения из ОТ, с которым в то же время работает и МРВ, то файл должен открываться в Share режиме и только на чтение. Скорее всего драйвер от Microsoft делает это иначе. Как я уже Вам сказал Выше - лучший выход, это организовать доступ к сообщениям МРВ через событие по СОМ-интерфейсу, а файл подчитывать только один раз при старте - в реальном времени остальные сообщения получать только через событие OnAlarm. А уже дальше передавать можно по любому интерфейсу. У меня есть пара небольших примерчиков на С# как взаимодействовать по СОМ-интерфейсам с сервером МРВ - думаю, что перевести их в VB.NET задача очень простая. Нужны?
Сообщения / Posts 17321 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Den
Forum Member / Участник форума
Участник № / Member № 75
отправлено / posted
Выслал два примера: 1) myTMConsole.rar - пример взаимодействия с МРВ в реальном времени. Обратите внимание на обрабочтик события МРВ TMServer_ItmEventClient_Event_OnEvent - в нем как раз принимаются сообщения для ОТ в реальном времени. 2) AlarmReader.rar - пример чтения файла ОТ с фильтрацией сообщений по годам, месяцам и дням. Сохранение ОТ в XML формат. Планировалось еще и экспорт по ODBC, но все нет времени...
Если функциональность обоих проектов объединить - возможно получится то, что Вам нужно.
Проекты эти не документированы, а также есть ошибки - но это всего лишь пробные варианты для испытаний, а не коммерческие продукты, поэтому строго не судите (что называется "as is"). А код достаточно простой - разобраться будет легко. Но если будут вопросы - спрашивайте, помогу.
Сообщения / Posts 17321 | Из / From: Россия
| IP / IP: IP адрес / IP address |
ilya
Forum Professor / Завсегдатай форума
Участник № / Member № 469