Сообщение от BolshoyK
|
Снял логи с имеющихся заготовок. Логика такая: последовательно выдаем команды и читаем 8 байт. Это не совсем хорошо, т.к. после команды записи заготовка стирается или замусоривается. По идее надо будет после каждой команды делать контрольное чтение 33-й командой, и при нахождении чего-то, что портит содержимое - перезаписывать заготовку и в будущем пропускать эту команду.
|
По поводу заготовок RW1990.X. Действуя по данной схеме, Вы не сможете стереть или изменить серийник из заготовки, кроме как подав команду собственно записи серийного номера. Команда эта известна - D5h. Ее и следует пропускать.
Лог заготовки RW1990.1 не совсем логичен. Если у вас идет перебор команд подряд, то последовательность "D1 FF FF FF FF FF FF FF FF" должна заблокировать запись (тайм-слот чтения равноценен тайм-слоту записи "1"). А запись у Вас проходит: ведь после этого Вы подаете последовательность "D5 FF FF FF FF FF FF FF FF" - в результате записываются нули. И на команду B5h заготовка у Вас не выдает ответ FEh. Скорее всего, значение флага записи действительно не записывается, если не делать задержку несколько миллисекунд...
Лог первой заготовки RW1990.2 тоже интересен. Здесь мы видим частичную запись информации: Вы подаете последовательность "D5 FF FF FF FF FF FF FF FF", но паузы в несколько миллисекунд не выдерживаете. Как следствие - часть "единичек" записалась, а часть - нет, так и осталась "нулями" от предыдущей записи. Видимо, данная заготовка более критична к выдерживанию пауз, чем RW1990.1 и вторая заготовка RW1990.2 - они записались "правильно".
По ТМ2004 - ну, здесь все точно по протоколу. Чистая заготовка в качестве серийника выдает все FFh, поэтому в лог они и не попали.
ТМ08v2 - ведут себя так же, как и RW1990.1, и даже обе записались без пауз. Только почему Вы говорите, что вторая заготовка "чистая"? В ней ведь уже записан какой-то номер.
PS. Во вложении прилагаю свой исходник автоопределения.