2017-04-04 54 views
2
#include <QSerialPort> 
#include <QSerialPortInfo> 
int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 

    // Example use QSerialPortInfo 
    foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) { 

     // Example use QSerialPort 
     QSerialPort serial; 
     serial.setPort(info); 
     if (serial.open(QIODevice::ReadWrite)) 
      //I try to send a string of hexadecimal numbers,seems not right 
      //serial.write(QByteArray("0xFF010100FFFFFF")); 
      serial.close(); 
    } 

    return a.exec(); 
} 

上記の例では、使用可能なシリアルポートをすべて開いて閉じた方法を示しています。しかし、COM6などのシリアルポートを開き、BaudRate、DataBits、Parity、StopBits、FlowControlを設定し、16進数の文字列を送信したいとします。Qtで特定のシリアルポートにデータを書き込む方法は?

答えて

3

このビデオは間違いなくあなたを助ける:https://www.youtube.com/watch?v=UD78xyKbrfk

あなたがここにも同様のコードを見つけることができます。https://cboard.cprogramming.com/cplusplus-programming/169624-read-write-serial-port.html

例コード:

#include <QSerialPort> 

MySerialPort::MySerialPort() 
{ 
    serial = new QSerialPort(this); 
    openSerialPort(); 
}  

void MySerialPort::openSerialPort() 
{ 
    serial->setPortName("COM3"); 
    serial->setBaudRate(QSerialPort::Baud9600); 
    serial->setDataBits(QSerialPort::Data8); 
    serial->setParity(QSerialPort::NoParity); 
    serial->setStopBits(QSerialPort::OneStop); 
    serial->setFlowControl(QSerialPort::NoFlowControl); 

    if (serial->open(QIODevice::ReadWrite)) 
    {  
     //Connected  
    } 
    else 
    {  
     //Open error 
    } 
}  

void MySerialPort::writeData(const QByteArray &data) 
{ 
    serial->write(data); 
} 
+1

をリンクのみの答えを投稿しないでください。それらのリンクに含まれるいくつかの情報を提供してください。 [良い答えを書く方法](http://stackoverflow.com/help/how-to-answer)を参照してください。 – thuga

+0

@thugaアドバイスありがとうございます – ni1ight

関連する問題