Closed GoogleCodeExporter closed 9 years ago
Вот библиотека для работы с весами, и
описание форматов файлов и протокола
обмена данными. Помогите пожалуйста
подключить , а то новые не охъота покупать
этих есть 6 штук.
Original comment by solodk...@gmail.com
on 11 Oct 2010 at 5:26
Attachments:
К сожалению я не знаю как осуществить
подключение весов с печатью этикетки к
Openbravo POS. Мне удавалось подключить только
весы передающие значение массы с весов на
компьютер, посмотрите TVESVR4149.
Original comment by svinin...@gmail.com
on 11 Oct 2010 at 6:30
А этикетки не обязательно печатать , надо
хотя бы их подключить так что бы они вес
передовали
Original comment by solodk...@gmail.com
on 11 Oct 2010 at 6:37
В прилагаемом Вами описании протокола я
такой команды не нашёл, если есть
возможность найдите описание протокола к
другим (не печатающим этикетки) весам
Масса-К и тогда можно будет попробовать эту
команду (если есть надежда что эту функцию
в Ваших весах вообще не убрали) к Вашей
модели весов.
Original comment by svinin...@gmail.com
on 11 Oct 2010 at 8:16
Вот все что нашел .Посмотрите еще и ВЫ на
сайте massa.ru может что полезное и найдете
Original comment by solodk...@gmail.com
on 11 Oct 2010 at 8:23
Посмотрите еще здесь ИНТЕРЕСНЫЙ САЙТ
scale-soft.com.
Original comment by solodk...@gmail.com
on 11 Oct 2010 at 8:24
Вот еще
Original comment by solodk...@gmail.com
on 11 Oct 2010 at 8:25
Просто конкретно для модельного ряда ВПМ я
не могу найти в описании возможности
получить вес по запросу с компьютера, там
везде идёт загрузка по PLU информации о
товаре в память весов.
Original comment by svinin...@gmail.com
on 11 Oct 2010 at 8:30
А у меня не ВПМ у меня ВП-15Т2
Original comment by solodk...@gmail.com
on 11 Oct 2010 at 8:35
на сайте scale-soft.ru написано вот что:
Драйверы могут использоваться как
COM-сервер для встраивания интерфейса весов
в Windows-приложения (1С, Delphi, C++Builder, Visual Basic, VB
Script, Visual C++ и др. - любая среда
поддерживающая OLE-автоматизацию).
Драйверы позволяют получить подробную
информацию о каждом этапе работы с весами.
Драйверы выполнены в едином интерфейсе,
благодаря чему для работы с любыми весами в
Вашем проекте, достаточно единожды
написать обработку использования драйвера.
Original comment by solodk...@gmail.com
on 11 Oct 2010 at 8:37
Именно ВП-15Т2 я не нашёл на сайте Масса-К. На
сайте scale-soft.ru сказано как это сделать через
их драйвер, проблема в том что я не знаю как
его внедрить в Openbravo POS.
Original comment by svinin...@gmail.com
on 11 Oct 2010 at 8:43
Так в том то и дело что я тоже не знаю, у вас
был опыт работы с весами , а у меня нет.
Может все таки попробуете что то сделать , а
то я вообще ничего не понимаю в этом.
Если существует драйвер то уже пол дела
сделано. Осталось только понять как
внедрить.
НУ ОЧЕНЬ НАДО!!!!
Original comment by solodk...@gmail.com
on 11 Oct 2010 at 8:48
Опыта по внедрению весов с печатью
этикеток у меня тоже нет :( Опыт есть по
подключению весов в обход системных
драйверов, команда на получения веса
подавалась напрямую через com-порт на весы
посмотрите как это делалось
http://code.google.com/p/openbravoposru/wiki/TVESVR4149
Для реализации поддержки в Вашем случае я
вижу два пути:
Первый. Написать обработчик через уже
имеющийся драйвер под Windows. Такой вариант
для фискального регистратора обсуждался в
Issue 5, делал не я и по этому помочь советом в
этом деле не смогу.
Второй. По описанию протокола написать
загрузчик (можно сказать драйвер) на
основании команд работающих с PLU
устройства напрямую. Дело это не простое,
но от чего следует "плясать" и на каких
принципах вести разработку можете
посмотреть на примере похожего по принципу
работу с Openbravo POS устройства
http://code.google.com/p/openbravoposru/wiki/MERCURY130.
Оба варианта будут требовать создания
специальной кнопки в меню справочника
Товары, по нажатию которой сведения (PLU и
название) о товарах будут передаваться на
весы, подобным образом сейчас сделана в
Openbravo POS поддержка ТСД Metrologic Scanpal 2 и ККМ
Меркурий-130.
Original comment by svinin...@gmail.com
on 11 Oct 2010 at 9:52
Появились у меня весы Масса-К и я начал их
интеграцию в Openbravo POS. Начал с простого
сделал снятие массы с весов МК А21
http://www.massa.ru/products/detail.php?ID=11 У Вас модель
старая может заработает, в новой модели ВПМ
точно не работает.
Изменения кода r461, в ветке /trunk
Original comment by svinin...@gmail.com
on 10 Apr 2011 at 4:22
Начал реализовывать загрузчик в весы
МассаК ВПМ_Ф, но упёрся в алгоритм расчёта
CRC-16. Вот его вариант идущий в инструкции к
весам:
word CRC16(word crc, byte *buf, word len)
{
word bits, k;
word accumulator, temp;
for( k = 0; k<len; k++ )
{
accumulator = 0;
temp = (crc>>8)<<8;
for( bits = 0; bits < 8; bits++ )
{
if( (temp ^ accumulator) & 0x8000 )
accumulator = (accumulator << 1) ^ 0x1021;
else
accumulator <<= 1;
temp <<= 1;
}
crc = accumulator^(crc<<8)^(buf[k]&0xff);
}
return crc;
}
Если по нему рассчитывать CRC для строки
байт:
0xF8, 0x55, 0xCE, 0x05, 0x00, 0x81, 0x01, 0x00, 0x00, 0x00
Должно получаться:
0x5B, 0x3F
Или для строки:
0xF8, 0x55, 0xCE, 0x05, 0x00, 0x41, 0x01, 0x00, 0x00, 0x00
CRC будет:
0xAC, 0x19
У кого есть соображения как это сделать
пишите, буду рад любой помощи в реализации
этого алгоритма.
Original comment by svinin...@gmail.com
on 13 Apr 2011 at 4:23
Вопрос по алгоритму расчёта CRC16 закрыт,
спасибо Николаю Зотову.
Основной проблемой для меня оказалось
представление в Java следующего условия:
В C (это в руководстве)
if( (temp ^ accumulator)& 0x8000 )
В Delphi (это вчера выпросил у производителя
весов)
if ((temp xor acc) and $8000)<>0
В Java (вариант Николая Зотова)
if (((temp ^ accumulator)& 0x8000) == 0x8000)
А в итоге алгоритм должен выглядеть так:
public static int CRC16(short crc, byte[] buf, int len, int tab) {
short bits;
short accumulator, temp;
for (int k = tab; k < len; k++) {
accumulator = 0;
temp = (short) ((crc >> 8) << 8);
for (bits = 0; bits < 8; bits++) {
if (((temp ^ accumulator) & 0x8000) == 0x8000) {
accumulator = (short) ((accumulator << 1) ^ 0x1021);
} else {
accumulator <<= 1;
}
temp <<= 1;
}
crc = (short) (accumulator ^ (crc << 8) ^ (buf[k] & 0xff));
}
return crc;
}
При отправке начальных значений:
short crc = 0;
byte[] bytes = {(byte) 0xF8, (byte) 0x55, (byte) 0xCE, 0x05, 0x00, 0x41, 0x01,
0x00, 0x00, 0x00};
int len = bytes.length;
int tab = 5;
Получаем результат:
0x3F, 0x5B
Который при записи в сообщения запроса
надо будет перевернуть.
Про задание tab, т.е. отступа в пять байт от
начала строки сообщения, узнал
непосредственно от производителя весов
(http://www.massa.ru/communication/forum/), жаль только это в
явном виде не написано в руководстве,
достаточно бы времени сэкономило в поиске
верного алгоритма.
Original comment by svinin...@gmail.com
on 14 Apr 2011 at 5:54
Первый прототип поддержки весов МассаК ВПМ
готов. Испытать можно так:
- обновить код до r475;
- в настройках в параметрах сканера выбрать
"massakvpm";
- указать порт подключения;
- включить весы и перезапустить программу;
- перейти в справочник товаров и нажать
кнопку "massakvpm";
- в появившемся диалоговом окне начать
загрузку товаров в весы.
Этот алгоритм работы предварительный,
позже выложу подробную статью.
Original comment by svinin...@gmail.com
on 18 Apr 2011 at 5:31
Всё закончил интеграцию весов МассаК ВПМ_Ф
в Openbravo POS. Финальный код в /trunk начиная с r477.
Пробуйте, как будет время напишу wiki-статью
по алгоритму работы в Openbravo POS.
Конечно ещё не всё работает гладко, нет
реакции на ошибки загрузки и т.п. Главное
что подключить весы с печатью этикетки к
Openbravo POS удалось. Чтобы как-то подытожить
эту тему проверьте код с моделью ВП-15Т2.
Для проверки пока надо выполнять условия:
товар должен быть с штрих-кодом вида 2201234 (220
это весовой префикс, 1234 это код PLU) и цена
товара должна быть без налога. Префикс
можно менять, но он должен быть одинаковым
и в весах и в PLU.
Original comment by svinin...@gmail.com
on 20 Apr 2011 at 6:50
В r493 добавил поддержку казахского языка.
Пока наверное с этими весами всё, до выхода
0.3.0 добавлять ничего не буду.
Проблемы в работе есть, но в основном они
связанные с не полной реализацией
алгоритма обмена. К следующей версии(если
успею может уже внутри 0.3.0 сделаю патч)
сделаю обработчик ответов получаемых от
весов. Для следующей версии также планирую
сделать выгрузку из весов по взвешенным
товарам, доступ к этой функции будет из
складских накладных, будет удобно
контролировать перемещение товаров из
весовой в торговый зал.
Всё это будет оформляться в новых темах, а
эту тему закрываю.
Если кто-то попробует выгрузить в весы
МАССА-К ВП-15Т2, пожалуйста сообщите
результат, так как я до сих пор не знаю
работает мой алгоритм с этими весами или
нет.
Original comment by svinin...@gmail.com
on 24 Apr 2011 at 6:58
Думал это был последний патч, оказалось ещё
кое-что надо было переделать в r497
Теперь в весы загружаются только товары с
кодами в 7 знаков и начинающиеся на
трёхзначный весовой код, задаваемый в
ресурсе <название-pos>/properties значением тега
<entry key="unitbarcode">, по-умолчанию задан весовой
код 220.
Для отладки кода добавлена функция
логирования отравляемых и принимаемых с
весов сообщений в виде последовательности
байт(hex-формат).
При начале загрузки товаров в весы
отправляется команда на проверку
состояния весов и только затем начинается
загрузка сообщений по товарам.
Original comment by svinin...@gmail.com
on 26 Apr 2011 at 5:39
Сейчас разбирался с весами и натолкнулся
на протокол именно для весов серии МассаК
ВП, как оказалось он кардинально
отличается от протокола для серии ВПМ. Так
как в начале этой темы был опубликован
протокол для ВПМ и я в данной теме развивал
работу в сторону реализации именно этого
протокола, считаю необходимым в этой теме
оставить только то, что касается весов
серии Масса-К ВПМ, а по поддержки весов
серии ВП создать новую тему Issue 132.
Также убрал всё программное обеспечение из
этой теме оно есть на сайте http://www.massa.ru/
Original comment by svinin...@gmail.com
on 29 Apr 2011 at 4:42
Original issue reported on code.google.com by
solodk...@gmail.com
on 11 Oct 2010 at 5:19