more precise using PIIODevice::reading_now flag, Warning! one should use it manually now
small enum fix for pip_cmg
This commit is contained in:
@@ -798,7 +798,9 @@ ssize_t PISerial::readDevice(void * read_to, ssize_t max_size) {
|
||||
if (sending) return -1;
|
||||
// piCoutObj << "com event ...";
|
||||
//piCoutObj << "read ..." << PRIVATE->hCom;
|
||||
reading_now = true;
|
||||
ReadFile(PRIVATE->hCom, read_to, max_size, &PRIVATE->readed, 0);
|
||||
reading_now = false;
|
||||
DWORD err = GetLastError();
|
||||
//piCout << err;
|
||||
if (err == ERROR_BAD_COMMAND || err == ERROR_ACCESS_DENIED) {
|
||||
@@ -810,11 +812,13 @@ ssize_t PISerial::readDevice(void * read_to, ssize_t max_size) {
|
||||
return PRIVATE->readed;
|
||||
#else
|
||||
if (!canRead()) return -1;
|
||||
reading_now = true;
|
||||
ssize_t ret = ::read(fd, read_to, max_size);
|
||||
reading_now = false;
|
||||
if (ret < 0) {
|
||||
int err = errno;
|
||||
if (err == EBADF || err == EFAULT || err == EINVAL || err == EIO) {
|
||||
PIThread::stop(false);
|
||||
softStopThreadedRead();
|
||||
close();
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user