с циклически увеличивающимся шагом, наименьшее
//
алгоритм определения кол-ва секторов: читаем сектора задом наперед,
// с циклически увеличивающимся шагом, наименьшее значение шага
// при котором время чтения секторов будет минимальным - и будет равно
// кол-ву секторов на данном витке спирали
// (fixit: пока не реализовано, кол-во секторов взято на глазок)
//
//
алгоритм определения стабильности: читаем сектора с шагом, равным
// кол-ву секторов на данном витке спирали, и оцениваем разброс;
// если разброс будет слишком большим (превышает 10%-15%), следует
// уменьшить скорость привода (как это сделать показано в CD.snail.c)
fprintf(stderr,"\r%s\n",_TEXT_TEST_);
for (a = _END_SEC_; a > _CFG_BGN_SEC_; a-=_CFG_xWHELL_)
{
A1=A(&c);read_from_cd(argCD, buf,a);A2=A(&c);
fprintf(stderr,"\r%02d%%",(_END_SEC_-a)*100/_CFG_LEN_SEC_);
}
// этап третий (важнейший!)
//------------------------------------------------------------------------
// производим, собственно, измерения
// fix1: добавить "сглаживание" полученных данных
fprintf(stderr,"\r%s\n",_TEXT_ANGLE_);
// выводим шапку таблицы
printf("delta:"); FH(a,b) { printf("\t%d",a); FB(b); } printf("\ntime:");
// измеряем и тут же выводим результаты
FH(a,b)
{
A1=A(&c); read_from_cd("TEAC", buf,a); A2=A(&c);
printf("\t%d",(A2-A1)/100);
fprintf(stderr,"\r%02d%%",(_END_SEC_-a)*100/_CFG_LEN_SEC_);
FB(b);
} printf("\n");
// всему конец
fprintf(stderr,"\r%s\n",_TEXT_END_); return 0;
}
Листинг 2 макет программы sf.c для снятия топологий
Программа использует библиотечку SCSIlib, разработанную автором для низкоуровневого управления приводами с прикладного уровня.Ее можно бесплатно скачать с ftp-сайта автора.
Содержание Назад Вперед