Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Получение данных с COM порта          
SeverinPasha Подменю пользователя
сообщение 23.10.18, 12:29
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 1 раз
Рейтинг: 0

Итак, я уже писал в одной теме о подключении и получении данных с магнитного ридера. У меня это удалось, вот только данные я получаю непонятно какие. Вот код


Если учесть, если на карте имеется номер 0000255740(десятиричный) и 039,01335(некий ТЕКСТОВЫЙ код).
Помогите связать результат вывода с данными которые по идее должны выводиться(написаны на карте)

andr_andrey Подменю пользователя
сообщение 23.10.18, 14:16
Сообщение #2

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 623
Спасибо сказали: 166 раз
Рейтинг: 130.8

SeverinPasha @ Сегодня, 13:29 * ,
Два байта - мало, возможно вы не всю посылку приняли.


Signature
#define private public
enum BOOL { FALSE, TRUE, FILENOTFOUND } is made my day

SeverinPasha Подменю пользователя
сообщение 24.10.18, 7:58
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 1 раз
Рейтинг: 0

Значится нашёл я документацию своей считки. Узрил необходимую скорость считывания данных и настройки, окей.

Потом решил все это затестить на ComRead. Получил следующие данные с карты

Окей, после чего решил вставить такие же настройки считки в свою обработку в 1с

И в итоге рпи запуске получаю следующие данные. Каждой паре соответствует свой элемент массива в 10-чной системе.

Но вся проблема остаётся в том, что ну не представляю совсем как эти данные перевести в те, которые указаны на карте, а именно; 0000188041 и 002,56969
Код программы чуть что указан выше

andr_andrey Подменю пользователя
сообщение 24.10.18, 15:07
Сообщение #4

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 623
Спасибо сказали: 166 раз
Рейтинг: 130.8

Цитата(SeverinPasha @ 24.10.18, 8:58) *
И в итоге рпи запуске получаю следующие данные. Каждой паре соответствует свой элемент массива в 10-чной системе.

Но вся проблема остаётся в том, что ну не представляю совсем как эти данные перевести в те, которые указаны на карте, а именно; 0000188041 и 002,56969
Код программы чуть что указан выше


188041 (10) = 02DE89 (16)

137 (10) = 89 (16)
222 (10) = DE (16)
2 (10) = 2 (16)

44000000.gif

Сообщение отредактировал andr_andrey - 24.10.18, 15:29


Signature
#define private public
enum BOOL { FALSE, TRUE, FILENOTFOUND } is made my day

Спасибо сказали: SeverinPasha,

awp Подменю пользователя
сообщение 24.10.18, 18:49
Сообщение #5

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 520
Спасибо сказали: 70 раз
Рейтинг: 51.3

andr_andrey @ Сегодня, 16:07 * ,

Не все так просто. Может поможет:

[необходимо зарегистрироваться для просмотра ссылки]
[необходимо зарегистрироваться для просмотра ссылки]
[необходимо зарегистрироваться для просмотра ссылки]
[необходимо зарегистрироваться для просмотра ссылки]

конвертер Wiegand26 to HEX [необходимо зарегистрироваться для просмотра ссылки]

Сообщение отредактировал awp - 24.10.18, 18:52


Signature
Бухгалтер - это не профессия! Это диагноз!

Vladal Подменю пользователя
сообщение 24.10.18, 20:05
Сообщение #6

Оратор
Иконка группы
Группа: Местный
Сообщений: 365
Из: Slovensko
Спасибо сказали: 78 раз
Рейтинг: 0

Цитата(SeverinPasha @ 23.10.18, 13:29) *
Если учесть, если на карте имеется номер 0000255740 (десятеричный) и 039,01335 (некий ТЕКСТОВЫЙ код).
Помогите связать результат вывода с данными которые по идее должны выводиться(написаны на карте)


Супер! Я ждал этого от Вас!
Алгоритм был найден на форуме разработчиков ПО работы с RFID-метками.
Процедуры конвертации чисел между системами счислений найдены на Мисте или Инфостарте.

Процедура КнопкаСчитать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)*М;
    КонецЦикла;
    
    Возврат Окр(Результат);
    
КонецФункции

Спасибо сказали: bonyaby, SeverinPasha,

SeverinPasha Подменю пользователя
сообщение 29.10.18, 13:13
Сообщение #7

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 1 раз
Рейтинг: 0

Всем спасибо, решение получено, тему можно закрывать icon_beer17.gif

Спасибо сказали: Vladal,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 16:24
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!