Инструкция для программиста ПО Сервер Весы АВТО

advertisement
Руководство программиста
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;
Download