Руководство программиста 1. Описание интерфейсов COM объекта “Сервер весов АВТО” Наименование объекта “ ServerVesy.DCOMVesy” – имя объекта сервера весов ID объекта LIBID_ServerVesy: TGUID = '{6D898D7A-F747-432D-9B23-33D2A05BF96A}'; IID_IDCOMVesy: TGUID = '{24D75938-7760-4E4B-ADA8-7EE8DF05E39A}'; DIID_IDCOMVesyEvents: TGUID = '{36E28BAC-C08D-4F56-BD8D-7632DCDA6789}'; CLASS_DCOMVesy: TGUID = '{91F5A392-51AA-4D99-9530-1BB785F166B1}'; //---------- Свойства объекта MASSA fSTABIL fBRUTTO fNETTO fLOW fHIGHT fZERRO FREQ NAMEVESY (WideString) - показания масса (Integer) (Integer) (Integer) (Integer) (Integer) (Integer) (Integer) (WideString) - флаг стабильности веса - флаг брутто - флаг нетто - флаг недогруз - флаг перегруз - флаг установка ноля веса - частота приема данных с блока раз/в сек - имя весов FCompleteVSV fEmulation MASSARESULT: STARTNULL PortEnable (Integer read) (Integer) (WideString) (WideString) (Integer) - флаг для сигнализации всем клиентам о взвешивании - флаг включен эмулятор - результат последнего взвешивания - значение массы перед заездом на пустые весы - флаг СОМ порт открыт StateProtokol (Integer) - возвращает код состояния весов 0 - 'Отключено.' 1 - 'Прием данных..Ok.' 2 - 'Нет данных с весов! Проверьте подключение к весам и настройки порта.' 3 - 'Ошибка открытия порта! Проверьте правильно ли выбран порт. Возможно порт занят другой программой.' 4 - 'Ошибка в принимаемых данных! Проверьте правильно ли выбран протокол обмена. Возможно неверны настройки порта.' 5 - 'Ошибка в определении значения МАССА! Проверьте правильно ли выбран протокол обмена. Возможно настройки протокола необходимо откорректировать.' 6 - 'ЭМУЛЯЦИЯ показаний веса! Прием данных отключен.' StateProtokolMess (WideString) - возвращает строку расшифровку состояния сервера весов //------- BLOB - фото с камер Cam1Bitmap Cam1Jpeg Cam2Bitmap Cam2Jpeg Cam3Bitmap Cam3Jpeg Cam4Bitmap Cam4Jpeg (OleVariant) (OleVariant) (OleVariant) (OleVariant) (OleVariant) (OleVariant) (OleVariant) (OleVariant) - получить BMP фото скриншот с камеры 1 - JPEG фото скриншот с камеры 1 - BMP фото скриншот с камеры 2 - JPEG фото скриншот с камеры 2 - BMP фото скриншот с камеры 3 - JPEG фото скриншот с камеры 3 - BMP фото скриншот с камеры 4 - JPEG фото скриншот с камеры 4 // ------ методы (процедуры) - установить ноль (на весовой индикатор посылается команда зануления, согласно протоколу, если такая существует ) SetNULL SetLogin (USER_BASA: WideString): Integer; SetLogout (USER_BASA: WideString) : Integer; - команда регистрирует в журнал событий приход пользователя - команда регистрирует в журнал событий уход пользователя SaveEvent s(Source: Integer; Desription: WideString; USER_BASA: WideString): Integer; Создает в фискальном журнале событий запись о дополнительном событии. Регистрация с текущим временем. Source - источник события 2 - Оператор 3 - Взвешивание 4 - Программа 5 - Администрирование Desription - описание USER_BASA- имя пользователя SetVsv (Massa: WideString; USER_BASA: WideString); Устанавливает флаг контроля, о том что взвешивание произведено. Необходима для правильного контроля за весами и управлением оборудованием (так, например, если эту функцию не использовать, то в журнале событий будет создаваться событие "незафиксированный проезд транспорта") Следующая за ней команда SetDocuments Massa– масса взвешенного груза USER_BASA– пользователь SetDocuments (.... 39 параметров типа WideString; Необходима для сброса на "Сервер весов" копии данных о взвешивании в журнал взвешиваний. Создает или обновляет в журнале взвешиваний запись о взвешивании с заполненными полями. Если GUID (уникальный идентификатор взвешивания) не найден создает новую запись, иначе обновляет существующую GUIDДокумента – уникальный идентификатор взвешивания, тип строка GUID. пример '{91F5A392-51AA-4D99-9530-1BB785F166B1}' Если <GUIDДокумента> пустой, создается при первой записи сервером 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; var NParam: Integer; var Value: WideString): Integer; Действие команды аналогично SetDocuments отличие в том что данной команду можно установить только один параметр документа взвешивания. Необходима для сброса на "Сервер весов" копии данных о взвешивании в журнал взвешиваний. Создает или обновляет в журнале взвешиваний одно поле записи о взвешивании. Если GUID (уникальный идентификатор взвешивания) не найден создает новую запись, иначе обновляет существующую GUID- уникальный идентификатор взвешивания; NParam– число, номер параметра от 1 до 38 Value– строка, значение установливаемого параметра 2. Алгоритм и рекомендации по внедрению “Сервер весов АВТО” Основные параметры весов и фото камер необходимо считывать и обновлять в непрерывно в цикле MASSA , fSTABIL, fBRUTTO, fNETTO, FREQ, Cam1Bitmap, Cam1Jpeg fLOW, HIGHT, fZERRO, Авторизацию и выход клиента отмечать SetLogin и SetLogOut Каждое взвешивание отмечать парой вызовов SetVsv и SetDocuments Каждое обновление документа взвешивания обновлять на сервере через SetDocuments. GUID в документе взвешивания должен сохраняться неизменным с момента создания. 3. Способы подключения объекта "Сервер весов АВТО" в программы Visual Basic Создание объекта с помощью функции CreateObject(class,[servername]) Пример подключения весов под номером 0: Set objDCOMVesy = CreateObject("ServerVesy.DCOMVesy") Label1.Caption = objDCOMVesy.MASSA Пример удаленного подключения весов: Set objDCOMVesy = CreateObject("ServerVesy.DCOMVesy, “192.168.1.10”); Label1.Caption = objDCOMVesy.MASSA 1C Предприятие 7.7 Подключение к весам в 1С рекомендуем делать не напрямую как в примере с Visual Basic, а через внешнюю компоненту AddInDCOMVesy.dll, которая позволяет производить обновление информации через внешнее событие ОбработкаВнешнегоСобытие (Источник = "AddInDCOMVesy") Примеры подключения (1С 7.7 и 8.0) с обработкой “ВесовоеТабло” выложены в дистрибутиве в папке .. \Examples 1C Предприятие 8.2 Подключение к весам в 1С рекомендуем делать не напрямую как в примере с Visual Basic, а через внешнюю компоненту Add1CServerVesy.dll, которая позволяет производить обновление информации через внешнее событие ОбработкаВнешнегоСобытие (Источник = "AddInDCOMVesy") //глВесы1 = Новый("AddIn.ServerVesy.Add1CServerVesy");// Примеры подключения с обработкой “ВесовоеТабло” выложены в дистрибутиве в папке. ..\ Examples Borland Delphi Подключение к интерфейсам объекта производим с помощью модуля ServerVesy_TLB.pas Пример подключения выложен в дистрибутиве в папке. ..\ Examples IDCOMVesyDisp = dispinterface ['{24D75938-7760-4E4B-ADA8-7EE8DF05E39A}'] property MASSA: WideString readonly dispid 1; property fSTABIL: Integer readonly dispid 3; property fBRUTTO: Integer readonly dispid 4; property fNETTO: Integer readonly dispid 5; property fLOW: Integer readonly dispid 6; property fHIGHT: Integer readonly dispid 7; property ED: WideString readonly dispid 2; property fZERRO: Integer readonly dispid 8; property FREQ: Integer readonly dispid 9; property ITOGMASSA: WideString readonly dispid 201; property NUMBOSY: Integer readonly dispid 202; property MASSAOSY1: WideString readonly dispid 203; property MASSAOSY2: WideString readonly dispid 204; property MASSAOSY3: WideString readonly dispid 205; property MASSAOSY4: WideString readonly dispid 206; property MASSAOSY5: WideString readonly dispid 207; property MASSAOSY6: WideString readonly dispid 208; property MASSAOSY7: WideString readonly dispid 209; property MASSAOSY8: WideString readonly dispid 210; property MASSAOSY9: WideString readonly dispid 211; property MASSAOSY10: WideString readonly dispid 212; property FStartOsy: Integer readonly dispid 213; property fOsyComplete: Integer readonly dispid 214; property NAMEVESY: WideString readonly dispid 215; property REGSTR: WideString readonly dispid 216; property FCompleteVSV: Integer dispid 217; property fEmulation: Integer readonly dispid 218; property Admin: Integer dispid 219; property MASSARESULT: WideString dispid 220; property STARTNULL: WideString readonly dispid 221; property fAutoEmulation: Integer dispid 122; property MASSAEmulation: WideString dispid 123; property GrafikVesa: OleVariant readonly dispid 124; property LenGrafikVesa: Integer readonly dispid 125; property GrafikTimeVesa: OleVariant readonly dispid 222; procedure SetNULL; dispid 223; property fSetNULL: Integer readonly dispid 224; property LenGrafikOsy: Integer readonly dispid 225; property GrafikOsy: OleVariant readonly dispid 226; property GrafikTimeOsy: OleVariant readonly dispid 227; property Skorost: WideString readonly dispid 228; property Cam1Bitmap: OleVariant readonly dispid 229; property Cam1Jpeg: OleVariant readonly dispid 230; property Cam1DateTime: WideString readonly dispid 231; property Cam1Freq: WideString readonly dispid 232; property Cam2Bitmap: OleVariant readonly dispid 233; property Cam2Jpeg: OleVariant readonly dispid 234; property Cam2DateTime: WideString readonly dispid 235; property Cam2Freq: WideString readonly dispid 236; property Cam3Bitmap: OleVariant readonly dispid 237; property Cam3Jpeg: OleVariant readonly dispid 238; property Cam3DateTime: WideString readonly dispid 239; property Cam3Freq: WideString readonly dispid 240; property Cam4Bitmap: OleVariant readonly dispid 241; property Cam4Jpeg: OleVariant readonly dispid 242; property Cam4DateTime: WideString readonly dispid 243; property Cam4Freq: WideString readonly dispid 244; property PortInBuff: Integer readonly dispid 245; property PortEnable: Integer readonly dispid 246; property DbName: WideString readonly dispid 247; property DBServerName: WideString readonly dispid 248; property StateProtokol: Integer readonly dispid 249; property StateProtokolMess: WideString readonly dispid 250; property StringReadPaket: WideString readonly dispid 251; function SetDocuments(var GuidCode: WideString; const DOC: WideString; const TYP_EVENT: WideString; const DATE: WideString; const TIME: WideString; const IDFIRMA: WideString; const FIRMA: WideString; const IDFIRMA_POL: WideString; const FIRMA_POL: WideString; const ID_PUNKT_OTPR: WideString; const PUNKT_OTPR: WideString; const ID_PUNKT_NAZN: WideString; const PUNKT_NAZN: WideString; const IDGRUZ: WideString; const GRUZ_NAME: WideString; const IDVoditel: WideString; const STRVODITEL: WideString; const DOC_NUMB: WideString; const DOC_DATE: WideString; const DOC_TARA: WideString; const DOC_BRUTTO: WideString; const DOC_NETTO: WideString; const IDMARKA_TS: WideString; const MARKA_TS: WideString; const NOMER_TS: WideString; const REGION_TS: WideString; const NOMER_PR: WideString; const REGION_PR: WideString; const USER_BASA: WideString; const TYP_TARA_NAME: WideString; const TARA: WideString; const DATE_TARA: WideString; const TIME_TARA: WideString; const TYP_BRUTTO_NAME: WideString; const BRUTTO: WideString; const DATE_BRUTTO: WideString; const TIME_BRUTTO: WideString; const NETTO: WideString; const ENABLE: WideString): Integer; dispid 252; function SetLogin(const USER_BASA: WideString): Integer; dispid 253; function SetLogout(const USER_BASA: WideString): Integer; dispid 254; function SaveEvents(Source: Integer; const Desription: WideString; const USER_BASA: WideString): Integer; dispid 255; procedure SetVsv(const Massa: WideString; const USER_BASA: WideString); dispid 256; function SetDocumentsParam(var GuidCode: WideString; NParam: Integer; const Value: WideString): Integer; dispid 257; function SetCommand(const HexCommand: WideString; PreTimeOut: Integer; PostTimeOut: Integer): Integer; dispid 258; property EnableTx: Integer dispid 260; function GetEventAfter(const cDateTime: WideString; out EventDateTime: WideString; out EventGuidCode: WideString): OleVariant; dispid 259; property UDVV_FREQ: Integer readonly dispid 261; property UDVV_PortEnable: Integer readonly dispid 262; property UDVV_PortInBuff: Integer readonly dispid 263; function UDVV_GetOut(Nbit: Integer): Integer; dispid 264; function UDVV_GetIn(Nbit: Integer): Integer; dispid 265; property SHIT1_FREQ: Integer readonly dispid 266; property SHIT1_PortEnable: Integer readonly dispid 267; property SHIT1_PortInBuff: Integer readonly dispid 268; property SHIT1_ID: WideString readonly dispid 269; property SHIT1_ID_Time: WideString readonly dispid 270; property SHIT2_FREQ: Integer readonly dispid 271; property SHIT2_PortEnable: Integer readonly dispid 272; property SHIT2_PortInBuff: Integer readonly dispid 273; property SHIT2_ID: WideString readonly dispid 274; property SHIT2_ID_Time: WideString readonly dispid 275; property flagReqDOPUSK1: Integer readonly dispid 276; property flagReqDOPUSK2: Integer readonly dispid 277; property ID_DOPUSK: WideString readonly dispid 278; property Time_ReqDOPUSK: WideString readonly dispid 280; property NomerTS_DOPUSK: WideString readonly dispid 282; procedure SetDOPUSK1(Value: Integer); dispid 284; procedure SetDOPUSK2(Value: Integer); dispid 285; property RegionTS_DOPUSK: WideString readonly dispid 279; property StateVesy: Integer readonly dispid 281; property fCam1RecognTS: Integer readonly dispid 283; property Cam1NumbTS: WideString readonly dispid 286; property Cam1RegTS: WideString readonly dispid 287; property Cam1DirectTS: Integer readonly dispid 288; property fCam2RecognTS: Integer readonly dispid 289; property Cam2NumbTS: WideString readonly dispid 290; property Cam2RegTS: WideString readonly dispid 291; property Cam2DirectTS: Integer readonly dispid 292; property fCam3RecognTS: Integer readonly dispid 293; property Cam3NumbTS: WideString readonly dispid 294; property Cam3RegTS: WideString readonly dispid 295; property Cam3DirectTS: Integer readonly dispid 296; property fCam4RecognTS: Integer readonly dispid 297; property Cam4NumbTS: WideString readonly dispid 298; property Cam4RegTS: WideString readonly dispid 299; property Cam4DirectTS: Integer readonly dispid 300; end;