Парни здесь требование разработать k самые близкие соседи приближаются к определению вогнутой оболочки ряда точек, который ведет себя "почти линейно на числе очков". Печально их статью, кажется, очень хорошо охраняют, и необходимо будет спросить их для нее.
Вот хороший набор ссылок , который включает вышеупомянутое и мог бы привести Вас находить лучший подход.
read ()
, возвращающий 0, указывает на состояние конца файла . Вы должны проверить это и разорвать цикл, если это произойдет.
Что касается того, что вызывает это - конец файла на последовательном порту указывает, что он обнаружил зависание, что означает, что линия DCD была прервана.
1245] Вы можете установить флаг CLOCAL
в options.c_cflag
, чтобы игнорировать линии управления модемом, если ваше устройство этого не делает.
Вы должны попробовать без флага O_NONBLOCK. в необработанном режиме, если настройки c_cc [VMIN]
и c_cc [VTIME]
равны 0, последовательный порт ведет себя следующим образом (согласно man cfmakeraw):
Если данные есть в наличии, прочтите возврат немедленно, с меньшим из количество доступных байтов, или количество запрошенных байтов. Если нет данных доступен, чтение возвращает 0
Итак, вы должны попробовать:
options->c_cc[VMIN]=1;