Прежде всего исключить собственные ошибки или невнимательность при разработке - это более половины случаев глюков. Например часто встречается когда защитные супрессоры ставят у модуля, до резисторов, а не у карточки. И часть карт начинает не определяться или отваливаться в процессе работы. Или пропаяют активным флюсом, не вымоют, а потом через некоторое время на глюки пытаются перезапускать модуль. Это касаемо железа.
Затем продумать алгоритм в зависимости от того что у вас за устройство, учитывая различные ситуации (например для треккеров встречается что водилы отрезали антенну или стянули карточку). Ну а потом еще и постараться не нарваться на приколы операторов которых тоже хватает.
Вобщем перед дерганием питания, если обмен не завис, стоит почитать уровень сигнала, наличие карты, понять не стоит ли он в таймауте....
Вот пример - недавно разбирали похожую ситуацию с таймаутом. Клиент делал: AT+CLIP=1 ATDxxxxxxxxxxxxxxx;
До снятия трубки или отбоя прервать команду нельзя, модуль другие команды не воспринимает. Можно выйти только по таймауту неответа. При долгом неответе товарищ считал что модуль виснет и прерывал ожидание снятием питания. Чудненько, сразу смотрю чему равно ATS7. Оказалось 120 секунд !!!!! он поставил на ожидание и не может понять что модуль не висит, а чесно ждет 2 минуты.
Поставили ATS7=25, подправили чуток в программе и забыли о частых отключениях.
Обо всех не расскажешь. Рекомендую потратить время на форум, достаточно много ситуаций и их решение рассматривались здесь. Ну а будут конкретные затыки - пишите, постараемся помочь.
--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
|