Автор Тема: matrix rd 3all + usb-rs485 болид ацдр.426469.032 + 1C 8.3  (Прочитано 8719 раз)

Антон

  • Пользователь
  • *****
  • Сообщений: 16
Re: matrix rd 3all + usb-rs485 болид ацдр.426469.032 + 1C 8.3
« Ответ #15 : 15 Августа 2022, 14:07 »
Log по новой компоненте.
Единственно поставил точку останова на строке где проверяется подключение. Пару секунд подождал и результат подключения вернулся 3
Перем ДемоКомп;
 Перем FmtId;
Перем DevId;

  //ПодключитьВнешнююКомпоненту("d:\ZR1C64.dll", "Comp", ТипВнешнейКомпоненты.Native);
  ПодключитьВнешнююКомпоненту("D:\1c\Divice\drv_ZR1C_beta\drv_ZR1C_beta\ZR1C64.dll", "Comp", ТипВнешнейКомпоненты.Native);
 // Перем ДемоКомп;
  ДемоКомп = Новый("AddIn.Comp.ZR1CExtension");

  //ДемоКомп.ОчиститьЛог();
  //ДемоКомп.ЗагрузитьНастройки();
  //ДемоКомп.ОчиститьФорматы();

  // Создаём новый формат
 // Перем FmtId;
 ДемоКомп.ВставитьФормат(0, "GuardSaaS", "%.3u,%.5u", "b2 w01", "", FmtId);
  // Задаём авто формат по умолчанию для всех считывателей
  //ДемоКомп.ИДФорматаПоУмолчанию = FmtId;

  // Задаём имя порта считывателя
  ДемоКомп.УстановитьПараметр("Порт", "COM4");
  // Задаём формат ключа для считывателя (не авто)
  ДемоКомп.УстановитьПараметр("ИДФорматаСчитывателя", FmtId);
  // Подключаемся к считывателю, в DevId получаем имя порта
// Перем DevId;
  ДемоКомп.Подключить(DevId);   
 
 Сообщить(ДемоКомп.ПолучитьСостояние(DevID));

Как сделать чтобы соединение было постоянно, ума не приложу.

gsa

  • Пользователь
  • *****
  • Сообщений: 265
Re: matrix rd 3all + usb-rs485 болид ацдр.426469.032 + 1C 8.3
« Ответ #16 : 15 Августа 2022, 14:16 »
Как сделать чтобы соединение было постоянно, ума не приложу.
К сожалению, не знаю языка 1С, поэтому не могу подсказать как объявить глобальную переменную в 1С.

Антон

  • Пользователь
  • *****
  • Сообщений: 16
Re: matrix rd 3all + usb-rs485 болид ацдр.426469.032 + 1C 8.3
« Ответ #17 : 15 Августа 2022, 14:40 »
Как сделать чтобы соединение было постоянно, ума не приложу.
К сожалению, не знаю языка 1С, поэтому не могу подсказать как объявить глобальную переменную в 1С.

Через нее получилось, Спасибо!

Вроде бы получилось поймать внешнее событие при первом чтении карты. Но если повторно ту же карту прочитать, ни чего не происходит. Если новую, которая ранее не считывалась, то внешние событие срабатывает. И формат номера не корректно отображается.
Такое же поведение однократного чтения карты происходит в Конфигураторе ZR1C64
« Последнее редактирование: 15 Августа 2022, 14:54 от Антон »

gsa

  • Пользователь
  • *****
  • Сообщений: 265
Re: matrix rd 3all + usb-rs485 болид ацдр.426469.032 + 1C 8.3
« Ответ #18 : 15 Августа 2022, 15:22 »
Вроде бы получилось поймать внешнее событие при первом чтении карты. Но если повторно ту же карту прочитать, ни чего не происходит. Если новую, которая ранее не считывалась, то внешние событие срабатывает.
Такое же поведение однократного чтения карты происходит в Конфигураторе ZR1C64
Обновление v1.9.3 https://disk.yandex.ru/d/vxB6L4I13P5JXp
Сейчас должно работать.
От Z-2 Base приходит "DALLAS[0000000000AF162D] 000,00000\r\n", но не приходит "No card", который должен приходить при удалении карты.

И формат номера не корректно отображается.
В логе функция ВставитьФормат возвращает ошибку, скорее всего из-за того что формат "GuardSaaS" уже есть в списке поэтому FmtId не устанавливается. Описание последней ошибки можно получить методом "ПолучитьОшибку".
16:38:26.123 [I00041] Вызов функции ВставитьФормат(I4 0, "GuardSaaS", "%.3u,%.5u", "b2 w01", "", EMPTY)...
16:38:26.123 [I00042] Функция вернула false, параметры (I4 0, "GuardSaaS", "%.3u,%.5u", "b2 w01", "", EMPTY).
Можно использовать ДемоКомп.ОчиститьФорматы(); или в программе "Конфигуратор ZR1C" на вкладке "Основное" снять флаг "Загружать при старте ZR1C".

Антон

  • Пользователь
  • *****
  • Сообщений: 16
Re: matrix rd 3all + usb-rs485 болид ацдр.426469.032 + 1C 8.3
« Ответ #19 : 15 Августа 2022, 15:36 »
Обновление v1.9.3 https://disk.yandex.ru/d/vxB6L4I13P5JXp
Сейчас должно работать.
От Z-2 Base приходит "DALLAS[0000000000AF162D] 000,00000\r\n", но не приходит "No card", который должен приходить при удалении карты.
Все успешно заработало. Чтение идет подряд по одной карте. Спасибо!

В логе функция ВставитьФормат возвращает ошибку, скорее всего из-за того что формат "GuardSaaS" уже есть в списке поэтому FmtId не устанавливается. Описание последней ошибки можно получить методом "ПолучитьОшибку".
16:38:26.123 [I00041] Вызов функции ВставитьФормат(I4 0, "GuardSaaS", "%.3u,%.5u", "b2 w01", "", EMPTY)...
16:38:26.123 [I00042] Функция вернула false, параметры (I4 0, "GuardSaaS", "%.3u,%.5u", "b2 w01", "", EMPTY).
Можно использовать ДемоКомп.ОчиститьФорматы(); или в программе "Конфигуратор ZR1C" на вкладке "Основное" снять флаг "Загружать при старте ZR1C".

Начал разбираться...

Антон

  • Пользователь
  • *****
  • Сообщений: 16
Re: matrix rd 3all + usb-rs485 болид ацдр.426469.032 + 1C 8.3
« Ответ #20 : 15 Августа 2022, 15:57 »
Результат "-2 147 220 939" по методу  л_Ошибка =  ДемоКомп.ПолучитьОшибку(DevId);

Если использовать ДемоКомп.ОчиститьФорматы(), то перестает работать Внешние событие.
В программе "Конфигуратор ZR1C" на вкладке "Основное" снял флаг "Загружать при старте ZR1C".

gsa

  • Пользователь
  • *****
  • Сообщений: 265
Re: matrix rd 3all + usb-rs485 болид ацдр.426469.032 + 1C 8.3
« Ответ #21 : 15 Августа 2022, 16:05 »
Результат "-2 147 220 939" по методу  л_Ошибка =  ДемоКомп.ПолучитьОшибку(DevId);
Ошибка означает, что формат с указанным названием уже существует. Текст ошибки будет записан в DevId.

Если использовать ДемоКомп.ОчиститьФорматы(), то перестает работать Внешние событие.
В программе "Конфигуратор ZR1C" на вкладке "Основное" снял флаг "Загружать при старте ZR1C".
Метод ОчиститьФорматы() удаляет все форматы. Если после него не добавить новый формат и установить его считывателю, то внешнее событие не сработает (в логе должна быть информация об этом). Метод ОчиститьФорматы() следовало вызвать перед методом ВставитьФормат().
« Последнее редактирование: 15 Августа 2022, 16:08 от gsa »

Антон

  • Пользователь
  • *****
  • Сообщений: 16
Re: matrix rd 3all + usb-rs485 болид ацдр.426469.032 + 1C 8.3
« Ответ #22 : 16 Августа 2022, 07:19 »
Результат "-2 147 220 939" по методу  л_Ошибка =  ДемоКомп.ПолучитьОшибку(DevId);
Ошибка означает, что формат с указанным названием уже существует. Текст ошибки будет записан в DevId.

Если использовать ДемоКомп.ОчиститьФорматы(), то перестает работать Внешние событие.
В программе "Конфигуратор ZR1C" на вкладке "Основное" снял флаг "Загружать при старте ZR1C".
Метод ОчиститьФорматы() удаляет все форматы. Если после него не добавить новый формат и установить его считывателю, то внешнее событие не сработает (в логе должна быть информация об этом). Метод ОчиститьФорматы() следовало вызвать перед методом ВставитьФормат().

Перенес метод очистки. Теперь при запуске подключения метод ДемоКомп.ПолучитьОшибку(DevId) возвращает значение "0"

&НаКлиенте
 Перем ДемоКомп,FmtId,DevId;

&НаКлиенте
Процедура ПриОткрытии(Отказ)
  // Вставить содержимое обработчика.

  ПодключитьВнешнююКомпоненту("D:\1c\Divice\driver_work\ZR1C64.dll", "Comp", ТипВнешнейКомпоненты.Native);

  ДемоКомп = Новый("AddIn.Comp.ZR1CExtension");

  // Создаём новый формат
   ДемоКомп.ОчиститьФорматы();
  //ДемоКомп.ВставитьФормат(0, "GuardSaaS", "%.3u,%.5u", "b2 w01", "", FmtId);
  ДемоКомп.ВставитьФормат(0, "PERCo", "%u\t%u", "b2 w01", "", FmtId);
 
  л_Ошибка =  ДемоКомп.ПолучитьОшибку(DevId);
 
  Сообщить(л_Ошибка);

  // Задаём имя порта считывателя
  ДемоКомп.УстановитьПараметр("Порт", "COM4");
  // Задаём формат ключа для считывателя (не авто)
  ДемоКомп.УстановитьПараметр("ИДФорматаСчитывателя", FmtId);
  // Подключаемся к считывателю, в DevId получаем имя порта
  ДемоКомп.Подключить(DevId);           

КонецПроцедуры

Считанное значение 1С получает от считывателя, значение в формате ВставитьФормат(0, "PERCo", "%u\t%u", "b2 w01", "", FmtId) которого содержит "0   44822" вроде можем сконвертировать в нужный нам вид.

Драйвер оборудования в 1С получилось загрузить, но добавить новое оборудование "Считыватель магнитных карт", программно не доступно в 1С Общепит 3.0

Спасибо за помощь.
« Последнее редактирование: 16 Августа 2022, 07:41 от Антон »

Антон

  • Пользователь
  • *****
  • Сообщений: 16
Re: matrix rd 3all + usb-rs485 болид ацдр.426469.032 + 1C 8.3
« Ответ #23 : 17 Августа 2022, 12:31 »
Добрый день.

Общение 1с и считывателя работает нормально.

Теперь столкнулся с проблемой настройки формата.
Карта с номером "161,47928", в putty читается "DALLAS[0000000000A1BB38] 000,00000". Формат карты En-marine
В конфигураторе ZR1C с выбранным форматом GuardSaaS(шаблон: %.3u,%.5u параметры: b2 w01) читается "000,41403". Если в параметрах указываю "b1 w01" то читается "161,41403"
В формате DALLAS (Шаблон: %.2X%.2X%.2X%.2X%.2X%.2X%.2X%.2X Параметры: b6 b5 b4 b3 b2 b1 b0 bX) читается "0000000000A1BB3C"
Пробовал менять параметры согласно справке в разделе Формат/Параметры, безрезультатно. Нужна ваша помощь.

gsa

  • Пользователь
  • *****
  • Сообщений: 265
Re: matrix rd 3all + usb-rs485 болид ацдр.426469.032 + 1C 8.3
« Ответ #24 : 17 Августа 2022, 13:07 »
Карта с номером "161,47928", в putty читается "DALLAS[0000000000A1BB38] 000,00000". Формат карты En-marine
В конфигураторе ZR1C с выбранным форматом GuardSaaS(шаблон: %.3u,%.5u параметры: b2 w01) читается "000,41403". Если в параметрах указываю "b1 w01" то читается "161,41403"
Добрый день
Обновление ZR1C v1.9.3 https://disk.yandex.ru/d/vxB6L4I13P5JXp
Исправил.

Антон

  • Пользователь
  • *****
  • Сообщений: 16
Re: matrix rd 3all + usb-rs485 болид ацдр.426469.032 + 1C 8.3
« Ответ #25 : 17 Августа 2022, 13:27 »
Карта с номером "161,47928", в putty читается "DALLAS[0000000000A1BB38] 000,00000". Формат карты En-marine
В конфигураторе ZR1C с выбранным форматом GuardSaaS(шаблон: %.3u,%.5u параметры: b2 w01) читается "000,41403". Если в параметрах указываю "b1 w01" то читается "161,41403"
Добрый день
Обновление ZR1C v1.9.3 https://disk.yandex.ru/d/vxB6L4I13P5JXp
Исправил.

Теперь читается Внешнее событие: COM4 -- ДанныеКарты -- 161,47928.

Спасибо!