f=fopen("/dev/ttyUSB0","r")
char c;
c=getc(f);
while(c!=EOF) {
c=getc(f);
}
В приведенном выше коде цикл никогда не прерывается на beaglebone Ubuntu, который является архитектурой arm, когда я отключаю устройство. Приведенный выше код работал на моем рабочем столе i386 Ubuntu.
—РЕДАКТИРОВАТЬ—
Это очень странно! Майк int c
; не работал Смотреть на c
дает c=255
но даже когда я изменился c!=EOF
в c!=255
петля не разрывается !! Я очень расстроен после попытки в течение часа!
—РЕДАКТИРОВАТЬ—
Я старался fstream fin("/dev/ttyUSB0", fstream::in);
, когда я отключаю устройство ввода последовательного fin>>c
никогда не возвращается и загрузка процессора составляет 100%! Я ожидаю, что это ошибка!
Изменить тип c
от char
в int
, EOF
находится за пределами диапазона char
,
Чтобы уточнить, под «изменить тип» я имею в виду изменить объявление на
int c;
не отбрасывать значение обратно int
после обрезания до char
,
В C ++ проще использовать cin.
int main()
{
char ch;
while (true)
{
cin >> ch;
if (!cin.good())
break;
// Do something with you character
}
}
Это прекратится, когда произойдет сбой con >> ch