Обработчик ошибок
- Войдите на сайт для отправки комментариев
Вс, 19/05/2013 - 18:16
Уважаемые гуру, посоветуйте как организовать функцию обработки ошибок...
Есть код программы, обрабатываю там переменную Errorcode...
int ChangeGearSensor1=analogRead(ChangeGearSensor1Pin); int ChangeGearSensor2=analogRead(ChangeGearSensor2Pin); //ошибка 1 if (IsValInRangeEx(ChangeGearSensor1,ChangeGearSensor2,ErrorSensorLimit)==false){ErrorCode=ErrorCode+1;} // большая разница в показаниях основного и вспомогательного датчиков ... int SelectGearSensor1=analogRead(SelectGearSensor1Pin); int SelectGearSensor2=analogRead(SelectGearSensor2Pin); //ошибка 2 if (IsValInRangeEx(SelectGearSensor1,SelectGearSensor2,ErrorSensorLimit)==false){ErrorCode=ErrorCode+2;} // большая разница в показаниях основного и вспомогательного датчиков ... //ошибка 3 if (total_timer>=motor_check_timer) {ErrorCode=ErrorCode+4; stopMotor=true;break;} // проверка на время длительности работы приводов
Здесь в коде не правильно реализовал занесение значений в Errorcode, так как при одной и той же ошибке данные складываются постоянно.
Надо как-то, чтобы в Errorcode писались значения 1, 2, 4, 8, 16..., ну еще и складывались как-то (скорее всего смещение надо применять или логическое сложение)
Ну то есть, если возникают ошибка1 и 3, то в Errorcode должно быть 1+4=5.
А потом еще нужно декодировать Errorcode=5, в ошибка1 и 3.
Вот такая задачка.... как реализовать?
Чувствую, что нужно двоичные значения обрабатывть, а как не знаю...
1=1
2=10
4=100
5=101
5 раскладывается на 100+1
Ну, для начала, я бы дал ошибкам какие-то "говорящие имена константы". Значения задавал-бы сразу бинарно (каждая константа - отдельный бит).
Потом, объявляем переменную где ошибку будем хранить, и пару помогалок для работы с ней
Ну а затем, уже и пользоватся всем этим можем
Спасибо огромное, исчерпывающе...