QSerialPort,QSerialPortInfo使用
6231 ワード
Qt操作シリアルポートの2つのクラスはQSerialPortとQSerialPortInfoクラス名からQSerialPortInfoがシリアルポート情報を取得するためのクラスであることがわかり、QSerialPortはシリアルポートを直接操作するクラスである.
QSerialPortInfo
[static]QList QSerialPortInfo::availablePorts()関数機能:Returns a list of available serial ports on the system.
この関数を使用して、コンピュータのシリアルポート接続状況を表示します.
foreachも使えます
QSerialPort
以下にいくつかの方法があります. bool setBaudRate(qint32 baudRate, Directions directions = AllDirections) bool setDataBits(DataBits dataBits) bool setFlowControl(FlowControl flowControl) bool setStopBits(StopBits stopBits) bool setParity(Parity parity) void QSerialPort::setPortName(const QString&name)上記の方法で簡単に小さなdemoを書きました.機能は、シングルチップマシンから送信されたデータserialport.h を受信することです.
serialport.cpp
OpenPort関数を呼び出すと、指定したシリアルポートを開き、データを受信できます.writeMsg関数を呼び出すと、開いているシリアルポートにデータを送信できます.
QSerialPortInfo
[static]QList QSerialPortInfo::availablePorts()関数機能:Returns a list of available serial ports on the system.
この関数を使用して、コンピュータのシリアルポート接続状況を表示します.
QList m_list = QSerialPortInfo::availablePorts();
for(int i = 0;i
{
qDebug() << "Name : " << m_list.at(i).portName();
qDebug() << "Description : " << m_list.at(i).description();
qDebug() << "Manufacturer: " << m_list.at(i).manufacturer();
qDebug() << "Serial Number: " << m_list.at(i).serialNumber();
qDebug() << "System Location: " << m_list.at(i).systemLocation();
}
foreachも使えます
foreach(const QSerialPortInfo &info,QSerialPortInfo::availablePorts())
{
qDebug() << "Name : " << info.portName();
qDebug() << "Description : " << info.description();
qDebug() << "Manufacturer: " << info.manufacturer();
qDebug() << "Serial Number: " << info.serialNumber();
qDebug() << "System Location: " << info.systemLocation();
}
QSerialPort
以下にいくつかの方法があります.
#ifndef SERIALPORT_H
#define SERIALPORT_H
#include
#include
class SerialPort : public QSerialPort
{
Q_OBJECT
public:
SerialPort();
bool openPort(QString);
void writeMsg(QString);
private slots:
void slot_DataRec();
};
#endif // SERIALPORT_H
serialport.cpp
#include "serialport.h"
#include <qDebug>
SerialPort::SerialPort()
{
this->setBaudRate(QSerialPort::Baud9600,QSerialPort::AllDirections);
this->setDataBits(QSerialPort::Data8);
this->setFlowControl(QSerialPort::NoFlowControl);
this->setStopBits(QSerialPort::OneStop);
this->setParity(QSerialPort::NoParity);
connect(this,SIGNAL(readyRead()),this,SLOT(slot_DataRec()));
}
bool SerialPort::openPort(QString port)
{
this->setPortName(port);
this->close();
if(this->open(QIODevice::ReadWrite))
return true;
else
return false;
}
void SerialPort::slot_DataRec()
{
QByteArray temp = this->read(1);
qDebug()<<temp;
}
void SerialPort::writeMsg(QString msg)
{
this->write(msg.toLatin1());
}
OpenPort関数を呼び出すと、指定したシリアルポートを開き、データを受信できます.writeMsg関数を呼び出すと、開いているシリアルポートにデータを送信できます.