Сообщения без ответов | Активные темы Текущее время: Пт апр 19, 2024 4:06 pm



Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 24 ]  На страницу 1, 2  След.
Штрих-Мини-К. Программирование через SharpDrv.dll в 1С. 
Автор Сообщение
Новичок

Зарегистрирован: Пн апр 27, 2015 3:00 pm
Сообщения: 24
Сообщение Штрих-Мини-К. Программирование через SharpDrv.dll в 1С.
Здравствуйте! Автоматизирую загрузку/выгрузку таблицы товаров из ККМ Штрих-Мини-К в 1С. Подключил через драйвер 1.6.0.62 (качал по ссылке одной из тем на форуме).
Осилил запись и чтение записей в таблице 1 "Товары", но возникает проблема - не всегда записываются (читаются) записи. Отслеживаю ECRMode - тут вобще не понимаю. При первоначальном подключении драйвера статус 0 (как я понял всё ок), при этом ОписаниеПодрежимаККМ = "Ошибок нет", ОписаниеРезультата = "Ошибок нет". Но откуда то постоянно появляются другие статусы, хотя вроде обрабатываю правильно. Особенно печально когда вылетает статус -3 (ошибка связи), но очень часто у меня устанавливается статус 255, что как бы тоже поидее не нормально. Делаю так. Начинаю записывать / читать:
1. Задаю номер таблицы: Драйвер.TableNumber = 1;
2. Читаю структуру таблицы: Драйвер.ПолучитьСтруктуруТаблицы();
3. Задаю ряд (в цикле): Драйвер.RowNumber = 1;
4. Считываю таблицу: Драйвер.ReadTable();
5. Для каждого поля от 1 по Драйвер.КоличествоПолей перезаписываю значения полей:
5.1. Например запись первого поля:
Драйвер.FieldNumber=1;
Драйвер.FieldType = 0;
Драйвер.FieldValue = Выборка.Цена*100;
Драйвер.GetECRStatus();
Если Драйвер.ECRMode = 0 ИЛИ Драйвер.ECRMode = 255 Тогда
Драйвер.WriteTable();
КонецЕсли;
5.2. ...
5.3. ...
5.4. ...

После того, как добавил проверку ECRMode у меня 10 записей обрабатываются около минуты..., а планируется обновлять все 1000 позиций ежедневно. А это - минимум час. :(
Подскажите пожалуйста, может я не так обрабатываю? Что это за потери связи и статус 255, когда ничего не предвещает беды и можно ли как-то ускорить процесс???
Заранее спасибо за любую помощь...


Пн янв 18, 2016 4:41 pm
Профиль
Новичок

Зарегистрирован: Пн мар 14, 2005 2:13 pm
Сообщения: 63
Сообщение Re: Штрих-Мини-К. Программирование через SharpDrv.dll в 1С.
Не совсем понятно зачем Вам нужна в данном конкретном случае обработка текущего режима ККМ (ECRMode)? если я правильно понял написанное Вами... В этом байте в команде "запрос состояния ККМ" выдается текущий режим, в котором находится ККМ. Вот возможные константы ответов ККМ:

0x05 //режим налогового инспектора
0x04 //режим программирования параметров
0x00 //технологический режим
0x07 //режим индикации и ввода времени
0x01 //режим регистрации
0x06 //режим отчетов ЭКЛЗ
0x02 //режим отчетов без гашения
0x03 //режим отчетов с гашением
0xFF //режим "ВЫБОР"

Быть может я конечно же и не о том. Может быть автор драйвера расскажет больше...

Теперь по поводу скорости работы, здесь тормоза явно не со стороны ККМ. Данный протокол, конечно не быстр по определению, потому что подразумевается возможность построения сети касс, но
Цитата:
10 записей обрабатываются около минуты
так точно работать не должно. В тесте драйвера ККМ (программа "Тест ККМ") есть возможность проверки скорости работы (в списке слева под номером 7). Команда посылается в ККМ и ожидается ответ в цикле, на экран выводятся средние результаты и количество ошибок, так же примерно в идеале должно получится и у вас.

Включите запись лога и проанализируйте ошибки, возвращаемые ККМ при обмене, или залейте его (лог) сюда, с подробным описанием того, что вы делаете в программе.

_________________
Разработчик ШТРИХ-МИНИ-К


Вт янв 19, 2016 1:27 am
Профиль WWW
Новичок

Зарегистрирован: Пн апр 27, 2015 3:00 pm
Сообщения: 24
Сообщение Re: Штрих-Мини-К. Программирование через SharpDrv.dll в 1С.
Цитата:
Быть может я конечно же и не о том. Может быть автор драйвера расскажет больше...

Значения этих статусов приводятся в руководстве к "Драйвер ККМ", скачанном с официального сайта, раздел "Коды ошибок", таблица "Коды ошибок драйвера, возвращаемые в свойствах", вот их перечень:
0 Ошибок нет
-1 Нет связи
-3 Порт недоступен
-5 Работа драйвера прервана пользователем
-6 Недопустимое значение
-7 Невозможно добавить устройство
-8 Невозможно удалить устройство
-9 Логическое устройство не найдено
-14 Порт занят другим приложением
-15 Ошибка CRC кадра
-16 Команда не найдена
-199 Неопознанная ошибка

Соответственно код ошибки -3 может означать то, что во время обработки прерывается связь... а что означает статус 255 мне вообще не ясно.
На счёт скорости записи - я пробовал повышать скорость, но это не даёт какого-то значительного результата. Основная задержка происходит при вызове метода WriteTable(), когда я записываю представление наименования товара... Т.е. поля цены и секции пишутся быстро (там мало символов и все они типа BIN), а поля названия и штрихкода пишутся подольше, что в итоге и приводит к такому времени обработки...

На счёт лога - всё как бы есть (прикрепляю свежий), но мне, если честно, интуитивно не понятно, что там происходит. Ранее когда сталкивался с программированием драйвера ФР, то ECRMode и его обновление методом всегда был самым достоверным показателем того, что происходит :)

P.S. на скорости 4800 почему-то отлично работает. На остальных постоянно обрывы связи...


Вложения:
Комментарий к файлу: свежий лог
SharpDrv.zip [42.61 КБ]
Скачиваний: 403


Последний раз редактировалось valeriy.c Вт янв 19, 2016 12:12 pm, всего редактировалось 1 раз.

Вт янв 19, 2016 9:18 am
Профиль
Новичок

Зарегистрирован: Чт мар 24, 2005 1:52 pm
Сообщения: 438
Откуда: ШТРИХ-М
Сообщение Re: Штрих-Мини-К. Программирование через SharpDrv.dll в 1С.
Добрый день.

Посмотрел лог.
Время выполнения команды - порядка 300 мс.
Для 1000 команд получится 5 минут, что много.
1. На какой скорости вы работаете? Нужно установить максимальную скорость.
2. Также можно установить последнюю версию драйвера:
https://cloud.mail.ru/public/8Sp1/Z6kdShVhG

_________________
С уважением,
Кравцов Виталий, программист
e-mail: kravtsov@shtrih-m.ru
(495) 787-60-90, добавочный 295


Вт янв 19, 2016 11:58 am
Профиль ICQ WWW
Новичок

Зарегистрирован: Пн апр 27, 2015 3:00 pm
Сообщения: 24
Сообщение Re: Штрих-Мини-К. Программирование через SharpDrv.dll в 1С.
Кравцов Виталий писал(а):
Добрый день.

Посмотрел лог.
Время выполнения команды - порядка 300 мс.
Для 1000 команд получится 5 минут, что много.
1. На какой скорости вы работаете? Нужно установить максимальную скорость.
2. Также можно установить последнюю версию драйвера:
https://cloud.mail.ru/public/8Sp1/Z6kdShVhG

Скорость 4800. При скорости 115200 и 57600 связи с устройством нет. На всех остальных скоростях кроме 4800 очень частые обрывы связи, при которых приходмтся проверять ECRMode. Спасибо за ссылку, сейчас попробую на высланном Вами драйвере и отпишусь


Вт янв 19, 2016 12:15 pm
Профиль
Новичок

Зарегистрирован: Чт мар 24, 2005 1:52 pm
Сообщения: 438
Откуда: ШТРИХ-М
Сообщение Re: Штрих-Мини-К. Программирование через SharpDrv.dll в 1С.
Добрый день.

Скорость связи нужно увеличить, хотя бы до 19200.

_________________
С уважением,
Кравцов Виталий, программист
e-mail: kravtsov@shtrih-m.ru
(495) 787-60-90, добавочный 295


Вт янв 19, 2016 12:20 pm
Профиль ICQ WWW
Новичок

Зарегистрирован: Пн апр 27, 2015 3:00 pm
Сообщения: 24
Сообщение Re: Штрих-Мини-К. Программирование через SharpDrv.dll в 1С.
Поставил новый драйвер. Перепробовал все скорости выше 19200 и включительно. Кое-как заработало на 19200. В принципе работает быстрее чем раньше, но только первые n записей. Тренировался на 50-ти записях. Когда доходит до 40+ скорость замедляется. Еще вылетали ошибки, которые я заскринил и прилагаю к архиву и на всякий случай свойства драйвера при его инициализации...
Виталий, посмотрите пожалуйста, что можно с этим сделать? :roll:


Вложения:
Комментарий к файлу: Архив
Desktop.zip [233.27 КБ]
Скачиваний: 404
Вт янв 19, 2016 5:59 pm
Профиль
Новичок

Зарегистрирован: Чт мар 24, 2005 1:52 pm
Сообщения: 438
Откуда: ШТРИХ-М
Сообщение Re: Штрих-Мини-К. Программирование через SharpDrv.dll в 1С.
Добрый день.

С сообщениями об ошибках я разберусь, новая версия будет на этой неделе.
А вот скорость связи поднять скорее всего не получится.
Думаю, что это вопрос к разработчику ККМ.

_________________
С уважением,
Кравцов Виталий, программист
e-mail: kravtsov@shtrih-m.ru
(495) 787-60-90, добавочный 295


Ср янв 20, 2016 3:39 pm
Профиль ICQ WWW
Новичок

Зарегистрирован: Чт мар 24, 2005 1:52 pm
Сообщения: 438
Откуда: ШТРИХ-М
Сообщение Re: Штрих-Мини-К. Программирование через SharpDrv.dll в 1С.
Добрый день.

Новую версию драйвера можно найти тут:
https://cloud.mail.ru/public/HogC/hZmhUrtbU

_________________
С уважением,
Кравцов Виталий, программист
e-mail: kravtsov@shtrih-m.ru
(495) 787-60-90, добавочный 295


Ср янв 20, 2016 7:02 pm
Профиль ICQ WWW
Новичок

Зарегистрирован: Пн мар 14, 2005 2:13 pm
Сообщения: 63
Сообщение Re: Штрих-Мини-К. Программирование через SharpDrv.dll в 1С.
Цитата:
Скорость 4800. При скорости 115200 и 57600 связи с устройством нет. На всех остальных скоростях кроме 4800 очень частые обрывы связи, при которых приходмтся проверять ECRMode. Спасибо за ссылку, сейчас попробую на высланном Вами драйвере и отпишусь


Увеличение скорости работы, возможно до 19200. Далее при увеличении скорости даже прием кадра кассой не гарантирован. Повторюсь что здесь реализован протокол работы подразумевающий объединение ККМ в сеть. По-этому если внимательно прочитать протокол, то станет ясно, что увеличением скорости обмена порта не удастся добиться существенного увеличения конечной скорости передачи объема данных. Касса, когда пытается отвечать на команду, делает это со случайной задержкой для избежания коллизий при сетевом обмене. Величина задержки до полу-секунды. Отсюда и такая низкая производительность при передаче больших объемов данных.

_________________
Разработчик ШТРИХ-МИНИ-К


Ср янв 20, 2016 10:38 pm
Профиль WWW
Новичок

Зарегистрирован: Пн апр 27, 2015 3:00 pm
Сообщения: 24
Сообщение Re: Штрих-Мини-К. Программирование через SharpDrv.dll в 1С.
Ситуацию понял, впринципе есть как есть... Если не надоел своими вопросами, то можете подсказать еще по поводу регистров...
Почитал документацию и нигде не нашёл что и где в них искать... Т.е. зашёл я через драйвер ККМ в "3. Значения регистров - Денежные регистры" нажал "Прочитать" и получил следующее:
00: 0
01: 0
02: 0
03: 0
04: 0
05: 0
06: 0
07: 0
08: 0
09: 0
10: 0
11: 0
12: 0
13: 0
14: 0
15: 0
16: 0
17: 0
18: 0
19: 0
20: 0
21: 0
22: 0
23: 0
24: 15231
25: 0
26: 0
27: 0
28: 0

Т.е. как я понимаю, 24-й это сумма продаж за какие-то числа, но опять же... Если мне надо получить информацию по регистру остатков и денежному регистру, то что мне дёргать??? Вот есть метод драйвера GetRestReg(). Обрабатывает он регистр, значение которого указано в свойстве RegisterNumber. А изменить он должен значене RestRegister...
Интуитивно я догадываюсь, что надо задать номер регистра остатков (подскажите где можно вобще увидеть их номера), потом модифицировать свойство RestRegister (от 1 до 1000), а затем GetRestReg()?
"Разжуйте" пожалуйста....


Чт янв 21, 2016 2:38 pm
Профиль
Новичок

Зарегистрирован: Пн мар 14, 2005 2:13 pm
Сообщения: 63
Сообщение Re: Штрих-Мини-К. Программирование через SharpDrv.dll в 1С.
Со своей стороны могу только номера регистров дать, за остальным к Виталию.

//----------------------------------
//номера операционных регистров
//----------------------------------
#define NUMBER_CHECK_DAY 0 //количество чеков за смену (продажа, покупка ... ) 4 регистра
#define NUMBER_CHECK (NUMBER_CHECK_DAY+4) //номер чека 4 регистра
#define NUMBER_DOC (NUMBER_CHECK+4) //сквозной номер документа
#define NUMBER_CASHIN_DAY (NUMBER_DOC+1) //количество внесений за смену
#define NUMBER_CASHOUT_DAY (NUMBER_CASHIN_DAY+1) //количество выплат за смену
#define NUMBER_CASHIN (NUMBER_CASHOUT_DAY+1) //номер внесения
#define NUMBER_CASHOUT (NUMBER_CASHIN+1) //номер выплаты
#define NUMBER_ANNUL (NUMBER_CASHOUT+1) //количество аннулированных чеков
#define NUMBER_REP (NUMBER_ANNUL+1) //номер сменного отчета без гашения
#define NUMBER_CLOSE (NUMBER_REP+1) //номер сменного отчета до фискализации
#define NUMBER_RESET (NUMBER_CLOSE+1) //номер общего гашения
#define NUMBER_FULL_REP (NUMBER_RESET+1) //номер полного фискального отчета
#define NUMBER_SMALL_REP (NUMBER_FULL_REP+1) //номер сокращенного фискально отчета
#define NUMBER_TEST (NUMBER_SMALL_REP+1) //номер тестового прогона
#define NUMBER_REGISTR (NUMBER_TEST+1) //номер снятия показаний операционных регистров
#define NUMBER_DEP (NUMBER_REGISTR+1) //номер отчета по секциям
#define NUMBER_OPER (NUMBER_DEP+1) //номер отчета по кассирам
#define NUMBER_TAX (NUMBER_OPER+1) //номер отчета по налогам
#define NUMBER_HOUR (NUMBER_TAX+1) //номер пачасового отчета
#define NUMBER_STORNO (NUMBER_HOUR+1) //количество операций сторно 4 регистра
#define NUMBER_ART_X (NUMBER_STORNO+4) //номер отчета по товарам без гашения
#define NUMBER_ART_Z (NUMBER_ART_X+1) //номер отчета по товарам с гашением
#define OP_REG_END (NUMBER_ART_Z+1) //общее количество регистров

//----------------------------------
//номера денежных регистров
//----------------------------------
#define CHECK_OPL_TYPE 0 //регистры накопления по типам оплаты 4 шт
#define CHECK_TAX_GRP (CHECK_OPL_TYPE+4) //регистры накопления налогов в чеке 4 шт
#define SMENA_TAX_GRP (CHECK_TAX_GRP+4) //регистры накопления налогов в смене 4 шт * 4 типа оплаты = 16 шт
#define SMENA_CASH (SMENA_TAX_GRP+16) //наличность в кассе
#define CASH_IN (SMENA_CASH+1) //сумма внесений
#define CASH_OUT (CASH_IN+1) //сумма выплат
#define GLOBAL_SUMMA (CASH_OUT+1) //необнуляемая сумма до фискализации
#define ANNUL_SUMMA (GLOBAL_SUMMA+1) //сумма аннулирований
#define NEXT_AVAIL_REG (ANNUL_SUMMA+1) //количество регистров

К сожалению без форматирования не читабельно:(

_________________
Разработчик ШТРИХ-МИНИ-К


Пт янв 22, 2016 4:09 am
Профиль WWW
Новичок

Зарегистрирован: Пн апр 27, 2015 3:00 pm
Сообщения: 24
Сообщение Re: Штрих-Мини-К. Программирование через SharpDrv.dll в 1С.
По номерам регистров, из последнего сообщения AI как воспользоваться GetRestReg()'ом? Есть какой-то пример или алгоритм?


Пт янв 29, 2016 1:55 pm
Профиль
Новичок

Зарегистрирован: Чт мар 24, 2005 1:52 pm
Сообщения: 438
Откуда: ШТРИХ-М
Сообщение Re: Штрих-Мини-К. Программирование через SharpDrv.dll в 1С.
Добрый день.

Чтение регистров можно посмотреть в коде теста драйвера.
Чтение регистра остатков:

Driver.RegisterNumber := RegisterNumber;
Result := Driver.GetRestReg;
if Result = 0 then
begin
Value := Driver.RestRegister;
end;

Чтение денежного регистра:

Driver.RegisterNumber := RegisterNumber;
Result := Driver.GetCashReg;
if Result = 0 then
begin
Value := Driver.CashRegister;
end;

Чтение операционного регистра:

Driver.RegisterNumber := RegisterNumber;
Result := Driver.GetOperationReg;
if Result = 0 then
begin
Value := Driver.OperationRegister;
end;

_________________
С уважением,
Кравцов Виталий, программист
e-mail: kravtsov@shtrih-m.ru
(495) 787-60-90, добавочный 295


Пт янв 29, 2016 2:12 pm
Профиль ICQ WWW
Новичок

Зарегистрирован: Пн апр 27, 2015 3:00 pm
Сообщения: 24
Сообщение Re: Штрих-Мини-К. Программирование через SharpDrv.dll в 1С.
Подскажите пожалуйста, а что это значит 255 статус ККМ? Как я понимаю это не ошибка, но и не 0 статус...


Пн фев 01, 2016 11:48 am
Профиль
Показать сообщения за:  Поле сортировки  
Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.   [ Сообщений: 24 ]  На страницу 1, 2  След.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by STSoftware for PTF.
Русская поддержка phpBB