Dallas Touch Memory (DS1990A) получить номер ключа
- Войдите на сайт для отправки комментариев
Ср, 29/07/2015 - 07:48
Привет всем.
У меня считыватель карт доступа Matrix 2. Он умеет работать как эмулятор (DS1990A).
С помощью кода я получаю некий набор символов при чтении карты, а хочу получать приведенный к нормальному виду номер карты, который написан на самой карте...
При чтении карты с реальным номером 944884 я получаю вот такой код: 1F46AE010EE.
Подскажите пожалуйста, как можно преобразовать полученный код в номер карты?
Сам скетч:
#include <OneWire.h> OneWire ds(8); // выход считывателя на 7 пин byte addr[8];// буфер приема void setup() {// стартовая инициализация Serial.begin(9600); delay(100); Serial.println("Start..."); } void loop() { if(ds.reset()){ // если обнаружено устройттво ds.write(0x33); // отправляем команду "считать ROM" delay(50); // на всякий случай ждем for(int i=0;i<8;i++){ addr[i] = ds.read(); // считываем } Serial.print("ROM ="); // выводим for(int i = 0; i < 8; i++) { //Serial.write(' '); Serial.print(addr[i], HEX); } Serial.println(); delay(500); } }
гугл говорит 944884 to hex =0x 0E 6A F4
прочитайте задом на перёд получится фрагмент вашего номера: F46AE0.
p.s. не надо создавать одинаковые темы в разных разделах форума
Да я это понял.
Только вот HEX не могу перевести в DEC.
Нашел вот такую функцию, но она почему-то дает ответ 27380 на подставленную строку E6AF4.
Подскажите как грамотно преобразовать HEX в DEC! В калькуляторе считает верно.
Serial.print(addr[i]);
Например