Расширенный поиск  

Новости:

Автор Тема: Почему не записался трек?  (Прочитано 4231 раз)

0 Пользователей и 1 Гость просматривают эту тему.

SM

  • Administrator
  • Легенда
  • *****
  • Спасибо: 2 раз(а)
  • Оффлайн Оффлайн
  • Сообщений: 2.019
  • ОЗТ: 109077
  • г. Томск
Почему не записался трек?
« : Сентябрь 19, 2009, 00:04:29 »

Периодически на форуме возникает вопрос: «почему не записался трек?». Длительные коллективные разбирательства по каждому случаю позволяют уже систематизировать причины и выработать некий свод рекомендаций. Сформулировать несколько правил, позволяющих избежать в дальнейшем досадных недоразумений. По крайней мере, свести к возможному минимуму вероятность потери важной информации.

В каждой конкретной ситуации, естественно, свои причины, приведшие к потере потерь. Но, все их можно разделить по классам на:
-  программные;
-  аппаратные;
-  электрические;
-  методические.

Разберём их по очереди. По мере усложнения методов противодействия и их обоснования.

ПРОГРАММНЫЕ

Здесь объяснения и рекомендации наиболее просты. Любая навигационная программа достаточно сложный продукт с несколькими процессами отрабатывающимися параллельно в реальном времени. Это и считывание координат, и распаковка карты, и позиционирование, и отрисовка экрана, и ведение маршрута, и так далее по тексту. Перечислять их все незачем. Просто поверьте на слово – их не один десяток.

Следовательно, как сами алгоритмы процессов, так и их бесконфликтное взаимодействие, довольно сложная, многовариантная, требующая кропотливой отладки задача. Разработчиками постоянно ведётся «работа над ошибками». Выпускаются новые версии и подверсии продукта.

Посему, рекомендация тривиальна – используйте последнюю легальную версию программы. Ошибок в ней будет меньше.

Не используйте «ломаные» версии. В каждой компании чуть ли не половина программистов занята проблемами безопасности. И ведь трудно представить что они все дураки, а один «герой» взял да и свёл одним махом все их усилия на нет, написав небольшую заплатку взламывающую защиту. Поверьте, вас может ожидать немало сюрпризов от такой вроде бы совершенно корректно работающей программы.

Применительно к Навителу, прямых улик нет, но факты заставляют заподозрить намеренный выпуск якобы взломанных версий. А если это намеренная подстава, то о неприятностях уж они позаботились.

У PNA есть свои особенности связанные с отсутствием внутреннего энергонезависимого ОЗУ. Все настройки из-за этого хранятся на внешней карточке. При апгрейте версии навигационной программы файл настроек оставшийся от старого навигатора может не вполне адекватно восприниматься новой оболочкой. Поэтому, для автонавигаторов крайне рекомендуется после перестановки программы сбросить все настройки «по дефолту», выключить/включить устройство, а, затем, настроить программу заново.

На моей КПКашке устаревшая операционная система – Windows 2003SE. Разработчики программ не очень заботятся о полной её поддержке и всестороннем тестировании на совместимость. Поэтому, каждый раз, после апгрейда мне приходится производить некую последовательность шаманских действий:
1  включаю запись трека;
2  прохожу ногами метров десять;
3  отключаю кнопочку записи трека;
4  делаю ресет КПКашке.
Видимо, эта особенность связана с несколько иным алгоритмом записи в реестр. Почему-то самый первый трек всегда записывается с нулевым размером. А после того, как в реестре всё пропишется как надо, последующие треки ложатся без проблем.

АППАРАТНЫЕ

К аппаратным сбоям можно отнести общие и индивидуальные (присущие конкретным моделям) «узкие места» навигаторов и КПКашек. Главным провоцирующим фактором, конечно же, можно признать неизбежную вибрацию в автомобиле. Свою лепту вносят колебания температуры и влажности. Страдают в первую очередь все разъёмы.

Наиболее критичен в этом отношении разъём SD карточки. Малейший, даже кратковременный, неконтакт может вызвать зависание программы. Но это, как не парадоксально, можно признать меньшим злом – такой сбой сразу видно. А вот если подвиснет всего один процесс из множества параллельных… Внешне всё вроде как работало так и работает, а вот на карточку уже ничего на пишется последние пятьдесят километров. И обнаруживаете вы это когда уже поздняк метаться.

Для уменьшения количества таких сюрпризов можно порекомендовать периодически, на выключенном устройстве вынимать и втыкать обратно SD карточку. Для надёжности, это можно делать перед каждой поездкой. Не опасайтесь – контакты не сотрутся. А вот окисная плёнка с них слезет.

ЭЛЕКТРИЧЕСКИЕ

По большому счёту, электрические причины сбоев можно считать разновидностью аппаратных, рассматривавшихся в предыдущем разделе. Но по характеру воздействия их имеет смысл выделить в отдельный класс.

Термин «электрические» выглядит применительно к рассматриваемой нами проблеме несколько коряво. Употребил его для того, чтобы подчеркнуть источник возникновения сбоев. Практически всегда при использовании навигатора внутри автомобиля, он (навигатор) подключен через зарядное устройство к бортовой сети. А, значит, включён в общую электрическую бортовую сеть.

Все помехи, гуляющие по бортовой сети, становятся достоянием и нашего навигатора. Проявляться они могут по разному. Как показывает опыт – больше всего их возникает при работе стартера. Это и понятно – типичными значениями пикового тока для стартеров легковых автомобилей являются цифры порядка 200 ампер. Кто же при этом не загнётся?

Во время запуска двигателя на прикуривателе на фоне общей «просадки» напряжения проскакивают «иголки» по 150-200 вольт. Отфильтровать их и не пустить к навигатору способен далеко не каждый зарядник. Тем более, что на блоках питания производители здорово экономят, сводя внутреннюю их схему до спартанского минимума.

Моя КПКашка стабильно зависает при запуске стартера. Поэтому, каждый раз, перед поворотом ключа приходится выдёргивать зарядник из прикуривателя.

А вот у знакомого ситуация оказалась и лучше и хуже одновременно. При пуске сам навигатор остаётся работоспособен – крутит карту, за дельтапланом полосочка тянется, а вот трек записывается всегда с нулевым размером.

Рекомендации можно дать две:
1  заводите мотор только при выключенном навигаторе или выдёргивайте его на время пуска из прикуривателя;
2  разберите зарядник и допаяйте в него защиту от «иголок», хорошо поможет ограничитель импульсного напряжения ESDA в паре с RC фильтром.

МЕТОДИЧЕСКИЕ

К методическим ошибкам можно отнести сбои, возникающие при нарушении последовательности действий (манипуляций) с программной или аппаратной частями навигатора. Для понимания необходимости тех или иных действий придётся несколько углубиться в теоретические рассуждения. Это поможет осознать и прочувствовать кажущиеся на первый взгляд шаманскими необходимые действия.

Для того чтобы появился файл с данными (наш трек), силами операционной системы, по запросу от программы, производятся как минимум три действия:
- по указанному программой пути создаётся файл нулевого размера с занесением его координат в ФАТ
- файл открывается на запись и в него передаётся блок данных (минимум один байт) Далее, в уже открытый на запись файл, передаются (добавляются) новые данные необходимое количество раз.
- по окончании работы файл закрывается. При этом в ФАТ записываются окончательное количество занятых им секторов, их адреса и количество значимых байт (длина файла). Аналогично нажатию кнопки "Сохранить" в редакторе.

Из описания алгоритма понятно - самым критичным участком является процедура добавления данных. Она самая длительная по времени и требует постоянного контроля со стороны операционной системы. Пока файл не закрыт должным образом, и все его окончательные параметры не вписаны в ФАТ, они (параметры) хранятся во временном буфере, следовательно, наименее защищены от «порчи». Если что-то случится на этом промежутке времени (сбойнёт программа или мигнёт питание или ещё чего), то файл скорее всего будет потерян.

Для обхода этого критического участка иногда применяют алгоритм: «открыть на запись - добавить один байт - закрыть и сохранить». Но он намного более тормознутый и при записи на медленный носитель, например флешку, может обездвижить любую программу. Рассматривать его не будем.

Можно ещё включать процедуру промежуточного сохранения, по какому либо событию - к примеру, по таймеру, по истечении промежутка времени (так поступает MS Word) или по счётчику байтов (каждый пятисотый байт вызывает закрытие). Но эти все примочки добавляют только программисты старшего поколения, не разбалованные надёжностью процессоров. Когда мы работали на ДВК-2 (был такой Зеленоградского производства ещё до IBM PC) первое, к чему приучали новичков - нажимать на кнопку сохранения после окончания набора каждого абзаца. Дабы не было истерик потом - пять страниц набрал, а он завис сволочь!!!

Самое простое решение - не ожидать все 600 километров абсолютной надёжности записи трека. Ведь никто не заставляет ехать от точки до точки, не сбавляя скорости. А остановился пописить - отключи запись трека. Файл нормально закроется и сохранится. Тем более что запись трека от стоящей машины выглядит как лохматая розочка вокруг базовой точки. Информативность её нулевая. Разве что по её густоте можно косвенно судить о продолжительности стоянки.

Размялся, сел в машину - включи запись трека, начни новый логический участок. Общий трек будет в этом случае состоять из последовательности файлов, в каждом из которых свой логический участок. Даже потеря одного из них не приведёт к фатальному исходу - будет просто дырка по пути, но картина в целом сохранится. А приверженцы "целостности" трека могут потом легко соединить их воедино. Например при помощи GPS TrackMacker-а.

А если остановился на подольше, не только пописить но ещё и беляш съесть, то крайне полезно перенести уже готовые файлы на карточку дабы они оттуда уж точно никуда не делись. Дело в том, что сохраняются треки на самом деле на электронный диск, созданный в ОЗУ. А, как нам известно, ОЗУ энергозависимо и рассматривать его как полноценный диск нельзя. При любом сбое питания или при перезагрузке системы запросто можно нарваться на переинициализацию этого электронного диска и, как следствие, потерю информации на нём.

Есть и ещё одна из возможных причин потери потерь - физическая ограниченность пространства ОЗУ. Ведь там, на несчастных 64 Кб должна разместиться и исполняемая программа и все буферы и ещё и электронный диск с записываемыми файлами. Создатели операционной системы, безусловно, предполагали возможность переполнения ОЗУ. При этом, решая задачу живучести системы, естественно решают её в "свою" пользу - при возникновении критической ситуации спасают операционку, освобождая ей место выбрасыванием "ненужной" временной информации. А кто у нас "временный"?, правильно, наш файл с недописанным треком. При этом скорее всего, грохнули ещё кучу временных процессов, но их потерю вы не заметили. Или заметили, но переживаете по этому поводу не так остро как оплакиваете трек.

Образно ситуацию можно обрисовать так - не набирайте пять страниц текста, ни разу не взглянув на экран, возможно, вы в самом начале забыли переключить клавиатуру на русский язык.

Резюме таково – всегда выключайте запись трека перед закрытием программы или отключением навигатора. Смиритесь с этим, просто запомните до автоматизма как отключение большого Windows-а через меню остановки а не выдёргиванием компьютера из розетки.
« Последнее редактирование: Январь 01, 1970, 07:00:00 от SM »
Записан
Ericsson T10s -> Nokia 3310 -> Siemens A52 -> Siemens M55 -> Siemens M65 -> Nokia 6630 -> Nokia N73 -> Samsung Galaxy SII -> Samsung Galaxy Note II
Автомобильная навигация: HP iPAQ hx4700 -> Mitac Mio C725
 
Сказали спасибо: Evg33
 

Страница сгенерирована за 0.024 секунд. Запросов: 22.