Следующий код прекрасно работает почти на платформах Linux, которые я тестировал (Ubuntu, Mint, Raspbian x86), но полностью не работает на Raspbian для Raspberry Pi.
Он успешно выполняется случайным образом несколько раз, затем останавливаетсязапуск.Остальная часть программы выполняется нормально, включая несколько других таймаутов, добавленных точно таким же образом, и ничто иное больше не сказывается.
Может ли быть тайм-аут на 5 мс, который не может выдержать малиновый пи?Почему происходит сбой только одного аспекта, в то время как все другие аспекты не показывают глюков и т. Д. Это так, как если бы тайм-аут по тем или иным причинам был отменен.
void control_init() {
...
g_timeout_add(20, control_quick_timer_event, NULL);
...
}
void control_quick_timer_event() {
control_read_values();
control_since_last++;
if (control_since_last == 2) {
while (serialDataAvail(control_serial)) {
serialGetchar(control_serial);
}
control_read_state = -1;
}
}
* Редактировать *Дополнительный из printf ("\ n");«исправляет» проблему по неизвестной причине, но я не могу принять ее как решение, поскольку мне нужно распечатать серийный номер без миллионов пробелов.
return True; / return 1;в хвосте также приводит к той же ошибке, это не влияет на результат.