Решил сделать электронный замок в гараж. Всю голову переломал, что не так? когда был один ключ-таблетка, всё работало как часы!!! Когда решил расширить способности, сделав четыре ключа, то первых три ключа считывают первый бит как 1, а у четвёртого ключа - всё как положено. на скриншоте один и тот-же ключ, записанный 4 раза. Кто ни будь знает в чём прикол?
кто-то плохо учился в школе. Если один ключ - это 8 байт. то 4 ключа сколько? А у вас массив под ключи длиной 31 байт мож и иеще ошибки есть, но это первое бросилось в глаза
Ок! Почему тогда биты 0, 8, и 16, сохраняются как 1(еденица), а 24й - как положено? и почему когда изначально я было "byte cluch[8];" (изначально предполагался один ключ) сохранялось 8 бит ключа... это основной вопрос, ведь сохраняется полностью только ключ, с ячейками 31-24, а ключи с ячейками 23-16, 15-08, 07-00 при записи считываются с "1" в ячейках 16, 08, 00. А при считывании уже для сравнения, считываются полностью, хотя библиотека используется одна и таже...
Чет, хрень какая-то... сделал "byte cluc1[32];", и у меня у всех 4х ключей в начальных ячейках стали только единицы... Такое впечатление, что в таблетках передаётся только 7 байт, а не 8... Ну да и хрен с ними, не буду просто заморачиваться, оставлю так. Но всё-же интересно, куда девается последний байт, являющийся первым? и почему 1, а не 0? Или всё же их должно быть 7?
проверьте все ваши циклы for - не путаете ли вы еще где-нить индексы Вот, например, в строке 56 я вижу явную ошибку: Код (C++): for(int i=7; i<=0; i--) сколько раз выполнится этот цикл, как вы думаете? Ну и в принципе, код написан откровенно плохо. Чтобы из кода для одного ключа сделать код на четыре - вы просто взяли и тупо (другого слова не подберу) скопировали все операторы 4 раза, вручную исправив индексы. Такой метод провоцирует ошибки, так программы не пишут. Изучайте массивы и процедуры Кстати. еще вопрос по логике работы. Зачем вам хранить в базе номера 4х ключей. если они все одинаковые?
да много через что решается. Но ТС выбрал метод дублирования кода - имхо, один из худших вариантов главное - я не пойму, зачем хранить в памяти 4 кода? Обычно таблетки просто копируют и у всех один и тот же код...
У меня много неперезаписываемых ключей, и ни одного RW, а мне надо чтоб подходили 4. Да и стереть я всегда смогу любой из них, если что... А вот по поводу кода, да, согласен, код безобразный, но это моё хобби, и я им редко занимаюсь, да и при компилировании ошибок и предупреждений нету, следовательно компилятор меня понимает. А ему всё равно, он по своему перепишет. Это его обязанность.
код синтаксически написан без ошибок. Но компилятору до фонаря, что делает этот код. Поэтому если нет ошибок и предупреждений (а они ЕСТЬ, просто ВЫКЛЮЧЕНЫ!), это не значит, что код логически верен.
это поэтому у всех ключей в первом байте теперь единицы? То что код компилируется - еще совершенно не значит. что он будет работать правильно. Ошибку-то в строке 56 исправили?
Да, исправил. Всё начало работать совсем по другому. Вместо единицы в конце, появилась восьмёрка в начале, я так думаю ей там место (правда почему-то во всех ключах, хотя они у меня собирались несколько лет...)и в конце концов я просто запутался в собственном коде. Удалил его и сижу пишу всё заново...