Получение координатных записей через COM
Приветствую, господа АвтоГРАФоды (водители АвтоГРАФ-а)!
Давно известно (судя по форуму), что данные можно получать из системы через COM. Жаль что документация где-то запрятана, но интернет тут помог - нашел доку страниц в 9-10, с описание COM-объектов, аналогичное этому: документация по OLE. Методом проб и ошибок таки вышло получить достать через COM текущие (последние) данные по группам и технике. А вот с историей прямо засада. Вытащил только "рейсы", а через них получил положение и скорость в точках (+время). Однако в доке видел TripCrdEntriesNum который, по логике, должен указывать на количество координатных записей которые (по логике) вытаскиваются через CrdEntryIndex = 1..TripCrdEntriesNum Но при попытке установить CrdEntryIndex выдается ошибка. Вот фрагмент схемы тестового алгоритма (данные по всей техники всех групп): Код:
числоГрупп = AG.GroupsNum; Вообще хочу вытащить показания сенсоров по точкам, в частности уровень топлива. |
Цитата:
|
Во-первых, Вы перепутали переменные:
Код:
колРейсов = AG.TripsNum; |
Цитата:
Если Вы представляете, как работает терминал, то должны знать, что координатные записи пишутся асинхронно с данными различных датчиков. Иными словами, координаты опрашиваются повременно или адаптивно (от изменения вектора скорости), а те же ДУТ-ы - по времени (но интервал задается отдельно) или адаптивно (по изменению уровня). Если бы в каждой точке писались абсолютно все значения всех датчиков - трафик вырос бы на два порядка. |
массивКоординатРейса = AG.TrackCrdsArray;
Это Вам не поможет, т.к. 1С не работает с такими штуками... Надо типа такого: Код:
колРейсов = AG.TripsNum; |
Цитата:
Цитата:
Код:
AG.TrackCrdsArray.Выгрузить() Но проблема даже не в этом, а в том что при попытке установить значение CrdEntryIndex для обхода списка AutoGRAPH отваливается. Ошибок я не вижу. Цитата:
Код:
AG = Новый COMОбъект("AutoGRAPH.AutoGRAPHAutomation"); Утром попробовал на чистой машине запустить обработку из пустой файловой базы с АвтоГРАФ-ом версии 4.0.6 с одной группой и 12 машинами (сразу после загрузки онлайновых данных). Отработало без ошибок. Помогло то ли что автограф на локальной машине отработал, то ли что база файловая и все работало с правами пользователя, то ли на чистой машине нет косяков с COM. Кстати, почему открывается окно программы ? Означает ли это что на сервере COM работать не будет (из-за того что будет вызвано из службы) из-за того что не сможет окно создать ? |
Цитата:
|
lefion, окно всегда будет а служба может запускаться от реального пользователя
|
Пробовал аналогично получить данные и на C# - на чистой машине отрабатывает, на моей нет.
Возможно что-то с COM у меня, а может что-то опять поломалось после очередной синхронизации в АвтоГРАФ-е. Кстати, скорость обработки не радует ни в 1С, ни в C# - долго выполняется обход Crd для рейсов. Я понимаю, что доходит до 10k элементов, и что это все таки COM, но тем не менее... Загрузка одного ядра АвтоГРАФом достигает 100%. При том что через AG.TrackCrdsArray (только координаты) достаются практически моментально (больше времени уходит на создание COM-соединения). Идея механизма обхода данных в целом неплохая, но пригодна только для не частого использования. Добавлено через 4 минуты Кстати, можно ли сразу обратиться у нужной технике, не перебирая все группы в поисках нужной ? Хотя бы по её коду, который выдаётся AG.CarDevice ( AG.CurrentCarDevice ) ? Добавлено через 9 минут И второй интересующий момент, это возможность достать координатные записи за период, не поделенные на рейсы. Ведь, как я понимаю, кроме рейсов есть ещё и "стоянки", и, возможно, координатные записи для них ? |
ТабТС - это табличка, где у меня выводится в 1С список ТС, чтобы пометить те, по которым выводить отчет. Код:
//************************************************************************************************************************************************************************ |
Цитата:
|
lefion, и вы не забывайте, что "выплюнуть" чисто массив координат - это одно - он уже есть в готовом виде, а записи типа CrdEntry... - это целый набор еще и дополнительных записей по самым разным параметрам, который формируется и рассчитывается для каждой координатной точки, а это совсем другое...
Если надо чисто координаты - пользуйтесь TrackCrdsArray И, еще: есть работа через файловые выгрузки, а не по каждой записи циклом - там тоже будет все быстро при больших объемах записей. Пользуйтесь. В конце концов DBF - "родной" для 1С-ки формат. |
На всякий случай - примеры (правда для 7.7, но там все аналогично).
|
CrdEntryXXX выдаёт данные датчиков в сыром виде, а в таком виде их можно получить ?
(как в "списке записей" в интерфейсе АвтоГРАФ) Добавлено через 2 минуты За примеры спасибо, попробую откопать 7.7 и посмотреть Добавлено через 12 минут PS Другими словами, интересует связка - точка (широта, долгота), время, баки Ну или по крайней мере - время + баки. Добавлено через 1 минуту В идеале конечно: точка (широта, долгота, скорость, направление), время, баки, датчики |
Цитата:
|
Другими словами проще сразу смотреть в сторону DBF ?
|
Цитата:
|
Цитата:
Правильнее использовать и то и то. Кроме того, в DBF выгружается существенно больше полей данных, чем через переменные. Описание DBF-файлов тоже можно найти в папке с документацией. |
lefion, а цель всего этого какая ???
|
Цитата:
Далее с выводом на этом же графике посещенных "геозон". Далее построение отчетов на основании этих данных. Помимо тех что можно вытащить из АвтоГРАФ-а через COM (рейсы, остановки, пропадание питания, заправки/сливы, включения датчиков). С отчетами из АвтоГРАФ, ещё нужно будет разобраться (не смотре ещё подробно, пробовал вытащить только список остановок). Я про функции TripEntriesListTypeName / TripEntriesListKindName и поля EntryXXXXX. Добавлено через 2 минуты В общем, общий смысл - отчетность, что бы скрины графиков из окно АвтоГРАФ не делать для вставки их в отчеты, ну и что бы иметь цифры этих графиков, если понадобится их дополнительно обработать. |
Цитата:
Модуль отчетов обладает очень большой функциональностью по обработке и выводу данных. В т.ч. собственные формы и обработчики на языках программирования прямо в шаблонах отчетов. Я уже не говорю, что это по тестам самый быстрый по выводу модуль отчетов. |
Да, но это отчеты непосредственно техники (и как я заметил, данные для них так же получаются через COM).
Другими словами это оторванные от остальной отчетности печатные данные непосредственно связанные с техникой. Отчеты не спорю, красивые, местами даже шустрые. Но, скажем так, данные в этих отчетах, лишь процент от необходимых. Причем цифры отчетов желательно иметь для ведения другой отчетности и т.д. Другими словами, в нашем случае логичнее использовать данные мониторинга в общей системе, чем что-то выдумать на основе другой специализированной системе... :) |
А чего Вам не хватает, если не секрет ?
|
Цифр...
Конкретно сейчас осталось вытащить показания уровня топлива, в привязке к точкам хотя бы по времени, раз уж вместе с ними эти данные не предоставляются в готовом виде. Вести у себя таблицы тарировки баков? Ну вижу смысла... Добавлено через 11 минут Как-то же в веб-интерфейсе АвтоГРАФа данные по уровню топлива для точек предоставляется, значит можно его вытащить, как значением с датчика так и в человеческом виде (в литрах). И в ReportsNet эти данные видимо то же вытаскиваются, по всей видимости по COM, потому как с открытой программой АвтоГРАФа отчет отваливается с ошибкой COM... Вопрос лишь, в как эти цифры получить?.. |
Цитата:
Я же Вам дал код и даже картинку скинул, где есть LLS1... Вы не смотрели ? |
Цитата:
|
Цитата:
Но описание этих данных меня как-то не натолкнуло на мысль о том что речь идет об уровне топлива... Добавлено через 7 минут Вариант с выгрузкой данных в DBF буду рассматривать в последнюю очередь. |
Ну... если Вы пишете ПО для какой-то отрасли, необходимо ориентироваться в терминологии этой отрасли...
У Вас датчики уровня какого типа на машинах ? |
Хм... да точно, омникомм-овские датчики уровня... :confused:
И все же уточню, LLS уже в литрах выдаётся ? |
нет, тарировачная таблица в ПО, и программа на компе переводит ацп в литры
|
Видимо я плохо спросил...
Хотел спросить: Значение LLS выдаваемое ПО через COM уже в литрах? Уже сам сравнив графики пришел к выводу что например значение LLS 523 это почти наверняка литры, а не вольты или что-то ещё (АЦП). Добавлено через 3 минуты Всем спасибо за помощь, было бы неплохо если в документации появится описание по использованию COM. Осталось на практике проверить будет ли работать COM на сервере из под сервера 1С, при том что под десктопным пользователем запущен АвтоГРАФ. Потому как локально приложение и COM не работают вместе... |
lefion, это АЦП.. Полный бак обычно 1023 или 4095 что зависит от вида и настроек датчика
Добавлено через 2 минуты Кроме того объем топлива в двух боковой машине будет суммой объемов показаний двух датчиков, или например в случае с двумя датчиками в баке половиной суммы показаний датчик. Здесь под показаниями я имею ввиду объем топлива |
lefion, Вы можете из ком-а как взять срые данные LLS1...8 так и пересчитанные в литры значение баков.
LLS1...8 - сырые данные АЦП FuelTank (или что то похожее) - перечитанные значения в литры, с учетом того, что в одном баке может быть несколько датчиков |
Цитата:
Раз первоначальное мой впечатление о том, что данные в LLS таки сырые, хотя и не вольты, то покажите где же искать литри... А то я уже в конец запутался... Добавлено через 2 минуты Есть конечно ещё
Но это в разрезе рейсов - на начало и конец, а хотелось бы в разрезе точек (точек рейсов, если не всех точек). Добавлено через 2 минуты И среди свойств COM объекта я не вижу ничего подобного... |
lefion, а этого помоему нет. Есть только заправки сливы и уровень на начало и конец какого то отрезка
|
Надо программисту вопрос задать есть ли там возможность взять топливо пересчитанное в литры? Может в инструкцию просто не включили.
|
Цитата:
Там по данному вопросу всё написано русским по-белому и даже без таких спецтерминов как LLS: P.S.: Я же писал уже, что через массивы и переменные мы можем выдать не все данные. Многие можно получить через файлы. Это было сделано из практических соображений и шло не столько от нас, сколько от тех, кто этими данными пользовался - для тех же отчетов и 1С-ников, которым, как выяснилось, не нужны были массивы, а нужны были файлы, которые потом они могли и обработать и в архив сохранить для истории. |
lefion, то Вы просите данные из таблицы "сырых данных", так вот Вам CrdEntryLLSx, то обработанные, отфильтрованные и приведенные к литрам - так надо брать другой тип данных (см. пост выше).
|
Цитата:
|
1) Инструкцию читал (из неё же и приводу отрывки)
2) Я изначально просил не сырые данные уровня топлива, потому сразу и не понял почему вы ссылаетесь на LLS, но решил что там все таки так нужные мне литры... 3) Выше я уже писал, что если есть способы кроме DBF, то они предпочтительнее (все таки выгрузить в файл, а потом считать его в любом случае накладнее чем получить через COM). |
Цитата:
|
Цитата:
|
Цитата:
Если использовать интерфейс АвтоГРАФ-HTTP2COM, то будет передаваться через HTTP в XML-формате. |
Цитата:
|
Цитата:
По крайней мере значение совпадет с тем что указано в столбце "Бак 1, л" в списке рейсов. Если ошибся, то извините, с приложением непосредственно не работаю, и на что указали на то и ориентируюсь. |
Цитата:
- данные по рейсам (в т.ч. уровни на начало и конец) - данные по заправкам и сливам (в т.ч. уровни на начало и конец) всё это разные наборы (массивы, таблицы) данных. |
Простите, а можно поподробнее о АвтоГРАФ-HTTP2COM...
Не слышал даже о HTTP2COM, не говоря уже о АвтоГРАФ-HTTP2COM... Это случайно не методы Web-интерфейса АвтоГРАФ ? |
HTTP2COM - это служба, которая устанавливается на компьютере с ПО АвтоГРАФ и позволяет получать данные с помощью HTTP-запросов к этой службе.
HTTP-запросы можно отсылать с удаленного компьютера в отличие от СОМ-запросов, которые работают только на том компьютере, на котором установлено ПО АвтоГРАФ. По сути это шлюз, которые преобразовывает HTTP-запросы в СОМ-запросы и СОМ-ответы в HTTP-ответы. |
А где скачать HTTP2COM ?
И что конкретно из себя представляет HTTP2COM - это приложение IIS или windows service ? Добавлено через 1 час 40 минут Или имеется введу это приложение HTTP2COM ? |
lefion, через запрос в техническую поддержку.
HTTP2COM - это служба Windows, устанавливаемая на компьютер с диспетчерским ПО АвтоГРАФ версий 3.х...4.х Это не то приложение, которое можно найти по данной Вами ссылке. |
Текущее время: 09:38. Часовой пояс GMT. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot