version 3.17.1
add PINonTriviallyCopyable struct add PISerial check for error on Windows on every read()
This commit is contained in:
@@ -3,7 +3,7 @@ cmake_policy(SET CMP0017 NEW) # need include() with .cmake
|
|||||||
project(PIP)
|
project(PIP)
|
||||||
set(PIP_MAJOR 3)
|
set(PIP_MAJOR 3)
|
||||||
set(PIP_MINOR 17)
|
set(PIP_MINOR 17)
|
||||||
set(PIP_REVISION 0)
|
set(PIP_REVISION 1)
|
||||||
set(PIP_SUFFIX )
|
set(PIP_SUFFIX )
|
||||||
set(PIP_COMPANY SHS)
|
set(PIP_COMPANY SHS)
|
||||||
set(PIP_DOMAIN org.SHS)
|
set(PIP_DOMAIN org.SHS)
|
||||||
|
|||||||
@@ -668,4 +668,18 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
//! \~\brief
|
||||||
|
//! \~english Inherit from this class to make your class non-trivially copyable.
|
||||||
|
//! \~russian Наследуйтесь от этого класса чтобы сделать свой класс нетривиально копируемым.
|
||||||
|
struct PIP_EXPORT PINonTriviallyCopyable {
|
||||||
|
PINonTriviallyCopyable() noexcept = default;
|
||||||
|
PINonTriviallyCopyable(const PINonTriviallyCopyable &) noexcept = default;
|
||||||
|
PINonTriviallyCopyable(PINonTriviallyCopyable &&) noexcept;
|
||||||
|
PINonTriviallyCopyable & operator=(const PINonTriviallyCopyable &) noexcept = default;
|
||||||
|
PINonTriviallyCopyable & operator=(PINonTriviallyCopyable &&) noexcept = default;
|
||||||
|
~PINonTriviallyCopyable() = default;
|
||||||
|
};
|
||||||
|
inline PINonTriviallyCopyable::PINonTriviallyCopyable(PINonTriviallyCopyable &&) noexcept = default;
|
||||||
|
|
||||||
|
|
||||||
#endif // PIBASE_H
|
#endif // PIBASE_H
|
||||||
|
|||||||
@@ -868,6 +868,13 @@ ssize_t PISerial::readDevice(void * read_to, ssize_t max_size) {
|
|||||||
if (!canRead()) return -1;
|
if (!canRead()) return -1;
|
||||||
if (sending) return -1;
|
if (sending) return -1;
|
||||||
// piCoutObj << "read ..." << PRIVATE->hCom << max_size;
|
// piCoutObj << "read ..." << PRIVATE->hCom << max_size;
|
||||||
|
DWORD mask = 0;
|
||||||
|
if (GetCommMask(PRIVATE->hCom, &mask) == FALSE) {
|
||||||
|
piCoutObj << "read error" << errorString();
|
||||||
|
stop();
|
||||||
|
close();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
memset(&(PRIVATE->overlap), 0, sizeof(PRIVATE->overlap));
|
memset(&(PRIVATE->overlap), 0, sizeof(PRIVATE->overlap));
|
||||||
PRIVATE->overlap.hEvent = PRIVATE->event.getEvent();
|
PRIVATE->overlap.hEvent = PRIVATE->event.getEvent();
|
||||||
PRIVATE->readed = 0;
|
PRIVATE->readed = 0;
|
||||||
@@ -885,8 +892,7 @@ ssize_t PISerial::readDevice(void * read_to, ssize_t max_size) {
|
|||||||
GetOverlappedResult(PRIVATE->hCom, &(PRIVATE->overlap), &(PRIVATE->readed), FALSE);
|
GetOverlappedResult(PRIVATE->hCom, &(PRIVATE->overlap), &(PRIVATE->readed), FALSE);
|
||||||
} else
|
} else
|
||||||
return -1;
|
return -1;
|
||||||
// piCoutObj << "read done" << PRIVATE->readed;
|
// piCoutObj << "read" << (PRIVATE->readed) << errorString();
|
||||||
// piCoutObj << "read" << (PRIVATE->readed) << errorString();
|
|
||||||
return PRIVATE->readed;
|
return PRIVATE->readed;
|
||||||
#else
|
#else
|
||||||
if (!canRead()) return -1;
|
if (!canRead()) return -1;
|
||||||
|
|||||||
Reference in New Issue
Block a user