I add this method to query available ports name, on both Windows and GNU\Linux
#ifdef _TTY_POSIX_
#include <QDir>
#endif
const int MAX_COM_PORT = 20;
// Query available SerialPort name
{
QextSerialPort testPort;
testPort.setBaudRate(BAUD115200);
testPort.setFlowControl(FLOW_OFF);
testPort.setParity(PAR_NONE);
testPort.setDataBits(DATA_8);
testPort.setStopBits(STOP_1);
#ifdef _TTY_WIN_
for (i=1; i<MAX_COM_PORT; i++)
{
testPortName
= QString("COM%1").
arg(i
) testPort.setPortName(testPortName);
{
portsName.append(testPortName);
testPort.close();
}
}
#else // _TTY_POSIX_
filters << "ttyS*" << "ttyUSB*";
dir.setNameFilters(filters);
dir.
setFilter(QDir::Files |
QDir::System);
QFileInfoList list = dir.entryInfoList();
for (int i=0; i< list.size(); i++)
{
portsName.append(list.at(i).canonicalFilePath ());
}
#endif
return portsName;
}
#ifdef _TTY_POSIX_
#include <QDir>
#endif
const int MAX_COM_PORT = 20;
// Query available SerialPort name
QStringList MySerialPort::availablePortsName()
{
QextSerialPort testPort;
testPort.setBaudRate(BAUD115200);
testPort.setFlowControl(FLOW_OFF);
testPort.setParity(PAR_NONE);
testPort.setDataBits(DATA_8);
testPort.setStopBits(STOP_1);
QStringList portsName;
QString testPortName;
#ifdef _TTY_WIN_
for (i=1; i<MAX_COM_PORT; i++)
{
testPortName = QString("COM%1").arg(i)
testPort.setPortName(testPortName);
if (testPort.open(QIODevice::ReadWrite))
{
portsName.append(testPortName);
testPort.close();
}
}
#else // _TTY_POSIX_
QDir dir("/dev");
QStringList filters;
filters << "ttyS*" << "ttyUSB*";
dir.setNameFilters(filters);
dir.setFilter(QDir::Files | QDir::System);
QFileInfoList list = dir.entryInfoList();
for (int i=0; i< list.size(); i++)
{
portsName.append(list.at(i).canonicalFilePath ());
}
#endif
return portsName;
}
To copy to clipboard, switch view to plain text mode
Bookmarks