====== Возможности подключения к серверу (интерфейс DCOM объекта) ====== ===== 1. Описание интерфейсов COM объекта "Сервер Весы АВТО" ===== ==== Наименование объекта ==== **"ServerAuto.DCOMAuto"** – имя объекта сервера весов\\ **"ServerAuto.DCOMAuto1"** – имя объекта сервера весов 2 ==== ID объекта ==== %%LIBID_ServerAuto: TGUID = '{A6238C04-5CF6-4E18-AD86-FB088F8BF048}';%%\\ IID_IDCOMAuto: TGUID = '{67595465-7EFB-4ED7-9C06-32E5155F384E}';\\ DIID_IDCOMAutoEvents: TGUID = '{3B540925-B1CE-4EF1-BE8B-CF8412AD3713}';\\ CLASS_DCOMAuto: TGUID = '{60ACB611-29C9-495A-9392-F01E438030C1}';\\ CLASS_DCOMAuto1: TGUID = '{9316A3FD-5170-4089-A2C6-E9E93BB6EE67}'; ==== Основные свойства ==== ^ Имя ^ Возвращаемое значение ^ Описание ^ |**MASSA** | WideString | Показания массы | |**fSTABIL** | Integer | Флаг стабильности веса | |**FREQ** | Integer | Частота приема данных с блока, раз/сек | |**NAMEVESY** | WideString | Имя весов | |**FCompleteVSV** | Integer read | Флаг для сигнализации всем клиентам о взвешивании | |**fEmulation** | Integer | Флаг включен эмулятор | |**MASSARESULT** | WideString | Результат последнего взвешивания | |**STARTNULL** | WideString | Значение массы перед заездом на пустые весы | |**PortEnable** | Integer | Флаг СОМ порт открыт | |**StateProtokol** | Integer | Возвращает код состояния обмена с весовым индикатором:\\ 0 - 'Отключено.'\\ 1 - 'Прием данных..Ok.'\\ 2 - 'Нет данных с весов! Проверьте подключение к весам и настройки порта.'\\ 3 - 'Ошибка открытия порта! Проверьте правильно ли выбран порт. Возможно порт занят другой программой.'\\ 4 - 'Ошибка в принимаемых данных! Проверьте правильно ли выбран протокол обмена. Возможно неверны настройки порта.'\\ 5 - 'Ошибка в определении значения МАССА! Проверьте правильно ли выбран протокол обмена. Возможно настройки протокола необходимо откорректировать.'\\ 6 - 'ЭМУЛЯЦИЯ показаний веса! Прием данных отключен.' | |**StateProtokolMess** | WideString | Возвращает строку расшифровку состояния обмена с весовым индикатором | |**StateVesyName** | WideString | Возвращает строку расшифровку состояния весов | ==== Получить фото с камер ==== ^ Имя ^ Возвращаемое значение ^ Описание ^ |**Cam1Bitmap** | OleVariant | Получить BMP фото скриншот с камеры 1 | |**Cam1BitmapScale**(WidthScale: Integer; HeightScale: Integer) | OleVariant | Получить BMP фото по размеру | |**Cam1Jpeg** | OleVariant | JPEG фото скриншот с камеры 1 | |**Cam1JpegScale**(WidthScale: Integer; HeightScale: Integer) | OleVariant | Получить JPEG фото по размеру | |**Cam2Bitmap** | OleVariant | BMP фото скриншот с камеры 2 | |**Cam1BitmapScale**(WidthScale: Integer; HeightScale: Integer) | OleVariant | Получить BMP фото по размеру | |**Cam2Jpeg** | OleVariant | JPEG фото скриншот с камеры 2 | |**Cam2JpegScale**(WidthScale: Integer; HeightScale: Integer) | OleVariant | Получить JPEG фото по размеру | |**Cam3Bitmap** | OleVariant | BMP фото скриншот с камеры 3 | |**Cam3BitmapScale**(WidthScale: Integer; HeightScale: Integer) | OleVariant | Получить BMP фото по размеру | |**Cam3Jpeg** | OleVariant | JPEG фото скриншот с камеры 3 | |**Cam3JpegScale**(WidthScale: Integer; HeightScale: Integer) | OleVariant | Получить JPEG фото по размеру | |**Cam4Bitmap** | OleVariant | BMP фото скриншот с камеры 4 | |**Cam4BitmapScale**(WidthScale: Integer; HeightScale: Integer) | OleVariant | Получить BMP фото по размеру | |**Cam4Jpeg** | OleVariant | JPEG фото скриншот с камеры 4 | |**Cam4JpegScale**(WidthScale: Integer; HeightScale: Integer) | OleVariant | Получить JPEG фото по размеру | ==== Система распознавания номеров ==== ^ Имя ^ Возвращаемое значение ^ Описание ^ |**fCamRecognTS** | Integer | Флаг номер найден | |**CamNumbTS** | WideString | Строка с номером ТС (без региона) | |**CamRegTS** | WideString | Строка с регионом ТС | |**CamNumbPricep** | WideString | Строка с номером прицепа (без региона) | |**CamRegPricep** | WideString | Строка с регионом прицепа | ==== Управление устройством дискретного ввода/вывода УДВВ ==== ^ Имя ^ Возвращаемое значение ^ Описание ^ |**UDVV_FREQ** | Integer | Частота передачи пакетов с УДВВ | |**UDVV_PortEnable** | Integer | Свойство флаг COM порт с УДВВ открыт | |**UDVV_GetOut**(Nbit: Integer) | Integer | Получить значение выхода по номеру бита | |**UDVV_GetIn**(Nbit: Integer) | Integer | Получить значение входа по номеру бита | |**UDVV_SetOut**(NBit: Integer; Value: Integer) | - | Установить значение выхода по номеру бита | ==== Общие команды ==== ^ Имя ^ Возвращаемое значение ^ Описание ^ |**SetNULL** | - | Установить ноль (на весовой индикатор посылается команда зануления, согласно протоколу, если такая существует ) | |**SetLogin**(USER_BASA: WideString) | Integer | Команда регистрирует в журнал событий приход пользователя | |**SetLogout**(USER_BASA: WideString) | Integer | Команда регистрирует в журнал событий уход пользователя | |**SetVsv**(var GuidCode: WideString; const Massa: WideString; const USER_BASA: WideString) | - | Устанавливает флаг контроля, о том что взвешивание произведено. Необходима для правильного контроля за весами и управлением оборудованием (так, например, если эту функцию не использовать, то в журнале событий будет создаваться событие "незафиксированный проезд транспорта")\\ Следующая за ней команда **SetDocuments**\\ **GUIDCode** – уникальный идентификатор документа взвешивания, в котором производиться взвешивание. Если указывается пустое значение, сервер генерирует его сам.\\ тип строка GUID. пример '{91F5A392-51AA-4D99-9530-1BB785F166B1}'\\ **Massa** – масса взвешенного груза\\ **USER_BASA** – пользователь | ==== Команды для работы с журналом событий ==== ^ Имя ^ Возвращаемое значение ^ Описание ^ |**SaveEvents**(Source: Integer; Desription: WideString; USER_BASA: WideString) | Integer | Создает в фискальном журнале событий запись о дополнительном событии. Регистрация с текущим временем.\\ **Source** - источник события\\ 2 - Оператор\\ 3 - Взвешивание\\ 4 - Программа\\ 5 - Администрирование\\ **Desription** - описание\\ **USER_BASA** - имя пользователя | ==== Команды для работы с журналом регистрации взвешиваний ==== **SetDocuments (.... 39 параметров типа WideString;**\\ Данная команда необходима для сброса на "Сервер весов" копии данных о взвешивании в журнал взвешиваний. Создает или обновляет в журнале взвешиваний запись о взвешивании с заполненными полями. Если GUID (уникальный идентификатор взвешивания) не найден создает новую запись, иначе обновляет существующую\\ **GUIDДокумента** – уникальный идентификатор взвешивания, тип строка GUID. **Параметр переменная.**\\ Формат данных всех параметров строковый.\\ Пример **GUID**: '{91F5A392-51AA-4D99-9530-1BB785F166B1}'. Нужны фигурные скобки.\\ Пример **Даты**: '20.08.2016'\\ Пример **Времени**: '10:20:55'\\ Если пустой, создается при первой записи сервером Firebird, а затем возвращается как результат функции. Возвращает пустую строку если операция не удалась, иначе GUID - уникальный идентификатор взвешивания.\\ **SetDocuments**(\\ 0 - **GUIDДокумента** – **Параметр переменная.** Уникальный идентификатор взвешивания GUID.\\ 1 - **НомерДокумента** – Номер документа.\\ 2 - **ТипВзвешивания** – Строки - наименование типа взвешивания.\\ 3 - **ДатаДокумента** – дата документа.\\ 4 - **ВремяДокумента** – время документа.\\ 5 - **КодОтправителя** - код элемента справочника.\\ 6 - **Отправитель** – Наименование Отправителя.\\ 7 - **КодПолучатель** - код элемента справочника.\\ 8 - **Получатель** – Наименование Получателя.\\ 9 - **КодПунктОтправления** - код элемента справочника.\\ 10 - **ПунктОтправления** – наименование Пункта отправления.\\ 11 - **Код ПунктНазначения** - код элемента справочника.\\ 12 - **ПунктНазначения** – наименование Пункта назначения.\\ 13 - **Код Груз** - код элемента справочника.\\ 14 - **Груз** – Наименование Номенклатура.\\ 15 - **КодВодитель** - код элемента справочника.\\ 16 - **Водитель** – ФИО водителя.\\ 17 - **НомерНакладной** – строка НомерНакладной.\\ 18 - **ДатаНакладной** – Дата накладной.\\ 19 - **ТараПоДокументу** – тара по документу.\\ 20 - **БруттоПоДокументу** – брутто по документу.\\ 21 - **НеттоПоДокументу** – нетто по документу.\\ 22 - **Код МаркаТС** – код элемента справочника Марки ТС.\\ 23 - **МаркаТС** – наименование Марки ТС.\\ 24 - **НомерТС** – номер транспорта.\\ 25 - **РегионТС** – Гос.номер и регион ТС.\\ 26 - **НомерПрицепа** – Гос. Номер прицепа.\\ 27 - **РегионПрицепа** – регион прицепа.\\ 28 - **ИмяПользователя** – Строка. Имя пользователя.\\ 29 - **ТипТары** – Строка. Характер значения тары – “взвешивание”или “вручную”.\\ 30 - **ТАРА**– Строка. Целое число в килограммах.\\ 31 - **ДатаТарирования**.\\ 32 - **ВремяТарирования** – Строка масса тары, дата и время тарирования.\\ 33 - **ТипБрутто** – Строка. Характер значения брутто – “взвешивание”или “вручную”.\\ 34 - **БРУТТО**– Строка. Целое число в килограммах..\\ 35 - **ДатаБрутирования**.\\ 36 - **ВремяБрутирования** – Строка масса брутто, дата и время брутирования.\\ 37 - **НЕТТО** – Строка. Целое число НЕТТО в килограммах.\\ 38 - **флагУдален** – признак флага удален (‘1’ – удален, ‘0’ – не удален).\\ ) ^ Имя ^ Возвращаемое значение ^ Описание ^ | **SetDocumentsParam**(var GuidCode: WideString; const NameValue: WideString; const Value: WideString) | Integer | Действие команды аналогично **SetDocuments**, отличие в том, что данной команде можно установить только один параметр документа взвешивания.\\ Необходима для сброса на "Сервер весов" копии данных о взвешивании в журнал взвешиваний.\\ Создает или обновляет в журнале взвешиваний одно поле записи о взвешивании. Если GUID (уникальный идентификатор взвешивания) не найден, создает новую запись, иначе обновляет существующую\\ **GUID** - уникальный идентификатор взвешивания;\\ **NameValue** – имя устанавливаемого поля в таблице взвешиваний;\\ **Value** – строка, значение устанавливаемого параметра. | ===== 2. Способы подключения объекта "Сервер весов АВТО" в программы ===== ==== Visual Basic ==== Создание объекта с помощью функции **CreateObject**//(class,[servername])// Пример подключения Сервер Весы 1: Set objDCOMAuto = CreateObject("ServerAuto.DCOMAuto") Label1.Caption = objDCOMAuto.MASSA Пример подключения Сервер Весы 2: Set objDCOMAuto = CreateObject("ServerAuto.DCOMAuto1); Label1.Caption = objDCOMAuto.MASSA ==== 1C Предприятие 7.7 ==== Подключение к весам в 1С рекомендуем делать не напрямую как в примере с Visual Basic, а через внешнюю компоненту **//AddInVesyServer.dll//**, Описание в папке “Examples\_DLL (for 1C 77)” ==== 1C Предприятие 8.2 ==== Подключение к весам в 1С рекомендуем делать не напрямую как в примере с Visual Basic, а через внешнюю компоненту **//Add1CServerVesy.dll//**, которая позволяет производить обновление информации через внешнее событие **//ОбработкаВнешнегоСобытие//** (**//Источник//** = "Add1CServerVesy") Примеры подключения выложены в дистрибутиве в папке. ..\ **Examples** ===== 3. Алгоритм и рекомендации по внедрению “Сервер Весы АВТО” ===== Основные параметры весов и фото камер необходимо считывать и обновлять в непрерывно в цикле Используйте стандартные свойства: **MASSA , fSTABIL, fBRUTTO, fNETTO, FREQ, Cam1Bitmap, Cam1Jpeg, FCompleteVSV** После подключения и перед отключением применяйте команды:\\ Авторизацию и выход клиента отмечать **SetLogin** и **SetLogOut** Каждое взвешивание отмечать вызовом **SetVsv**\\ если эту функцию не использовать в момент взвешивания ТС, то в журнале событий будет создаваться событие "незафиксированный проезд транспорта" Если необходимо передавать взвешивание в дублирующий журнал то используем **SetDocuments**.\\ Каждое обновление документа взвешивания обновлять на сервере через **SetDocuments**.\\ GUID в документе взвешивания должен сохраняться неизменным с момента создания.