Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > Супермаг Плюс (Супермаг 2000)

Поддержка неподдерживаемых весов в Супермаге : Супермаг Плюс (Супермаг 2000)

23.11.2024 1:40


30.09.2013 12:58
Кто-нибудь пробовал расковыривать механизм загрузки весов Супермага с целью подмены этого самого механизма? Ну типа грузятся DIGI, вырываем, клеим подмену, грузятся какие-то другие?
03.10.2013 13:43
Ну механизм сам скрыт внутри DLL насколько я понимаю.
Как вариант, можно посадить хук на кнопки загрузки весов и по нажатию вызывать самописную процедуру Оракла, которая будет вызывать заполнение файла с данными и потом сама запускать собственный загрузчик.
03.10.2013 13:54
Я уже думал над этим, правда не на кнопку загрузки весов, что замучаешься баги ловить, а в меню пункт встроить... Но все равно, это путь очень корявый и костылистый...
03.10.2013 15:16
К тому же, я не очень понимаю, чем это сильно поможет: протоколы загрузки разных весов космически далеки друг от дружки. Узнавание, какие команды уходят в диджи, не даст нам ровным счётом ничего при попытке подцепить иные весы, там всё по-другому.
03.10.2013 15:18
Я предполагаю, что в DLL уходит список товаров с командой "Загрузить" или вообще одна команда, вряд ли основной модуль содержит команды под каждые весы, это было бы архитектурной ошибкой.
03.10.2013 16:49
А если написать свою DLL, использующую драйвер для другой марки весов и подменить стандарную? Так пробовал Олег?
03.10.2013 16:52
О том и речь идет, что расковыривать все эти интерфейсы, еще с учетом версионности Супермага, это, мне кажется, нетривиальная задача. Но не пробовал, потому и спрашиваю.
03.10.2013 16:56
Вот билбиотека SmScaleDIGIEthernet.dll
а вот её интерфейс загрузки
Код:
[
  uuid(373EB01A-0918-11D3-8649-0080AD509959), 
  helpstring("ISmScale Interface")
]
 interface ISmScale: IUnknown
{
  [
  helpstring("Start load scales")
  ]
  HRESULT _stdcall LoadScales([in] int aScaleCount, [in] int * aScales );
  [
  helpstring("Get progress and state of scales load process")
  ]
  HRESULT _stdcall GetProgress([out] int * aPercent, [out] BSTR * aOperation, [out] tagEScaleState * aState /*Warning: unable to validate structure name: */ );
  [
  helpstring("Abort loading")
  ]
  HRESULT _stdcall Abort( void );
  [
  helpstring("Get current scale state")
  ]
  HRESULT _stdcall GetScaleState([in] int aScale, [out] tagEScaleState * aState /*Warning: unable to validate structure name: */, [out] BSTR * aError );
  [
  helpstring("Get title of parameters  load scales page")
  ]
  HRESULT _stdcall GetParamLoadPage([out] BSTR * aTitle );
  [
  helpstring("Show parameters  page of load scales")
  ]
  HRESULT _stdcall ShowParamLoadPage([in] wireHWND aTabCtrl /*Warning: unable to validate structure name: */, [in] wireHWND aDlg /*Warning: unable to validate structure name: */ );
  [
  helpstring("Store Params in load scales page")
  ]
  HRESULT _stdcall StoreParams( void );
};
03.10.2013 17:00
Ожидаемо. Но уверен, что с кучей подводных камней. Если интересно, могу предоставить финансируемую задачу. Но это уже по Контактам вверху.
03.10.2013 17:02
Тогда уж лучше писать универсальный драйвер, который будет данные забирать с супермага и выгружать в любые весы.
Часовой пояс GMT +3, время: 01:40.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.