У меня проблемы с управлением данными, поступающими в последовательный порт Linux с устройства Arduino.
В основном у меня есть рабочий код для чтения и распечатки (или просто хранения), но он записандля платформы Windows:
Статус имеет тип COMSTAT
int SerialPort::readSerialPort(char *buffer, unsigned int buf_size)
{
DWORD bytesRead;
unsigned int toRead = 0;
Sleep(500);
ClearCommError(this->handler, &this->errors, &this->status);
if (this->status.cbInQue > 0) { //if there's something to read
if (this->status.cbInQue > buf_size) {//if there's something to read&bigger than buffer size
toRead = buf_size; //read as much as buffer alows
}
else toRead = this->status.cbInQue; //else just read as much as there is
}
if (ReadFile(this->handler, buffer, toRead, &bytesRead, NULL))
return bytesRead; //return read data
return 0;//return 0 if nothing is there.
}
, кроме Sleep (), который является функцией Windows, мне было интересно, есть ли эквивалентная функция Linux для status.cbInQue, чтобы понятьесли есть какие-либо данные, которые готовы для чтения в порту.Прямо сейчас я просто продолжаю и читаю, не проверяя, и часто я ничего не печатаю позже в программе.
TLDR: есть ли эквивалент cbInQue для linux?
Спасибо