Итак, я уже писал в одной теме о подключении и получении данных с магнитного ридера. У меня это удалось, вот только данные я получаю непонятно какие. Вот код
Если учесть, если на карте имеется номер 0000255740(десятиричный) и 039,01335(некий ТЕКСТОВЫЙ код).
Помогите связать результат вывода с данными которые по идее должны выводиться(написаны на карте)
SeverinPasha @ Сегодня, 13:29
,
Два байта - мало, возможно вы не всю посылку приняли.
Значится нашёл я документацию своей считки. Узрил необходимую скорость считывания данных и настройки, окей.
Потом решил все это затестить на ComRead. Получил следующие данные с карты
Окей, после чего решил вставить такие же настройки считки в свою обработку в 1с
И в итоге рпи запуске получаю следующие данные. Каждой паре соответствует свой элемент массива в 10-чной системе.
Но вся проблема остаётся в том, что ну не представляю совсем как эти данные перевести в те, которые указаны на карте, а именно; 0000188041 и 002,56969
Код программы чуть что указан выше
andr_andrey @ Сегодня, 16:07
,
Не все так просто. Может поможет:
http://pro1c.org.ua/redirect.php?http://www.cyberforum.ru/kip-sensors/thread771426.html
http://pro1c.org.ua/redirect.php?http://vkmodule.com.ua/Description/Description3.html
http://pro1c.org.ua/redirect.php?http://vkmodule.com.ua/Description/Description4.html
http://pro1c.org.ua/redirect.php?https://www.tensay.by/%21files/readers/Z-2%20USB.pdf
конвертер Wiegand26 to HEX http://pro1c.org.ua/redirect.php?http://www.ccdesignworks.com/wiegand_calc.htm
Процедура КнопкаСчитатьRFIDНажатие(Элемент)
СчитанноеЗначение = "";
Результат = ВвестиСтроку(СчитанноеЗначение, "Считайте данные карточки RFID", 10, Ложь);
Если НЕ Результат Тогда
Возврат;
КонецЕсли;
// Преобразование 10-ричного серийного номера dec1 (0000255740) в 10-ричные данные (039,01335) dec2, хранящиеся в памяти карточки.
// Алгоритм преобразования:
// dec1 преобразовать в hex
// Старшие 4 байта hex составляют целую часть dec2,
// младшие 4 байта hex составляют дробную часть dec2.
ДанныеHEX = Прав("00000000" + ОбщегоНазначения.Из_10_В_Любую(СчитанноеЗначение, 16), 8); // с лидирующими нолями
ЦелаяЧасть = Прав("000" + ОбщегоНазначения.Из_Любой_В_10(Сред(ДанныеHEX, 1, 4), 16), 3); // старшие 4 байта в 10-ричное
ДробнаяЧасть = Прав("00000" + Формат(ОбщегоНазначения.Из_Любой_В_10(Сред(ДанныеHEX, 5, 4), 16), "ЧГ=0"), 5); // младшие 4 байта в дробную часть
НомерДес1 = СчитанноеЗначение;
НомерДес2 = "" + ЦелаяЧасть + "," + ДробнаяЧасть;
КонецПроцедуры
Функция Из_10_В_Любую(Знач Значение=0, Нотация=36) Экспорт
Если Нотация <= 0 Тогда
Возврат ""
КонецЕсли;
Значение = Число(Значение);
Если Значение <= 0 Тогда
Возврат "0"
КонецЕсли;
Значение = Цел(Значение);
Результат = "";
Пока Значение>0 Цикл
Результат = Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", Значение%Нотация + 1, 1) + Результат;
Значение = Цел(Значение/Нотация);
КонецЦикла;
Возврат Результат;
КонецФункции
Функция Из_Любой_В_10(Знач Значение="0", Нотация=36) Экспорт
Если Нотация <= 0 Тогда
Возврат 0
КонецЕсли;
Значение = СокрЛП(Значение);
Если Значение = "0" Тогда
Возврат 0
КонецЕсли;
Результат = 0;
Длина = СтрДлина(Значение);
Для Х = 1 По Длина Цикл
М = 1;
Для У = 1 По Длина-Х Цикл
М = М*Нотация
КонецЦикла;
Результат = Результат + (Найти("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", Сред(Значение, Х, 1)) - 1)*М;
КонецЦикла;
Возврат Окр(Результат);
КонецФункции
Всем спасибо, решение получено, тему можно закрывать
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua