void TestSerialIODevice::setCts( bool value ) { if ( _cts != value ) { _cts = value; emit ctsChanged( value ); } }
bool mdtSerialPortPosix::getCtlStates() { int states; if(ioctl(pvFd, TIOCMGET, &states) < 0){ mdtError e(MDT_UNDEFINED_ERROR, "ioctl() call failed with command TIOCMGET", mdtError::Error); e.setSystemError(errno, strerror(errno)); MDT_ERROR_SET_SRC(e, "mdtSerialPortPosix"); e.commit(); return false; } // See witch signals changed if((states & TIOCM_CAR) != pvPreviousCarState){ // Store new state pvPreviousCarState = (states & TIOCM_CAR); // Determine current state and emit signal if(states & TIOCM_CAR){ pvCarIsOn = true; }else{ pvCarIsOn = false; } emit carChanged(pvCarIsOn); } if((states & TIOCM_DSR) != pvPreviousDsrState){ // Store new state pvPreviousDsrState = (states & TIOCM_DSR); // Determine current state and emit signal if(states & TIOCM_DSR){ pvDsrIsOn = true; }else{ pvDsrIsOn = false; } emit dsrChanged(pvDsrIsOn); } if((states & TIOCM_CTS) != pvPreviousCtsState){ // Store new state pvPreviousCtsState = (states & TIOCM_CTS); // Determine current state and emit signal if(states & TIOCM_CTS){ pvCtsIsOn = true; }else{ pvCtsIsOn = false; } emit ctsChanged(pvCtsIsOn); } if((states & TIOCM_RNG) != pvPreviousRngState){ // Store new state pvPreviousRngState = (states & TIOCM_RNG); // Determine current state and emit signal if(states & TIOCM_RNG){ pvRngIsOn = true; }else{ pvRngIsOn = false; } emit rngChanged(pvRngIsOn); } return true; }
void Win_QextSerialPort::monitorCommEvent() { DWORD eventMask = 0; ResetEvent(overlap.hEvent); if (!WaitCommEvent(Win_Handle, & eventMask, & overlap)) if (GetLastError() != ERROR_IO_PENDING) qCritical("WaitCommEvent error %ld\n", GetLastError()); if (WaitForSingleObject(overlap.hEvent, INFINITE) == WAIT_OBJECT_0) { //overlap event occured DWORD undefined; if (!GetOverlappedResult(Win_Handle, & overlap, & undefined, false)) { qWarning("Comm event overlapped error %ld", GetLastError()); return; } if (eventMask & EV_RXCHAR) { if (sender() != this) emit readyRead(); } if (eventMask & EV_TXEMPTY) { DWORD numBytes; GetOverlappedResult(Win_Handle, & overlapWrite, & numBytes, true); bytesToWriteLock->lockForWrite(); if (sender() != this) emit bytesWritten(bytesToWrite()); _bytesToWrite = 0; bytesToWriteLock->unlock(); } if (eventMask & EV_DSR) { if (lineStatus() & LS_DSR) emit dsrChanged(true); else emit dsrChanged(false); } if (eventMask & EV_CTS) { if (lineStatus() & LS_CTS) emit ctsChanged(true); else emit ctsChanged(false); } } }
mdtAbstractSerialPort::mdtAbstractSerialPort(QObject *parent) : mdtAbstractPort(parent) { pvCarIsOn = false; pvDsrIsOn = false; pvCtsIsOn = false; pvRngIsOn = false; // Emit signals with initial states emit carChanged(pvCarIsOn); emit dsrChanged(pvDsrIsOn); emit ctsChanged(pvCtsIsOn); emit rngChanged(pvRngIsOn); // Attributes pvUartType = UT_UNKNOW; }
int AbstractSerial::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QIODevice::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: signalStatus((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< QDateTime(*)>(_a[2]))); break; case 1: exception(); break; case 2: ctsChanged((*reinterpret_cast< bool(*)>(_a[1]))); break; case 3: dsrChanged((*reinterpret_cast< bool(*)>(_a[1]))); break; case 4: ringChanged((*reinterpret_cast< bool(*)>(_a[1]))); break; default: ; } _id -= 5; } return _id; }