add PIChunkStream::getData(int id)
fix some COM on Windows fix PIPacketExtractor
This commit is contained in:
@@ -770,11 +770,12 @@ void PISerial::applySettings() {
|
|||||||
GetCommMask(PRIVATE->hCom, &PRIVATE->mask);
|
GetCommMask(PRIVATE->hCom, &PRIVATE->mask);
|
||||||
SetCommMask(PRIVATE->hCom, EV_RXCHAR);
|
SetCommMask(PRIVATE->hCom, EV_RXCHAR);
|
||||||
GetCommState(PRIVATE->hCom, &PRIVATE->sdesc);
|
GetCommState(PRIVATE->hCom, &PRIVATE->sdesc);
|
||||||
// piCoutObj << PRIVATE->sdesc.fBinary << PRIVATE->sdesc.fAbortOnError << PRIVATE->sdesc.fDsrSensitivity << PRIVATE->sdesc.fDtrControl
|
piCoutObj << PRIVATE->sdesc.fBinary << PRIVATE->sdesc.fAbortOnError << PRIVATE->sdesc.fDsrSensitivity << PRIVATE->sdesc.fDtrControl
|
||||||
//<< PRIVATE->sdesc.fDummy2 << PRIVATE->sdesc.fErrorChar;
|
<< PRIVATE->sdesc.fDummy2 << PRIVATE->sdesc.fErrorChar;
|
||||||
PRIVATE->desc = PRIVATE->sdesc;
|
PRIVATE->desc = PRIVATE->sdesc;
|
||||||
PRIVATE->desc.DCBlength = sizeof(PRIVATE->desc);
|
PRIVATE->desc.DCBlength = sizeof(PRIVATE->desc);
|
||||||
PRIVATE->desc.BaudRate = convertSpeed(outSpeed());
|
PRIVATE->desc.BaudRate = convertSpeed(outSpeed());
|
||||||
|
PRIVATE->desc.fDtrControl = DTR_CONTROL_ENABLE;
|
||||||
if (dataBitsCount() >= 5 && dataBitsCount() <= 8)
|
if (dataBitsCount() >= 5 && dataBitsCount() <= 8)
|
||||||
PRIVATE->desc.ByteSize = dataBitsCount();
|
PRIVATE->desc.ByteSize = dataBitsCount();
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -307,6 +307,7 @@ PIString PIPacketExtractor::constructFullPathDevice() const {
|
|||||||
bool PIPacketExtractor::openDevice() {
|
bool PIPacketExtractor::openDevice() {
|
||||||
if (dev) {
|
if (dev) {
|
||||||
if (!dev->isOpened()) return dev->open();
|
if (!dev->isOpened()) return dev->open();
|
||||||
|
return dev->isOpened();
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -315,6 +316,7 @@ bool PIPacketExtractor::openDevice() {
|
|||||||
bool PIPacketExtractor::closeDevice() {
|
bool PIPacketExtractor::closeDevice() {
|
||||||
if (dev) {
|
if (dev) {
|
||||||
if (dev->isOpened()) return dev->close();
|
if (dev->isOpened()) return dev->close();
|
||||||
|
return !dev->isOpened();
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -144,6 +144,18 @@ public:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! \~english Returns value of chunk with ID \"id\". You should call \a readAll() before using this function!
|
||||||
|
//! \~russian Возвращает значение чанка с ID \"id\". Необходимо вызвать \a readAll() перед использованием этого метода!
|
||||||
|
template<typename T>
|
||||||
|
T getData(int id) const {
|
||||||
|
T ret{};
|
||||||
|
CacheEntry pos = data_map.value(id);
|
||||||
|
if (pos.start < 0 || pos.length == 0) return ret;
|
||||||
|
PIByteArray ba(data_->data(pos.start), pos.length);
|
||||||
|
if (!ba.isEmpty()) ba >> ret;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
//! \~english Place value of last readed chunk into \"v\"
|
//! \~english Place value of last readed chunk into \"v\"
|
||||||
//! \~russian Записывает значение последнего прочитанного чанка в \"v\"
|
//! \~russian Записывает значение последнего прочитанного чанка в \"v\"
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
|||||||
Reference in New Issue
Block a user