Newer
Older
bool SerialLink::setBaudRateType(int rateIndex)
{
bool reconnect = false;
bool accepted = true; // This is changed if none of the data rates matches
if(isConnected()) reconnect = true;
disconnect();
// These minimum and maximum baud rates were based on those enumerated in qportsettings.h.
Bryant Mairs
committed
#if defined(Q_OS_WIN32) || defined(Q_OS_WINCE)
const int minBaud = (int)QPortSettings::BAUDR_110;
const int maxBaud = (int)QPortSettings::BAUDR_921600;
Bryant Mairs
committed
#elif defined(Q_OS_LINUX)
const int minBaud = (int)QPortSettings::BAUDR_50;
const int maxBaud = (int)QPortSettings::BAUDR_921600;
Bryant Mairs
committed
#elif defined(Q_OS_UNIX) || defined(Q_OS_DARWIN)
const int minBaud = (int)QPortSettings::BAUDR_50;
const int maxBaud = (int)QPortSettings::BAUDR_921600;
Bryant Mairs
committed
if (rateIndex >= minBaud && rateIndex <= maxBaud)
{
portSettings.setBaudRate((QPortSettings::BaudRate)rateIndex);
}
if(reconnect) connect();
return accepted;
}
bool SerialLink::setBaudRateString(const QString& rate)
{
bool ok;
int intrate = rate.toInt(&ok);
if (!ok) return false;
return setBaudRate(intrate);
}
bool SerialLink::setBaudRate(int rate)
{
bool reconnect = false;
bool accepted = true; // This is changed if none of the data rates matches
Bryant Mairs
committed
// This switch-statment relies on the mapping given in qportsettings.h from the QSerialPort library.
// Baud rates supported only by non-Windows systems
Bryant Mairs
committed
#if defined(Q_OS_UNIX) || defined(Q_OS_LINUX) || defined(Q_OS_DARWIN)
portSettings.setBaudRate(QPortSettings::BAUDR_50);
portSettings.setBaudRate(QPortSettings::BAUDR_75);
portSettings.setBaudRate(QPortSettings::BAUDR_134);
portSettings.setBaudRate(QPortSettings::BAUDR_150);
portSettings.setBaudRate(QPortSettings::BAUDR_200);
Bryant Mairs
committed
case 1800:
portSettings.setBaudRate(QPortSettings::BAUDR_1800);
break;
#endif
// Baud rates supported only by windows
Bryant Mairs
committed
#if defined(Q_OS_WIN32) || defined(Q_OS_WINCE)
case 14400:
portSettings.setBaudRate(QPortSettings::BAUDR_14400);
break;
case 56000:
portSettings.setBaudRate(QPortSettings::BAUDR_56000);
break;
case 128000:
portSettings.setBaudRate(QPortSettings::BAUDR_128000);
break;
case 256000:
portSettings.setBaudRate(QPortSettings::BAUDR_256000);
break;
Bryant Mairs
committed
// Supported by all OSes:
Bryant Mairs
committed
case 110:
portSettings.setBaudRate(QPortSettings::BAUDR_110);
break;
portSettings.setBaudRate(QPortSettings::BAUDR_300);
portSettings.setBaudRate(QPortSettings::BAUDR_600);
portSettings.setBaudRate(QPortSettings::BAUDR_1200);
portSettings.setBaudRate(QPortSettings::BAUDR_2400);
portSettings.setBaudRate(QPortSettings::BAUDR_4800);
portSettings.setBaudRate(QPortSettings::BAUDR_9600);
portSettings.setBaudRate(QPortSettings::BAUDR_19200);
portSettings.setBaudRate(QPortSettings::BAUDR_38400);
portSettings.setBaudRate(QPortSettings::BAUDR_57600);
portSettings.setBaudRate(QPortSettings::BAUDR_115200);
case 230400:
portSettings.setBaudRate(QPortSettings::BAUDR_230400);
break;
case 460800:
portSettings.setBaudRate(QPortSettings::BAUDR_460800);
break;
case 500000:
portSettings.setBaudRate(QPortSettings::BAUDR_500000);
break;
case 576000:
portSettings.setBaudRate(QPortSettings::BAUDR_576000);
break;
case 921600:
portSettings.setBaudRate(QPortSettings::BAUDR_921600);
break;
default:
// If none of the above cases matches, there must be an error
accepted = false;
break;
}
if(reconnect) connect();
return accepted;
bool SerialLink::setFlowType(int flow)
{
if(isConnected()) reconnect = true;
disconnect();
case (int)QPortSettings::FLOW_OFF:
portSettings.setFlowControl(QPortSettings::FLOW_OFF);
case (int)QPortSettings::FLOW_HARDWARE:
portSettings.setFlowControl(QPortSettings::FLOW_HARDWARE);
case (int)QPortSettings::FLOW_XONXOFF:
portSettings.setFlowControl(QPortSettings::FLOW_XONXOFF);
break;
default:
// If none of the above cases matches, there must be an error
accepted = false;
break;
}
bool SerialLink::setParityType(int parity)
{
if (isConnected()) reconnect = true;
disconnect();
case (int)QPortSettings::PAR_NONE:
portSettings.setParity(QPortSettings::PAR_NONE);
case (int)QPortSettings::PAR_ODD:
portSettings.setParity(QPortSettings::PAR_ODD);
case (int)QPortSettings::PAR_EVEN:
portSettings.setParity(QPortSettings::PAR_EVEN);
case (int)QPortSettings::PAR_SPACE:
portSettings.setParity(QPortSettings::PAR_SPACE);
break;
default:
// If none of the above cases matches, there must be an error
accepted = false;
break;
}
if (reconnect) connect();
bool SerialLink::setDataBits(int dataBits)
{
//qDebug() << "Setting" << dataBits << "data bits";
bool reconnect = false;
if (isConnected()) reconnect = true;
portSettings.setDataBits(QPortSettings::DB_5);
portSettings.setDataBits(QPortSettings::DB_6);
portSettings.setDataBits(QPortSettings::DB_7);
portSettings.setDataBits(QPortSettings::DB_8);
break;
default:
// If none of the above cases matches, there must be an error
accepted = false;
break;
}
if(reconnect) connect();
bool SerialLink::setStopBits(int stopBits)
{
if(isConnected()) reconnect = true;
disconnect();
portSettings.setStopBits(QPortSettings::STOP_1);
portSettings.setStopBits(QPortSettings::STOP_2);
break;
default:
// If none of the above cases matches, there must be an error
accepted = false;
break;
}
if(reconnect) connect();
return accepted;
}
bool SerialLink::setDataBitsType(int dataBits)
{
bool reconnect = false;
bool accepted = false;
if (isConnected()) reconnect = true;
disconnect();
if (dataBits >= (int)QPortSettings::DB_5 && dataBits <= (int)QPortSettings::DB_8) {
portSettings.setDataBits((QPortSettings::DataBits) dataBits);
if(reconnect) connect();
accepted = true;
}
return accepted;
}
bool SerialLink::setStopBitsType(int stopBits)
{
bool reconnect = false;
bool accepted = false;
if(isConnected()) reconnect = true;
disconnect();
if (stopBits >= (int)QPortSettings::STOP_1 && stopBits <= (int)QPortSettings::STOP_2) {
portSettings.setStopBits((QPortSettings::StopBits) stopBits);
if(reconnect) connect();