version 3.17.1
add PINonTriviallyCopyable struct add PISerial check for error on Windows on every read()
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -868,6 +868,13 @@ ssize_t PISerial::readDevice(void * read_to, ssize_t max_size) {
|
||||
if (!canRead()) return -1;
|
||||
if (sending) return -1;
|
||||
// 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));
|
||||
PRIVATE->overlap.hEvent = PRIVATE->event.getEvent();
|
||||
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);
|
||||
} else
|
||||
return -1;
|
||||
// piCoutObj << "read done" << PRIVATE->readed;
|
||||
// piCoutObj << "read" << (PRIVATE->readed) << errorString();
|
||||
// piCoutObj << "read" << (PRIVATE->readed) << errorString();
|
||||
return PRIVATE->readed;
|
||||
#else
|
||||
if (!canRead()) return -1;
|
||||
|
||||
Reference in New Issue
Block a user