Qt编程技巧小知识点(6)根据 *IDN? 对程控仪器连接状态进行确认

Qt编程技巧小知识点(6)根据 *IDN? 对程控仪器连接状态进行确认

  确定仪器连接问题,常用的是监测仪器的连接状态,如下代码所示:

void onconnected(QAbstractSocket::SocketState socketStatue)
{
    
    
    qDebug()<<socketStatue;

    switch (socketStatue)
    {
    
    
    case QAbstractSocket::ConnectingState:
    {
    
    
        ui->label_Text->setText("QAbstractSocket::ConnectingState");
        break;
    }
    case QAbstractSocket::UnconnectedState:
    {
    
    
        ui->label_Text->setText("QAbstractSocket::UnconnectedState");
        break;
    }
    case QAbstractSocket::ConnectedState:
    {
    
    
        ui->label_Text->setText("QAbstractSocket::ConnectedState");
        break;
    }
    case QAbstractSocket::HostLookupState:
    {
    
    
        ui->label_Text->setText("QAbstractSocket::HostLookupState");
        break;
    }
    case QAbstractSocket::BoundState:
    {
    
    
        ui->label_Text->setText("QAbstractSocket::BoundState");
        break;
    }
    case QAbstractSocket::ClosingState:
    {
    
    
        ui->label_Text->setText("QAbstractSocket::ClosingState");
        break;
    }
    case QAbstractSocket::ListeningState:
    {
    
    
        ui->label_Text->setText("QAbstractSocket::ListeningState");
        break;
    }
    default:
    {
    
    
        ui->label_Text->setText("Don't have normal QAbstractSocket");
    }
    }

}
  • 但实际上,这种方式并不是特别好用,这里可以用 程控的通用命令 *IDN? 以及其返回信息进行确认,比如我们连接 santec 激光器。

  • 创建 socket ;

socket = new QTcpSocket(this);
  • 发送 IDN? 命令;
// 连接仪器
socket->abort();
socket->connectToHost(ip,qint16(port));

// 发送资讯信息
QThread::msleep(100);
QString str = "*IDN?\r\n"
socket->write(str.toLatin1());
  • 接收返回信息,并确定返回信息中是否有关键字符。
QByteArray read;
read.clear();
while(socket->waitForReadyRead(100))//需要等待所有的数据传输完成
{
    
    
    read += socket->readAll();
}

if(read.contains("SANTEC"))
{
    
    
    qDebug()<<"SANTEC 已连接。";
}
  • 另外,记录一个问题即解决办法。
19: error: 'ABCThread' does not name a type; 
	did you mean 'ABC'?
     ABCThread*ABCThreadEvent;
     ^~~~~~~~~~~~~~~~~~
     ABC

解决办法,不要头文件互相引用。

小结

  学习,加油,共勉。

猜你喜欢

转载自blog.csdn.net/weixin_42269028/article/details/143351392