3 #include "qextserialport.h"
6 #include "qextserialenumerator.h"
10 m_CommPortType(saver, this,
"commPortType", 0,
"Comm Port Type"),
11 m_SerialPortName(saver, this,
"serialPortName",
"",
"Serial Port Name"),
12 m_SerialPortBaud(saver, this,
"serialPortBaud", 0,
"Serial Port Baud Rate"),
13 m_SerialPortBits(saver, this,
"serialPortBits", 1,
"Serial Port Data Bits"),
14 m_SerialPortParity(saver, this,
"serialPortParity", 0,
"Serial Port Parity"),
15 m_SerialPortStopBits(saver, this,
"serialPortStopBits", 0,
"Serial Port Stop Bits"),
16 m_SerialPortFlowControl(saver, this,
"serialPortFlowControl", 0,
"Serial Port Flow Control"),
17 m_SocketHostAddress(saver, this,
"socketHostAddress",
"",
"Socket Host Address"),
18 m_SocketPortNumber(saver, this,
"socketPortNumber", 0,
"Socket Port Number"),
19 m_SocketTimeout(saver, this,
"socketTimeout", 5000,
"Socket timeout (msec)"),
20 m_EpicsPVName(saver, this,
"epicsPVName",
"",
"Epics PV Name"),
21 m_Connected(QcepSettingsSaverWPtr(), this,
"connected", 0,
"Is comm port connected"),
22 m_Successful(QcepSettingsSaverWPtr(), this,
"successful", 0,
"Successful communication taken place"),
25 if (qcepDebug(DEBUG_CONSTRUCTORS)) {
26 printf(
"QPidCommPort::QPidCommPort(%p)\n",
this);
32 if (qcepDebug(DEBUG_CONSTRUCTORS)) {
33 printf(
"QPidCommPort::~QPidCommPort(%p)\n",
this);
42 <<
"Local Serial Port"
127 return FLOW_HARDWARE;
198 ctl->printMessage(msg, ts);
204 QcepProperty::writeSettings(
this, &staticMetaObject, section, set);
209 QcepProperty::readSettings(
this, &staticMetaObject, section, set);
217 set_Successful(res.count());
221 printMessage(tr(
"QPidCommPort::readAll: %1 (%2)").arg((QString) res).arg((QString) res.toHex()));
223 printMessage(tr(
"QPidCommPort::readAll: %1").arg((QString) res));
237 set_Successful(res.count());
241 printMessage(tr(
"QPidCommPort::read(%1): %2 (%3)").arg(sz).arg((QString) res).arg((QString) res.toHex()));
243 printMessage(tr(
"QPidCommPort::read(%1): %2").arg(sz).arg((QString) res));
256 QByteArray res =
m_IODevice->readLine(maxlen);
258 set_Successful(res.count());
262 printMessage(tr(
"QPidCommPort::readLine(%1): %2 (%3)").arg(maxlen).arg((QString) res).arg((QString) res.toHex()));
264 printMessage(tr(
"QPidCommPort::readLine(%1): %2").arg(maxlen).arg((QString) res));
280 printMessage(tr(
"QPidCommPort::isWritable(): %1").arg(res));
290 return get_Successful();
300 printMessage(tr(
"QPidCommPort::write(%1 (%3))").arg((QString) msg).arg((QString) msg.toHex()));
302 printMessage(tr(
"QPidCommPort::write(%1)").arg((QString) msg));
311 int res =
m_IODevice->waitForBytesWritten(tmout);
314 printMessage(tr(
"QPidCommPort::waitForBytesWritten(%1): %2").arg(tmout).arg(res));
326 int res =
m_IODevice->waitForReadyRead(tmout);
331 printMessage(tr(
"QPidCommPort::waitForReadyRead(%1): %2").arg(tmout).arg(res));
346 printMessage(tr(
"QPidCommPort::bytesAvailable(): %1").arg(res));
361 printMessage(tr(
"QPidCommPort::canReadLine(): %1").arg(res));
374 QList<QextPortInfo> ports = QextSerialEnumerator::getPorts();
376 QString portName = get_SerialPortName();
379 for (
int i=0; i<ports.count(); i++) {
380 QextPortInfo port = ports.value(i);
382 QString aPortName = port.portName;
384 if (portName == aPortName) {
385 deviceName = port.physName;
389 QextSerialPort *dev =
new QextSerialPort(deviceName, QextSerialPort::Polling);
391 dev->setBaudRate(
baudRate(get_SerialPortBaud()));
392 dev->setDataBits(
dataBits(get_SerialPortBits()));
393 dev->setStopBits(
stopBits(get_SerialPortStopBits()));
394 dev->setFlowControl(
flowControl(get_SerialPortFlowControl()));
395 dev->setParity(
parity(get_SerialPortParity()));
397 res = dev->open(QIODevice::ReadWrite);
400 printMessage(tr(
"New serial port on device %1, port name %2").arg(deviceName).arg(portName));
403 printMessage(tr(
"Baud:%1 Bits:%2 Parity:%3 Stop:%4 HShake:%5")
404 .arg(dev->baudRate())
405 .arg(dev->dataBits())
407 .arg(dev->stopBits())
408 .arg(dev->flowControl()));
415 printMessage(tr(
"Serial Port open failed %1").arg(dev->errorString()));
427 QTcpSocket *sock =
new QTcpSocket();
428 sock->connectToHost(get_SocketHostAddress(), get_SocketPortNumber());
429 res = sock->waitForConnected(get_SocketTimeout());
433 printMessage(tr(
"Socket connection failed %1").arg(sock->errorString()));
441 if (get_Connected()) {
446 switch (get_CommPortType()) {
459 printMessage(tr(
"Socket opened: connected = %1").arg(res));
DataBitsType dataBits(int idx)
QStringList commPortTypes()
bool openLocalSerialPort()
QPointer< QIODevice > m_IODevice
QStringList commPortDataBits()
QByteArray readLine(int maxlen=0)
BaudRateType baudRate(int idx)
QSharedPointer< QPidController > QPidControllerPtr
StopBitsType stopBits(int idx)
int waitForBytesWritten(int tmout=0)
QPidControllerWPtr m_Controller
void write(QByteArray msg)
QPidCommPort(QcepSettingsSaverPtr saver, QPidControllerPtr ctl)
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())
QStringList commPortParitys()
virtual void writeSettings(QSettings *set, QString section)
virtual void readSettings(QSettings *set, QString section)
QStringList commPortStopBits()
bool successfullyConnected()
int waitForReadyRead(int tmout=0)
QStringList commPortBaudRates()
FlowType flowControl(int idx)
ParityType parity(int idx)
QStringList commPortFlowControls()