[ОТВЕТИТЬ]
Опции темы
30.09.2013 12:58  
OlegON
Кто-нибудь пробовал расковыривать механизм загрузки весов Супермага с целью подмены этого самого механизма? Ну типа грузятся DIGI, вырываем, клеим подмену, грузятся какие-то другие?
 
03.10.2013 13:43  
mighty
Ну механизм сам скрыт внутри DLL насколько я понимаю.
Как вариант, можно посадить хук на кнопки загрузки весов и по нажатию вызывать самописную процедуру Оракла, которая будет вызывать заполнение файла с данными и потом сама запускать собственный загрузчик.
 
03.10.2013 13:54  
OlegON
Я уже думал над этим, правда не на кнопку загрузки весов, что замучаешься баги ловить, а в меню пункт встроить... Но все равно, это путь очень корявый и костылистый...
 
03.10.2013 15:16  
grannie
К тому же, я не очень понимаю, чем это сильно поможет: протоколы загрузки разных весов космически далеки друг от дружки. Узнавание, какие команды уходят в диджи, не даст нам ровным счётом ничего при попытке подцепить иные весы, там всё по-другому.
 
03.10.2013 15:18  
OlegON
Я предполагаю, что в DLL уходит список товаров с командой "Загрузить" или вообще одна команда, вряд ли основной модуль содержит команды под каждые весы, это было бы архитектурной ошибкой.
 
03.10.2013 16:49  
mighty
А если написать свою DLL, использующую драйвер для другой марки весов и подменить стандарную? Так пробовал Олег?
 
03.10.2013 16:52  
OlegON
О том и речь идет, что расковыривать все эти интерфейсы, еще с учетом версионности Супермага, это, мне кажется, нетривиальная задача. Но не пробовал, потому и спрашиваю.
 
03.10.2013 16:56  
mighty
Вот билбиотека 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  
OlegON
Ожидаемо. Но уверен, что с кучей подводных камней. Если интересно, могу предоставить финансируемую задачу. Но это уже по Контактам вверху.
 
03.10.2013 17:02  
whitewizard
Тогда уж лучше писать универсальный драйвер, который будет данные забирать с супермага и выгружать в любые весы.
 
 


Опции темы



Часовой пояс GMT +3, время: 19:06.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.