08.05.2013, 14:44 | #1 |
Участник
|
Связь беспроводного ТСД с Axapta 3.0
Имеется информационная система Axapta версии 3.0, а так же имеется терминал сбор данных (ТСД) марки CipherLAB - 8770 с модулем Wi-Fi и работающий через компоненту CipherLabTCP.dll. Проблема в том что у меня навыков интегрирования беспроводного ТСД с Axapta имеется мало. И хотел бы узнать у пользователей данного форума, кто нито интегрировался беспроводной сканер CipherLab через компоненту CipherLabTCP.dll в информационной системе Axapta? Подскажите пожалуйста как программно правильно нужно связать Wi-Fi сканер через компоненту CipherLabTCP.dll с данной версией Аксапта?
|
|
08.05.2013, 18:47 | #2 |
Участник
|
Цитата:
1. Написать веб-службу. 2. Написать TCP-IP сервер. Для асинхронной работы ТСД и Axapta (куча ограничений, я бы не советовал): 1. Строите очередь заданий через файловую систему. 2. Строите очередь заданий через SQL. Могу предложить еще один вариант. Изврат, но на практике встречал рабочие решения: На ТСД устанавливается RDP-клиент. ТСД подключается к удаленному рабочему столу. Оттуда запускается аксапта и идет работа в аксапте. В аксапте скрываются все панельки когда идет запуск под пользователем с признаком ТСД. Все формы программируются специально для ТСД (жестко заданные размеры). |
|
08.05.2013, 19:04 | #3 |
Banned
|
А что именно за данные предполагается собирать на беспроводном терминале сбора данных (ТСД) марки CipherLAB - 8770 ?
|
|
08.05.2013, 21:15 | #4 |
Участник
|
Цитата:
- На складе будет находиться ТСД 8770 и уже есть точки доступа Wi-fi и даже сигнал проверяли, т.е. с Wi-fi и ТСД всё нормально. Суть такова: Кладовщик сканирует штрих-код на коробе с помощью данного сканера и в режиме on-line передаёт данные в ИС Аксапта затем ИС Аксапта получает эти данные, анализирует их и отправляет обратное сообщение сканеру приняты или не приняты данные, в сканкоде посоветовали использовать компоненту CipherLabTCP.dll именно через неё все беспроводные ТСД фирмы CipherLab работают. В аксапте программирую код на подключение к компоненте сначала инициализирую затем работаю как с ком объектами, но аксапта при подключении к этой компоненте выдаёт ошибку и уходит в режим восстановления. И хотел я узнать, может быть кто нито имел дело с ТСД фирмой CipherLab и компонентой для организации беспроводной передачи данных по компоненте CipherLabTCP.dll? И ещё я хотел бы узнать какие вариенты поддерживает аксапта 3.0: колбек, сообщение окну или эвент? данный вопрос относится к вопросу, как можно принять данные из компоненты CipherLabTCP.dll (если писать отдельное приложение для приёма данных из ТСД в Аксапту)
__________________
Axapta 3.0 SP6 Build 1951 Последний раз редактировалось ShkipeRR; 08.05.2013 в 21:27. |
|
08.05.2013, 21:37 | #5 |
Участник
|
Цитата:
Но чтобы писать не могли бы помочь разобраться что поддерживает Аксапта 3.0 колбек, сообщение окну или эвант? Просто данные из компоненты CipherLabTCP.dll можно сообщать ИС разными способами такими как колбеком, сообщение окну и эвент. И я хотел бы уточнить что Аксапта может поддерживать?
__________________
Axapta 3.0 SP6 Build 1951 |
|
09.05.2013, 11:52 | #6 |
Участник
|
Цитата:
Обойтись одним приложением не получится, т.к. на ТСД не поднимится COM Busines Connector - он скомпилирован под x86. |
|
09.05.2013, 17:09 | #7 |
Участник
|
Цитата:
Сообщение от _scorp_
Вам нужно писать две части - клиентскую и серверную. Серверная часть будет посредством COM Busines Connector взаимодействовать с Axapta и должна висеть на каком нибудь сервере. Серверная часть содержит набор методов для работы с аксаптой. Напрмер: зарезервировать товар, создать перемещение по списку товаров, разнести перемещение и т.д. Клиентская часть находится на ТСД. Клиентская часть работает с железом сканера (скачайте на сайте производителя SDK) и с серверной частью.
Обойтись одним приложением не получится, т.к. на ТСД не поднимится COM Busines Connector - он скомпилирован под x86. Из компании сканкод мне предложили получать данные из компоненты в Аксапту такими способами как колбек, эвент и сообщение окну. Тогда я правильно понимаю что эти способы в аксапте не получатся? Цитирую что сканкод предлагает чтобы соединить ТСД 8770 с аксаптой по беспроводной сети wi-Fi " Мы можем сообщать программе 3-мя способами: колбеком, сообщение окну и эвент (есть еще очередь сообщений, но я не встречал, чтобы данный механизм где-то использовался). Теоретически (да и практически тоже) мы можем реализовать все 3 (или 4) способа, но это не факт, что заработает в Акцапте. Ну и проверить мы не сможем. Мы сможем только написать программу на С++, которая будет данным способом общаться с компонентой. Сообщите, какой способ поддерживает Акцапта"
__________________
Axapta 3.0 SP6 Build 1951 |
|
09.05.2013, 18:00 | #8 |
Участник
|
|
|
10.05.2013, 14:16 | #9 |
Участник
|
Спасибо!!! А на будущее чтобы мне знать из этих способов что нито аксапта 3.0 поддерживает и где можно это посмотреть или почитать про эти 3 способа?
__________________
Axapta 3.0 SP6 Build 1951 |
|
10.05.2013, 19:51 | #10 |
Участник
|
Надо начала надо выкинуть терминалы и заменить их на нормальные . а потом софт на терминале плюс сервак коротый по COM и SQL с ахаптой .
У нас реализовано : продажы , покупка, движение по складу и тд и тп . всякии состояния склада с кучей логики. А если вы хотите остаца на этих терминалах , то пускай пушут прогу которая по HTTP с серваком общаеца. Всё тривиально . Но я посоветовал бы MS платформу ( прогеров куча , разработка быстрая и по деньгам норм , много документации , возможности не такие ограничаные ) . |
|
10.05.2013, 23:45 | #11 |
Участник
|
Цитата:
Цитата:
PHP код:
В общем, как мне представляется, с помощью оконных сообщений можно пусть не очень красиво и с использованием кучи оберток для функций Win32 API, но реализовать интеграцию на голом Х++, без написания дополнительных прослоек. Опять же, веселуха начнется в случае, когда на один хост с этой CipherLabTCPIP.dll начнут одновременно приходить данные от нескольких ТСД - это все надо будет разруливать внутри одной сессии Business Connector, крутящей цикл обработки оконных сообщений. На счет доступа по http и тривиальности реализации в этом случае - утверждение, как мне кажется, не вполне однозначное Вместо одной сессии с легкой реализацией хранения состояния и непростой реализацией разруливания параллельного доступа с нескольких ТСД получится, условно, куча stateless-сессий http с легким разруливанием параллельного доступа с нескольких ТСД, но с непростой реализацией хранения состояния каждой сессий. Плюс из http-сервера все равно надо будет дергать Business Connector. Впрочем, кому что удобнее. |
|
11.05.2013, 15:13 | #13 |
Участник
|
Ага, это мой вопрос сканкоду. Они хотятотдельную программу написать под аксапту и спрашивают какие методы лучше поддерживает аксапта 3.0, т.к. в для ИС Аксапта компания сканкод не разрабатывала отдельные приложения. Для 1С у них много примеров а для подключения Wi-Fi терминала для Аксапта у них нет примеров.
__________________
Axapta 3.0 SP6 Build 1951 |
|
11.05.2013, 15:16 | #14 |
Участник
|
Цитата:
Сообщение от gl00mie
Аксапта написана для работы под управлением виндов, поэтому если ее научить, то она сможет делать (для 3.0 - почти) все, что могут делать другие виндовые приложения, другой вопрос, насколько это будет трудоемко. С вариантом callback-функции могут возникнуть определенные сложности, потому что там необходимо, чтобы эта функция была скомпилирована с учетом определенных соглашений о вызовах (т.н. __stdcall). Под event'ом разработчики из Сканкода, видимо, понимают дергание обработчиков событий ActiveX-объектов, Аксапта это поддерживает, но нужно, чтобы сперва соотв. ActiveX-компонент кто-то написал. В этом смысле, наверно, вариант с обработкой оконных сообщений выглядит наиболее простым с точки зрения реализации на Х++. Пример реализации цикла обработки оконных сообщений можно посмотреть в \Classes\TableLookup_RU\waitAndSearch (по идее этот класс должен быть в 3.0, но сейчас проверить у меня нет возможности). Вкратце, в Windows есть окна, окна принимают сообщения, для которых организуется очередь, и есть callback-функции - обработчики оконных сообщений, в т.ч. обработчики по умолчанию, выполняющие большую часть рутинных операций; обработчики оконных сообщений также называют оконными функциями (Window Proc). Сообщение окну может быть помещено в очередь (для асинхронной обработки) либо может быть отправлено (для синхронной обработки с использованием прямого вызова оконной функции). Окна и оконные функции могут использоваться не только для отрисовки и реализации собственно окон (включая меню, кнопки и проч.), но и для сценариев интеграции, как в рассматриваемом случае. Обычно приложение организует цикл обработки оконных сообщений, который представляет собой нечто вроде:[php]while (GetMessage(&msg, NULL, 0, 0))
{ TranslateMessage(&msg); DispatchMessage(&msg); }
__________________
Axapta 3.0 SP6 Build 1951 |
|
13.05.2013, 08:50 | #15 |
Участник
|
|
|
13.05.2013, 09:41 | #16 |
Участник
|
К сожалению RDP нет, у него специальная операционная система от ChiperLab. Очень сильно похожа на операционную систему простых не Wi-Fi ТСД от ChipherLab, только дабавлены настройки под Wi-Fi ну и соответственно если ТСД не подключился к Wi-Fi, а именно к драйверу ТСД (под драйвером имею ввиду компоненту от компании сканкод ChipherLabTCP.dll), то на дисплее ТСД не появится нужная задача. Аксапта подключается к Драйверу но с ошибкой и сразу же уходит в аварийный режим и происходит автоматическое отключение ТСД ото драйвера, ну и соответственно автоматическая перезагрузка Axapta.
__________________
Axapta 3.0 SP6 Build 1951 |
|
13.05.2013, 15:11 | #17 |
Участник
|
Цитата:
А COM коннектор для 3.0 Вы даже не рассматриваете?
EVGL: извиняюсь, случайно отредактировал сообщение от virhundo вместо того, чтобы ответить. Последний раз редактировалось EVGL; 13.05.2013 в 15:56. |
|
|
За это сообщение автора поблагодарили: EVGL (1). |
13.05.2013, 16:58 | #18 |
Участник
|
я правильно понимаю, сторонняя программа-сервис будет осуществлять подключение к ТСД ну и основные функции будут в ней прописаны, в аксапте создавать обращение к данной программе-сервис, через Com будут данные поступать в AX, а далее сделать в AX анализ данных и обратно через COM подавать сообщение данной программе-сервис, а затем программа сервис отсылает сообщение на дисплей ТСД такой алгоритм будет?
__________________
Axapta 3.0 SP6 Build 1951 |
|
13.05.2013, 17:16 | #19 |
Banned
|
Не совсем. Обратно "подавать сообщение" вы не сможете. Вы можете только возвращать значение функции, вызванной сторонним приложением через COM.
|
|
13.05.2013, 17:29 | #20 |
Участник
|
Спасибо за ответ! Предположим что в программе-сервис организована такая функция, которая возвращает значение, обращается к ТСД и показывает на дисплее информацию. Тогда я правильно понимаю, если в аксапте прописать возвращаемое значение ну например возвращаемое значение слово "WORLD" и передать это слово программе-сервису, то по логике программа -сервис должна дать сигнал на ТСД и данное слово должно отобразиться на дисплее ТСД. Правильно я понимаю, так по логике должно получится?
__________________
Axapta 3.0 SP6 Build 1951 |
|